ForexBestRobots.com比较 EA →

MT4 与自动交易程序 · 订单识别

MT4 Magic Number 详解:EA 如何识别交易

了解 MT4 Magic Number 如何标识订单,以及代码检查预定归属范围时,它如何帮助区分 EA 策略。

阅读时间:13 分钟由 ForexBestRobots 编辑团队审查
MT4 Magic Number 示意图:不同 EA 和手动交易对应不同订单组MT4 与 EA实用 MT4 指导

为 ForexBestRobots.com 制作的原创示意图。

Magic Number 是自动交易程序在创建交易时写入 MT4 订单的整数。EA 随后可以扫描当前与历史订单,找到自己的识别码,并判断哪些持仓允许由它管理。

Magic Number 的作用

这个数字不能让交易盈利、限制回撤或授予账户许可。它的用途是运行管理:区分不同的自动化策略,并在代码正确编写时,防止 EA 修改无关订单。

MT4 Magic Number 示意图:不同 EA 和手动交易对应不同订单组
Magic Number 是订单识别码,不是风险控制措施或账户许可。
独立识别码可避免混淆,不能避免市场亏损

仓位大小、止损、相关性和最大回撤仍需单独控制。

订单操作流程

为每个独立策略使用一个唯一且有记录的整数。重启 MT4 或将同一部署迁移到 VPS 时,保持该值不变。品种后缀本身并不要求新的 Magic Number,但独立策略实例通常需要。如果供应商提供固定值或隐藏此参数,应遵循其设计,不要强行更换。

1

选择订单归属模型

先阅读供应商说明。有些 EA 要求一个固定 Magic Number,而组合交易系统可能有意在多个图表上共用一个识别码。

2

记录每项分配

用简单表格记录终端、账户、EA、品种、图表周期及 Magic Number。这样比靠记忆区分多个部署更可靠。

3

挂载前设置数值

在实盘使用前,于 EA Inputs 中输入该识别码。如果另一个 EA 已使用同一数值,不要盲目复制参数文件。

4

持仓期间保持不变

有未平仓持仓时,除非开发者提供迁移流程,否则不要更改识别码。新实例可能无法再识别现有订单组合。

常见冲突

场景建议分配方式混淆时的风险
一个 EA 挂载在一个图表上为该策略实例使用一个稳定识别码持仓期间更改识别码,可能使持仓失去管理
同一个 EA 运行两个货币对除非供应商另有说明,否则每个品种使用不同识别码EA 可能合并订单组合,或关闭错误的品种组
两个不同的 EA每个 EA 使用独立识别码两个程序可能尝试管理同一批订单
手动交易通常使用 Magic Number 0被编写为管理 0 的 EA 可能操作手动订单

常见错误

同一账户上互不相关的 EA 使用重复识别码
复制的参数文件悄悄覆盖预定识别码
使用不同设置,在两个终端运行同一账户
EA 可管理手动订单时使用 Magic Number 0
EA 已建立订单组合后更改识别码

安全设置

选择识别码前,检查 EA 文档规定的订单归属范围。有些程序同时按 Magic Number 和品种过滤;组合 EA 可能有意一起管理多个品种。只有代码在修改或关闭订单之前检查预定范围,识别码才能发挥作用。

不要把订单注释当作订单归属锁。服务器可以修改注释,而 Magic Number 0 通常用于手动订单。应通过可信的诊断脚本或报告核实实际 magic 字段,不要只看显示的注释。

如何核验

打开 Terminal → Trade;如果 EA 写入订单注释,请显示该注释。
在 Account History 中,使用能显示 magic 字段的脚本或报告检查订单。
确认关闭或修改一笔测试订单,不会影响另一个 EA 的持仓。
重启后检查 Experts 和 Journal,查看是否有订单丢失或无人管理的消息。
在一个实盘账户运行多个 EA 之前,先在模拟环境重复测试。

Magic Number 不能阻止另一终端访问订单

登录同一账户的两个终端,都能读取并操作同一订单池。共用 Magic Number 不会创建服务器端互斥锁,也不会指定某个终端为订单所有者。即使识别码不同,若两个副本各自发现同一信号,也仍可能建立重复的策略风险敞口。

除非开发者明确支持协调运行,否则同一部署应只保留一个预定交易实例。迁移 VPS 时,保留识别未平仓持仓所需的识别码,停止旧实例,并确认新实例能管理这些持仓。不要通过修改实盘订单组合的识别码来解决终端重复运行问题。

OrderSend 参考文档 将 magic 字段描述为用户定义的识别码,并指出服务器可以修改订单注释的末尾。

官方参考

阅读官方文档。