4.5 KiB
date | tags | from | |||||
---|---|---|---|---|---|---|---|
|
|
https://x.com/i/grok?conversation=1909844133071798467 |
我: https://www.freqtrade.io/en/stable/strategy-101/请讲解一下这部分内容:
Assessing backtesting and dry run results¶Always dry run your strategy after backtesting it to see if backtesting and dry run results are sufficiently similar.
If there is any significant difference, verify that your entry and exit signals are consistent and appear on the same candles between the two modes. However, there will always be differences between dry runs and backtests:
这段内容是关于如何评估交易策略的回测(backtesting)和模拟运行(dry run)结果的,来自Freqtrade(一个开源的加密货币交易框架)的官方文档。以下是对其内容的逐步讲解:
核心建议:总是结合回测和模拟运行进行验证
在完成策略的回测后,建议运行一次模拟运行(dry run),以检查回测结果和模拟运行结果是否足够相似。这是因为回测是在理想化的假设下进行的,而模拟运行更接近真实市场环境。通过对比两者,可以验证策略的可靠性和一致性。
如果结果差异显著,如何排查?
如果回测和模拟运行的结果存在明显差异,你需要检查以下方面:
-
买入和卖出信号的一致性:
-
确保在回测和模拟运行中,买入(entry)和卖出(exit)信号出现在相同的K线(candles)上。
-
如果信号位置不一致,可能是策略逻辑或数据处理的问题。
-
-
理解差异的原因:
- 回测和模拟运行之间总是会存在一些差异,这是正常现象。接下来会详细说明这些差异的来源。
回测与模拟运行的差异原因
以下是导致回测和模拟运行结果不同的几个主要因素:
- 订单填充假设
-
回测:假设所有订单都能被100%成交。例如,无论市场深度如何,限价单(limit orders)都会被填满。
-
模拟运行:如果使用限价单,或者交易所的交易量不足,订单可能无法成交。这会直接影响结果。
- 交易执行时机
-
回测:
-
当K线收盘后触发买入信号时,回测假设交易在下一根K线的开盘价(open price)执行。
-
除非你在策略中自定义了价格回调(pricing callbacks),否则回测不会模拟延迟。
-
-
模拟运行:
-
新K线生成后(例如每5分钟生成一根K线),Freqtrade需要时间分析所有交易对的数据框架(dataframes)。
-
这会导致信号生成和交易执行之间存在几秒钟的延迟(理想情况下延迟尽可能小)。
-
因此,实际买入价格可能偏离回测中的下一根K线开盘价。
-
- 收益计算的差异
-
由于模拟运行中的买入价格可能与回测不同,收益计算(profit calculations)也会受到影响。
-
这意味着以下机制的结果可能不完全一致:
-
投资回报率(ROI)
-
止损(stoploss)
-
追踪止损(trailing stoploss)
-
回调退出(callback exits)
-
-
这种差异是正常的,无需过度担心,只要整体趋势一致即可。
- 计算延迟的影响
-
如果你的计算机性能不足,新K线生成后,Freqtrade处理所有交易对数据的时间会变长。
-
计算“延迟”(lag)越大,信号生成和交易执行之间的价格波动就越不可预测。
-
建议:
-
确保你的电脑性能足够强大,能在合理时间内处理你的交易对列表(pairlist)中的数据。
-
检查Freqtrade的日志(logs),如果有显著的数据处理延迟警告,说明需要优化硬件或减少交易对数量。
-
总结与建议
-
回测是理想化测试:它假设所有条件完美,但无法完全反映真实市场。
-
模拟运行更贴近现实:它考虑了订单未成交、执行延迟等因素,因此结果可能与回测不同。
-
验证一致性:重点检查信号是否一致,而不是追求完全相同的收益数字。
-
优化硬件:确保计算能力跟得上策略需求,避免因延迟导致结果偏差。
通过结合回测和模拟运行,你可以更全面地评估策略的表现,并在真实交易前发现潜在问题。如果还有具体问题,可以告诉我,我会进一步帮你分析!