🚀 TradeCopierBot — 快速、干净且经纪商防护的交易复制(本地/VPS)🔁✨
将您的交易从 主账户复制到一个(或多个)从账户,使用为真实交易环境设计的轻量级事件驱动复制器: 不同经纪商,不同符号名称,不同手数规则。
非常适合 多账户执行、风险缩放和策略分发——配有详细的调试日志,让您随时了解发生了什么。🧠📈
✅ 优化用于 本地 / VPS 设置(同一台机器)。
❌ 不适用于 cTrader Cloud(实例是隔离的,因此信号无法共享)。☁️🚫
注意:如果您有两个不同的 cTrader 账户,您需要购买两个 cBot;否则,您将无法复制它们。我们随时为您提供任何信息。
🧠 工作原理(主账户 → 从账户)🧩
🔁 1) 信号传输(交易如何“传递”)
此复制器使用 cTrader LocalStorage(设备范围) 作为共享的“消息总线”。
✅ 主账户
- 监听仓位事件: 开仓 / 修改 / 平仓
- 创建
TradeSignal(开仓 / 修改 / 平仓) - 将其附加到 信号列表 中,位于 LocalStorageScope.Device
- 调用 Flush(),使从账户能立即读取
✅ 从账户
- 每隔 轮询间隔 秒运行一个 定时器
- 调用 Reload()
- 读取信号列表
- 仅处理 新信号(使用
_lastSignalIndexProcessed)
🧷 2) 仓位映射(确保平仓功能正常)
当从账户开仓时,它会存储:
🧩 MasterPositionId → SlavePositionId
此映射也保存到 LocalStorage 中,因此重启后依然有效:
- ✅ 重启后平仓仍然有效
- ✅ 修改仍能找到正确仓位
🧭 3) 符号转换(主账户符号 → 从账户符号)
🗺️ 符号映射(主账户=从账户;...)
用于经纪商/账户之间符号名称不同的情况。
格式:
主账户=从账户;主账户2=从账户2;...
示例(您的情况):
- 主账户开仓
USTEC - 从账户必须交易
US100
➡️ USTEC=US100
✅ 左侧 = 来自主账户的符号
✅ 右侧 = 从账户经纪商的符号
📏 4) 手数逻辑(关键部分)🔥
✅ 以手数/数量工作(支持小数)
为处理小数(0.10、0.01 等),从账户:
- 计算 期望手数
- 应用 乘数 / 最小值 / 步长
- 使用 手数 → 交易量 转换,调用
QuantityToVolumeInUnits(lots) - 使用接受 双精度交易量 的重载发送订单 ✅
这使得即使经纪商执行不同的手数精度规则,也能保持稳健。
⚙️ 参数说明(带图标)
🧩 核心
- 🧭 模式
-
Master= 发布信号Slave= 读取信号并复制交易
- 🧷 复制组 ID
-
- 通信通道。主账户和从账户必须匹配(例如,
DEFAULT)
- 通信通道。主账户和从账户必须匹配(例如,
- ⏱️ 轮询间隔(秒)
-
- 从账户每隔 N 秒检查新信号
- 🐞 调试模式
-
- 打印详细日志(建议设置时开启)
🗺️ 符号转换
- 🧾 符号映射(主账户=从账户;...)
-
- 示例:
USTEC=US100;XAUUSD=GOLD;NAS100=USTEC
- 示例:
🎚️ 手数缩放(最重要)✅
🔢 全局乘数
- ➗ 交易量乘数
-
- 缩放所有复制的手数:
desiredLots = masterLots * VolumeMultiplier
🎛️ 每符号乘数(您的主要工具)
- 🧷 交易量乘数映射(符号=乘数;...)
-
- 覆盖每个符号的乘数(从账户符号)
- 示例:
-
US100= 0. 10- 意大利格式也可以:
US100=0,10
✅ 这样您就能实现: 主账户 1.00 → 从账户 0.10
🧱 经纪商手数限制(最小值和步长)
- 🧱 默认最小数量(0=关闭)
-
- 启用时的全局最小手数
- 🧱 最小数量映射(符号=值;...)
-
- 每个符号的最小手数
- 示例:
US100=0. 10
- 🪜 默认步长(0=关闭)
-
- 启用时的全局步长
- 🪜 步长映射(符号=值;...)
-
- 每个符号的步长
- 示例:
US100=0. 10→ 允许的值:0.10,0.20,0.30…
🧯 安全行为
- 🧷 将最小数量用作固定手数
-
- 如果
true:从账户忽略主账户大小,总是使用最小数量(固定大小)
- 如果
- ⚠️ 低于最小值行为
-
UseMin= 如果低于最小值 → 提升到最小值Skip= 如果低于最小值 → 不开仓
- 🔁 错误交易量尝试
-
- 如果经纪商返回错误交易量,尝试最多 N 次小幅调整
🎯 止损/止盈复制逻辑
- 🛡️ 当符号不同,复制止损/止盈为距离
-
- 如果主账户和从账户符号不同:
- 止损/止盈复制为 入场价的距离,而非绝对价格
- 这保持了不同工具间风险控制的一致性
✅ 推荐设置(USTEC → US100,从账户手数 = 0.10)
在 从账户 上:
🗺️ 符号转换:
Symbol Map=USTEC=US100
🎛️ 手数缩放:
Volume Multiplier Map=US100=0,10
🧱 经纪商限制:
Min Qty Map=US100=0,10Qty Step Map=US100=0,10
结果:
- ✅ 主账户 1.00 → 从账户 US100 上的 0.10
☁️ 重要:仅限本地/VPS(不支持云)❌
🖥️ 本地/VPS ✅
之所以可行,是因为主账户和从账户共享相同的 LocalStorageScope.Device(同一台机器/环境)。
☁️ cTrader 云 ❌
不支持,因为云实例是 隔离的,它们不共享 LocalStorage,从账户无法看到主账户信号。
✅ 结论:
- ✔️ 在同一台电脑或 VPS 上运行两个实例时使用
- ❌ 云端需要外部中继(HTTP/WebSocket 服务器)
5 | 67 % | |
4 | 0 % | |
3 | 33 % | |
2 | 0 % | |
1 | 0 % |