Ejemplo n.º 1
0
def portfolio():
    has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders()

    real_portfolio, simulated_portfolio = get_global_portfolio_currencies_amounts(
    )

    filtered_real_portfolio = {
        currency: amounts
        for currency, amounts in real_portfolio.items()
        if amounts[Portfolio.TOTAL] > 0
    }
    filtered_simulated_portfolio = {
        currency: amounts
        for currency, amounts in simulated_portfolio.items()
        if amounts[Portfolio.TOTAL] > 0
    }

    _, _, portfolio_real_current_value, portfolio_simulated_current_value = get_portfolio_current_value(
    )
    reference_market = get_reference_market()

    return render_template('portfolio.html',
                           has_real_trader=has_real_trader,
                           has_simulated_trader=has_simulated_trader,
                           simulated_portfolio=filtered_simulated_portfolio,
                           real_portfolio=filtered_real_portfolio,
                           simulated_total_value=round(
                               portfolio_simulated_current_value, 8),
                           real_total_value=round(portfolio_real_current_value,
                                                  8),
                           reference_unit=reference_market)
Ejemplo n.º 2
0
    def command_trades_history(_, update):
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders(
        )
        real_trades_history, simulated_trades_history = get_trades_history()

        trades_history_string = ""
        if has_real_trader:
            trades_history_string += "{0}Trades :{1}".format(
                REAL_TRADER_STR, TelegramApp.EOL)
            for trades in real_trades_history:
                for trade in trades:
                    trades_history_string += PrettyPrinter.trade_pretty_printer(
                        trade) + TelegramApp.EOL

        if has_simulated_trader:
            for trades in simulated_trades_history:
                trades_history_string += TelegramApp.EOL + "{0}Trades :{1}".format(
                    SIMULATOR_TRADER_STR, TelegramApp.EOL)
                for trade in trades:
                    trades_history_string += PrettyPrinter.trade_pretty_printer(
                        trade) + TelegramApp.EOL

        if not trades_history_string:
            trades_history_string = TelegramApp.NO_TRADER_MESSAGE

        update.message.reply_text(trades_history_string)
Ejemplo n.º 3
0
    def get_command_configuration(markdown=False):
        _, b, c = PrettyPrinter.get_markets(markdown)
        message = f"{b}My configuration:{b}{EOL}{EOL}"

        message += f"{b}Traders: {b}{EOL}"
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders()
        if has_real_trader:
            message += f"{c}- Real trader{c}{EOL}"
        if has_simulated_trader:
            message += f"{c}- Simulated trader{c}{EOL}"

        message += f"{EOL}{b}Exchanges:{b}{EOL}"
        for exchange in get_bot().get_exchanges_list().values():
            message += f"{c}- {exchange.get_name()}{c}{EOL}"

        message += f"{EOL}{b}Evaluators:{b}{EOL}"
        first_evaluator = next(iter(get_bot().get_symbols_tasks_manager().values())).get_evaluator()
        evaluators = copy.copy(first_evaluator.get_social_eval_list())
        evaluators += first_evaluator.get_ta_eval_list()
        evaluators += first_evaluator.get_real_time_eval_list()
        for evaluator in evaluators:
            message += f"{c}- {evaluator.get_name()}{c}{EOL}"

        first_symbol_evaluator = next(iter(get_bot().get_symbol_evaluator_list().values()))
        first_exchange = next(iter(get_bot().get_exchanges_list().values()))
        message += f"{EOL}{b}Strategies:{b}{EOL}"
        for strategy in first_symbol_evaluator.get_strategies_eval_list(first_exchange):
            message += f"{c}- {strategy.get_name()}{c}{EOL}"

        message += f"{EOL}{b}Trading mode:{b}{EOL}"
        message += f"{c}- {next(iter(get_bot().get_exchange_trading_modes().values())).get_name()}{c}"

        return message
