MT5推送通知:EA发送设置与通知设计
先说结论。EA的推送通知不是用来“播报每一笔成交”的,而是用来**“只在需要人介入的时候提醒你”**。通知太多,真正危险的那一条反而会被漏掉。我们把通知收敛为“停止”“异常”“节点”三类来设计。
原理:从EA到手机的路径
MT5的推送通知通过MQL5的 SendNotification() 函数发送。接收端是分配给MT5手机App的 MetaQuotes ID。流程如下:
- EA调用
SendNotification("正文") - 运行EA的MT5终端把消息发送到MetaQuotes的服务器
- MetaQuotes ID一致的MT5手机App收到推送通知
这里要注意的是,发送通知的是“运行EA的那个终端”。如果EA跑在VPS上,就要在VPS上的MT5里设置MetaQuotes ID,而不是自己手边的电脑。只在手边电脑上设置then收不到通知,是很常见的搞混情况。
此外,这个函数在规格上有限制:正文最多255个字符,发送频率也有上限,短时间内连续调用会报错。在策略测试器中不会发送通知。
推荐经纪商比较 →
🎁 免费下载EA📧 免费邮件课程(共 8 封)+ 订阅者专享 MT5 指标 13 款合集
※ 严格保护隐私。可随时取消订阅。
设置步骤
1. 查看MetaQuotes ID
打开MT5手机App(iOS/Android),在设置界面中与消息相关的项目里确认MetaQuotes ID。它是一串较短的字母数字组合。显示位置可能随App版本变化,找不到时请在设置界面里多翻一翻。
2. 在终端端登记
在运行EA的MT5中,依次打开“工具”→“选项”→“通知”选项卡,勾选“启用推送通知”并输入ID。点击“测试”按钮,如果能收到测试通知,设置就完成了。
3. 在EA端开启通知
如果EA带有通知相关的输入参数,请将其开启。EA本身的设置方法整理在 EA设置方法 中。在VPS上运行时的注意事项,请参阅 VPS信息。
通知什么,不通知什么
我们使用的分类如下。
| 类别 | 应通知的示例 | 不应通知的示例 |
|---|---|---|
| 停止 | 下单被拒持续出现、连接中断、自动交易被禁用 | 仅1次的临时重新报价 |
| 异常 | 保证金维持率跌破自己设定的水平、超出可接受的DD | 正常的浮亏波动 |
| 节点 | 每日盈亏汇总(每天1次) | 每一次入场与平仓 |
是否把“每一笔成交”纳入通知,取决于EA的交易频率。我们拿自家的EA来比较一下。
GOLD TRIPWIRE 回测(检验期6.8年)共2762笔交易,平均持仓2:38:15。 BITCOIN COMET 回测(检验期8年)共775笔交易,平均持仓63:51:39。
像前者这样周转很快的EA,如果每笔成交都通知,手机会响个不停,重要通知反而被淹没。像后者这样持仓较长的EA,每笔成交都通知,负担就比较小。不过这只是回测数据,实际交易频率会随行情变化。详情请见 GOLD TRIPWIRE 与 BITCOIN COMET 的页面。
正文的写法
通知要写成只看通知栏里开头几十个字就能判断情况。按“[账户尾号][EA简称][类别] 内容”的顺序书写,即使同时运行多个EA或多个账户,不用点开通知也能知道发生了什么。
局限与注意事项
这里如实说明。
- 没收到通知,不一定代表一切正常。 如果整个终端都挂了,就没有发送通知的主体了。“停止”类通知,无法由已经停止的那一方自己发出。只能加入定时发送“我还活着”的心跳通知,并建立一旦收不到就能察觉的运行机制。
- 不保证一定送达。 这取决于MetaQuotes的服务器、手机操作系统和网络状况。送达延迟或丢失会发生到什么程度,我们自己也无法准确掌握。
- 触及频率限制时,通知会被悄悄丢弃。 错误连续出现时,通知处理本身可能卡住,因此需要在EA端实现拉开发送间隔的逻辑。
- 看到通知后手动介入,就成了与EA检验结果不同的另一种运行方式。 通知是用来判断“要不要停机”的依据,而不是凭主观去调整持仓的信号。
- 半夜响起的通知会拉低判断质量。 与其半夜迷迷糊糊操作而出事,不如把深夜时段的通知只限定在“停止”类,这也是一种选择。
总结
- 在运行EA的终端(VPS运行时就是VPS端)登记MetaQuotes ID后再发送通知
- 一定要用“测试”按钮确认能收到
- 通知只收敛为“停止”“异常”“节点”三类
- 是否通知每笔成交,取决于交易频率。周转快的EA改为汇总通知
- 没有通知并不能证明一切正常。用心跳通知来察觉“沉默”
- 通知是判断是否停机的依据,不是主观介入的信号
相关文章
📧 免费邮件课程(共 8 封)+ 订阅者专享 MT5 指标 13 款合集
※ 严格保护隐私。可随时取消订阅。