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

CLatencyMonitor - 用于 MQL5 EA 的具有 ATR 波动门和 GlobalVariable IPC 的 Inter-Tick 延迟跟踪器 - MetaTrader 5 库

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

CLatencyMonitor -  Inter-Tick Latency Tracker with ATR Volatility Gate and GlobalVariable IPC for MQL5 EAs - library for MetaTrader 5

CLatencyMonitor -  Inter-Tick Latency Tracker with ATR Volatility Gate and GlobalVariable IPC for MQL5 EAs - library for MetaTrader 5

延迟监控器是由以下开发者开发的轻量级 MQL5 包含文件库 (#include)DeeFX 精密实验室作为滞后盾专业版产品套件。它在单个可重用类中提供了三种紧密集成的功能:

将文件拖放到 MQL5/Include/DeeFX/ 中,并将单个 #include 添加到任何需要延迟感知的 EA 或服务中。

CLatencyMonitor -  Inter-Tick Latency Tracker with ATR Volatility Gate and GlobalVariable IPC for MQL5 EAs - library for MetaTrader 5

当终端的报价落后于市场时,执行敏感的 EA 可能会遭受无声填充降级或计算错误的风险。标准 MQL5 没有提供内置机制来:

延迟监控器通过一个无依赖性的类解决了所有三个差距。

刻度间增量
每次调用 OnTick() 时,该类都会计算自上一个刻度以来经过的毫秒数。第一个刻度仅用于为计时器播种 - 启动时不会引发虚假警报。

ATR 波动率门
在声明滞后之前,该类检查当前 ATR 值是否超过 AtrSmaMultiplier × SMA(ATR, AtrPeriod) 。 SMA 是根据原始 ATR 缓冲区手动计算的,使得阈值与工具无关,并且在所有货币对和时间范围内进行自我标准化。如果 ATR 句柄不可用或历史记录不足,门将无法打开(滞后检测保持活动状态),因此保护永远不会默默禁用。

持久性和 GlobalVariable IPC
重复计时器调用 CheckPersistence() 。一旦滞后条件保持活动状态的时间超过 PersistenceSec 秒,该类就会对命名的全局变量“Terminal_Lag_Detected”执行先读后写检查,并仅在没有其他 EA 已声明它时将其设置为 1.0。所有权在内部进行跟踪;当滞后清除时,只有所属实例会重置该标志。

清洁生命周期
Init() 重置所有计时和滞后状态,防止 OnDeinit / OnInit 周期中的过时值。 Deinit() 释放 ATR 指标句柄并仅在拥有 GlobalVariable 时删除该句柄。析构函数故意为空 — 显式资源管理遵循 MQL5 标准。

#包括输入 乌龙InpLagThresholdMs    =500;输入 整数   InpPersistenceSec    =3;输入 整数   InpAtrPeriod         =14;输入 双倍的InpAtrSma乘数 =1.5;

CLatencyMonitor g_latency;整数 初始化时()
  {
  如果(!g_latency.Init(InpLagThresholdMs, InpPersistenceSec,
                      InpAtrPeriod、InpAtrSmaMultiplier、
                      _象征,_时期))
      返回 初始化失败;

  事件设置定时器1);  // 用于持久性检查的 1 秒计时器  返回 初始化成功;
  }空白 解初始化常量 整数原因)
  {
  事件终止定时器();
   g_latency.Deinit();
  }空白 勾选()
  {
  布尔值newLag = g_latency.勾选();
  如果(新滞后)
      评论“DeeFX | 检测到滞后 — 交易执行暂停”);
  }空白 定时器()
  {
  布尔值持久= g_latency.CheckPersistence();
  如果(执着的)
      警报“DeeFX | 持续滞后 > ”, InpPersistenceSec,“s — GV 标志设置”);

  如果(!g_latency.IsLagActive())
      评论””);
  }

同一终端上的任何其他 EA 都可以独立读取共享标志:

// 在第二个 EA 中 — 不需要包含
如果全局变量获取“检测到终端延迟”) >=1.0)
  打印“收到终端滞后信号——跳过下单。”);

初始化()参数

只读访问器

全局变量IPC


附件下载

📎 CLatencyMonitor.mqh (7.43 KB)

Source: MQL5 #70046

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录