CopyTraderAgent:一个面向 MetaTrader 5 的桌面跟单管理器

CopyTraderAgent 是一个面向 MetaTrader 5 的开源 Windows 桌面跟单管理器,支持本地多账户跟单和 Redis 分布式执行,重点解决多账户交易中的品种映射、订单绑定、手数倍数、失败重试和执行稳定性问题。

CopyTraderAgent:一个面向 MetaTrader 5 的桌面跟单管理器

最近我整理并开源了一个新项目:CopyTraderAgent

项目地址:
https://github.com/long-dotcom/CopyTraderAgent

CopyTraderAgent 是一个面向 MetaTrader 5 的 Windows 桌面跟单管理器,主要用于多账户交易执行、自动化研究和交易系统运维验证。

它不是交易策略,也不会判断行情方向。它更像是一个执行层工具:当主账户发生开仓、平仓、减仓、修改止盈止损、挂单变更等操作时,系统负责把这些变化复制到一个或多个子账户。

为什么做这个项目

多账户跟单看起来很简单:主账户下一单,子账户跟着下一单。

但实际做起来会遇到不少问题。

不同 MT5 服务器上的品种名称可能不一样。例如有的平台叫 EURUSD,有的平台可能叫 EURUSDm;黄金可能是 XAUUSD,也可能是 XAUUSDm

不同子账户的资金规模、手数倍数、Magic、滑点、订单备注规则也可能不同。主账户开 0.10 手,并不代表所有子账户都应该开 0.10 手。

更关键的是,系统必须知道:主账户的哪一笔订单,对应子账户的哪一笔订单。

如果只有一笔单子,问题不明显。但一旦同品种、同方向出现多笔仓位,再加上部分平仓、SL/TP 修改、挂单成交等情况,订单绑定就会变得很重要。

CopyTraderAgent 主要解决的就是这些执行层问题。

项目定位

CopyTraderAgent 的定位很明确:

它不负责产生交易信号,只负责复制执行。

策略可以来自人工交易,也可以来自 EA、脚本或其他系统。CopyTraderAgent 只关注主账户已经发生了什么交易变化,以及这些变化应该如何同步到子账户。

简单来说:

交易策略 / 人工交易
        |
        v
主账户 MT5
        |
        v
CopyTraderAgent
        |
        v
多个子账户 MT5

支持本地和分布式模式

项目目前支持三种运行模式:

local             主账户 MT5 -> 本地子账户 MT5
master_publisher  主账户 MT5 -> Redis 事件流
child_executor    Redis 事件流 -> 本地子账户 MT5

如果主账户和子账户都在同一台电脑上,可以使用 local 模式。

如果主账户和子账户分布在不同机器上,可以使用 Redis 模式。主端只负责把交易变化发布到 Redis Stream,子端执行器再独立消费事件并完成执行。

这种设计可以把主端和子端职责拆开:主端只关心交易事件,子端根据自己的配置决定如何执行,比如手数倍数、品种映射、Magic、滑点和 Comment 模板。

几个关键设计

严格品种映射

CopyTraderAgent 采用严格品种映射。

例如:

XAUUSD=XAUUSD
EURUSD=EURUSDm

只有配置过映射的品种才会跟单。未配置的品种会被跳过。

这个设计比较保守,但我认为对交易执行工具来说是必要的。自动化系统最怕的不是少执行,而是错执行。宁可跳过一笔未配置品种,也不能把订单下到错误品种上。

Comment 绑定主子订单

启用的子账户必须配置 Comment 模板,并且必须包含:

{master_ticket}

推荐形式:

COPY:{master_ticket}

这样可以把主账户 ticket 写入子账户订单备注中,后续在减仓、平仓、修改 SL/TP 时,系统就能更稳定地识别主子订单关系。

如果只靠“品种 + 方向 + Magic”匹配,在多笔同向订单场景下很容易产生歧义。

子账户差异化配置

CopyTraderAgent 不是简单地把主账户订单一比一复制到所有子账户。

每个子账户都可以独立配置手数倍数、品种映射、Magic、滑点、Comment 模板和 MT5 终端路径。

这使它更像是一个多账户执行管理器,而不是单纯的复制脚本。

运行稳定性

除了基础跟单功能外,项目也做了一些运行稳定性处理:

  • 子账户执行失败后会重试。
  • 某个子账户失败不会阻塞其他子账户。
  • GUI 日志限制最大保留行数。
  • Redis Stream 限制最大长度,避免事件流无限增长。
  • 子账户错误记录限制保留数量。
  • 挂单成交后避免重复市价跟单。

这些设计不如“策略收益率”听起来吸引人,但对执行层工具来说很重要。

交易系统长期运行时,真正麻烦的往往是异常堆积、重复执行、错误匹配、日志膨胀和状态不可追踪。

适合什么场景

CopyTraderAgent 比较适合:

  • MT5 多账户跟单研究。
  • 本地多 MT5 终端执行同步。
  • 主账户和子账户分布在不同机器上。
  • 不同子账户需要不同手数倍数。
  • 不同经纪商之间品种名称不同。
  • 想把策略层和执行层拆开。
  • 想验证 Redis 事件流驱动的交易执行模式。

它不适合被当成“下载即盈利”的交易软件。主账户如果亏损,子账户也可能跟着亏损。它解决的是执行复制问题,不解决策略本身的胜率问题。

后续方向

后续我会继续围绕这些方向改进:

  • 更完整的状态持久化。
  • 更清晰的主子订单绑定关系展示。
  • 更强的执行可观测性。
  • Redis 分布式模式下的断线恢复。
  • 子账户执行失败的追踪和告警。
  • 更多边界场景测试。

总结

CopyTraderAgent 的核心目标很简单:

把主账户上的交易变化,稳定、可控地复制到多个 MT5 子账户。

它不是策略,不预测行情,也不承诺收益。

它关注的是交易自动化里更底层、更工程化的问题:多账户配置、品种映射、订单绑定、事件分发、失败重试、日志观测和执行稳定性。

项目地址:
https://github.com/long-dotcom/CopyTraderAgent