
先说回测时候那个数据到底靠不靠谱
我最早以为MT4的测试器是拿真金白银的历史数据一笔一笔模拟的,后来发现根本不是那么回事,它那个默认的“每个即时价格”模式有时候倒还行,但你要是嫌慢选了“控制点”甚至“仅实时价格”那个模式,那结果就跟闹着玩一样,因为它压根没把每一个tick算进去,而是给你挑了那么几个点拼凑出来一条线,这就跟你看电影预告片以为全片都是高能场面似的,实际正片全是文戏,我试过同一个EA用三种模式测,出来的净利润差了能有四倍多,四倍啊兄弟,你敢信吗,所以第一件破事就是回测模式这个坑,平时我懒得等的话就会掉进去。
再说那个点差和手续费设置,我估计百分之八十的人测策略时候根本就没管那玩意儿,MT4默认的点差有时候是0或者特别低,你想想你复盘的时候每次买卖都不花钱,那策略能不赚得飞起吗,等你放到真实市场里,点差一出来,滑点一出来,那点利润还不够塞牙缝的,我这人以前就栽在这上面,觉得回测曲线那叫一个漂亮,最大回撤才百分之三,结果实盘跑了三天,净值曲线直接朝下头也不回,后来我才反应过来,测试器里那个点差我压根没改,等于我在一个乌托邦里交易,真的,这一点你要是不注意,跟着回测做真钱,那就等着挨揍吧。
哦对,说到这我又想起一个事,就是那个“自定义点差”的功能,它不是能在测试时候手动输入一个固定值嘛,我当时特别高兴,想着这下总能贴近实盘了吧,结果我输了个25点进去,跑出来倒是比默认靠谱点,可问题又来了,真实市场的点差是浮动的好吗,欧盘和美盘开盘时候那点差根本就不是一个数字,你得想着用个模拟软件看看,不然你测的时候用固定值,实盘时候点差忽大忽小,你的策略要是喜欢在数据公布时候开仓,那滑点和瞬间放大的点差绝对能让你怀疑人生,这根本不是MT4故意整你,是它这个软件老,就这么个德行,我身边好几个人都是在周五晚上试策略然后被坑了,他们还以为软件坏了。
再说说那个让人头大的历史数据质量
这个我是真的想骂人,MT4电脑版下载历史数据的机制挺怪的,它默认给你的是那个“M1离线数据”,你得自己先去工具菜单里数据下载那栏把服务器上的历史数据给拽下来,我在家换了网络环境之后老是忘这个步骤,结果一测才发现,那回测上写的起始时间是2010年对吧,你以为你测了十来年行情,其实里面断断续续的,有多少根K线是空着的你都懒得去查,这就好比你给外婆打电话说周末回家吃饭,她满口答应还说给你做大排骨,结果你回去了发现她压根没买肉,就给你煮了碗素面,数据缺失期间策略怎么跑的你根本看不见,我反正碰过那种只测出七八年涨幅的,还不如不测呢,真的是能把人气笑了。
然后还有那个数据断点的问题,不知道你注意过没有,当你把那个“可视化模式”关掉纯跑的时候,它有时候速度飞快,曲线哗一下就出来了,但你要是真拿出来去复盘交易明细,你能看到里面的某一笔单子周期特别长,没有止损没有止盈,就这么在那儿硬扛了六百根K线,你动脑子想想,这正常吗,这多半就是因为那段时间的数据本来就没了,测试器找不到后续价格来触发平仓,它就默认让你单子一直敞着,直到数据重新有了才结束,这就导致你那个策略的“最大盈利单”看起来特别猛,你以为找到了圣杯,其实就是数据挖了个坑,这样的事儿我碰到不下三回了,现在每次测完我第一件事就是去交易明细里翻,看有没有那种“幽灵订单”。
对了,我这里说一个我自己瞎琢磨的小动作,也未必真的有用就先告诉你,我是每次都会把历史数据下载完了之后,再进去那个“报价”窗口随便点个货币对按一下“打开”,让它重新加载一遍,然后才重新启动那个策略测试器,我不确定这算不算心理安慰或者是玄学,但反正这么搞完心里踏实点,还有那些什么“我测试用了M15结果跟换了个货币对似的完全不一样”的,其实那可能就是周期复现的问题,你说MT4的测试算法它又不是量子计算机,它用一种叫做“每根K线开盘价”的模式跑的时候,策略可能会等于只在每个周期的开盘那一个节点判断一次,跟你真实时候盯着五分钟就开一单完全是两码事,这种地方你要是没点经验,真的会被那个看似完美的结果坑十次都不止,回测是个好东西呀但你得知道它在哪偷懒了才行。
其实策略出异常还得先看看是不是自己脑子搭错线
我这阵子也学乖了,遇到回测出了那种特别离谱的好成绩,第一反应已经不是自己运气来了,而是想着是不是EA里有未来函数,比方说有些指标你看着是经过昨天数据算的,其实你在复盘的时候不小心用了当天的最高点来画线,那不就是算命先生把明天的彩票号码拿出来看完了再回来说昨天该买啥嘛,这简直就是作弊,我自己就干过这种蠢事,用的策略里用了“收盘价”算信号,结果测试的时候那天划线指标用的是实时价格,等于你在那一根K线中途就知道这根K线最终收盘价是多少了,那不可能赚钱都怪了,唯一的办法就是开那个“每次实时生成”的慢速模式去比对,要是快慢模式结果差得特别离谱,那你策略里八成有这种未来函数在捣鬼。
还有一些人的问题压根就不在MT4里头,你说你换个的电脑,以前用的挺好,现在突然异常了,那是因为你的系统时间给设错了,MT4每一次报价带时间戳的,你系统时间慢了半个小时或者快了几天,那EA下出来的单子就错位了,我以前上班时候电脑系统时间老不准,结果发现每天凌晨的那些订单都没找到开仓价位,那是因为时间戳对不上,我就因为这破事整整查了一个晚上,后来把时间同步打开一瞬间就全好了,这种地方你去怪平台不合理,去怪服务器垃圾也不合理,其实就是你旁边的问题,反正你要真说自己结果异常了,可以试试按顺序排查这些东西,一是网络稳不稳经常断线模拟盘掉线订单怎么处理二是服务器在哪是不是你选的服务器和你的VPS不在同一个区域导致数据延迟三是那个点差是不是过于理想化四是你自己家表谁设置了周五收盘前自动清仓的EA到了周五就发疯。
你说这乱七八糟的外加几个错误设置叠在一块儿,回测结果那能正常吗,反正我现在是这么干的,我先用默认的“每个即时价格”模式把策略跑一遍,心里有个数,然后,拿去那种免费的模拟盘那儿跑一星期实时行情,看那个走出来的曲线和回测差距大不大,要是差别在百分之二十以内就算烧高香了,要是差得太远,咱就直接放弃这个策略,也不费劲去调了,说实话很多人不舍得,总觉得是自己的参数哪里没调好,非要跟那个回测杠到底,最后杠了半个月还是亏成狗,也不知道最后咋样了,反正我是这么干的,你看着办吧,但总得先把上面那些原因挨个查一遍再说对不对,不然你就是换了MT5也一样会被坑。