def update_gui_profit(self): if self.initial_balance: profit = round((self.orders_balance() - self.initial_balance) / self.initial_balance, 3) else: profit = 0 idle_add(self.view.set_bot_profit, self.bot_name, float(profit)) self['profit'] = profit
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_gui_slider(self): total_balance = self.total_balance(self['order_ids']) total = total_balance['quote'] + 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') total_balance = self.total_balance(self['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_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 emit(self, record): # Use default formatting: self.format(record) message = record.msg 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)
def update_gui_slider(self): buy_order = self['buy_order'] if buy_order: buy_amount = buy_order['quote']['amount'] else: buy_amount = 0 sell_order = self['sell_order'] if sell_order: sell_amount = sell_order['base']['amount'] else: sell_amount = 0 total = buy_amount + sell_amount if not total: # Prevent division by zero percentage = 0 else: percentage = (buy_amount / total) * 100 idle_add(self.view.set_bot_slider, self.bot_name, percentage) self['slider'] = percentage
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)