说明
🚀 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 服务器)
摘要
Key features include:
- Position mapping to maintain correct trade management across restarts.
- Symbol translation via customizable symbol maps to handle differing broker symbol names.
- Volume scaling with global and per-symbol multipliers, supporting decimal lot sizes and broker-specific minimum quantity and step constraints.
- Safety behaviors such as fixed lot sizing and handling of trades below minimum lot sizes.
- Stop loss and take profit copying as distance from entry price when symbols differ, preserving consistent risk control.
Parameters include mode selection (MASTER or SLAVE), communication group ID, polling interval, debug mode, symbol maps, volume multipliers, and broker lot constraints. The bot is not compatible with cTrader Cloud due to isolated instances but functions reliably on local or VPS setups where MASTER and SLAVE share the same environment.
客户评价
5 | 67 % | |
4 | 0 % | |
3 | 33 % | |
2 | 0 % | |
1 | 0 % |