def command_profitability(_, update): has_real_trader, has_simulated_trader, \ real_global_profitability, simulated_global_profitability, \ real_percent_profitability, simulated_percent_profitability, \ market_average_profitability = get_global_profitability() profitability_string = "" if has_real_trader: profitability_string = "{0}Global profitability : {1} ({2}%), market: {3}%{4}".format( REAL_TRADER_STR, PrettyPrinter.portfolio_profitability_pretty_print( real_global_profitability, None, get_reference_market()), PrettyPrinter.get_min_string_from_number( real_percent_profitability, 2), PrettyPrinter.get_min_string_from_number( market_average_profitability, 2), TelegramApp.EOL) if has_simulated_trader: profitability_string += "{0}Global profitability : {1} ({2}%), market: {3}%".format( SIMULATOR_TRADER_STR, PrettyPrinter.portfolio_profitability_pretty_print( simulated_global_profitability, None, get_reference_market()), PrettyPrinter.get_min_string_from_number( simulated_percent_profitability, 2), PrettyPrinter.get_min_string_from_number( market_average_profitability, 2)) if not profitability_string: profitability_string = TelegramApp.NO_TRADER_MESSAGE update.message.reply_text(profitability_string)
def get_command_profitability(markdown=False): _, b, c = PrettyPrinter.get_markets(markdown) has_real_trader, has_simulated_trader, \ real_global_profitability, simulated_global_profitability, \ real_percent_profitability, simulated_percent_profitability, \ real_no_trade_profitability, simulated_no_trade_profitability, \ market_average_profitability = get_global_profitability() profitability_string = "" if has_real_trader: real_profitability_pretty = PrettyPrinter.portfolio_profitability_pretty_print( real_global_profitability, None, get_reference_market()) profitability_string = \ f"{b}{REAL_TRADER_STR}{b}Global profitability : {c}{real_profitability_pretty}" \ f"({PrettyPrinter.get_min_string_from_number(real_percent_profitability, 2)}%){c}, market: {c}" \ f"{PrettyPrinter.get_min_string_from_number(market_average_profitability, 2)}%{c}, initial portfolio:" \ f" {c}{PrettyPrinter.get_min_string_from_number(real_no_trade_profitability, 2)}%{c}{EOL}" if has_simulated_trader: simulated_profitability_pretty = \ PrettyPrinter.portfolio_profitability_pretty_print(simulated_global_profitability, None, get_reference_market()) profitability_string += \ f"{b}{SIMULATOR_TRADER_STR}{b}Global profitability : {c}{simulated_profitability_pretty}" \ f"({PrettyPrinter.get_min_string_from_number(simulated_percent_profitability, 2)}%){c}, " \ f"market: {c}{PrettyPrinter.get_min_string_from_number(market_average_profitability, 2)}%{c}, " \ f"initial portfolio: {c}" \ f"{PrettyPrinter.get_min_string_from_number(simulated_no_trade_profitability, 2)}%{c}" if not profitability_string: profitability_string = NO_TRADER_MESSAGE return profitability_string
def get_command_profitability(): has_real_trader, has_simulated_trader, \ real_global_profitability, simulated_global_profitability, \ real_percent_profitability, simulated_percent_profitability, \ real_no_trade_profitability, simulated_no_trade_profitability, \ market_average_profitability = get_global_profitability() profitability_string = "" if has_real_trader: real_profitability_pretty = PrettyPrinter.portfolio_profitability_pretty_print( real_global_profitability, None, get_reference_market()) profitability_string = f"{REAL_TRADER_STR}Global profitability : {real_profitability_pretty} " \ f"({PrettyPrinter.get_min_string_from_number(real_percent_profitability, 2)}%), " \ f"market: {PrettyPrinter.get_min_string_from_number(market_average_profitability, 2)}%, " \ f"initial portfolio: {PrettyPrinter.get_min_string_from_number(real_no_trade_profitability, 2)}%{EOL}" if has_simulated_trader: simulated_profitability_pretty = \ PrettyPrinter.portfolio_profitability_pretty_print(simulated_global_profitability, None, get_reference_market()) profitability_string += f"{SIMULATOR_TRADER_STR}Global profitability : {simulated_profitability_pretty} " \ f"({PrettyPrinter.get_min_string_from_number(simulated_percent_profitability, 2)}%), " \ f"market: {PrettyPrinter.get_min_string_from_number(market_average_profitability, 2)}%, " \ f"initial portfolio: {PrettyPrinter.get_min_string_from_number(simulated_no_trade_profitability, 2)}%" if not profitability_string: profitability_string = NO_TRADER_MESSAGE return profitability_string
def command_profitability(_, update): real_global_profitability, simulated_global_profitability = get_global_profitability() update.message.reply_text("Real global profitability : {0}".format( PrettyPrinter.portfolio_profitability_pretty_print(real_global_profitability, None, get_reference_market()))) update.message.reply_text("Simulated global profitability : {0}".format( PrettyPrinter.portfolio_profitability_pretty_print(simulated_global_profitability, None, get_reference_market())))
def command_profitability(_, update): real_global_profitability, simulated_global_profitability = get_global_profitability( ) update.message.reply_text("Real global profitability : {0}".format( PrettyPrinter.portfolio_profitability_pretty_print( real_global_profitability, None, get_reference_market()))) update.message.reply_text( "Simulated global profitability : {0}".format( PrettyPrinter.portfolio_profitability_pretty_print( simulated_global_profitability, None, get_reference_market())))
def portfolio(): 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', 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_portfolio(_, update): has_real_trader, has_simulated_trader, \ portfolio_real_current_value, portfolio_simulated_current_value = get_portfolio_current_value() reference_market = get_reference_market() real_global_portfolio, simulated_global_portfolio = get_global_portfolio_currencies_amounts( ) portfolios_string = "" if has_real_trader: portfolios_string += "{0}Portfolio value : {1} {2}{3}".format( REAL_TRADER_STR, PrettyPrinter.get_min_string_from_number( portfolio_real_current_value), reference_market, TelegramApp.EOL) portfolios_string += "{0}Portfolio : {2}{1}{2}{2}".format( REAL_TRADER_STR, PrettyPrinter.global_portfolio_pretty_print( real_global_portfolio), TelegramApp.EOL) if has_simulated_trader: portfolios_string += "{0}Portfolio value : {1} {2}{3}".format( SIMULATOR_TRADER_STR, PrettyPrinter.get_min_string_from_number( portfolio_simulated_current_value), reference_market, TelegramApp.EOL) portfolios_string += "{0}Portfolio : {2}{1}".format( SIMULATOR_TRADER_STR, PrettyPrinter.global_portfolio_pretty_print( simulated_global_portfolio), TelegramApp.EOL) if not portfolios_string: portfolios_string = TelegramApp.NO_TRADER_MESSAGE update.message.reply_text(portfolios_string)
def get_portfolio_value_in_history(): at_least_one_simulated = False at_least_one_real = False min_value = 0 max_value = 1 reference_market = get_reference_market() portfolio_value_in_history = get_portfolio_value_history() if max(portfolio_value_in_history["real_value"]) > 0: at_least_one_real = True if max(portfolio_value_in_history["simulated_value"]) > 0: at_least_one_simulated = True real_data = plotly.graph_objs.Scatter( x=portfolio_value_in_history["timestamp"], y=portfolio_value_in_history["real_value"], name='Real Portfolio in {}'.format(reference_market), mode='lines') simulated_data = plotly.graph_objs.Scatter( x=portfolio_value_in_history["timestamp"], y=portfolio_value_in_history["simulated_value"], name='Simulated Portfolio in {}'.format(reference_market), mode='lines') # Title real_simulated_string = "real" if at_least_one_real or not at_least_one_simulated else "" real_simulated_string += " and " if at_least_one_simulated and at_least_one_real else "" real_simulated_string += "simulated" if at_least_one_simulated else "" # merge two portfolio types merged_data = [] if at_least_one_simulated: merged_data.append(simulated_data) min_value = min(portfolio_value_in_history["simulated_value"]) max_value = max(portfolio_value_in_history["simulated_value"]) if at_least_one_real or not at_least_one_simulated: merged_data.append(real_data) min_value = min(min_value, min(portfolio_value_in_history["real_value"])) max_value = max(max_value, max(portfolio_value_in_history["real_value"])) return { 'data': merged_data, 'layout': go.Layout(title='Portfolio value ({})'.format(real_simulated_string), xaxis=dict(range=[get_bot().get_start_time(), time.time()], title=TIME_AXIS_TITLE), yaxis=dict(range=[ max(0, min_value * 0.99), max(0.1, max_value * 1.01) ], title=reference_market)) }
def get_portfolio_value_in_history(): at_least_one_simulated = False at_least_one_real = False min_value = 0 max_value = 1 reference_market = get_reference_market() portfolio_value_in_history = get_portfolio_value_history() if max(portfolio_value_in_history["real_value"]) > 0: at_least_one_real = True if max(portfolio_value_in_history["simulated_value"]) > 0: at_least_one_simulated = True real_data = plotly.graph_objs.Scatter( x=portfolio_value_in_history["timestamp"], y=portfolio_value_in_history["real_value"], name='Real Portfolio in {}'.format(reference_market), mode='lines' ) simulated_data = plotly.graph_objs.Scatter( x=portfolio_value_in_history["timestamp"], y=portfolio_value_in_history["simulated_value"], name='Simulated Portfolio in {}'.format(reference_market), mode='lines' ) # Title real_simulated_string = "real" if at_least_one_real or not at_least_one_simulated else "" real_simulated_string += " and " if at_least_one_simulated and at_least_one_real else "" real_simulated_string += "simulated" if at_least_one_simulated else "" # merge two portfolio types merged_data = [] if at_least_one_simulated: merged_data.append(simulated_data) min_value = min(portfolio_value_in_history["simulated_value"]) max_value = max(portfolio_value_in_history["simulated_value"]) if at_least_one_real or not at_least_one_simulated: merged_data.append(real_data) min_value = min(min_value, min(portfolio_value_in_history["real_value"])) max_value = max(max_value, max(portfolio_value_in_history["real_value"])) return {'data': merged_data, 'layout': go.Layout( title='Portfolio value ({})'.format(real_simulated_string), xaxis=dict(range=[get_bot().get_start_time(), time.time()], title=TIME_AXIS_TITLE), yaxis=dict(range=[max(0, min_value * 0.99), max(0.1, max_value * 1.01)], title=reference_market) )}
def command_portfolio(_, update): portfolio_real_current_value, portfolio_simulated_current_value = get_portfolio_current_value() reference_market = get_reference_market() real_global_portfolio, simulated_global_portfolio = get_global_portfolio_currencies_amounts() update.message.reply_text("Portfolio real value : {0} {1}".format(portfolio_real_current_value, reference_market)) update.message.reply_text("Global real portfolio : \n{0}" .format(PrettyPrinter.global_portfolio_pretty_print(real_global_portfolio))) update.message.reply_text("Portfolio simulated value : {0} {1}".format(portfolio_simulated_current_value, reference_market)) update.message.reply_text("Global simulated portfolio : \n{0}" .format(PrettyPrinter.global_portfolio_pretty_print(simulated_global_portfolio)))
def command_portfolio(_, update): portfolio_real_current_value, portfolio_simulated_current_value = get_portfolio_current_value( ) reference_market = get_reference_market() real_global_portfolio, simulated_global_portfolio = get_global_portfolio_currencies_amounts( ) update.message.reply_text("Portfolio real value : {0} {1}".format( portfolio_real_current_value, reference_market)) update.message.reply_text("Global real portfolio : \n{0}".format( PrettyPrinter.global_portfolio_pretty_print( real_global_portfolio))) update.message.reply_text("Portfolio simulated value : {0} {1}".format( portfolio_simulated_current_value, reference_market)) update.message.reply_text("Global simulated portfolio : \n{0}".format( PrettyPrinter.global_portfolio_pretty_print( simulated_global_portfolio)))
def get_command_portfolio(markdown=False): _, b, c = PrettyPrinter.get_markets(markdown) has_real_trader, has_simulated_trader, \ portfolio_real_current_value, portfolio_simulated_current_value = get_portfolio_current_value() reference_market = get_reference_market() real_global_portfolio, simulated_global_portfolio = get_global_portfolio_currencies_amounts() portfolios_string = "" if has_real_trader: portfolios_string += InterfaceBot._print_portfolio(portfolio_real_current_value, reference_market, real_global_portfolio, REAL_TRADER_STR, markdown) if has_simulated_trader: portfolio_str = InterfaceBot._print_portfolio(portfolio_simulated_current_value, reference_market, simulated_global_portfolio, SIMULATOR_TRADER_STR, markdown) portfolios_string += f"{EOL}{portfolio_str}" if not portfolios_string: portfolios_string = NO_TRADER_MESSAGE return portfolios_string
def get_command_portfolio(): has_real_trader, has_simulated_trader, \ portfolio_real_current_value, portfolio_simulated_current_value = get_portfolio_current_value() reference_market = get_reference_market() real_global_portfolio, simulated_global_portfolio = get_global_portfolio_currencies_amounts( ) portfolios_string = "" if has_real_trader: portfolios_string += f"{REAL_TRADER_STR}Portfolio value : " \ f"{PrettyPrinter.get_min_string_from_number(portfolio_real_current_value)} {reference_market}{EOL}" portfolios_string += f"{REAL_TRADER_STR}Portfolio : {EOL}" \ f"{PrettyPrinter.global_portfolio_pretty_print(real_global_portfolio)}{EOL}{EOL}" if has_simulated_trader: portfolios_string += f"{SIMULATOR_TRADER_STR}Portfolio value : " \ f"{PrettyPrinter.get_min_string_from_number(portfolio_simulated_current_value)} {reference_market}{EOL}" portfolios_string += f"{SIMULATOR_TRADER_STR}Portfolio : {EOL}" \ f"{PrettyPrinter.global_portfolio_pretty_print(simulated_global_portfolio)}" if not portfolios_string: portfolios_string = NO_TRADER_MESSAGE return portfolios_string