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