From f7cb75ff9362a8c955a0f1c73926781b72a3a2e9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 16:51:00 +0200 Subject: [PATCH] Add plot-profit command --- freqtrade/configuration/arguments.py | 13 ++++++++++--- freqtrade/plot/plot_utils.py | 13 ++++++++++++- freqtrade/plot/plotting.py | 21 ++++++++++++++++++++- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index da231dd32..794e8466d 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -37,8 +37,7 @@ ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", " ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", "timerange"] -ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY + - ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]) +ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"] NO_CONF_REQURIED = ["start_download_data"] @@ -140,10 +139,18 @@ class Arguments(object): self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) # Add Plotting subcommand - from freqtrade.plot.plot_utils import start_plot_dataframe + from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit plot_dataframe_cmd = subparsers.add_parser( 'plot-dataframe', help='Plot candles with indicators.' ) plot_dataframe_cmd.set_defaults(func=start_plot_dataframe) self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd) + + # Plot profit + plot_profit_cmd = subparsers.add_parser( + 'plot-profit', + help='Generate plot showing profits.' + ) + plot_profit_cmd.set_defaults(func=start_plot_profit) + self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py index 125a1f46c..11bc9f552 100644 --- a/freqtrade/plot/plot_utils.py +++ b/freqtrade/plot/plot_utils.py @@ -6,10 +6,21 @@ from freqtrade.utils import setup_utils_configuration def start_plot_dataframe(args: Namespace) -> None: """ - Plotting dataframe helper + Entrypoint for dataframe plotting """ # Import here to avoid errors if plot-dependencies are not installed. from freqtrade.plot.plotting import analyse_and_plot_pairs config = setup_utils_configuration(args, RunMode.OTHER) analyse_and_plot_pairs(config) + + +def start_plot_profit(args: Namespace) -> None: + """ + Entrypoint for plot_profit + """ + # Import here to avoid errors if plot-dependencies are not installed. + from freqtrade.plot.plotting import plot_profit + config = setup_utils_configuration(args, RunMode.OTHER) + + plot_profit(config) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index a475fd18c..62cbf0baa 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -19,7 +19,7 @@ try: from plotly.offline import plot import plotly.graph_objects as go except ImportError: - logger.exception("Module plotly not found \n Please install using `pip install plotly`") + logger.exception("Module plotly not found \n Please install using `pip3 install plotly`") exit(1) @@ -354,3 +354,22 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): directory=config['user_data_dir'] / "plot") logger.info('End of plotting process. %s plots generated', pair_counter) + + +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)