以为魔术数字会影响成交
它不改变订单成交的任何环节。它是元数据:经纪商不会据此行动,它对价格、点差和滑点都没有影响。
EA 在自己发出的每一笔订单上打的一个整数,用来认出自己的持仓,并且不去碰账户里的其他任何东西。
亦称:EA 魔术号, 订单魔术号, MAGIC
更新于 · 审阅于
每一笔交易上的名牌。终端并不在乎是谁开的仓,所以每个 EA 在订单票上写下自己的号码,之后只碰带着这个号码的票。
MetaTrader 让账户里的每个 EA 看到完全一样的全部持仓。没有标记,EA 就无法把自己的交易和你的、或者另一个 EA 的区分开——而管错了持仓的 EA,是一种会花钱的 bug,不是一种会报错的 bug。
| 设置项 | 常见取值 | 备注 |
|---|---|---|
| 手动交易 | 0 | 终端的默认值。EA 绝不应该去管魔术号 0。 |
| 一个 EA、一个品种 | 任意唯一整数 | 好记就行——20260807、1001。 |
| 同一个 EA 跑在多个品种上 | 每张图表一个值 | 否则 EURUSD 那份会把 GBPUSD 那份的持仓平掉。 |
| 同时跑多套策略的组合 EA | 每条腿一个值 | 每条腿都需要自己的标记,才能被独立移动止损和平仓。 |
一个账户上跑三个 EA。每个都打上自己的号码,所以尽管三个都看得见全部六笔持仓,每个持仓循环只碰属于自己的那几行。
计算 if (PositionGetInteger(POSITION_MAGIC) != MagicNumber) continue;
结果 每个 EA 只管自己开出来的持仓
示意数字,并非任何上架 EA 的实际记录。
把魔术数字当成账户配置,而不是策略参数:在 EA 上实盘之前写下来,并且在有持仓的时候绝不去改。
这个值本身对 MetaTrader 没有任何意义——任何整数都行。唯一重要的是它在那个账户上跑着的东西里是唯一的。
它不改变订单成交的任何环节。它是元数据:经纪商不会据此行动,它对价格、点差和滑点都没有影响。
真正要紧的身份是正在运行的实例,不是产品。两张图共用一个标记,意味着两份实例在管同一池持仓。
已经开着的持仓仍然带着旧标记。改输入项等于把它们抛下:EA 不再认得它们,它们会一直开着,直到手动平仓或被强平。
终端的「交易」标签页并不显示它。要按 EA 分开结果,必须从历史里读 DEAL_MAGIC,那是报表工具做的事——不是默认结单会给你的。
| 这里公开的 14 只 EA | 数值 |
|---|---|
| 带 MagicNumber 输入项的商品 | 10 |
| 安装时需要改动它的商品 | 0 |
| 要求你在没有别的东西交易该品种的地方运行的商品 | 8 |
| 其中仍然带着 MagicNumber 输入项的商品 | 6 |
| 被不止一个商品占用的品种 | 15 个里的 7 个 |
| 不能共用一个账户的 EA 组合 | 91 组里的 15 组 |
把第三行和第四行放在一起读。给订单打标记是一件事;判断一个新信号是否被允许是另一件事,而一个把自己限制在一笔持仓的 EA 必须先去数。如果它用 PositionsTotal() 加一次品种检查来数,别人的持仓就会算进总数;如果它先按 POSITION_MAGIC 过滤,就不会。这里有六个商品带着这个输入项、却照样印着那句警告,这就告诉了你它们的持仓计数用的是哪一种。
所以搭配的问题其实是品种的问题,而且在买之前就能回答。USD/JPY 同时被四个商品占用—— Iridescence、Kestrel Hover、Lanternfish 和 Tessera——所以它们中任何两个都不该放在一起。EUR/GBP 现在也有两只,Ballast 和 Thunderhead。只有 Orrery、Peregrine 和 Zerqon 不和任何人重叠。两个确实重叠的时候,分开账户能解决标记解决不了的事:那样每个 EA 数的就是一个只含自己交易的池子。我们的方法论会按品种记录每一次公开的运行,这正是同一个区分从测量那一侧看过去的样子。