Magic Number 是自动交易程序在创建交易时写入 MT4 订单的整数。EA 随后可以扫描当前与历史订单,找到自己的识别码,并判断哪些持仓允许由它管理。
Magic Number 的作用
这个数字不能让交易盈利、限制回撤或授予账户许可。它的用途是运行管理:区分不同的自动化策略,并在代码正确编写时,防止 EA 修改无关订单。
仓位大小、止损、相关性和最大回撤仍需单独控制。
订单操作流程
为每个独立策略使用一个唯一且有记录的整数。重启 MT4 或将同一部署迁移到 VPS 时,保持该值不变。品种后缀本身并不要求新的 Magic Number,但独立策略实例通常需要。如果供应商提供固定值或隐藏此参数,应遵循其设计,不要强行更换。
选择订单归属模型
先阅读供应商说明。有些 EA 要求一个固定 Magic Number,而组合交易系统可能有意在多个图表上共用一个识别码。
记录每项分配
用简单表格记录终端、账户、EA、品种、图表周期及 Magic Number。这样比靠记忆区分多个部署更可靠。
挂载前设置数值
在实盘使用前,于 EA Inputs 中输入该识别码。如果另一个 EA 已使用同一数值,不要盲目复制参数文件。
持仓期间保持不变
有未平仓持仓时,除非开发者提供迁移流程,否则不要更改识别码。新实例可能无法再识别现有订单组合。
常见冲突
| 场景 | 建议分配方式 | 混淆时的风险 |
|---|---|---|
| 一个 EA 挂载在一个图表上 | 为该策略实例使用一个稳定识别码 | 持仓期间更改识别码,可能使持仓失去管理 |
| 同一个 EA 运行两个货币对 | 除非供应商另有说明,否则每个品种使用不同识别码 | EA 可能合并订单组合,或关闭错误的品种组 |
| 两个不同的 EA | 每个 EA 使用独立识别码 | 两个程序可能尝试管理同一批订单 |
| 手动交易 | 通常使用 Magic Number 0 | 被编写为管理 0 的 EA 可能操作手动订单 |
常见错误
安全设置
选择识别码前,检查 EA 文档规定的订单归属范围。有些程序同时按 Magic Number 和品种过滤;组合 EA 可能有意一起管理多个品种。只有代码在修改或关闭订单之前检查预定范围,识别码才能发挥作用。
不要把订单注释当作订单归属锁。服务器可以修改注释,而 Magic Number 0 通常用于手动订单。应通过可信的诊断脚本或报告核实实际 magic 字段,不要只看显示的注释。
如何核验
Magic Number 不能阻止另一终端访问订单
登录同一账户的两个终端,都能读取并操作同一订单池。共用 Magic Number 不会创建服务器端互斥锁,也不会指定某个终端为订单所有者。即使识别码不同,若两个副本各自发现同一信号,也仍可能建立重复的策略风险敞口。
除非开发者明确支持协调运行,否则同一部署应只保留一个预定交易实例。迁移 VPS 时,保留识别未平仓持仓所需的识别码,停止旧实例,并确认新实例能管理这些持仓。不要通过修改实盘订单组合的识别码来解决终端重复运行问题。
OrderSend 参考文档 将 magic 字段描述为用户定义的识别码,并指出服务器可以修改订单注释的末尾。