Example #1
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
Example #2
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)
Example #3
0
    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
Example #4
0
    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
Example #5
0
 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)
Example #6
0
    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
Example #7
0
    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)