7.3 创造简易定时器

7.3 创造简易定时器


我们可以使用MQL 的时间和日期做出一个非常好用的工具到EA 中,就是做一个定时器。有些交易员喜欢限定他们的交易在一天当中最活跃的几个小时,例如伦敦和纽约时间。也有的人会希望避开一些浮动的市场因素而进行交易,例如新闻报道和NFP 。

要建构一个定时器,我们需具体指定一个起始时间和一个中止时间。我们使用外部整数变量来输入时间参数,创造出一个日期时间常数字符串,并将其转换成一个日期时间变量。然后将起始时间和中止时间与现在的时间进行比较。若现在的时间比起始时间大,但小于中止时间,则允许交易。

在下列中我们将使用的外部变量。我们将设定一个变量来打开或关掉定时器,并选择目前的时间(服务器时间或当地时间) 。我们会为起始时间和中止时间设定其月、日、小时和分。

下列的程序代码用来检查是否允许交易。变量TradeAllowed 决定是否开启新的交易。若UseTimer 设定为假, TradeAllowed 自动设定为真。否则,我们要评估起始时间和中止时间与现在时间的相对关系,以决定我们是否允许交易。

一开始我们要将起始时间转换为一个日期时间变量,即StartTime。用陈述句if ( StartMonth == 12 && StartDay == 31 && EndMonth == 1 )检查,看起始日期是否为一年的最后一天,中止日期是否在来年的第一天以后。若是,则自动将终止年份加1 ;否则我们要在EndYear 中使用目前年份。

然后,我们转换中止时间为一个日期时间变量EndTime ,并选择要用在CurrentTime中使用哪种时间: 服务器时间或当地时间。最后的证区块用来检查目前时间是否介于起始时间和中止时间之间。若是, TradeAllowed 被设定为真。

现在我们需要增加程序代码来控制交易执行。最简单的方法是在我们的订单开启例行程序的外围增加一个if区块:

有许多方法可以创造定时器。例如,你可以使用星期几取代月和日,或设定和当日有关的交易次数。另外,我们也提供定时交易语法让读者参考。

【调用语句说明】

iTimeControl( 15 ,00, 17 , 30);//从系统时间15 :00~17 :30 开始自动交易,函数返回true在程序中就可以这样使用:

1f (iTimeControl( 15 ,00, 17 , 30))    

//规定时间段内自动交易的程序代码