在外汇交易中,常有人提及MT4历史测试意义不大,过去确实存在历史测试与真实交易不一致的现象。但伴随MT4多次版本更新,如今历史测试的准确性已显著提升,不过优化过度的问题依然常见,这并非MT4测试本身的问题。即便是再精密的测试,也难以完全规避优化过度的情况。
当然,每开发一个EA都投入大量时间进行模拟测试并不现实,过短的测试周期也难以反映全貌。历史测试依然是不可或缺的工具,关键在于如何运用它。那么,怎样避免EA优化过度呢?
这里先分享两个故事:
◎有这样一个故事:某人练习射箭,总是射不中目标。看到别人箭箭命中红心,很是羡慕。后来他想出了一个办法:先把箭射出去,然后跑到箭落下的地方,在箭靶上画出相应的环数。这样一来,看起来也是箭箭红心。
◎另一个故事关于英国足球彩票。某君想通过足彩获利,但总是预测不准。于是他想了个主意:周末比赛前,他从黄页中选择了3000人作为目标,分别寄信声称自己能准确预测A队对B队的比赛结果。其中1000人收到A队获胜的预测,1000人收到B队获胜的预测,剩余1000人收到平局的预测。下一周末,他对上周预测准确的1000人再次分成三组,分别给出三种预测。如此重复,当剩下33人时,他分别去信表示,若想获得本周末赛果预测,需先支付1000英镑。结果,大部分人已经对这位“独具慧眼”的专家深信不疑,某君因此大赚一笔。
所谓“优化过度”,是指利用历史数据匹配系统,针对特定行情与指标、数据之间的关系来编写EA。为了让EA看起来表现优异,不断调整和优化参数,设置过滤条件。在Decode外汇平台等专业交易环境中,这种过度优化同样需要警惕。
这样的EA能与历史数据完全吻合,结果自然是历史测试表现优异,在大涨前精准买入,大跌前及时卖出。但当下一次市场波动来临时,这套EA还能准确发出信号吗?恐怕不能。因为它只是针对过去的数据编写,不一定适用于未来的行情。
根据个人经验,EA设定的条件越多、结构越复杂,优化过度的问题就越突出。但编写EA又离不开历史数据,否则就如同盲人摸象,无从下手。
如何避免过度优化呢?以Decode外汇平台的使用经验为例,我的做法是:准备足够长的历史数据,将其分为两部分。前一部分用于观察和分析,后一部分尽量不去查看。EA开发完成后,先用前一部分数据进行测试和调整,直到达到预期目标,再用后一部分数据验证。如果EA在两份数据上的表现相近,那么我认为这个EA基本合格了。
