第十章 日期和时间

这一组函数用于处理 日期时间 类型数据(即一个整数,表示从1970.1.1 0:00时开始的秒数)。

要安排更高精度的计数器和计时器,可以使用GetTickCount()函数,它以毫秒为单位。

函数 功能
TimeCurrent 返回最后一个已知的服务器时间,为 日期时间 类型(最后一次报价的时间)
TimeTradeServer 返回交易服务器当前的计算机时间
TimeLocal 返回本地计算机的时间
TimeGMT 以本地计算机的时间计算出GMT时间,考虑夏令时
TimeDaylightSavings 返回夏令时的开关标帜
TimeGMTOffset 在考虑夏令时的情况下,以秒为单位返回当前GMT时间 和 本地计算机时间之间的差异
TimeToStruct 将 日期时间 值转换为MqlDateTime结构类型的变量
StructToTime 将MqlDateTime结构类型的变量转换为 日期时间 值

# 10.1 TimeCurrent

返回最后访问的服务器时间,在“市场报价”窗口中选定的交易品种的最后一次报价的时间。在OnTick()处理程序中,该函数将返回已接收处理的时间。在其他情况下(例如,在处理程序OnInit()、OnDeinit()、OnTimer()等),对于在"市场报价"窗口中的任何一个 交易品种 都有最后一个报价时间,时间在窗口标题上显示。这个时间值在交易服务器上形成,并不依靠你的电脑时间设置。此函数有两种调用方式。

IMG_256

调用时无参数

datetime  TimeCurrent();
1

调用时,带MqlDateTime类型参量

datetime  TimeCurrent( 
   Mqldatetime&  dt_struct      // 结构类型变量 
   );
1
2
3

参数 dt_struct

[out] MqlDateTime 结构类型变量

返回值 日期时间 类型值

注意 如果将MqlDateTime结构类型变量作为参数传递,则会相应地填充它。 要安排高精度的计数器和计时器,可以使用GetTickCount()函数,它以毫秒为单位。 在策略测试器中,根据历史数据对TimeCurrent()进行了模拟。

# 10.2 TimeTradeServer

返回计算出的交易服务器的当前时间。与TimeCurrent()不同,时间值的计算在客户机端执行,取决于计算机上的时间设置。此函数有两种调用方式。 调用时无参数

datetime TimeTradeServer();

调用时,带MqlDateTime类型参量

datetime  TimeTradeServer( 
   Mqldatetime&  dt_struct      // 结构类型变量 
   );
1
2
3

参数 dt_struct

[out] MqlDateTime 结构类型变量

返回值 日期时间 类型值

注意 如果将MqlDateTime结构类型变量作为参数传递,则会相应地填充它。 要安排高精度的计数器和计时器,可以使用GetTickCount()函数,它以毫秒为单位。 在策略测试器中,根据历史数据对TimeCurrent()进行了模拟。

# 10.3 TimeLocal

返回客户端运行的电脑上的本地时间,此函数有两种调用方式。 调用时无参数

datetime TimeLocal();

调用时,带MqlDateTime类型参量

datetime  TimeLocal( 
   Mqldatetime&  dt_struct      // 结构类型变量 
   );
1
2
3

参数 dt_struct

[out] MqlDateTime 结构类型变量

返回值 日期时间 类型值

注意 如果将MqlDateTime结构类型变量作为参数传递,则会相应地填充它。 要安排高精度的计数器和计时器,可以使用GetTickCount()函数,它以毫秒为单位。 在策略测试器中,TimeLocal()总是相当于模拟服务器时间的 TimeCurrent() 。

# 10.4 TimeGMT

返回GMT时间,这其中考虑了客户端本地时间,包含夏令时DST开关。此函数有两种调用方式。 调用时无参数

datetime TimeGMT();

调用时,带MqlDateTime类型参量

datetime  TimeGMT( 
   Mqldatetime&  dt_struct      // 结构类型变量 
   );
1
2
3

参数 dt_struct

[out] MqlDateTime 结构类型变量

返回值 日期时间 类型值

注意 如果将MqlDateTime结构类型变量作为参数传递,则会相应地填充它 。 要安排高精度的计数器和计时器,可以使用GetTickCount()函数,它以毫秒为单位。 在策略测试器中,TimeGMT() 总是相当于模拟服务器时间的 TimeTradeServer()。

# 10.5 TimeDaylightSaving

如果已切换到夏令时,则以秒为单位,返回对夏令时的校正。这取决于你电脑的时间设置。

int TimeDaylightSavings();

返回值 如果转换成冬季(标准)时间,则返回0。

# 10.6 TimeGMTOffset

返回当前GMT时间和本地计算机时间之间的时间差,考虑冬季(标准)或夏令时的切换。取决于你电脑的时间设置。

int TimeGMTOffset();

返回值 整数型 数值,以秒为单位。计算GMT 时间和本地电脑时间之间的差异。

TimeGMTOffset() = TimeGMT() - TimeLocal()

# 10.7 TimeToStruct

转变 日期时间 类型的值(数字从1970.01.01以秒开始)到结构变量 MqlDateTime 中。

bool  TimeToStruct( 
   datetime      dt,            // 日期时间 
   Mqldatetime&  dt_struct      // 采用值的结构 
1
2
3

参数 dt

[in] 用于转换的数值。

dt_struct

[out] 结构类型MqlDateTime变量

返回值 如果成功返回true,否则false。若要获得有关错误的信息,请调用GetLastError() 函数。

# 10.8 StructToTime

转变结构变量 MqlDateTime 到 日期时间 类型值,然后返回结果值。

datetime  StructToTime( 
   MqlDateTime&  dt_struct      // 日期和时间结构 
   );
1
2
3

参数 dt_struct

[in] 结构类型变量MqlDateTime。

返回值 日期时间型的值包括从01.01.1970起的以秒为单位的数值。