def update_gui_profit(self): # Fixme: profit calculation doesn't work this way, figure out a better way to do this. if self.initial_balance: profit = round((self.orders_balance(None) - self.initial_balance) / self.initial_balance, 3) else: profit = 0 idle_add(self.view.set_worker_profit, self.worker_name, float(profit)) self['profit'] = profit
def _update_statusbar_message(self): while not self.closing: # When running first time the workers are also interrupting with the connection # so we delay the first time to get correct information if self.statusbar_updater_first_run: self.statusbar_updater_first_run = False time.sleep(1) idle_add(self.set_statusbar_message) runner_count = 0 # Wait for 30s but do it in 0.5s pieces to not prevent closing the app while not self.closing and runner_count < 60: runner_count += 1 time.sleep(0.5)
def update_gui_slider(self): ticker = self.market.ticker() latest_price = ticker.get('latest', {}).get('price', None) if not latest_price: return total_balance = self.count_asset() total = (total_balance['quote'] * latest_price) + total_balance['base'] if not total: # Prevent division by zero percentage = 50 else: percentage = (total_balance['base'] / total) * 100 idle_add(self.view.set_worker_slider, self.worker_name, percentage) self['slider'] = percentage
def update_gui_slider(self): ticker = self.market.ticker() latest_price = ticker.get('latest', {}).get('price', None) if not latest_price: return if self.orders: order_ids = [i['id'] for i in self.orders] else: order_ids = None total_balance = self.total_balance(order_ids) total = (total_balance['quote'] * latest_price) + total_balance['base'] if not total: # Prevent division by zero percentage = 50 else: percentage = (total_balance['base'] / total) * 100 idle_add(self.view.set_worker_slider, self.worker_name, percentage) self['slider'] = percentage
def emit(self, record): # Use default formatting: self.format(record) message = record.msg if record.levelno > logging.WARNING: extra = translate_error(message) if record.exc_info: if not extra: extra = translate_error(repr(record.exc_info[1])) detail = logging._defaultFormatter.formatException(record.exc_info) else: detail = None if hasattr(record, "worker_name"): title = "Error on {}".format(record.worker_name) else: title = "DEXBot Error" idle_add(show_dialog, title, message, extra, detail) else: if self.info_handler and hasattr(record, "worker_name"): idle_add(self.info_handler, record.worker_name, record.levelno, message)
def update_gui_slider(self): """ Updates GUI slider on the workers list """ latest_price = self.ticker().get('latest', {}).get('price', None) if not latest_price: return order_ids = None orders = self.get_own_orders if orders: order_ids = [order['id'] for order in orders if 'id' in order] total_balance = self.count_asset(order_ids) total = (total_balance['quote'] * latest_price) + total_balance['base'] if not total: # Prevent division by zero percentage = 50 else: percentage = (total_balance['base'] / total) * 100 idle_add(self.view.set_worker_slider, self.worker_name, percentage) self['slider'] = percentage
def update_gui_profit(self): profit = self.calc_profit() # Add to idle queue idle_add(self.view.set_worker_profit, self.worker_name, float(profit)) self['profit'] = profit
def on_value_change(self): base_asset = self.worker_controller.view.base_asset_input.currentText() quote_asset = self.worker_controller.view.quote_asset_input.text() try: market = Market('{}:{}'.format(quote_asset, base_asset)) except AssetDoesNotExistsException: idle_add(self.set_required_base, 'N/A') idle_add(self.set_required_quote, 'N/A') return amount = self.view.strategy_widget.amount_input.value() spread = self.view.strategy_widget.spread_input.value() / 100 increment = self.view.strategy_widget.increment_input.value() / 100 lower_bound = self.view.strategy_widget.lower_bound_input.value() upper_bound = self.view.strategy_widget.upper_bound_input.value() if not (market or amount or spread or increment or lower_bound or upper_bound): idle_add(self.set_required_base, 'N/A') idle_add(self.set_required_quote, 'N/A') return strategy = StaggeredOrdersStrategy result = strategy.get_required_assets(market, amount, spread, increment, lower_bound, upper_bound) if not result: idle_add(self.set_required_base, 'N/A') idle_add(self.set_required_quote, 'N/A') return base, quote = result text = '{:.8f} {}'.format(base, base_asset) idle_add(self.set_required_base, text) text = '{:.8f} {}'.format(quote, quote_asset) idle_add(self.set_required_quote, text)