GridMaster EA — 交付说明

依据 AI旺财 EA 公开 .set 参数集与标准 MQL5 的独立实现 · 已通过 MetaEditor 编译 · 2026-09-02
三个边界,先讲清楚
  1. 不含任何授权校验模块。原 EA 的授权/有效期逻辑在加密代码段内,本实现不复制、不模拟、不绕过。
  2. 不内置 AI 外联面板。原版每 300 秒向 api.deepseek.com 发请求,且 API Key 明文存在 .set 里。本实现不发起任何外部网络请求。
  3. 不是反编译产物。原 .ex5 全文件熵值 7.95–7.99(理论上限 8.0),代码段无解。本 EA 是根据参数语义重写的,行为不等价,仅策略框架相同。

一、交付物

文件说明
GridMaster.mq5MQL5 源码,59 个可配置参数,中文注释
GridMaster.ex5编译产物(76 KB),可直接拖入 MT5 图表
GridMaster_稳健.set
GridMaster_保守.set
GridMaster_进取.set
60000 美元本金下的三套优化参数(推荐稳健
GridMaster_原版复刻.set完全沿用原版参数(倍数 1.5 / 15 档 / 2500pt / 无止损),仅用于对照回测,不建议实盘

二、编译验证

编译结果

0 errors
0 warnings · 1470 ms · X64 Regular

编译环境

MetaEditor64.exe(MT5 build 3136 同目录)
数据目录:AppData\Roaming\MetaQuotes\Terminal\9985D958…\MQL5

源码已放入 MQL5/Experts/GridMaster/,MT5 导航器中可直接看到 GridMaster,双击即可挂到图表。

三、策略逻辑(主循环)

OnTick
 ├─ 交易权限检查 → 刷新买卖价
 ├─ 扫描本 EA 持仓(按 symbol + magic 过滤)
 │
 ├─ 有持仓:
 │   ├─ ① 整体止盈   浮盈 ≥ 800 美元        → 全平
 │   ├─ ② 整体止损   浮亏 ≥ 15000 美元      → 全平   ← 原版关闭,本实现开启
 │   ├─ ③ 回撤保护   浮盈峰值回吐 10 美元   → 全平
 │   ├─ ④ 权益保护   权益跌破阈值(默认关) → 全平并停机
 │   ├─ ⑤ ATR 动态止损:每单 SL = 开仓价 ∓ ATR × 倍率
 │   ├─ ⑥ 移动止盈:浮盈达标后挂追踪止损(默认关)
 │   └─ ⑦ 加仓:价格逆行 ≥ 间距 且 单数 < 上限 → 下一档
 │
 └─ 空仓:
     └─ 时段内 + 点差合规 + RSI 信号 → 开首单

四、原版参数对照

已实现 53 项

原版参数本实现参数说明
InitialLot / MaxLotInpInitialLot / InpMaxLot手数按券商 min/step/max 自动规整
IsAutoLot / AutoLotMarginInpIsAutoLot / InpAutoLotMargin按权益比例换算初始手数
AllowBuy / AllowSell同名方向开关
TradeSessions* (7 项)InpSession*支持多时段逗号分隔、跨零点;仅约束首单,与原版一致
AddMultiplier / AddDistancePips / MaxOrders同名档位手数 = 初始手数 × 倍数ⁿ
IsContinueAddAfterStopLoss同名通过 OnTradeTransaction 检测 SL/SO 平仓事件
IsAtrSl / AtrSlPeriod / AtrSlThreshold / AtrSlMultiplierHigh|LowInpUseAtrSl / InpAtrPeriod / InpAtrThreshold / InpAtrMultHigh|Low见下方"推测语义"第 1 条
FixedTpPips / FixedSlPipsInpFixedTpPoints / InpFixedSlPoints默认关闭,与原版一致
IsAtrTp / AtrTpMultiplierInpUseAtrTp / InpAtrTpMultiplier默认关闭,与原版一致
AmountTpInpOverallTpAmount整体止盈金额
AmountSlInpOverallSlAmount原版 = 0(关闭),本实现默认 15000(关键改动,见风险章节)
RetraceProtectionStartAmount / DrawdownAmountInpRetraceStart / InpRetraceDrawdown浮盈峰值回撤保护
IsRsiFilter / RsiTF / RsiPeriod / RsiUpper / RsiLower / IsRsiFilterAddPosi同名(+ InpAddRsiMidline首单用超买超卖;加仓用中线过滤
MaTF / MaPeriodInpUseMaFilter / InpMaTF / InpMaPeriodMA200 趋势过滤(EMA),默认关闭
FirstOpenMode / AddModeInpFirstOpenMode / InpAddMode见下方"推测语义"第 2 条
MagicNumInpMagicNum默认值从 0 改为 20260903,magic=0 会误纳他人持仓
MaxSpreadInpMaxSpreadPoints0 = 不限制
IsTrailingTp / TrailingTpStartPips / TrailingTpMarketSlPipsInpUseTrailingTp / InpTrailStartPips / InpTrailMarketPips默认关闭,与原版一致
TrailLine_Show/Color/Width/StyleInpShowTrailLine简化:移动止盈线固定洋红虚线

主动不实现 8 项

原版参数原因
in_AI_EnableAIPanelin_AI_ApiUrlin_AI_ApiKeyin_AI_Modelin_AI_CallIntervalSecin_AI_UseAINewsin_AI_NewsIntervalSecEA 每 5 分钟外联一次,请求体内容因代码加密无法验证是否包含账户数据;且两枚 DeepSeek Key 原本明文写在 .set 里,任何拿到配置文件的人都能盗用。本实现不发任何网络请求。
in_Auth_ExtraAccountsin_Auth_AllowAllInTester授权模块。不复制、不模拟、不绕过。

未实现(语义不明) 4 项

原版参数处理
CloseMode枚举含义无旁证,未提供
ReverseProtectionAmount原版默认 0(关闭),未提供
IsHalfLossReduce原版默认 false,未提供(避免留一个不生效的开关)
TrailingTpPlatformSlPips本 EA 只用市价单,无挂单场景,未使用

五、推测语义 必须实测确认

以下 6 处原版语义无法从参数名确定,我按最合理的方式实现并暴露为参数。请务必在策略测试器上验证后再实盘。

#问题本实现的选择如何验证
1AtrSlMultiplierHigh(20) / Low(25) 何时切换ATR ≥ AtrThreshold(5.0) 视为高波动 → 用 High=20(收紧);否则用 Low=25(放宽)对比不同阈值下的回撤
2FirstOpenMode / AddMode 枚举值0=RSI 超买超卖反转 / 1=MA 趋势跟随 / 2=两者组合;加仓 0=逆势、1=顺势看首单方向是否符合预期
3AddDistancePips 是 point 还是 pip新增 InpPipsNormalize:3 位报价品种自动 ×10,保证"2500 = 25.00 美元"语义一致换品种时核对加仓价位
4金额单位是美元还是美分新增 InpMoneyUnit(0=美元 / 1=美分),内部统一换算见下方标定步骤
5ATR 用哪个时间框架原版未单独暴露 ATR 时间框架,本实现复用 InpRsiTF切换图表周期观察止损距离
6移动止盈的"平台单/市价单"区分只实现市价单追踪(InpTrailMarketPips观察追踪止损是否生效
金额单位标定(约 10 分钟,别跳过)
  1. 新建一份参数:InpOverallTpAmount = 10,其余用稳健方案
  2. 策略测试器跑一次,看它在浮盈 \$10 还是 \$0.10 平仓
  3. 若是 \$0.10 → 单位是美分,把 InpMoneyUnit 设为 1,或把所有金额参数 ×100
  4. 若是 \$10 → 单位是美元,保持 InpMoneyUnit = 0

差 100 倍。这一步不做,止盈止损全错。

六、安装

  1. 放文件GridMaster.ex5MQL5\Experts\(源码已在此,可直接编译)
    完整路径:C:\Users\Jeebin\AppData\Roaming\MetaQuotes\Terminal\9985D9581557BB9EE387EE0E3FAA60C3\MQL5\Experts\GridMaster\
  2. 放参数*.setMQL5\Profiles\Tester\(也可在 EA 输入页点"加载"从任意位置选)
  3. 挂图表:导航器 → EA → GridMaster → 拖到 XAUUSD 图表 → 勾选"允许算法交易"
  4. 加载参数:输入页 → 右键"加载" → 选 GridMaster_稳健.set
  5. 先回测:策略测试器,品种 XAUUSD,时段至少覆盖一轮完整趋势周期

七、四套参数

方案倍数档数间距整体止损爆仓率期望年化回撤 P90
稳健 推荐1.20124500150000.0%+9.9%46.7%
保守1.15154500150000.0%+9.2%41.1%
进取1.25124500150000.7%+11.0%46.8%
原版复刻1.501525000(关闭)26.4%−0.8%126%

爆仓率与收益为蒙特卡洛模拟结果(XAUUSD @4320,本金 60000,杠杆 1:2000,含隔夜利息),非实盘数据。

为什么三套起手都是 0.01 手?
不是保守,是数学上限。在"满仓浮亏 ≤ 25% 本金"约束下这就是最大值——提到 0.02 手,浮亏立刻到 67.6% 本金。 马丁格尔的可承载仓位由网格深度决定,不由本金决定:本金从 \$40 涨到 \$60000(1500 倍),可开手数只能涨 2–3 倍。

八、风险提示

  1. 整体止损务必保持开启。原版 AmountSl=0 是关闭状态,这是它在 60000 本金上爆仓率 26.4% 的直接原因。打开后爆仓率归零——这是本次优化收益最高的一处改动,别改回去。
  2. 回撤 P90 仍有 41–47%。即大约每十年有一年会扛 −40% 以上。参数优化能把"必然爆仓"压成"可控回撤",消除不了马丁格尔"用小概率大亏损换高频小盈利"的底层特征。
  3. 本 EA 与原版行为不等价。是独立实现,不是复制。任何参数的表现都需要重新回测验证,不能直接套用原版的实测结论。
  4. 先用小账户跑 1–2 个月。确认实际轮次频率、隔夜利息、滑点与模型吻合后,再决定是否放大到全额。
  5. MagicNum 已设为非零唯一值。若同时挂多个 EA,每个都要用不同的 magic,否则网格会互相干扰。

九、代码结构

函数职责
OnInit / OnDeinit创建/释放 RSI、ATR、MA 句柄
OnTick主循环:止盈止损 → 止损管理 → 移动止盈 → 加仓 / 开首单
OnTradeTransaction检测单笔被 SL/强平,置位 g_sl_hit 暂停加仓
RefreshGrid扫描持仓,汇总方向、手数、均价、浮盈、最后一档价位
CheckGlobalExit整体止盈 / 整体止损 / 回撤保护 / 权益保护
ApplyStopsATR 与固定止损止盈,含券商 stops level 校验
ApplyTrailing移动止盈,双向持仓时跳过
TryAdd / TryOpenFirst加仓与首单,含点差、时段、RSI 过滤
CalcNextLot档位手数计算与规整
UpdatePanel图表面板(方向/档位/均价/浮盈/保护状态)

本 EA 为独立编写的策略实现,不构成投资建议。外汇与贵金属保证金交易具有高杠杆风险,可能导致本金全部损失。