避免EA优化过度的方法与策略
经常有人提及MT4历史测试无用论,以前确实存在历史测试和真实交易表现不一致的情况。随着MT平台的多次升级,对比真实测试与历史测试,现在可以说较为准确了。在历史测试中进行参数优化,常见的问题就是优化过度,这与平台本身无关,即使测试系统再精准,也可能遇到类似问题。当然,设计一款EA时,不可能每次都花费大量时间进行模拟测试,过短的测试周期也难以反映全局。历史测试仍是不可或缺的工具,关键在于如何使用,如何避免EA优化过度呢?
这里先讲两个小故事:
◎某人练习射箭,总是瞄不准,看到别人箭箭靶心,心里不免羡慕。CBCX外汇后来他想了个办法:先把箭射出去,然后跑到落箭处画上新的靶心,这样看起来,自然也是箭箭命中靶心。
◎再说英国足球彩票盛行,有位先生也想靠这个赚一笔,但总猜不中结果。于是他想了个点子:周末比赛前,他通过黄页选中了3000个人作为对象,分别去信,声称自己能准确预测周末A队对B队的胜负。其中1000人,他预测A队获胜;另外1000人,他预测B队获胜;剩下1000人,则预测两队平局。下一个周末,他对之前预测准确的1000人又分成三批发信,分别给出三种预测,如此类推。到剩下33人的时候,他又分别去信,声明如要获得本周赛果预测,需先支付1000英镑。结果这些人中,大部分已经对这位“独具慧眼”的专家深信不疑,这位先生终于大赚了一笔。
所谓的“优化过度”,就是利用历史资料匹配系统,针对一段历史行情与指标、数据的关系来编写EA。为让EA看起来表现优异,不断调整参数、优化设置、增加过滤条件,使之与历史数据完全吻合。结果,这套EA在历史数据回测中确实表现亮眼,能在上涨前适时买入,在下跌前及时卖出。可是,当下一次市场出现类似涨跌时,EA还能精准发出信号吗?恐怕未必,因为该EA是针对过去的情况编写的,不一定适用于未来。从个人经验来看,EA设定的条件越多,结构越复杂,优化过度的风险就越高。当然,编写EA不能脱离历史资料,否则就成了盲人摸象,无从下手。如何避免优化过度呢?我是这样做的:首先准备足够长的历史数据,将其分成两份,前一份用于研究和测试,后一份尽量不去看。EA初步完成后,先用前一份数据做测试和调整,直到达到预期目标,再使用后一份历史数据去验证。如果EA在后一份数据上的表现与前一份相近,那么我认为这个EA基本可以视为合格了。
