CopyTradeEA 使用说明文档
一、EA 简介
CopyTradeEA 是一款基于文件交换的 MT4 跨终端跟单专家顾问。它可以将一个账户(发送端/主账户)的所有交易操作,实时复制到另一个或多个账户(接收端/跟单账户)中,支持正向跟单与反向跟单,适用于同一台电脑或局域网内多个 MT4 终端之间的交易同步。
· 版本:v3.0
· 平台:MetaTrader 4
· 依赖:kernel32.dll、WebRequest(微信通知,可选)
---
二、主要功能
功能 说明
跨终端跟单 通过共享目录交换 CSV 文件,实现两个 MT4 之间的订单同步
正向/反向跟单 可选择正向复制,或反向开仓(BUY↔SELL 反转,止损止盈互换)
多主账户支持 每个主账户使用独立标识,接收端可同时跟多个主账户
品种过滤 支持白名单/黑名单,只跟或排除指定品种
手数控制 支持固定倍数、按账户余额比例两种手数计算方式
符号后缀映射 自动处理主账户与接收端符号后缀差异(如 EURUSD → EURUSDm)
严格订单匹配 通过订单注释 CT_票据号 精确匹配,避免魔术码碰撞
止损止盈复制 可选择是否复制主账户的 SL/TP
邮件通知 开仓、平仓、失败时发送邮件提醒
微信通知 通过 Server酱 推送消息到微信(可选)
可视化面板 接收端图表上实时显示主账户订单列表及跟单状态
失败重试 交易失败自动重试,提高执行成功率
---
三、运行架构
```
┌─────────────┐ 写入CSV ┌──────────────┐ 读取CSV ┌─────────────┐
│ 发送端 MT4 │ ───────────────> │ 共享目录 │ <─────────────── │ 接收端 MT4 │
│ (主账户) │ │ CopyTrade.csv│ │ (跟单账户) │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
│ 定时写入订单信息 │ 定时读取并执行跟单
▼ ▼
OrdersTotal() OrderSend/OrderClose
```
· 发送端:定时将本账户订单写入 MQL4\Files\CopyTradeTemp\CopyTrade_<账户标识>.csv,并复制到共享目录。
· 接收端:定时从共享目录复制文件到本地,解析订单,执行跟单开仓/平仓。
· 多主账户:每个主账户使用不同的 MasterAccountID,生成不同文件,接收端分别读取。
---
四、参数说明
1. 基本参数
参数 类型 默认值 说明
EA_Mode 枚举 接收端 运行模式:发送端 或 接收端
CopyDirection 枚举 正向跟单 跟单方向:正向跟单 或 反向跟单
ExchangeDir 字符串 C:\COPYLOT_TEMP 发送端与接收端共享的交换目录
TimerInterval 整数 300 定时器间隔(毫秒),越小越快,建议 200~500
MaxSlippage 整数 30 最大允许滑点(点)
MaxRetry 整数 3 交易失败重试次数
RetryDelayMs 整数 100 重试间隔(毫秒)
2. 发送端参数
参数 类型 默认值 说明
MasterAccountID 字符串 MASTER1 主账户标识,多主账户时用于区分文件名
MasterMagicFilter 整数 -1 只发送该魔术码的订单,-1 表示发送全部
SendSymbols 字符串 空 只发送这些品种,逗号分隔,空=全部
ExcludeSymbols 字符串 空 排除这些品种,逗号分隔
3. 接收端参数
参数 类型 默认值 说明
LotMultiplier 小数 1.0 手数倍数,跟单手数 = 主单手数 × 该值
UseBalanceRatio 布尔 false 是否按账户余额比例计算手数
MasterBalance 小数 0 主账户余额,用于比例计算,0=自动
MagicBase 整数 90000 接收端订单魔术码基数
UseSymbolMap 布尔 true 是否启用符号后缀映射
MasterSuffix 字符串 空 主账户符号后缀,如 pro
FollowerSuffix 字符串 m 接收端符号后缀,如 m、micro
CopySLTP 布尔 true 是否复制止损止盈
FollowerSymbols 字符串 空 只跟这些品种,逗号分隔,空=全部
FollowerExclude 字符串 空 排除这些品种,逗号分隔
4. 通知参数
参数 类型 默认值 说明
NotifyEmail 布尔 false 是否开启邮件通知
EmailSubject 字符串 跟单EA通知 邮件主题前缀
NotifyWeChat 布尔 false 是否开启微信通知
WeChatSendKey 字符串 空 Server酱 SendKey
5. 面板参数
参数 类型 默认值 说明
ShowPanel 布尔 true 接收端是否显示主账户订单列表
PanelFontSize 整数 8 面板字体大小
---
五、使用步骤
1. 安装 EA
将 CopyTradeEA.mq4 放入 MT4 数据目录的 MQL4\Experts 文件夹,在 MetaEditor 中编译,然后在 MT4 导航器中刷新。
2. 允许 DLL 导入与 WebRequest
· 工具 → 选项 → EA交易:
· 勾选 允许DLL导入
· 勾选 允许列出的URL的WebRequest,并添加 https://sctapi.ftqq.com(微信通知需要)
3. 配置发送端(主账户)
在需要被跟单的 MT4 图表上加载 EA,设置:
```
EA_Mode = 发送端
MasterAccountID = MASTER1
ExchangeDir = C:\COPYLOT_TEMP
MasterMagicFilter = -1 // 发送全部订单
SendSymbols = // 空=全部
ExcludeSymbols = // 可选排除
```
4. 配置接收端(跟单账户)
在跟单账户的 MT4 图表上加载 EA,设置:
```
EA_Mode = 接收端
CopyDirection = 正向跟单
MasterAccountID = MASTER1 // 与发送端一致
ExchangeDir = C:\COPYLOT_TEMP
LotMultiplier = 1.0
FollowerSuffix = m // 根据经纪商符号调整
FollowerSymbols = // 空=全部
ShowPanel = true
```
5. 多主账户配置
同时运行多个发送端 EA,分别设置不同 MasterAccountID(如 MASTER1、MASTER2)。接收端也运行多个实例,每个实例的 MasterAccountID 对应一个主账户。
6. 反向跟单
接收端设置 CopyDirection = 反向跟单,则主账户 BUY 时接收端 SELL,主账户 SELL 时接收端 BUY,同时止损止盈互换。
7. 微信通知配置
1. 访问 https://sct.ftqq.com/ 微信扫码登录,获取 SendKey。
2. 在接收端 EA 参数中设置:
```
NotifyWeChat = true
WeChatSendKey = 你的SendKey
```
3. 确保 MT4 已允许 https://sctapi.ftqq.com 的 WebRequest。
8. 邮件通知配置
1. 工具 → 选项 → 电子邮件,配置 SMTP 服务器和收件地址。
2. 在 EA 参数中设置 NotifyEmail = true。
---
六、面板说明
接收端图表上会显示一个表格,展示主账户订单列表:
列 说明
订单号 主账户订单票据
货币 交易品种
下单时间 开仓时间
类型 BUY/SELL/BUY LIMIT 等
手数 主账户手数
开仓价 主账户开仓价
止损 主账户止损
止盈 主账户止盈
利润 主账户浮动盈亏
魔术码 主账户魔术码
跟单 接收端跟单票据,- 表示未跟单
状态 √=已跟单,×=未跟单
面板宽度自适应图表窗口,随窗口大小变化自动调整。
---
七、注意事项
1. 文件共享权限:发送端与接收端必须能访问同一个 ExchangeDir,本地或网络共享均可。确保 MT4 有读写权限。
2. 符号差异:不同经纪商的品种后缀可能不同(如 EURUSD、EURUSDm、EURUSD.pro),请正确设置 MasterSuffix 和 FollowerSuffix。
3. DLL 导入:EA 依赖 kernel32.dll 进行文件复制,必须在 MT4 中允许 DLL 导入。
4. 微信通知频率:Server酱免费版每天限 5 条消息,建议只对开仓/平仓和重要错误通知。
5. 订单匹配:接收端通过订单注释 CT_票据号 精确匹配,请勿手动修改跟单订单的注释。
6. 魔术码范围:接收端订单魔术码为 MagicBase + 主单票据 % 100000,请确保 MagicBase 不与其他 EA 冲突。
7. 模拟测试:正式使用前,请先在模拟账户上测试正向、反向、多账户、通知等功能。
8. VPS 部署:建议在 VPS 上运行,确保网络稳定;两个 MT4 终端使用同一 Windows 账户运行,避免权限问题。
---
八、常见问题
Q1:EA 加载后无反应?
A:检查是否勾选“允许DLL导入”,查看 MT4 日志中的错误信息。
Q2:跟单不开仓?
A:检查 ExchangeDir 是否一致、CSV 文件是否存在、符号映射是否正确、手数是否低于最小手数。
Q3:平仓不及时?
A:跟单依赖定时器轮询,TimerInterval 越小越快,但会增加 CPU 占用,建议 200~500ms。
Q4:微信收不到通知?
A:检查 SendKey 是否正确、是否添加 WebRequest 白名单、免费额度是否用完。
Q5:反向跟单止损止盈不对?
A:反向跟单时 SL/TP 会自动互换,若主账户未设置 SL/TP,则接收端也不设置。
Q6:多个主账户会互相干扰吗?
A:不会。每个主账户使用独立 CSV 文件,接收端按 MasterAccountID 分别读取。
免责声明:本 EA 仅供学习与交流使用,交易有风险,使用前请充分测试。因使用本 EA 造成的任何损失,作者不承担责任。 |
-
-
|