如何有效避免EA过度优化问题

经常有人提及MT4历史测试无用论,以前确实存在历史测试与真实交易表现不一致的情况。随着MT4多次升级,将真实测试与历史测试进行对比,如今可以说其准确性已大大提升。在进行历史测试时,常见的问题是优化过度,这并非MT4历史测试本身的问题,即便测试再精确,仍可能遇到此类情况。

话说回来,每开发一个EA,不可能都花费大量时间进行模拟测试,而且过短的测试周期也不一定能反映全貌。历史测试仍然是必不可少的工具,关键在于如何正确使用它,以及如何避免EA优化过度。

这里先讲两个故事:

◎某人练习射箭,但总射不准,看到别人箭箭命中红心,心中羡慕。后来他想了个办法,先把箭射出去,然后跑到箭落下的地方,在那里画上箭靶,这样看起来也是箭箭红心。

◎又有一则故事,英国足球博彩风气盛行,某人想通过博彩获利,但总是猜不中结果。于是他想了个主意:周末球赛开始前,他通过黄页选择了3000个人作为目标,分别写信,声称自己能准确预测周末A队对B队的比赛结果。其中1000人收到预测A队获胜,另1000人收到预测B队获胜,剩下1000人收到预测两队打平。

下一个周末,他对上周预测准确的1000人再次分成三组发信,分别给出三种不同预测,如此循环……当剩下33人时,他又分别写信,称如想获得本周末赛果预测,需先支付1000英镑。结果,这些人中的大部分对这位“独具慧眼”的专家佩服不已,这个人最终大赚一笔。

所谓的“优化过度”,就是利用历史资料匹配系统,针对一段历史行情与指标、数据的关系编写EA,为了使EA表现良好,不断调整参数、优化设置,并添加过滤条件,以使EA与历史资料数据完全吻合。这样做出来的EA,在历史数据测试中表现当然出色,能在上涨前买入,下跌前卖出,但当下一次市场出现类似行情时,EA还能及时发出信号吗?恐怕未必,因为该EA是为过去的情况量身定制的,不一定适用于未来。

从个人经验来看,EA设定的条件越多,结构越复杂,瑞讯银行官网优化过度的情况就越严重。但另一方面,编写EA又不能脱离历史资料,否则就如同盲人摸象,无从下手。

那么,如何避免过度优化呢?我的做法是:首先准备足够长的历史资料数据,并将其分为两份,前一份用于观察和测试,后一份尽量不去看。EA开发完成后,先用前一份数据进行测试和调整,直到EA达到预期目标,再用另一份历史资料去验证它。如果此时EA的表现与前一份数据测试结果接近,那么可以认为这个EA基本合格了。