马丁格尔不是无脑加仓:源码级拆解开源 EA「GMarket」的双向爬梯 + 零损保护机制
一句话答案:马丁策略最怕的不是加仓本身,而是"反弹时把已经赚回来的利润又吐回去"。开源 EA GMarket(MQ5 全源码)用一套双向对冲爬梯 + 逻辑零损保护来处理这个最磨人的中间地带:组没整体回本之前,先把"反转中大赚的最新层"用保本价锁住。本文按源码逐段拆解触发条件、保本价计算和它与正常平组的关系。
GMarket 的基本盘:双向对冲 + 顺势爬梯
开仓即双向:一张 BUY base + 一张 SELL base(默认 0.01 手级别)。之后:
- 顺势爬梯(ladder):价格朝某方向走出
step(按开仓价百分比)→ 平掉顺势那张 base 的浮盈 → 在新价位重开 base。每爬一格,落袋一段利润。第一次爬梯确定方向(followType)。 - 逆势马丁(martin):方向确定后,逆势那侧被套 → 按
martinInterval间隔逐层加仓(seek记录当前层数,maxMartinLevel封顶)。 - 风控过滤:新闻日历(非农/利率决议前后暂停加仓)、ATR 波动率上限、布林带偏离度上限、最大浮亏清仓(
maxLoss)。
到这里都是常见结构。GMarket 的差异化在下面这层。
零损保护:保护"部分回调"这个最磨人的中间地带
先澄清一个常见误解
很多人以为零损的触发条件和平组条件是同一道门槛的先后——"既然马丁侧冲平对冲侧就会平组,零损岂不是永远轮不到?"源码不是这么写的,两个条件统计的根本不是同一批单子:
| 正常平组 | 零损武装 | |
|---|---|---|
| 统计对象 | 马丁侧整组(所有马丁层 + 马丁 base) | 只算最新一层马丁 + base |
| 是否看对冲侧 | 完全不看(爬梯单不参与求和、平组时也不动它) | 要求对冲(爬梯)单正在亏损 |
| 门槛 | 整组合计 ≥ 0(回本即收) | 最新层+base 的盈利 ≥ 爬梯亏损 + 缓冲金额(默认 $30) |
它真实生效的行情序列(具体走一遍)
设向上爬梯(followType=BUY),马丁方向 = SELL:
- 价格持续上涨 → SELL 侧被套,马丁在 1.10 / 1.12 / 1.14 / 1.16 一路加层;
- 行情反转下跌,跌破爬梯 BUY 单开仓价 → 爬梯单转亏(零损前提满足);
- 此刻:最高位 1.16 那层 SELL 利润巨大,但 1.10/1.12 的早期层还在水下 → 整组求和仍为负,平组条件不满足;
- 「最新层 + base ≥ 爬梯亏损 + $30」成立 → 武装零损:给最新层和 base 各算一个保本价;
- 之后两条路:
- 继续跌 → 整组回本 → 正常平组接管,全身而退;
- 弹回去 → 最新层在保本价被平掉(锁住已到手的利润),低位老层继续等下一轮。
零损管的正是第 3~5 步之间的灰色地带:组还没整体解套、但反转已经让最新层大赚时,别让这口肥肉又吐回去。
保本价怎么算(不是"开仓价"那么简单)
BUY 保本价 = 开仓价 + 点差 + 手续费折算成的价差
SELL 保本价 = 开仓价 − 点差 − 手续费折算成的价差
手续费折价 = commission / (tickValue × volume) × tickSize——确保按保本价离场后净结果真的是零,而不是"价格回到开仓价但倒贴了点差和佣金"。
逻辑零损:为什么默认不挂真止损单
参数 InpLogicalBreakeven = true(默认)时,EA 不向券商提交 SL 修改,而是自己每个 tick 盯价:BUY 单 bid 回踩到保本价 / SELL 单 ask 反弹到保本价 → 直接市价平仓。好处有三:
- 券商看不到你的止损位(防针对性扫损的经典做法);
- 不受
SYMBOL_TRADE_STOPS_LEVEL/FREEZE_LEVEL最小距离限制——价格离保本价很近时真 SL 会被拒,逻辑零损没这个问题; - 配合
InpBreakevenResetLadder = true,零损触发后自动平掉爬梯 base 并重开,整个爬梯周期干净重置。
关键参数速查表
| 参数 | 默认 | 作用 |
|---|---|---|
InpMartinBreakevenProfit |
30 | 零损武装的盈利缓冲金额($),≤0 关闭整个零损机制 |
InpLogicalBreakeven |
true | 逻辑零损(EA 盯价平仓,不挂真 SL) |
InpBreakevenResetLadder |
true | 零损触发后重置爬梯方向 base |
InpMaxMartinLevel |
— | 马丁层数封顶 |
InpMaxLoss |
— | 整体最大浮亏清仓保护 |
InpStep |
— | 爬梯格距(开仓价百分比) |
常见问答(FAQ)
Q:零损保护会不会太早离场,错过整组解套? A:不会冲突。零损只锁"最新层 + base"两张单,低位老层不动;如果行情继续向有利方向走,整组回本时正常平组逻辑(合计 ≥ 0)依然接管全部。
Q:缓冲金额 $30 怎么调? A:它是"武装零损前要求的安全垫"。手数大/波动大的品种可以调高(减少频繁武装),小资金账户可调低。设 ≤0 即完全关闭零损机制,退回纯马丁。
Q:这个 EA 哪里下载?能改源码吗? A:开源仓库 https://gitee.com/xszyou/easy-deal,GMarket.mq5 全源码(MIT),含图形化面板(暂停/马丁开关/强制重载)。仓库里还有配套的 MCP 工具集,可以让 Claude Code / openclaw 等 AI Agent 帮你盯盘、改参数、甚至改策略代码。
关键词:马丁格尔 EA 源码、马丁策略解套、MT5 保本止损 breakeven、双向对冲网格、马丁零损保护、MQL5 马丁源码、外汇马丁 EA 开源、GMarket EA
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)