Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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)