最近好几个汇友私信我,说手里的EA在MT4策略测试器里跑得风生水起,胜率动不动就90%往上,结果一上实盘账户,连续几天阴跌,亏得人心里发毛。我一看他们发来的截图,第一反应就是——大概率不是EA逻辑崩了,而是你喂给它的“历史行情数据”压根就不对劲。这事儿我三年前刚入行时也栽过跟头,今天干脆把这块掰开揉碎了讲清楚,新手朋友看完能少走不少弯路。
先说结论:MT4自带的默认历史数据,绝大多数是[MQL4]格式的1分钟K线“合成品”,里面只有OHLC四个价格和成交量,但缺少真实的Tick逐笔成交记录。而EA里的止损止盈、挂单触发、甚至部分指标计算,都是基于实时Tick价格跳动的。你用粗糙的1分钟K线去回测,等于让EA在一个“理想化”的世界里做模拟考,实盘里那些点差波动、跳空、滑点、服务器延迟造成的毛刺,它根本没见过。所以回测胜率虚高,实盘一碰就露馅。
那怎么解决?我现在的标准流程分三步,每一步都踩过坑,你照着做就行。
第一步:强制重新下载完整历史数据,别用默认的
打开MT4,工具→历史数据中心,找到你要测的品种(比如EURUSD),
第二步:回测设置里的“模型”选项,必须选“每个tick基于真实报价”
这个选项在策略测试器里,很多人默认用“控制点”或“每个tick基于即时报价”,但这两个模式都会对数据做插值或压缩,精度差一大截。只有选了“真实报价”,EA才会逐笔模拟每个Tick的触发逻辑。我实测过同一套EA,用控制点回测胜率88%,换真实报价直接掉到63%,这才接近实盘表现。另外,点差设置不要用“当前”,要用“自定义”,填入你常做账户的平均点差,比如欧美1.2-1.5,黄金25-30,不然回测里的点差成本是理想化的,实盘会多亏不少。
第三步:跑完回测后,别急着看胜率,先看“最大回撤”和“盈利因子”。胜率90%但盈利因子只有0.8,说明它赢的时候赚小钱,亏的时候砍大肉,这种EA实盘必死。我习惯把回测周期拉长到至少半年,覆盖一段明显趋势和一段震荡,然后对比“预期获利”和“实际最大亏损”的比值,低于1:2的直接删掉,别浪费时间优化。
最后说个我自己的教训。有一次我折腾一晚上,数据也下了,模型也改了,回测还是虚高。后来发现是电脑系统时间没同步,导致MT4的服务器时间和本地时间错位,Tick数据对不上K线时间轴。解决办法很简单,控制面板→日期和时间→自动同步,然后重启MT4。这种小坑特别容易忽略,但影响极大。
你现在可以打开MT4,按我上面说的三步去检查一下自己的回测设置。如果改完胜率还是高得离谱,那就要怀疑EA本身有没有未来函数了——这个下次再聊。有没有哪位朋友遇到过类似情况,最后发现是数据问题还是策略问题?评论区聊聊,我帮你看看。
先说结论:MT4自带的默认历史数据,绝大多数是[MQL4]格式的1分钟K线“合成品”,里面只有OHLC四个价格和成交量,但缺少真实的Tick逐笔成交记录。而EA里的止损止盈、挂单触发、甚至部分指标计算,都是基于实时Tick价格跳动的。你用粗糙的1分钟K线去回测,等于让EA在一个“理想化”的世界里做模拟考,实盘里那些点差波动、跳空、滑点、服务器延迟造成的毛刺,它根本没见过。所以回测胜率虚高,实盘一碰就露馅。
那怎么解决?我现在的标准流程分三步,每一步都踩过坑,你照着做就行。
第一步:强制重新下载完整历史数据,别用默认的
打开MT4,工具→历史数据中心,找到你要测的品种(比如EURUSD),
- 右键选择“全部周期”,先删掉本地旧数据;
- 然后点“下载”,这时候注意看右下角状态栏,会显示“正在下载M1数据”和“正在下载Ticks数据”两个进度条;
- 一定要等Ticks那个进度条跑满,我遇到过下载到99%卡住的情况,直接关掉重来,否则数据不完整。
第二步:回测设置里的“模型”选项,必须选“每个tick基于真实报价”
这个选项在策略测试器里,很多人默认用“控制点”或“每个tick基于即时报价”,但这两个模式都会对数据做插值或压缩,精度差一大截。只有选了“真实报价”,EA才会逐笔模拟每个Tick的触发逻辑。我实测过同一套EA,用控制点回测胜率88%,换真实报价直接掉到63%,这才接近实盘表现。另外,点差设置不要用“当前”,要用“自定义”,填入你常做账户的平均点差,比如欧美1.2-1.5,黄金25-30,不然回测里的点差成本是理想化的,实盘会多亏不少。
第三步:跑完回测后,别急着看胜率,先看“最大回撤”和“盈利因子”。胜率90%但盈利因子只有0.8,说明它赢的时候赚小钱,亏的时候砍大肉,这种EA实盘必死。我习惯把回测周期拉长到至少半年,覆盖一段明显趋势和一段震荡,然后对比“预期获利”和“实际最大亏损”的比值,低于1:2的直接删掉,别浪费时间优化。
最后说个我自己的教训。有一次我折腾一晚上,数据也下了,模型也改了,回测还是虚高。后来发现是电脑系统时间没同步,导致MT4的服务器时间和本地时间错位,Tick数据对不上K线时间轴。解决办法很简单,控制面板→日期和时间→自动同步,然后重启MT4。这种小坑特别容易忽略,但影响极大。
你现在可以打开MT4,按我上面说的三步去检查一下自己的回测设置。如果改完胜率还是高得离谱,那就要怀疑EA本身有没有未来函数了——这个下次再聊。有没有哪位朋友遇到过类似情况,最后发现是数据问题还是策略问题?评论区聊聊,我帮你看看。
