日期和时间
MQL5 提供了一种特殊类型 datetime 用以存储时间数据。正如其名称所示,datetime 的值包括日期和时间。但在必要时也可以只包含日期或时间。
这种类型的值可以在程序中用来监控事件,比如交易时间、新闻发布或在不良交易后临时禁用 EA 交易的超时时间。
datetime 在内存中的大小为 8 个字节。数据的内部表示与 ulong 类型完全相同,因为其内部存储的是自 1970 年 1 月 1 日以来经过的所有秒数。支持的最大日期是 3000 年 12 月 31 日。
datetime 常量被记录为用单引号括起来的字面量字符串,前面有字符 'D'。字符串中分配了 6 个字段,日期和时间的所有组成部分的数字采用以下格式:
D'YYYY.MM.DD HH:mm:ss'
|
此处,YYYY 表示年、MM 表示月、DD 表示日、HH 表示时、mm 表示分,ss 表示秒。你可以跳过日期或时间。也可以秒秒,或者同时省略分钟和秒。
关于日期的最大允许值,MQL5 中提供了一个特殊常量 DATETIME_MAX,其等于整数值 0x793406fff,对应 D"3000.12.31 23:59:59"。
MQL5/Scripts/MQL5Book/p2/TypeDateTime.mq5 文件给出了记录 datetime 类型值的示例。
void OnStart()
|
前四个变量引发编译器警告,提示日期不正确。如果为 blank,则字面量完全为空。在 noday 变量中,没有日。在这两种情况下,编译器都会替换掉常量中的编译日期。feb30 和 mon22 变量包含的日编号和月编号都不正确。编译器会自动更正它们,将溢出转移到高阶字段中(将 2 月 30 日改为 3 月 2 日,将 22 月改为次年的 10 月)。但是,我们始终建议消除警告。
dt0 变量演示用一个整数对 datetime 值进行初始化。
datetime 类型支持整数内部的一组运算(参见 表达式)。例如,允许将预定义的秒数与时间相加(得出未来的某个时刻)或计算日期之间的差值。