Ejemplo n.º 4
0
    def command_open_orders(_, update):
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders(
        )
        portfolio_real_open_orders, portfolio_simulated_open_orders = get_open_orders(
        )

        orders_string = ""
        if has_real_trader:
            orders_string += "{0}Open orders :{1}".format(
                REAL_TRADER_STR, TelegramApp.EOL)
            for orders in portfolio_real_open_orders:
                for order in orders:
                    orders_string += PrettyPrinter.open_order_pretty_printer(
                        order) + TelegramApp.EOL

        if has_simulated_trader:
            orders_string += TelegramApp.EOL + "{0}Open orders :{1}".format(
                SIMULATOR_TRADER_STR, TelegramApp.EOL)
            for orders in portfolio_simulated_open_orders:
                for order in orders:
                    orders_string += PrettyPrinter.open_order_pretty_printer(
                        order) + TelegramApp.EOL

        if not orders_string:
            orders_string = TelegramApp.NO_TRADER_MESSAGE

        update.message.reply_text(orders_string)
Ejemplo n.º 5
0
    def get_command_open_orders():
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders(
        )
        portfolio_real_open_orders, portfolio_simulated_open_orders = get_open_orders(
        )

        orders_string = ""
        if has_real_trader:
            orders_string += f"{REAL_TRADER_STR}Open orders :{EOL}"
            for orders in portfolio_real_open_orders:
                for order in orders:
                    orders_string += PrettyPrinter.open_order_pretty_printer(
                        order) + EOL

        if has_simulated_trader:
            orders_string += EOL + f"{SIMULATOR_TRADER_STR}Open orders :{EOL}"
            for orders in portfolio_simulated_open_orders:
                for order in orders:
                    orders_string += PrettyPrinter.open_order_pretty_printer(
                        order) + EOL

        if not orders_string:
            orders_string = NO_TRADER_MESSAGE

        return orders_string
Ejemplo n.º 6
0
def trading():
    real_open_orders, simulated_open_orders = get_open_orders()
    has_real_trader, _ = has_real_and_or_simulated_traders()
    return render_template('trading.html',
                           real_open_orders=real_open_orders,
                           simulated_open_orders=simulated_open_orders,
                           watched_symbols=get_watched_symbols(),
                           pairs_with_status=get_currencies_with_status(),
                           has_real_trader=has_real_trader)
Ejemplo n.º 7
0
    def get_command_trades_history(markdown=False):
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders()
        real_trades_history, simulated_trades_history = get_trades_history()

        trades_history_string = ""
        if has_real_trader:
            trades_history_string += InterfaceBot._print_trades(real_trades_history, REAL_TRADER_STR, markdown)

        if has_simulated_trader:
            trades_history_string += \
                f"{EOL}{InterfaceBot._print_trades(simulated_trades_history, SIMULATOR_TRADER_STR, markdown)}"

        if not trades_history_string:
            trades_history_string = NO_TRADER_MESSAGE

        return trades_history_string
