这是一个关于智能交易EA编程的问题,问题的核心是在问如何编写指定时间点开订单。
首先我们要清楚,MT4/MT5的时间是平台服务器所指的时间,通常是和本地电脑时间有时差的。如果要在本地时间6:30执行交易,那可以参考时差转换下执行时间。在MT4市场报价窗口的上方状态条上面可以看到当前的mt4时间。比如时差为3个小时,那么就可以用服务器时间3:30执行。
其次有个重要的问题:如果将时间精准定位在 6:30 来开订单,那有些情况下是执行不了的,因为EA的主函数 OnTick(void) 是随TK跳动执行的,如果在指定的一分钟内价格没有跳动,则就开仓失败。所以需要给个合理的范围或其它限制条件来执行。
我们且用MT4服务器时间来做示范,比较小时和分钟示范代码(这里以大于等于30分钟为例):
if(TimeHour(TimeCurrent())== 6 && TimeMinute(TimeCurrent())>=30 /*&& 其它限制条件*/){/*执行下单函数*/}
这个简单的示范代码意思是:小时数等 6 且分钟数大于等于 30 的时候,在加上某种限制条件,如果都成立,那就执行下单函数。对于限制条件是必须有的,不然它就无穷尽的下单。最简单的限制条件就是当前持仓订单数为 0,也就是说时间到了且没有订单,那就下个订单。
当然,如果是指定某个具体的一天来执行这种操作,那就需要加上年份和月份的限制。完整的逻辑就是某年某月某日的服务器时间6点30分后,如果没有订单存在就下个订单。
有的人可能会问,难道不能用本地时间吗?当然,用本地时间也可以的,用 TimeLocal() 替换 TimeCurrent() 就会获得电脑本地时间。