Пример #1
0
 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)
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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())))
Пример #5
0
    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())))
Пример #6
0
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)
Пример #7
0
    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)
Пример #8
0
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))
    }
Пример #9
0
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)
            )}
Пример #10
0
    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)))
Пример #11
0
    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)))
Пример #12
0
    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
Пример #13
0
    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