去年大半年我都在跑一个复杂EA的回测,上万笔交易跨多个周期。最让人崩溃的不是策略本身,而是回测越跑越慢。前三个月的数据几分钟就跑完了,跑到半年附近的时候直接变成蜗牛爬。
一开始我以为是VPS性能不够,升级了套餐,没好多少。然后又怀疑是MT4本身的问题,把网上所有能找到的"优化指南"试了个遍——减少最大柱数、关新闻、隐藏不用的品种——效果都微乎其微。
后来纯粹是瞎捣鼓的时候发现了一个东西,真的是意外收获。
那个没人提过的3倍提速技巧
事情是这样的:MT4在回测过程中,每笔交易都会在图表上自动画个箭头和连线——入场一个箭头、出场一个箭头、中间还有条线连着。这玩意儿在可视化模式下确实有用,能直观看到每笔交易怎么走的。但问题是,跑了几千笔交易之后,图表上密密麻麻全是这些对象,CPU全耗在渲染这些东西上了。
MQL4文档里其实提过一句,任何图表对象都会消耗资源用于显示和重绘。回测的时候图表每个tick都在刷新,对象越多重绘就越慢,这个逻辑不难理解。
论坛上有人也发现了这个事:「随着回测开平仓的增加,图表上的箭头和交易线不断增多……把线和箭头删掉,速度立即肉眼可见提高了」。我自己实测下来,长周期回测速度提升接近3倍。
怎么操作(完全不影响回测数据)
不需要改任何代码,回测过程中:
个人经验:如果挂机跑过夜回测,可以用AutoHotkey之类的工具写个脚本自动点这两个按钮。不过说实话,手工每隔几小时点一下,效果已经非常明显了。
另一个很少人注意到的隐藏减速项
这个来自Exness官方帮助中心,写得挺清楚:「在市场报价窗口隐藏所有未使用的交易品种……点击图形窗口上的X图标关闭所有未使用的图表」。跑回测之前,把其他图表全关掉,只留正在测试的那一个。我试过,能快个15-20%左右。
---
参考来源:
本文首发于FXEAR.com,原创内容,未经授权禁止转载