From e0f147e0764db1c5177ff1fe0b57392e6caf0018 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 8 Jun 2025 12:42:26 +0200 Subject: [PATCH] feat: add "--notes" to backtest command closes #11847 --- freqtrade/commands/arguments.py | 1 + freqtrade/commands/cli_options.py | 5 +++++ freqtrade/configuration/configuration.py | 1 + freqtrade/optimize/backtesting.py | 6 +++++- freqtrade/optimize/optimize_reports/optimize_reports.py | 3 +++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 52beb3dfa..d134920d0 100755 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -57,6 +57,7 @@ ARGS_BACKTEST = [ "backtest_breakdown", "backtest_cache", "freqai_backtest_live_models", + "backtest_notes", ] ARGS_HYPEROPT = [ diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index c5d0ad49b..669f68f5a 100755 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -204,6 +204,11 @@ AVAILABLE_CLI_OPTIONS = { help="Export backtest results (default: trades).", choices=constants.EXPORT_OPTIONS, ), + "backtest_notes": Arg( + "--notes", + help="Add notes to the backtest results.", + metavar="TEXT", + ), "exportfilename": Arg( "--export-filename", "--backtest-filename", diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 264d114b8..e1e62e778 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -310,6 +310,7 @@ class Configuration: ("backtest_cache", "Parameter --cache={} detected ..."), ("disableparamexport", "Parameter --disableparamexport detected: {} ..."), ("freqai_backtest_live_models", "Parameter --freqai-backtest-live-models detected ..."), + ("backtest_notes", "Parameter --notes detected: {} ..."), ] self._args_to_config_loop(config, configurations) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 2d58c461a..ed247e20d 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -1822,7 +1822,11 @@ class Backtesting: # Update old results with new ones. if len(self.all_bt_content) > 0: results = generate_backtest_stats( - data, self.all_bt_content, min_date=min_date, max_date=max_date + data, + self.all_bt_content, + min_date=min_date, + max_date=max_date, + notes=self.config.get("backtest_notes"), ) if self.results: self.results["metadata"].update(results["metadata"]) diff --git a/freqtrade/optimize/optimize_reports/optimize_reports.py b/freqtrade/optimize/optimize_reports/optimize_reports.py index 51f58e070..d35e96605 100644 --- a/freqtrade/optimize/optimize_reports/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports/optimize_reports.py @@ -669,6 +669,7 @@ def generate_backtest_stats( all_results: dict[str, BacktestContentType], min_date: datetime, max_date: datetime, + notes: str | None = None, ) -> BacktestResultType: """ :param btdata: Backtest data @@ -694,6 +695,8 @@ def generate_backtest_stats( "backtest_start_ts": int(min_date.timestamp()), "backtest_end_ts": int(max_date.timestamp()), } + if notes: + metadata[strategy]["notes"] = notes result["strategy"][strategy] = strat_stats strategy_results = generate_strategy_comparison(bt_stats=result["strategy"])