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)
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)
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
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)
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
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)
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
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.")
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
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
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
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) )