欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

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

author emer | 551 人阅读 | 0 人评论 |

Check for Market Open Hours - library for MetaTrader 5

Check for Market Open Hours - library for MetaTrader 5

MarketOpenHours.mqh 文件根据经纪商的服务器时间检查市场开放时间。它的输入只是字符串类型的符号名称。结果你得到一个布尔值, true - 市场开放, false - 市场关闭。在下图中,我显示了我的经纪商 DarwinEx 符号 EURUSD 的开放时间。

Check for Market Open Hours - library for MetaTrader 5

您可以看到不同工作日的开放时间有多么不同。这是您的包含文件:

//+------------------------------------------------------------------+
//|                                              市场开放时间.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小时后评论,即可解锁附件下载
立即登录