Ejemplo n.º 8
0
    def command_configuration(_, update):
        try:
            message = "My configuration:{0}{0}".format(TelegramApp.EOL)

            message += "Traders: " + TelegramApp.EOL
            has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders(
            )
            if has_real_trader:
                message += "- Real trader" + TelegramApp.EOL
            if has_simulated_trader:
                message += "- Simulated trader" + TelegramApp.EOL

            message += "{0}Exchanges:{0}".format(TelegramApp.EOL)
            for exchange in get_bot().get_exchanges_list().values():
                message += "- {0}{1}".format(exchange.get_name(),
                                             TelegramApp.EOL)

            message += "{0}Evaluators:{0}".format(TelegramApp.EOL)
            first_evaluator = next(
                iter(get_bot().get_symbols_threads_manager().values())
            ).get_evaluator()
            evaluators = copy.copy(first_evaluator.get_social_eval_list())
            evaluators += first_evaluator.get_ta_eval_list()
            evaluators += first_evaluator.get_real_time_eval_list()
            for evaluator in evaluators:
                message += "- {0}{1}".format(evaluator.get_name(),
                                             TelegramApp.EOL)

            first_symbol_evaluator = next(
                iter(get_bot().get_symbol_evaluator_list().values()))
            first_exchange = next(iter(
                get_bot().get_exchanges_list().values()))
            message += "{0}Strategies:{0}".format(TelegramApp.EOL)
            for strategy in first_symbol_evaluator.get_strategies_eval_list(
                    first_exchange):
                message += "- {0}{1}".format(strategy.get_name(),
                                             TelegramApp.EOL)

            message += "{0}Trading mode:{0}".format(TelegramApp.EOL)
            message += "- {0}{1}".format(
                first_symbol_evaluator.trading_mode_class.get_name(),
                TelegramApp.EOL)
            update.message.reply_text(message)
        except Exception:
            update.message.reply_text(
                "I'm unfortunately currently unable to show you my configuration. "
                "Please wait for my initialization to complete.")
Ejemplo n.º 9
0
    def get_command_open_orders(markdown=False):
        _, b, c = PrettyPrinter.get_markets(markdown)
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders()
        portfolio_real_open_orders, portfolio_simulated_open_orders = get_open_orders()

        orders_string = ""
        if has_real_trader:
            orders_string += InterfaceBot._print_open_orders(portfolio_real_open_orders, REAL_TRADER_STR, markdown)

        if has_simulated_trader:
            orders_string += f"{EOL}" \
                f"{InterfaceBot._print_open_orders(portfolio_simulated_open_orders, SIMULATOR_TRADER_STR, markdown)}"

        if not orders_string:
            orders_string = NO_TRADER_MESSAGE

        return orders_string
Ejemplo n.º 10
0
    def get_command_configuration():
        message = f"My configuration:{EOL}{EOL}"

        message += "Traders: " + EOL
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders(
        )
        if has_real_trader:
            message += "- Real trader" + EOL
        if has_simulated_trader:
            message += "- Simulated trader" + EOL

        message += f"{EOL}Exchanges:{EOL}"
        for exchange in get_bot().get_exchanges_list().values():
            message += f"- {exchange.get_name()}{EOL}"

        message += f"{EOL}Evaluators:{EOL}"
        first_evaluator = next(
            iter(get_bot().get_symbols_tasks_manager().values())
        ).get_evaluator()
        evaluators = copy.copy(first_evaluator.get_social_eval_list())
        evaluators += first_evaluator.get_ta_eval_list()
        evaluators += first_evaluator.get_real_time_eval_list()
        for evaluator in evaluators:
            message += f"- {evaluator.get_name()}{EOL}"

        first_symbol_evaluator = next(
            iter(get_bot().get_symbol_evaluator_list().values()))
        first_exchange = next(iter(get_bot().get_exchanges_list().values()))
        message += f"{EOL}Strategies:{EOL}"
        for strategy in first_symbol_evaluator.get_strategies_eval_list(
                first_exchange):
            message += f"- {strategy.get_name()}{EOL}"

        message += f"{EOL}Trading mode:{EOL}"
        message += f"- {next(iter(get_bot().get_exchange_trading_modes().values())).get_name()}{EOL}"

        return message
Ejemplo n.º 11
0
    def get_command_trades_history():
        has_real_trader, has_simulated_trader = has_real_and_or_simulated_traders(
        )
        real_trades_history, simulated_trades_history = get_trades_history()

        trades_history_string = ""
        if has_real_trader:
            trades_history_string += f"{REAL_TRADER_STR}Trades :{EOL}"
            for trades in real_trades_history:
                for trade in trades:
                    trades_history_string += PrettyPrinter.trade_pretty_printer(
                        trade) + EOL

        if has_simulated_trader:
            for trades in simulated_trades_history:
                trades_history_string += EOL + f"{SIMULATOR_TRADER_STR}Trades :{EOL}"
                for trade in trades:
                    trades_history_string += PrettyPrinter.trade_pretty_printer(
                        trade) + EOL

        if not trades_history_string:
            trades_history_string = NO_TRADER_MESSAGE

        return trades_history_string
