.set 参数集与标准 MQL5 的独立实现 · 已通过 MetaEditor 编译 · 2026-09-02api.deepseek.com 发请求,且 API Key 明文存在 .set 里。本实现不发起任何外部网络请求。.ex5 全文件熵值 7.95–7.99(理论上限 8.0),代码段无解。本 EA 是根据参数语义重写的,行为不等价,仅策略框架相同。| 文件 | 说明 |
|---|---|
| GridMaster.mq5 | MQL5 源码,59 个可配置参数,中文注释 |
| GridMaster.ex5 | 编译产物(76 KB),可直接拖入 MT5 图表 |
| GridMaster_稳健.set GridMaster_保守.set GridMaster_进取.set | 60000 美元本金下的三套优化参数(推荐稳健) |
| GridMaster_原版复刻.set | 完全沿用原版参数(倍数 1.5 / 15 档 / 2500pt / 无止损),仅用于对照回测,不建议实盘 |
源码已放入 MQL5/Experts/GridMaster/,MT5 导航器中可直接看到 GridMaster,双击即可挂到图表。
OnTick
├─ 交易权限检查 → 刷新买卖价
├─ 扫描本 EA 持仓(按 symbol + magic 过滤)
│
├─ 有持仓:
│ ├─ ① 整体止盈 浮盈 ≥ 800 美元 → 全平
│ ├─ ② 整体止损 浮亏 ≥ 15000 美元 → 全平 ← 原版关闭,本实现开启
│ ├─ ③ 回撤保护 浮盈峰值回吐 10 美元 → 全平
│ ├─ ④ 权益保护 权益跌破阈值(默认关) → 全平并停机
│ ├─ ⑤ ATR 动态止损:每单 SL = 开仓价 ∓ ATR × 倍率
│ ├─ ⑥ 移动止盈:浮盈达标后挂追踪止损(默认关)
│ └─ ⑦ 加仓:价格逆行 ≥ 间距 且 单数 < 上限 → 下一档
│
└─ 空仓:
└─ 时段内 + 点差合规 + RSI 信号 → 开首单
| 原版参数 | 本实现参数 | 说明 |
|---|---|---|
InitialLot / MaxLot | InpInitialLot / InpMaxLot | 手数按券商 min/step/max 自动规整 |
IsAutoLot / AutoLotMargin | InpIsAutoLot / InpAutoLotMargin | 按权益比例换算初始手数 |
AllowBuy / AllowSell | 同名 | 方向开关 |
TradeSessions* (7 项) | InpSession* | 支持多时段逗号分隔、跨零点;仅约束首单,与原版一致 |
AddMultiplier / AddDistancePips / MaxOrders | 同名 | 档位手数 = 初始手数 × 倍数ⁿ |
IsContinueAddAfterStopLoss | 同名 | 通过 OnTradeTransaction 检测 SL/SO 平仓事件 |
IsAtrSl / AtrSlPeriod / AtrSlThreshold / AtrSlMultiplierHigh|Low | InpUseAtrSl / InpAtrPeriod / InpAtrThreshold / InpAtrMultHigh|Low | 见下方"推测语义"第 1 条 |
FixedTpPips / FixedSlPips | InpFixedTpPoints / InpFixedSlPoints | 默认关闭,与原版一致 |
IsAtrTp / AtrTpMultiplier | InpUseAtrTp / InpAtrTpMultiplier | 默认关闭,与原版一致 |
AmountTp | InpOverallTpAmount | 整体止盈金额 |
AmountSl | InpOverallSlAmount | 原版 = 0(关闭),本实现默认 15000(关键改动,见风险章节) |
RetraceProtectionStartAmount / DrawdownAmount | InpRetraceStart / InpRetraceDrawdown | 浮盈峰值回撤保护 |
IsRsiFilter / RsiTF / RsiPeriod / RsiUpper / RsiLower / IsRsiFilterAddPosi | 同名(+ InpAddRsiMidline) | 首单用超买超卖;加仓用中线过滤 |
MaTF / MaPeriod | InpUseMaFilter / InpMaTF / InpMaPeriod | MA200 趋势过滤(EMA),默认关闭 |
FirstOpenMode / AddMode | InpFirstOpenMode / InpAddMode | 见下方"推测语义"第 2 条 |
MagicNum | InpMagicNum | 默认值从 0 改为 20260903,magic=0 会误纳他人持仓 |
MaxSpread | InpMaxSpreadPoints | 0 = 不限制 |
IsTrailingTp / TrailingTpStartPips / TrailingTpMarketSlPips | InpUseTrailingTp / InpTrailStartPips / InpTrailMarketPips | 默认关闭,与原版一致 |
TrailLine_Show/Color/Width/Style | InpShowTrailLine | 简化:移动止盈线固定洋红虚线 |
| 原版参数 | 原因 |
|---|---|
in_AI_EnableAIPanel、in_AI_ApiUrl、in_AI_ApiKey、in_AI_Model、in_AI_CallIntervalSec、in_AI_UseAINews、in_AI_NewsIntervalSec | EA 每 5 分钟外联一次,请求体内容因代码加密无法验证是否包含账户数据;且两枚 DeepSeek Key 原本明文写在 .set 里,任何拿到配置文件的人都能盗用。本实现不发任何网络请求。 |
in_Auth_ExtraAccounts、in_Auth_AllowAllInTester | 授权模块。不复制、不模拟、不绕过。 |
| 原版参数 | 处理 |
|---|---|
CloseMode | 枚举含义无旁证,未提供 |
ReverseProtectionAmount | 原版默认 0(关闭),未提供 |
IsHalfLossReduce | 原版默认 false,未提供(避免留一个不生效的开关) |
TrailingTpPlatformSlPips | 本 EA 只用市价单,无挂单场景,未使用 |
以下 6 处原版语义无法从参数名确定,我按最合理的方式实现并暴露为参数。请务必在策略测试器上验证后再实盘。
| # | 问题 | 本实现的选择 | 如何验证 |
|---|---|---|---|
| 1 | AtrSlMultiplierHigh(20) / Low(25) 何时切换 | ATR ≥ AtrThreshold(5.0) 视为高波动 → 用 High=20(收紧);否则用 Low=25(放宽) | 对比不同阈值下的回撤 |
| 2 | FirstOpenMode / AddMode 枚举值 | 0=RSI 超买超卖反转 / 1=MA 趋势跟随 / 2=两者组合;加仓 0=逆势、1=顺势 | 看首单方向是否符合预期 |
| 3 | AddDistancePips 是 point 还是 pip | 新增 InpPipsNormalize:3 位报价品种自动 ×10,保证"2500 = 25.00 美元"语义一致 | 换品种时核对加仓价位 |
| 4 | 金额单位是美元还是美分 | 新增 InpMoneyUnit(0=美元 / 1=美分),内部统一换算 | 见下方标定步骤 |
| 5 | ATR 用哪个时间框架 | 原版未单独暴露 ATR 时间框架,本实现复用 InpRsiTF | 切换图表周期观察止损距离 |
| 6 | 移动止盈的"平台单/市价单"区分 | 只实现市价单追踪(InpTrailMarketPips) | 观察追踪止损是否生效 |
InpOverallTpAmount = 10,其余用稳健方案InpMoneyUnit 设为 1,或把所有金额参数 ×100InpMoneyUnit = 0差 100 倍。这一步不做,止盈止损全错。
GridMaster.ex5 → MQL5\Experts\(源码已在此,可直接编译)C:\Users\Jeebin\AppData\Roaming\MetaQuotes\Terminal\9985D9581557BB9EE387EE0E3FAA60C3\MQL5\Experts\GridMaster\*.set → MQL5\Profiles\Tester\(也可在 EA 输入页点"加载"从任意位置选)GridMaster_稳健.set| 方案 | 倍数 | 档数 | 间距 | 整体止损 | 爆仓率 | 期望年化 | 回撤 P90 |
|---|---|---|---|---|---|---|---|
| 稳健 推荐 | 1.20 | 12 | 4500 | 15000 | 0.0% | +9.9% | 46.7% |
| 保守 | 1.15 | 15 | 4500 | 15000 | 0.0% | +9.2% | 41.1% |
| 进取 | 1.25 | 12 | 4500 | 15000 | 0.7% | +11.0% | 46.8% |
| 原版复刻 | 1.50 | 15 | 2500 | 0(关闭) | 26.4% | −0.8% | 126% |
爆仓率与收益为蒙特卡洛模拟结果(XAUUSD @4320,本金 60000,杠杆 1:2000,含隔夜利息),非实盘数据。
AmountSl=0 是关闭状态,这是它在 60000 本金上爆仓率 26.4% 的直接原因。打开后爆仓率归零——这是本次优化收益最高的一处改动,别改回去。MagicNum 已设为非零唯一值。若同时挂多个 EA,每个都要用不同的 magic,否则网格会互相干扰。| 函数 | 职责 |
|---|---|
OnInit / OnDeinit | 创建/释放 RSI、ATR、MA 句柄 |
OnTick | 主循环:止盈止损 → 止损管理 → 移动止盈 → 加仓 / 开首单 |
OnTradeTransaction | 检测单笔被 SL/强平,置位 g_sl_hit 暂停加仓 |
RefreshGrid | 扫描持仓,汇总方向、手数、均价、浮盈、最后一档价位 |
CheckGlobalExit | 整体止盈 / 整体止损 / 回撤保护 / 权益保护 |
ApplyStops | ATR 与固定止损止盈,含券商 stops level 校验 |
ApplyTrailing | 移动止盈,双向持仓时跳过 |
TryAdd / TryOpenFirst | 加仓与首单,含点差、时段、RSI 过滤 |
CalcNextLot | 档位手数计算与规整 |
UpdatePanel | 图表面板(方向/档位/均价/浮盈/保护状态) |
本 EA 为独立编写的策略实现,不构成投资建议。外汇与贵金属保证金交易具有高杠杆风险,可能导致本金全部损失。