TimeTradeServer

返回交易服务器计算出的当前时间,不像TimeCurrent(),时间值的计算在客户端中执行并依据电脑里的时间设置。有两种常量函数。

无参量调用

datetime  TimeTradeServer();

调用MqlDateTime类型参量

datetime  TimeTradeServer(
   MqlDateTime&  dt_struct      // 结构类型变量
   );

参量

dt_struct

[out] MqlDateTime 结构类型变量

返回值

日期时间 类型值

注释

如果 MqlDateTime 如果结构类型变量以参量传递,会因此填满。

要安排高分辨率的计数器和计时器,可使用GetTickCount()函数,它产生的值以毫秒为单位。

在策略测试器进行测试期间,TimeTradeServer()总是相当于模拟服务器时间的 TimeCurrent()

示例:

void OnStart()
  {
//--- 声明MqlDateTime变量以填充日期/时间数据,并获取最后报价的时间和估算的交易服务器当前时间
   MqlDateTime tm={};
   datetime    time_current=TimeCurrent();                  // 第一种调用形式:市场报价窗口中某一交易品种的最后报价时间
   datetime    time_server =TimeTradeServer(tm);            // 第二种调用形式:通过填充MqlDateTime结构估算交易服务器的当前时间
   int         difference  =int(time_current-time_server);  // 当前时间和交易服务器时间的差异
   
//--- 使用日志中填充的MqlDateTime结构的数据显示最后报价的时间和估算的交易服务器当前时间
   PrintFormat("Time Current: %s\nTime Trade Server: %s\n- Year: %u\n- Month: %02u\n- Day: %02u\n"+
               "- Hour: %02u\n- Min: %02u\n- Sec: %02u\n- Day of Year: %03u\n- Day of Week: %u (%s)\nDifference between Time Current and Time Trade Server: %+d",
               (string)time_current, (string)time_servertm.yeartm.montm.daytm.hourtm.mintm.sectm.day_of_yeartm.day_of_week,
               EnumToString((ENUM_DAY_OF_WEEK)tm.day_of_week), difference);
   /*
   Result:
   Time Current2024.04.18 16:10:14
   Time Trade Server2024.04.18 16:10:15
   - Year2024
   - Month04
   - Day18
   - Hour16
   - Min10
   - Sec15
   - Day of Year108
   - Day of Week4 (THURSDAY)
   Difference between Time Current and Time Trade Server: -1
   */
  }