说实话,很多人EA回测跑出来的漂亮曲线,换个数据源就原形毕露——问题往往不在策略本身,而在回测数据的质量上。我第一次认真对待这件事,是因为一个跑欧美M15的EA在历史回测里年化做得很好看,实盘挂上去两周就开始连续亏损,回头一查,回测用的数据连点差都没设对。😅
先说最容易被忽略的数据颗粒度。MT4自带的History Center下载的数据经常是M1拼出来的,遇到周末跳空或者新闻时段的大波动,K线形态会和真实报价差很多。我后来养成的习惯是:
第二个坑是点差和隔夜利息的设置。默认的固定点差在回测里会严重美化结果,因为真实盘面在亚盘和欧美盘交接时点差会扩大,黄金尤其明显。我现在习惯在MT5的策略测试器里手动设置变动点差模型,把平均点差往上调个20%-30%作为压力测试。隔夜利息也别偷懒用默认值,做多镑美和做空镑美的掉期成本方向完全相反,长期持仓的EA不把这个算进去,回测和实盘能差出一大截。
第三个细节是滑点和执行延迟的模拟。MT5测试器里有个随机延迟选项,很多人嫌麻烦直接关掉。我踩过的坑是:一个做黄金突破的EA,回测时假设市价单瞬间成交,实盘遇到非农那种行情,滑点能吃掉大半利润。后来我在测试器里加了50-200毫秒的执行延迟,虽然回测结果难看了不少,但和实盘的贴合度高了很多。这个参数没有标准答案,得根据自己VPS的延迟和经纪商的执行质量慢慢调。
还有个新手常犯的错是过度优化参数。我以前喜欢在测试器里反复调止损止盈,直到曲线变平滑为止,结果就是典型的曲线拟合。后来学乖了,把数据分成样本内和样本外两段,用前两年数据调参,后一年数据验证,参数一旦定下来就不再反复动。另外记得把建模质量那一栏拉到最高,虽然跑得慢,但至少不会给你虚假的安全感。
最后提一句VPS和本地回测的差异。同样的EA,我在本地i7上跑出来的结果和VPS上跑出来的偶尔会有细微出入,主要是MT5版本和数据缓存的问题。建议回测前清一次历史数据缓存,确保测试器和实盘用的是同一套报价。这些细节看着琐碎,但每一个都可能让你在实盘里多交学费。你们平时回测会特意设置变动点差吗,还是直接用默认值?🤔
先说最容易被忽略的数据颗粒度。MT4自带的History Center下载的数据经常是M1拼出来的,遇到周末跳空或者新闻时段的大波动,K线形态会和真实报价差很多。我后来养成的习惯是:
- 优先用Tick级数据回测,尤其是做镑美、黄金这种波动大的品种,M1数据根本还原不了真实滑点
- 数据源尽量选和实盘经纪商报价接近的,不同流动性提供商之间的报价差异能到好几个点
- 回测前先检查数据有没有明显的缺口,MT5的Bars窗口里能直接看出异常
第二个坑是点差和隔夜利息的设置。默认的固定点差在回测里会严重美化结果,因为真实盘面在亚盘和欧美盘交接时点差会扩大,黄金尤其明显。我现在习惯在MT5的策略测试器里手动设置变动点差模型,把平均点差往上调个20%-30%作为压力测试。隔夜利息也别偷懒用默认值,做多镑美和做空镑美的掉期成本方向完全相反,长期持仓的EA不把这个算进去,回测和实盘能差出一大截。
第三个细节是滑点和执行延迟的模拟。MT5测试器里有个随机延迟选项,很多人嫌麻烦直接关掉。我踩过的坑是:一个做黄金突破的EA,回测时假设市价单瞬间成交,实盘遇到非农那种行情,滑点能吃掉大半利润。后来我在测试器里加了50-200毫秒的执行延迟,虽然回测结果难看了不少,但和实盘的贴合度高了很多。这个参数没有标准答案,得根据自己VPS的延迟和经纪商的执行质量慢慢调。
还有个新手常犯的错是过度优化参数。我以前喜欢在测试器里反复调止损止盈,直到曲线变平滑为止,结果就是典型的曲线拟合。后来学乖了,把数据分成样本内和样本外两段,用前两年数据调参,后一年数据验证,参数一旦定下来就不再反复动。另外记得把建模质量那一栏拉到最高,虽然跑得慢,但至少不会给你虚假的安全感。
最后提一句VPS和本地回测的差异。同样的EA,我在本地i7上跑出来的结果和VPS上跑出来的偶尔会有细微出入,主要是MT5版本和数据缓存的问题。建议回测前清一次历史数据缓存,确保测试器和实盘用的是同一套报价。这些细节看着琐碎,但每一个都可能让你在实盘里多交学费。你们平时回测会特意设置变动点差吗,还是直接用默认值?🤔
