Exemple #1
0
def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame],
                          trades: pd.DataFrame) -> go.Figure:
    # Combine close-values for all pairs, rename columns to "pair"
    df_comb = combine_tickers_with_mean(tickers, "close")

    # Add combined cumulative profit
    df_comb = create_cum_profit(df_comb, trades, 'cum_profit')

    # Plot the pairs average close prices, and total profit growth
    avgclose = go.Scattergl(
        x=df_comb.index,
        y=df_comb['mean'],
        name='Avg close price',
    )

    fig = make_subplots(rows=3, cols=1, shared_xaxes=True, row_width=[1, 1, 1])
    fig['layout'].update(title="Profit plot")

    fig.add_trace(avgclose, 1, 1)
    fig = add_profit(fig, 2, df_comb, 'cum_profit', 'Profit')

    for pair in pairs:
        profit_col = f'cum_profit_{pair}'
        df_comb = create_cum_profit(df_comb, trades[trades['pair'] == pair],
                                    profit_col)

        fig = add_profit(fig, 3, df_comb, profit_col, f"Profit {pair}")

    return fig
Exemple #2
0
def test_combine_tickers_with_mean(testdatadir):
    pairs = ["ETH/BTC", "ADA/BTC"]
    tickers = load_data(datadir=testdatadir, pairs=pairs, timeframe='5m')
    df = combine_tickers_with_mean(tickers)
    assert isinstance(df, DataFrame)
    assert "ETH/BTC" in df.columns
    assert "ADA/BTC" in df.columns
    assert "mean" in df.columns
Exemple #3
0
def test_combine_tickers_with_mean():
    pairs = ["ETH/BTC", "XLM/BTC"]
    tickers = load_data(datadir=None, pairs=pairs, ticker_interval='5m')
    df = combine_tickers_with_mean(tickers)
    assert isinstance(df, DataFrame)
    assert "ETH/BTC" in df.columns
    assert "XLM/BTC" in df.columns
    assert "mean" in df.columns
Exemple #4
0
def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame],
                          trades: pd.DataFrame, timeframe: str) -> go.Figure:
    # Combine close-values for all pairs, rename columns to "pair"
    df_comb = combine_tickers_with_mean(tickers, "close")

    # Add combined cumulative profit
    df_comb = create_cum_profit(df_comb, trades, 'cum_profit', timeframe)

    # Plot the pairs average close prices, and total profit growth
    avgclose = go.Scatter(
        x=df_comb.index,
        y=df_comb['mean'],
        name='Avg close price',
    )

    fig = make_subplots(rows=3,
                        cols=1,
                        shared_xaxes=True,
                        row_width=[1, 1, 1],
                        vertical_spacing=0.05,
                        subplot_titles=[
                            "AVG Close Price", "Combined Profit",
                            "Profit per pair"
                        ])
    fig['layout'].update(title="Freqtrade Profit plot")
    fig['layout']['yaxis1'].update(title='Price')
    fig['layout']['yaxis2'].update(title='Profit')
    fig['layout']['yaxis3'].update(title='Profit')
    fig['layout']['xaxis']['rangeslider'].update(visible=False)

    fig.add_trace(avgclose, 1, 1)
    fig = add_profit(fig, 2, df_comb, 'cum_profit', 'Profit')
    fig = add_max_drawdown(fig, 2, trades, df_comb)

    for pair in pairs:
        profit_col = f'cum_profit_{pair}'
        df_comb = create_cum_profit(df_comb, trades[trades['pair'] == pair],
                                    profit_col, timeframe)

        fig = add_profit(fig, 3, df_comb, profit_col, f"Profit {pair}")

    return fig