如何在MetaTrader 5中通过WebRequest获取伦敦、纽约时间及回测可用服务器时间
在MetaTrader 5中获取时区时间及回测兼容的服务器日期
核心方案
不需要通过WebRequest调用外部接口,MQL5内置API就能直接实现需求,且完全支持回测场景。
1. 获取回测兼容的服务器日期时间
回测和实盘模式下,TimeCurrent()函数会返回当前服务器的Unix时间戳(回测时返回模拟的回测进程时间),搭配TimeToString()可转换为可读格式:
datetime server_time = TimeCurrent(); Print("服务器时间:", TimeToString(server_time, TIME_DATE|TIME_SECONDS));
2. 转换服务器时间为伦敦/纽约时区
使用内置的TimeZoneConvert()函数,直接将服务器时间转换为目标时区时间,支持的时区常量包括:
- 伦敦时区:
TIME_ZONE_LONDON - 纽约时区:
TIME_ZONE_NEW_YORK
示例代码:
// 获取服务器当前时间 datetime server_dt = TimeCurrent(); // 转换为伦敦时间 datetime london_dt = TimeZoneConvert(server_dt, TIME_ZONE_LONDON); Print("伦敦当前时间:", TimeToString(london_dt, TIME_DATE|TIME_SECONDS)); // 转换为纽约时间 datetime ny_dt = TimeZoneConvert(server_dt, TIME_ZONE_NEW_YORK); Print("纽约当前时间:", TimeToString(ny_dt, TIME_DATE|TIME_SECONDS));
3. 转换特定日期时间到目标时区
如果需要转换自定义的特定日期时间,只需将目标datetime值传入TimeZoneConvert()即可:
// 自定义特定时间(服务器时区) datetime specific_server_dt = D'2024.05.20 12:00:00'; // 转换为伦敦时间 datetime specific_london_dt = TimeZoneConvert(specific_server_dt, TIME_ZONE_LONDON); Print("特定时间的伦敦时间:", TimeToString(specific_london_dt, TIME_DATE|TIME_SECONDS));
关键注意点
- 回测模式下
TimeCurrent()自动适配回测进程的模拟服务器时间,无需额外处理 - 内置时区转换无需依赖网络,避免
WebRequest的权限限制和延迟问题 - 更多时区常量可参考MQL5的
ENUM_TIME_ZONE枚举定义
内容的提问来源于stack exchange,提问作者David BS
相关产品推荐
相关产品推荐

