CopyTraderAgent:一个面向 MetaTrader 5 的桌面跟单管理器
CopyTraderAgent 是一个面向 MetaTrader 5 的开源 Windows 桌面跟单管理器,支持本地多账户跟单和 Redis 分布式执行,重点解决多账户交易中的品种映射、订单绑定、手数倍数、失败重试和执行稳定性问题。
最近我整理并开源了一个新项目: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 子账户。
它不是策略,不预测行情,也不承诺收益。
它关注的是交易自动化里更底层、更工程化的问题:多账户配置、品种映射、订单绑定、事件分发、失败重试、日志观测和执行稳定性。