指定交易的开始和结束日期

时间:2016-12-18 19:30:10

标签: date datetime mql4 metatrader4 mt4

我刚刚添加了为我的EA指定交易的开始和结束日期的能力,但是,我发现了一种奇怪的行为!

如果我从 2016.05.01 00:00:00
指定了交易的开始日期,并将结束日期指定为 2016.05.10 00:00:00
EA从2015.05.02 00:00进行交易2016.05.12 14:02,但如果我将日期从2016.06.01 00:00:00指定为2016.06.10 00:00:00 <它从2016.06.01 00:002016.06.10 14:53

进行交易

这是我的代码:

   extern datetime StartDate = __DATETIME__;
   extern datetime EndDate   = __DATETIME__;

   int isTrading = 0;

   if (  StartDate < EndDate ) {
         if (  TimeCurrent() > StartDate
            && TimeCurrent() < EndDate
               ) isTrading = 1;
   } else {
         if (  TimeCurrent() > StartDate
            || TimeCurrent() < EndDate
               ) isTrading = 1;
   }

我不知道这里有什么问题,我们非常感谢任何帮助。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

最简单的部分:

鉴于 StartDate == 2016.05.01 00:00 ,确实关闭了市场(对 TimeCurrent() 函数的调用只会返回一些旧的{{1从4月最后一周的最后一个刻度开始的值。)

由于市场尚未结束,在 {{1}之前, datetime -triggering事件(消息)将不会到达(任何交易将会发生的事情就越少) }} (星期一)开始,第一个&#34; &#34;根据更多细节, OnTick() 消息确实从服务器端到达。

文档警告:

  

<强> 2016.05.02
  返回&#34;市场观察&#34;中选择的其中一个符号的最后一次已知服务器时间最后一次报价收据的时间;窗口。在 QUOTE 处理程序中,此函数返回已接收的已处理时间戳的时间。在其他情况下(例如,呼叫处理程序datetime TimeCurrent();OnTick()OnInit()等),这是&#34;中可用的任何符号的最后一次报价接收的时间。市场观察&#34;窗口,此窗口标题中显示的时间。时间值在交易服务器上形成,不依赖于您计算机上的时间设置。

难点:

  • Broker Server端设置的GMT偏移量(在此服务器端/服务器端OnDeinit()透视图中不是问题,否则为是)

  • 外汇工具(OnTimer())交易条件(贵金属和指数通常以额外的时间偏差开始,并且不遵循专业的24 * 5市场交易时间)。

    < / LI>
  • 事先宣布的经纪人特定的交易时间/停电变化。

  • MetaTrader Terminal 4 [策略测试程序]可能会出现令人惊讶的不完整数据(历史中心的差距),而且文档只会间接警告&#34;关于这个:

      

    在策略测试程序中进行测试期间,根据历史数据模拟 datetime