Ejemplo n.º 12
0
def config():
    if request.method == 'POST':
        request_data = request.get_json()
        success = True
        response = ""

        if request_data:

            # update trading config if required
            if TRADING_CONFIG_KEY in request_data and request_data[TRADING_CONFIG_KEY]:
                success = success and update_trading_config(request_data[TRADING_CONFIG_KEY])
            else:
                request_data[TRADING_CONFIG_KEY] = ""

            # update evaluator config if required
            if EVALUATOR_CONFIG_KEY in request_data and request_data[EVALUATOR_CONFIG_KEY]:
                deactivate_others = False
                if DEACTIVATE_OTHERS in request_data:
                    deactivate_others = request_data[DEACTIVATE_OTHERS]
                success = success and update_evaluator_config(request_data[EVALUATOR_CONFIG_KEY], deactivate_others)
            else:
                request_data[EVALUATOR_CONFIG_KEY] = ""

            # remove elements from global config if any to remove
            removed_elements_key = "removed_elements"
            if removed_elements_key in request_data and request_data[removed_elements_key]:
                success = success and update_global_config(request_data[removed_elements_key], delete=True)
            else:
                request_data[removed_elements_key] = ""

            # update global config if required
            if GLOBAL_CONFIG_KEY in request_data and request_data[GLOBAL_CONFIG_KEY]:
                success = update_global_config(request_data[GLOBAL_CONFIG_KEY])
            else:
                request_data[GLOBAL_CONFIG_KEY] = ""

            response = {
                "evaluator_updated_config": request_data[EVALUATOR_CONFIG_KEY],
                "trading_updated_config": request_data[TRADING_CONFIG_KEY],
                "global_updated_config": request_data[GLOBAL_CONFIG_KEY],
                removed_elements_key: request_data[removed_elements_key]
            }

        if success:
            return get_rest_reply(jsonify(response))
        else:
            return get_rest_reply('{"update": "ko"}', 500)
    else:
        display_config = get_edited_config()

        # service lists
        service_list, service_name_list = get_services_list()

        return render_template('config.html',

                               config_exchanges=display_config[CONFIG_EXCHANGES],
                               config_trading=display_config[CONFIG_TRADING],
                               config_trader=display_config[CONFIG_TRADER],
                               config_trader_simulator=display_config[CONFIG_SIMULATOR],
                               config_notifications=display_config[CONFIG_CATEGORY_NOTIFICATION],
                               config_services=display_config[CONFIG_CATEGORY_SERVICES],
                               config_symbols=display_config[CONFIG_CRYPTO_CURRENCIES],
                               config_reference_market=display_config[CONFIG_TRADING][CONFIG_TRADER_REFERENCE_MARKET],

                               real_trader_activated=has_real_and_or_simulated_traders()[0],

                               ccxt_tested_exchanges=get_tested_exchange_list(),
                               ccxt_simulated_tested_exchanges=get_simulated_exchange_list(),
                               ccxt_other_exchanges=sorted(get_other_exchange_list()),
                               services_list=service_list,
                               service_name_list=service_name_list,
                               symbol_list=sorted(get_symbol_list([exchange
                                                                   for exchange in display_config[CONFIG_EXCHANGES]])),
                               full_symbol_list=get_all_symbol_list(),
                               strategy_config=get_strategy_config(),
                               evaluator_startup_config=get_evaluator_startup_config(),
                               trading_startup_config=get_trading_startup_config(),

                               is_trading_persistence_activated=is_trading_persistence_activated(),
                               in_backtesting=backtesting_enabled(display_config)
                               )