检查市场开放时间 - MetaTrader 5 库


MarketOpenHours.mqh 文件根据经纪商的服务器时间检查市场开放时间。它的输入只是字符串类型的符号名称。结果你得到一个布尔值, true - 市场开放, false - 市场关闭。在下图中,我显示了我的经纪商 DarwinEx 符号 EURUSD 的开放时间。
您可以看到不同工作日的开放时间有多么不同。这是您的包含文件:
//+------------------------------------------------------------------+ //| 市场开放时间.mqh | //| 沃尔夫冈·梅尔茨,wm1@gmx.de | //| https://melz.one | //+------------------------------------------------------------------+ #财产版权 “沃尔夫冈·梅尔茨,wm1@gmx.de” #财产关联 “https://melz.one” //+------------------------------------------------------------------+ //|市场开放时间 | //+------------------------------------------------------------------+ 布尔值市场开放时间(细绳符号){ 布尔值正在打开 =错误的; // 默认市场关闭 Mql日期时间mdt服务器时间; // 声明服务器时间结构变量 日期时间dt服务器日期时间 =时间交易服务器(); // 存储服务器时间 如果(!构建时间(dt服务器日期时间, // servertime 是否正确转换为结构体? mdtServerTime)) { 返回(错误的); // 不,退货市场已关闭 } ENUM_DAY_OF_WEEK今天=(ENUM_DAY_OF_WEEK) // 获取实际日期并转换为枚举 mdtServerTime.day_of_week; 如果(今天>0||今天<6){ // 今天是周一到周五吗? 日期时间dtF; // 存储交易时段开始和结束时间 日期时间dtT; // 日期部分是 1970.01.01 (0) 日期时间dt服务器时间 = dt服务器日期时间 %86400; // 将日期设置为 1970.01.01 (0) 如果(!交易品种信息会话(符号,今天, // 我们有 dtFrom 和 dtTo 的值吗? 0, dtF, dtT)) { 返回(错误的); // 不,退货市场已关闭 } 转变(今天) { // 检查不同的交易时段 案件 1: 如果(dtServerTime >= dtF && dtServerTime <= dtT) // 服务器时间为 00:05 (300) - 00:00 (86400) 正在打开 =真的; // 是的,设置市场开放 休息; 案件 5: 如果(dtServerTime >= dtF && dtServerTime <= dtT) // 服务器时间为 00:04 (240) - 23:55 (86100) 正在打开 =真的; // 是的,设置市场开放 休息; 默认: 如果(dtServerTime >= dtF && dtServerTime <= dtT) // 服务器时间为 00:04 (240) - 00:00 (86400) 正在打开 =真的; // 是的,设置市场开放 休息; } } 返回(打开); }//+------------------------------------------------------------------+
第一部分检查工作日(周一至周五),以允许在一周内进行开仓交易和追踪止损。在 switch 命令中,根据代理的符号会话检查实际服务器时间。
附件下载
📎 marketopenhours.mqh (2.77 KB)
📎 test_marketopenhours.mq5 (1.75 KB)
Source: MQL5 #46597
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
