MQL5时间过滤器的编码与实现
MQL5时间过滤器可以定制允许交易的时间,屏蔽掉那些波动特别小的时间段。对于大多数EA来说,时间过滤器都可以很好的提升盈亏比,扩大盈利。下面是其具体实现过程。
第一步:在EA顶部加入时间的设定:
input int startMiniutes = 600; //开始交易分钟数 input int durationMiniutes = 240; //交易持续时间,0=不启用时间过滤
第二步:在OnTick函数中加入过滤代码:
if(durationMiniutes>0) { //检查是否在交易时间内 MqlDateTime dt; TimeToStruct(TimeCurrent(), dt); if(dt.min+dt.hour*60<startMiniutes || dt.min+dt.hour*60>startMiniutes+durationMiniutes) return; }
可能有些读者会有疑问,对于时间设定,为什么采用整型的分钟,而不是字符串或枚举之类的呢?
这里面主要考虑以下因素:
分钟虽然没有字符串(如0130)之类的设置简便,但代码实现却特别简单;
设置分钟和持续时间,在回测的时候特别方便,比如我们测试欧美时段,如果服务器采用gmt2时区,只需令startMiniutes=360,durationMiniutes=720,就代表交易时间从gmt的早8点到晚8点交易。在优化参数的时候,分钟数更容易控制时间范围。