Пример #1
0
def test_init_plotscript(default_conf, mocker, testdatadir):
    default_conf['timerange'] = "20180110-20180112"
    default_conf['trade_source'] = "file"
    default_conf['timeframe'] = "5m"
    default_conf["datadir"] = testdatadir
    default_conf['exportfilename'] = testdatadir / "backtest-result_test.json"
    ret = init_plotscript(default_conf)
    assert "ohlcv" in ret
    assert "trades" in ret
    assert "pairs" in ret

    default_conf['pairs'] = ["TRX/BTC", "ADA/BTC"]
    ret = init_plotscript(default_conf)
    assert "ohlcv" in ret
    assert "TRX/BTC" in ret["ohlcv"]
    assert "ADA/BTC" in ret["ohlcv"]
Пример #2
0
def analyse_and_plot_pairs(config: Dict[str, Any]):
    plot_elements = init_plotscript(config)
    trades = plot_elements['trades']
    strategy = StrategyResolver(config).strategy

    pair_counter = 0
    plots = []
    for pair, data in plot_elements["tickers"].items():
        pair_counter += 1
        logger.info("analyse pair %s", pair)
        tickers = {}
        tickers[pair] = data

        dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair})

        trades_pair = trades.loc[trades['pair'] == pair]
        trades_pair = extract_trades_of_period(dataframe, trades_pair)

        plots.append(
            analyze_results(pair=pair,
                            data=dataframe,
                            trades=trades_pair,
                            indicators1=parse_indicators(
                                config['indicators1'] if 'indicators1' in
                                config.keys() else None),
                            indicators2=parse_indicators(
                                config['indicators2'] if 'indicators2' in
                                config.keys() else None)))

    logger.info('End of ploting process %s plots generated', pair_counter)
    return plots
Пример #3
0
def test_init_plotscript(default_conf, mocker, testdatadir):
    default_conf['timerange'] = "20180110-20180112"
    default_conf['trade_source'] = "file"
    default_conf['ticker_interval'] = "5m"
    default_conf["datadir"] = testdatadir
    default_conf['exportfilename'] = str(testdatadir /
                                         "backtest-result_test.json")
    ret = init_plotscript(default_conf)
    assert "tickers" in ret
    assert "trades" in ret
    assert "pairs" in ret

    default_conf['pairs'] = ["POWR/BTC", "XLM/BTC"]
    ret = init_plotscript(default_conf)
    assert "tickers" in ret
    assert "POWR/BTC" in ret["tickers"]
    assert "XLM/BTC" in ret["tickers"]
Пример #4
0
def test_init_plotscript(default_conf, mocker):
    default_conf['timerange'] = "20180110-20180112"
    default_conf['trade_source'] = "file"
    default_conf['ticker_interval'] = "5m"
    default_conf["datadir"] = history.make_testdata_path(None)
    default_conf['exportfilename'] = str(
        history.make_testdata_path(None) / "backtest-result_test.json")
    ret = init_plotscript(default_conf)
    assert "tickers" in ret
    assert "trades" in ret
    assert "pairs" in ret
    assert "strategy" in ret

    default_conf['pairs'] = "POWR/BTC,XLM/BTC"
    ret = init_plotscript(default_conf)
    assert "tickers" in ret
    assert "POWR/BTC" in ret["tickers"]
    assert "XLM/BTC" in ret["tickers"]
Пример #5
0
def plot_profit(config: Dict[str, Any]) -> None:
    """
    Plots the total profit for all pairs.
    Note, the profit calculation isn't realistic.
    But should be somewhat proportional, and therefor useful
    in helping out to find a good algorithm.
    """
    plot_elements = init_plotscript(config)
    trades = plot_elements['trades']
    # Filter trades to relevant pairs
    trades = trades[trades['pair'].isin(plot_elements["pairs"])]

    # Create an average close price of all the pairs that were involved.
    # this could be useful to gauge the overall market trend
    fig = generate_profit_graph(plot_elements["pairs"],
                                plot_elements["tickers"], trades)
    store_plot_file(fig, filename='freqtrade-profit-plot.html', auto_open=True)
Пример #6
0
def analyse_and_plot_pairs(config: Dict[str, Any]):
    """
    From arguments provided in cli:
    -Initialise backtest env
    -Get tickers data
    -Generate Dafaframes populated with indicators and signals
    -Load trades excecuted on same periods
    -Generate Plotly plot objects
    -Generate plot files
    :return: None
    """
    plot_elements = init_plotscript(config)
    trades = plot_elements['trades']
    strategy = plot_elements["strategy"]

    pair_counter = 0
    for pair, data in plot_elements["tickers"].items():
        pair_counter += 1
        logger.info("analyse pair %s", pair)
        tickers = {}
        tickers[pair] = data

        dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair})

        trades_pair = trades.loc[trades['pair'] == pair]
        trades_pair = extract_trades_of_period(dataframe, trades_pair)

        fig = generate_candlestick_graph(
            pair=pair,
            data=dataframe,
            trades=trades_pair,
            indicators1=config["indicators1"].split(","),
            indicators2=config["indicators2"].split(","))

        store_plot_file(fig,
                        filename=generate_plot_filename(
                            pair, config['ticker_interval']),
                        directory=config['user_data_dir'] / "plot")

    logger.info('End of ploting process %s plots generated', pair_counter)