自动化·术语表

什么是 MT4 和 MT5 中的魔术号?

魔术号是 EA 给自己开的每笔订单打上的整数编号。有了它,一个账户里跑多个策略,也能逐个分开来看。

魔术号是 EA(智能交易系统)写进每笔订单的一个整数,MetaTrader 会在这笔交易的整个生命周期里一直保留它。有了它,多个策略可以共用一个账户,事后照样分得清。手动下的单,魔术号是零。

工作原理

这个数字是下单函数的一个参数,由代码设定,经纪商和平台都不管。

MT4:  OrderSend(symbol, cmd, lots, price, slip, sl, tp, comment, magic, ...)
MT5:  request.magic = 55566;   → 带到仓位和每一笔成交上
手动点击:  magic = 0

由此带来三个特点,每一个都容易让人踩坑。

  • 没有人校验它。没有任何环节检查这个值是否唯一、有没有意义。两个 EA 设了同一个整数,在记录里就永远混在一起,而且各自都会把对方的仓位当成自己的来管理。
  • 零是一个实实在在的值,不是空值。手动点击下单带的是零,魔术号参数一直没改默认值的 EA 带的也是零,两者从此就分不开了。
  • 事后补不上。请求离开终端的那一刻,这个值就定死了,并随交易一起保存;当初是零的历史,永远都是零。

其他平台用别的字段表达同样的意思:cTrader 上的 cBot 写的是文本标签,TradeLocker 在订单上附带策略 ID,其中数字形式的 ID 在本站按魔术号读取。实际上,按策略拆分主要还是 MT4 和 MT5 的事。

为什么重要

一个账户跑三个策略,页面上每个核心数字都是三者混在一起的结果。盈利因子、胜率、回撤和净值曲线都按合并后的数据计算,所以一个稳定亏钱的策略可以在盈利的总账里藏上好几个月,任何图表上都看不到它单独的那条线。账户看起来很健康,因为从总体上看,它确实健康。

合并之后还能把策略区分开的,只有魔术号这一个字段。设得好,历史一进来就已经按策略分成了一份份独立的业绩记录,可以互相比较,分别调整仓位,或者一个个停掉。设得马虎,事后再怎么分析也还原不出来。

数据显示了什么

这个字段在本站的分量,比大多数账户所有者想象的更重,因为每个账户页面上的自动化比例就是靠它算出来的:一笔交易只要带着非零魔术号,或者在用策略标签代替魔术号的平台上带着策略标签,就算作自动交易。在 ShowMyTrades 上有交易历史的公开账户中(2026 年 8 月),自动交易占比中位数为 99%,53.9% 的账户自动化程度超过 90%。换句话说,这些账户里几乎每一笔订单进来时都已经带好了标记。

之所以要尽早打标记,是因为样本量。账户的已平仓交易数中位数为 171 笔。分到三个策略上,每个只有五十七笔左右,还不足以让胜率或盈利因子说明什么。从第一笔订单就打标记,每个策略才能在您必须对它做决定之前,攒够一个看得懂的样本。另一种做法是一个策略一个账户,在本站也很常见:699 位用户有不止一个账户,429 位在不止一家经纪商交易。

在 ShowMyTrades 上的位置

分类统计模块(账户设置里叫货币对统计)在按品种旁边有一个按魔术号标签页,只要账户有可以拆分的已平仓交易就会出现。每一行显示 EA / 策略、原始魔术号、交易数、盈利,以及盈利单和亏损单的数量与百分比。魔术号为 0 的那一行标为手动,也是唯一不能改名的一行:它不是一个策略,而是所有没带标记的交易。

EA / 策略单元格可以直接编辑,55566 就这样变成一个半年后您还认得出的名字。这些名字之后会跟着数据走:交易历史与余额变化下的已平仓交易表格有一个魔术号列,逐笔显示原始整数;自定义分析侧边面板有一个魔术号筛选器,标签显示为手动 (0) 或标签 - 55566。选中其中一个,页面上的所有统计都会只按这个策略重新计算。

常见误解

  • “魔术号以后再设。”没有以后。这个字段在下单时写入,过去的交易没法重新打标记。
  • “我的 EA 会自动搞定。”前提是参数改过。默认值为 0 的情况很常见,会悄无声息地把 EA 和您的手动交易混在一起。
  • “标为手动,就是我手动下的单。”手动这一行装的是所有没带标记的交易:手动下的单,加上所有魔术号停在零的 EA。
  • “魔术号能告诉您这是哪个机器人。”什么也说明不了。55566 不过是作者填进去的数字。

从给策略命名,到揪出那个悄悄亏钱的策略,完整流程见魔术号与策略标签。