高级回测分析¶
分析买入/入场和卖出/离场标签¶
了解策略如何根据不同的买入/入场标签进行操作可以很有帮助。您可能想要查看每个买入和卖出条件的更复杂统计数据,超过默认回测输出所提供的数据。您也可能想要确定导致交易开启的信号蜡烛上的指标值。
注意
以下买入原因分析仅在回测中可用,而不是超参数优化。
我们需要使用--export
选项设置为signals
运行回测,以启用信号和交易的导出功能:
freqtrade backtesting -c <config.json> --timeframe <tf> --strategy <strategy_name> --timerange=<timerange> --export=signals
这将告诉freqtrade输出一个策略、交易对和相应蜡烛DataFrame的腌制字典,这些蜡烛导致了买入信号的产生。根据您的策略有多少次买入操作,此文件可能会非常大,因此定期检查“user_data/backtest_results”文件夹,以删除旧的导出文件。
在运行下一次回测之前,请确保删除旧的回测结果,或者使用--cache none
选项运行回测,以确保不使用缓存的结果。
如果一切顺利,现在您应该在“user_data/backtest_results”文件夹中看到一个backtest-result-{timestamp}_signals.pkl
文件。
要分析入场/离场标签,现在我们需要使用freqtrade backtesting-analysis
命令,并提供空格分隔的--analysis-groups
选项参数:
freqtrade backtesting-analysis -c <config.json> --analysis-groups 0 1 2 3 4 5
此命令将从最后一次的回测结果中读取。--analysis-groups
参数
用于指定各种显示每个组或交易利润的表格输出,从简单(0)到每对货币、每个买入和卖出标签的最详细(4):
- 0: 根据进入标签的整体胜率和利润概要
- 1: 按进入标签分组的利润概要
- 2: 按进入标签和退出标签分组的利润概要
- 3: 按货币对和进入标签分组的利润概要
- 4: 按货币对、进入标签和退出标签分组的利润概要(可能会很大)
- 5: 按退出标签分组的利润概要
通过使用 -h
选项可以查看更多选项。
使用 export-filename
¶
通常,backtesting-analysis
使用最新的回测结果,但是如果您想回滚到先前的回测结果,您需要提供 --export-filename
选项。
您可以将同样的参数传递给 backtest-analysis
,并使用最终回测输出文件的名称。
这样可以让您保留历史版本的回测结果,并在以后的日期重新分析它们:
freqtrade backtesting -c <config.json> --timeframe <tf> --strategy <strategy_name> --timerange=<timerange> --export=signals --export-filename=/tmp/mystrat_backtest.json
您应该在日志中看到类似下面的输出,其中列出了导出的文件名和时间戳:
2022-06-14 16:28:32,698 - freqtrade.misc - INFO - dumping json to "/tmp/mystrat_backtest-2022-06-14_16-28-32.json"
然后,您可以使用该文件名在 backtesting-analysis
中进行使用。
freqtrade回测分析 -c <config.json> --export-filename=/tmp/mystrat_backtest-2022-06-14_16-28-32.json
调整显示的买入标签和卖出标签¶
要在显示的输出中仅显示特定的买入和卖出标签,请使用以下两个选项:
--enter-reason-list :要分析的买入信号的空格分隔列表。默认值: "all"
--exit-reason-list :要分析的卖出信号的空格分隔列表。默认值: "all"
例如:
freqtrade backtesting-analysis -c <config.json> --analysis-groups 0 2 --enter-reason-list enter_tag_a enter_tag_b --exit-reason-list roi custom_exit_tag_a stop_loss
输出信号蜡烛指标¶
freqtrade回测分析
的真正威力来自于能够打印出信号蜡烛上的指标值,以允许对买入信号指标进行精细的调查和调整。
要为给定的一组指标打印出一个列,请使用 --indicator-list
选项:
freqtrade backtesting-analysis -c <config.json> --analysis-groups 0 2 --enter-reason-list enter_tag_a enter_tag_b --exit-reason-list roi custom_exit_tag_a stop_loss --indicator-list rsi rsi_1h bb_lowerband ema_9 macd macdsignal
这些指标必须存在于您的策略的主DataFrame中(可以是主时间框架或信息时间框架),否则它们将在脚本输出中被忽略。分析中包含了一系列与蜡烛和交易相关的字段,它们可以通过将它们包含在指标列表中自动访问,这些字段包括:
- open_date : 交易开启时间
- close_date : 交易关闭时间
- min_rate : 仓位中最低价格
- max_rate : 仓位中最高价格
- open : 信号蜡烛开盘价格
- close : 信号蜡烛收盘价格
- high : 信号蜡烛最高价格
- low : 信号蜡烛最低价格
- volume : 信号蜡烛成交量
- profit_ratio : 交易利润比率
- profit_abs : 交易的绝对利润回报
按日期筛选交易输出¶
要仅显示在你回测时间范围内的日期之间的交易,请以YYYYMMDD-[YYYYMMDD]
格式提供常规的timerange
选项:
--timerange : 用于筛选输出交易的时间范围,包含起始日期,不包含结束日期。例如:20220101-20221231
例如,如果你的回测时间范围是20220101-20221231
,但你只想输出1月份的交易:
freqtrade backtesting-analysis -c <config.json> --timerange 20220101-20220201
打印出被拒绝的信号¶
使用--rejected-signals
选项打印出被拒绝的信号。
freqtrade backtesting-analysis -c <config.json> --rejected-signals
将表格写入CSV文件¶
一些表格输出可能会很大,因此不希望将它们打印到终端。
使用--analysis-to-csv
选项禁用将表格打印到标准输出,并将它们写入CSV文件。
freqtrade backtesting-analysis -c <config.json> --analysis-to-csv
默认情况下,这会为您在backtesting-analysis
命令中指定的每个输出表格写入一个文件,例如:
freqtrade backtesting-analysis -c <config.json> --analysis-to-csv --rejected-signals --analysis-groups 0 1
这将写入到user_data/backtest_results
目录中:
- rejected_signals.csv
- group_0.csv
- group_1.csv
要覆盖文件的写入位置,还需指定--analysis-csv-path
选项。
freqtrade backtesting-analysis -c <config.json> --analysis-to-csv --analysis-csv-path another/data/path/