“每次报价”模式跑得好看,不是因为EA厉害,而是因为回测环境帮你“作弊”了;而“基于实际点”模式暴露了代码在粗糙数据下的脆弱。
下面分三点说清楚:
1. 任何EA,别拿回测报告当验收标准
回测报告只该用在研发阶段——也就是你写代码时,故意用粗糙的数据跑一跑,看看程序会不会报错、订单能不能正常执行。一个合格的EA,需要经过上百种不同设计的回测(换数据段、换点差、换延迟模拟)才能验证鲁棒性。
验收EA绝对不能只看一份漂亮的回测报告,必须用实盘小资金或模拟盘做“实际验收测试”。报告可以伪造,曲线可以美化,但实盘跑几天就见光死。
2. 回测数据是“理想化的抽样”,实盘哪有这么顺?
回测选用的历史数据,本质是已经发生且被简化过的样本,它天然缺少了实盘中的随机干扰:
你家WiFi断了几秒,持仓状态和后续应对逻辑可能完全改变;
平台断线重连后,订单是否还活着、止损是否滑点,回测里统统没有;
流动性瞬间抽走、点差放大到几十点,回测数据也体现不了。
更可怕的是:很多EA是严重过拟合的。换一小段历史数据,结果就能从连续爆仓变成几万倍盈利。而“基于实际点”模式(比如控制点或仅开盘价)恰好破坏了这种过拟合的完美节奏,所以爆仓;“每次报价”模式给了EA最理想的时间戳和价格序列,自然跑得顺。
基于实际点模式(Control points / Open prices):
数据密度:只有每个时间段的几个关键价格(如OHLC中的C或L),缺失大量中间波动
订单执行点:只能在给定的少数价格上成交,无法体现滑点和报价跳跃
对策略的考验:很苛刻。如果你的EA依赖精准的入场位或微小的突破,这种模式经常错失机会或延迟成交,导致连续亏损
与实际盘的差距:虽然粗糙,反而更接近低流动性时段的手动执行,容易暴露策略缺陷
每次报价模式(Every tick):
数据密度:包含历史中每一个真实的tick(报价跳动),数据密集
订单执行点:可以在任意tick成交,接近理论上的“完美执行”
对策略的考验:很宽容。EA可以“看到”每一个最小的价格变动,能捕捉到最优成交价,回测曲线自然平滑
与实际盘的差距:看着很美,实际实盘根本达不到这种执行速度和无滑点的环境
“每次报价”模式像一个开着导航、无堵车、无红灯的理想路况——跑完很轻松;
“基于实际点”模式像雨夜走老城区小路,GPS断断续续——能活着跑完才是真本事。
所以你会看到: 那些只在“每次报价”里盈利的EA,一换到“实际点”就爆仓,恰恰说明这个EA对数据密度极度敏感,本质上是个过拟合的废物。真正抗打的EA,在两种模式下应该都能存活,只是盈利多少的区别。 |