plot-profit: Make "auto-open" HTML result optional

Adding an "--auto-open" argument.
This improves tool processing of the results, while still allowing to open the HTML file for easy use.
This commit is contained in:
Janos 2021-05-30 16:11:24 +02:00
parent 3dab58e6db
commit 812eb229df
7 changed files with 18 additions and 4 deletions

View File

@ -275,6 +275,7 @@ optional arguments:
(backtest file)) Default: file (backtest file)) Default: file
-i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME -i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`). Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--auto-open Automatically open generated plot.
Common arguments: Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages). -v, --verbose Verbose mode (-vv for more, -vvv to get all messages).

View File

@ -69,7 +69,7 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit",
"timerange", "timeframe", "no_trades"] "timerange", "timeframe", "no_trades"]
ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
"trade_source", "timeframe"] "trade_source", "timeframe", "plot_auto_open"]
ARGS_INSTALL_UI = ["erase_ui_only"] ARGS_INSTALL_UI = ["erase_ui_only"]

View File

@ -433,6 +433,11 @@ AVAILABLE_CLI_OPTIONS = {
metavar='INT', metavar='INT',
default=750, default=750,
), ),
"plot_auto_open": Arg(
'--auto-open',
help='Automatically open generated plot.',
action='store_true',
),
"no_trades": Arg( "no_trades": Arg(
'--no-trades', '--no-trades',
help='Skip using trades from backtesting file and DB.', help='Skip using trades from backtesting file and DB.',

View File

@ -375,6 +375,9 @@ class Configuration:
self._args_to_config(config, argname='plot_limit', self._args_to_config(config, argname='plot_limit',
logstring='Limiting plot to: {}') logstring='Limiting plot to: {}')
self._args_to_config(config, argname='plot_auto_open',
logstring='Parameter --auto-open detected.')
self._args_to_config(config, argname='trade_source', self._args_to_config(config, argname='trade_source',
logstring='Using trades from: {}') logstring='Using trades from: {}')

View File

@ -602,4 +602,5 @@ def plot_profit(config: Dict[str, Any]) -> None:
trades, config.get('timeframe', '5m'), trades, config.get('timeframe', '5m'),
config.get('stake_currency', '')) config.get('stake_currency', ''))
store_plot_file(fig, filename='freqtrade-profit-plot.html', store_plot_file(fig, filename='freqtrade-profit-plot.html',
directory=config['user_data_dir'] / 'plot', auto_open=True) directory=config['user_data_dir'] / 'plot',
auto_open=config.get('plot_auto_open', False))

View File

@ -186,18 +186,22 @@ def test_plot_dataframe_options() -> None:
assert pargs['pairs'] == ['UNITTEST/BTC'] assert pargs['pairs'] == ['UNITTEST/BTC']
def test_plot_profit_options() -> None: @pytest.mark.parametrize('auto_open_arg', [True, False])
def test_plot_profit_options(auto_open_arg: bool) -> None:
args = [ args = [
'plot-profit', 'plot-profit',
'-p', 'UNITTEST/BTC', '-p', 'UNITTEST/BTC',
'--trade-source', 'DB', '--trade-source', 'DB',
'--db-url', 'sqlite:///whatever.sqlite', '--db-url', 'sqlite:///whatever.sqlite',
] ]
if auto_open_arg:
args.append('--auto-open')
pargs = Arguments(args).get_parsed_arg() pargs = Arguments(args).get_parsed_arg()
assert pargs['trade_source'] == 'DB' assert pargs['trade_source'] == 'DB'
assert pargs['pairs'] == ['UNITTEST/BTC'] assert pargs['pairs'] == ['UNITTEST/BTC']
assert pargs['db_url'] == 'sqlite:///whatever.sqlite' assert pargs['db_url'] == 'sqlite:///whatever.sqlite'
assert pargs['plot_auto_open'] == auto_open_arg
def test_config_notallowed(mocker) -> None: def test_config_notallowed(mocker) -> None:

View File

@ -460,7 +460,7 @@ def test_plot_profit(default_conf, mocker, testdatadir):
assert store_mock.call_count == 1 assert store_mock.call_count == 1
assert profit_mock.call_args_list[0][0][0] == default_conf['pairs'] assert profit_mock.call_args_list[0][0][0] == default_conf['pairs']
assert store_mock.call_args_list[0][1]['auto_open'] is True assert store_mock.call_args_list[0][1]['auto_open'] is False
@pytest.mark.parametrize("ind1,ind2,plot_conf,exp", [ @pytest.mark.parametrize("ind1,ind2,plot_conf,exp", [