Add plot-profit command
This commit is contained in:
parent
29076acc69
commit
f7cb75ff93
@ -37,8 +37,7 @@ ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "
|
|||||||
ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url",
|
ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url",
|
||||||
"trade_source", "export", "exportfilename", "timerange"]
|
"trade_source", "export", "exportfilename", "timerange"]
|
||||||
|
|
||||||
ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY +
|
ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]
|
||||||
["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"])
|
|
||||||
|
|
||||||
NO_CONF_REQURIED = ["start_download_data"]
|
NO_CONF_REQURIED = ["start_download_data"]
|
||||||
|
|
||||||
@ -140,10 +139,18 @@ class Arguments(object):
|
|||||||
self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd)
|
self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd)
|
||||||
|
|
||||||
# Add Plotting subcommand
|
# 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_cmd = subparsers.add_parser(
|
||||||
'plot-dataframe',
|
'plot-dataframe',
|
||||||
help='Plot candles with indicators.'
|
help='Plot candles with indicators.'
|
||||||
)
|
)
|
||||||
plot_dataframe_cmd.set_defaults(func=start_plot_dataframe)
|
plot_dataframe_cmd.set_defaults(func=start_plot_dataframe)
|
||||||
self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd)
|
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)
|
||||||
|
@ -6,10 +6,21 @@ from freqtrade.utils import setup_utils_configuration
|
|||||||
|
|
||||||
def start_plot_dataframe(args: Namespace) -> None:
|
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.
|
# Import here to avoid errors if plot-dependencies are not installed.
|
||||||
from freqtrade.plot.plotting import analyse_and_plot_pairs
|
from freqtrade.plot.plotting import analyse_and_plot_pairs
|
||||||
config = setup_utils_configuration(args, RunMode.OTHER)
|
config = setup_utils_configuration(args, RunMode.OTHER)
|
||||||
|
|
||||||
analyse_and_plot_pairs(config)
|
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)
|
||||||
|
@ -19,7 +19,7 @@ try:
|
|||||||
from plotly.offline import plot
|
from plotly.offline import plot
|
||||||
import plotly.graph_objects as go
|
import plotly.graph_objects as go
|
||||||
except ImportError:
|
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)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
@ -354,3 +354,22 @@ def analyse_and_plot_pairs(config: Dict[str, Any]):
|
|||||||
directory=config['user_data_dir'] / "plot")
|
directory=config['user_data_dir'] / "plot")
|
||||||
|
|
||||||
logger.info('End of plotting process. %s plots generated', pair_counter)
|
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user