From 518d7dfde8d9f858945fa52b6d7d79d2d1e23d5b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 17:11:16 +0200 Subject: [PATCH] Replace plot-scripts with pointers to the new commands --- scripts/plot_dataframe.py | 99 ++------------------------------------- scripts/plot_profit.py | 65 ++----------------------- 2 files changed, 10 insertions(+), 154 deletions(-) diff --git a/scripts/plot_dataframe.py b/scripts/plot_dataframe.py index db4f99d61..62c4bc39f 100755 --- a/scripts/plot_dataframe.py +++ b/scripts/plot_dataframe.py @@ -1,100 +1,11 @@ #!/usr/bin/env python3 -""" -Script to display when the bot will buy on specific pair(s) -Use `python plot_dataframe.py --help` to display the command line arguments - -Indicators recommended -Row 1: sma, ema3, ema5, ema10, ema50 -Row 3: macd, rsi, fisher_rsi, mfi, slowd, slowk, fastd, fastk - -Example of usage: -> python3 scripts/plot_dataframe.py --pairs BTC/EUR,XRP/BTC -d user_data/data/ - --indicators1 sma,ema3 --indicators2 fastk,fastd -""" -import logging import sys -from typing import Any, Dict, List - -from freqtrade.configuration import Arguments -from freqtrade.configuration.arguments import ARGS_PLOT_DATAFRAME -from freqtrade.data.btanalysis import extract_trades_of_period -from freqtrade.optimize import setup_configuration -from freqtrade.plot.plotting import (init_plotscript, generate_candlestick_graph, - store_plot_file, - generate_plot_filename) -from freqtrade.state import RunMode - -logger = logging.getLogger(__name__) - - -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) - - -def plot_parse_args(args: List[str]) -> Dict[str, Any]: - """ - Parse args passed to the script - :param args: Cli arguments - :return: args: Array with all arguments - """ - arguments = Arguments(args, 'Graph dataframe') - arguments._build_args(optionlist=ARGS_PLOT_DATAFRAME) - parsed_args = arguments._parse_args() - - # Load the configuration - config = setup_configuration(parsed_args, RunMode.OTHER) - return config - -def main(sysargv: List[str]) -> None: - """ - This function will initiate the bot and start the trading loop. - :return: None - """ - logger.info('Starting Plot Dataframe') - analyse_and_plot_pairs( - plot_parse_args(sysargv) - ) - exit() +print("This script has been integrated into freqtrade " + "and its functionality is available by calling `freqtrade plot-dataframe`.") +print("Please check the documentation on https://www.freqtrade.io/en/latest/plotting/ " + "for details.") -if __name__ == '__main__': - main(sys.argv[1:]) +sys.exit(1) diff --git a/scripts/plot_profit.py b/scripts/plot_profit.py index 578ddf15f..c9a23c1ee 100755 --- a/scripts/plot_profit.py +++ b/scripts/plot_profit.py @@ -1,66 +1,11 @@ #!/usr/bin/env python3 -""" -Script to display profits -Use `python plot_profit.py --help` to display the command line arguments -""" -import logging import sys -from typing import Any, Dict, List -from freqtrade.configuration import Arguments -from freqtrade.configuration.arguments import ARGS_PLOT_PROFIT -from freqtrade.optimize import setup_configuration -from freqtrade.plot.plotting import init_plotscript, generate_profit_graph, store_plot_file -from freqtrade.state import RunMode -logger = logging.getLogger(__name__) +print("This script has been integrated into freqtrade " + "and its functionality is available by calling `freqtrade plot-profit`.") +print("Please check the documentation on https://www.freqtrade.io/en/latest/plotting/ " + "for details.") - -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', - directory=config['user_data_dir'] / "plot", auto_open=True) - - -def plot_parse_args(args: List[str]) -> Dict[str, Any]: - """ - Parse args passed to the script - :param args: Cli arguments - :return: args: Array with all arguments - """ - arguments = Arguments(args, 'Graph profits') - arguments._build_args(optionlist=ARGS_PLOT_PROFIT) - parsed_args = arguments._parse_args() - - # Load the configuration - config = setup_configuration(parsed_args, RunMode.OTHER) - return config - - -def main(sysargv: List[str]) -> None: - """ - This function will initiate the bot and start the trading loop. - :return: None - """ - logger.info('Starting Plot Dataframe') - plot_profit( - plot_parse_args(sysargv) - ) - - -if __name__ == '__main__': - main(sys.argv[1:]) +sys.exit(1)