📘

MOEX 破位挂单的自动兑换网格思路

◍ MOEX 破位挂单的自动兑换网格思路

莫斯科交易所(MOEX)的流动性结构和外汇保证金池不同,用破位挂单配合自动兑换网格,可以在汇率跳空时减少人工干预。作者在 2023 年 10 月 16 日发布的这套方法,发布后约获得 2139 次查看、14 条反馈,说明这类本地化交易所策略在俄语区交易者里有明确需求。 核心逻辑是:不直接市价追单,而是在关键价位外侧挂 buy stop / sell stop,成交后由 EA 按预设步距铺网格,并用账户币种自动兑换对冲敞口。这样在 MOEX 的衍生段如果触发破位,仓位是从挂单层开始累积,而非开盘瞬间裸奔。 外汇与贵金属本身属高风险品种,MOEX 的汇率合约同样存在跳空与流动性断裂可能;网格在单边行情里会放大回撤,实盘前务必用 MT5 策略测试器跑历史数据验证步距与兑换滑点。

破位挂单网格是怎么搭起来的

网格交易在经典教材里找不到,属于较新的实战流派。核心做法不是在某一精确点位入场,而是在现价两侧按固定间距铺一批挂单,让价格自己撞进成交。用破位单(BuyStop / SellStop)布网时,方向预先判定,但网格本身不赌单边——价格往哪走都会穿过挂单层。 一套网格由四个参数刻画:网格宽度(订单覆盖区域,单位点)、网格步长(相邻订单间距,单位点)、止盈、止损。步长越小网越密,触发频率越高,潜在盈利概率也越高,但回撤资源消耗更大。实测一组参数:grid width 3500 点、grid step 184 点、take profit 100 点(小于步长),在回测中持仓多由止盈离场,净值曲线呈阶梯上行。 布网逻辑很直白:从接近现价的基准价出发,上方放 BuyStop、下方放 SellStop,步长常参考 ATR 均值(几个点至品种日均波幅)。触发最近挂单后市价开仓,价格继续走就按触发方向重铺反向破位单——比如涨触发 BuyStop 成交,就在更贴近现价处补 SellStop,等小幅回滚触发相当于部分平仓。 这种打法优势是几乎不需技术分析功底,始终顺主要趋势累积仓位;弱点在宽幅横盘,报价可能瞬间激活 5–6 个双向破位单,账户要扛很久回撤。外汇与贵金属杠杆高,横盘扫单风险尤甚,参数前务必在 MT5 策略测试器跑通再上实盘。 下面这段是 EA 外部变量的骨架,定义了每单手数、网格上下边界价、边界外止盈点数及统一止盈。注意 HIGH_PRICE_BuyStop 与 LOW_PRICE_SellStop 是网格首末挂单价,不是现价。

MQL5 / C++
<span class="comment">class=class="str">"cmt">//+------------------------------------------------------------------+</span>
<span class="comment">class=class="str">"cmt">//|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERNAL GRID VARIABLES</span>
<span class="comment">class=class="str">"cmt">//+------------------------------------------------------------------+</span>
<span class="keyword">class="kw">input</span> <span class="keyword">class="type">int</span> Volume = <span class="number">class="num">1</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">class=class="str">"cmt">//Contract/lot volume</span>
<span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">double</span> HIGH_PRICE_BuyStop = <span class="number">class="num">5500.00</span>;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">class=class="str">"cmt">//HIGH_PRICE_BuyStop(the upper price of the last BuyStop grid order)</span>
<span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">double</span> LOW_PRICE_SellStop = <span class="number">class="num">4000.00</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">class=class="str">"cmt">//LOW_PRICE_SellStop(the lower price of the last SellStop grid order) </span>
<span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">double</span> HIGH_PRICE_TP&nbsp;&nbsp;= <span class="number">class="num">100.00</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">class=class="str">"cmt">// HIGH_PRICE_TP: TP in points from HIGH_PRICE_BuyStop </span>
<span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">double</span> LOW_PRICE_TP = <span class="number">class="num">100.00</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">class=class="str">"cmt">// LOW_PRICE_TP:&nbsp;&nbsp;TP in points from LOW_PRICE_SellStop</span>
<span class="keyword">class="kw">input</span> <span class="keyword">class="type">class="kw">double</span> TakeProfit&nbsp;&nbsp;= <span class="number">class="num">0</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">class=class="str">"cmt">// TakeProfit from the setting price in order points</span>

「止损参数留零的隐藏含义」

在 MT5 的 EA 输入项里,把 StopLoss 设成 0 并不是“不要止损”,而是把止损距离定义权交还给订单成交价本身,单位仍是 order points(下单点)。 这段代码只有一行输入声明,但实战中很容易误读:StopLoss = 0 时,若后续逻辑直接用这个值去下止损单,多数 broker 会拒绝 0 点止损,订单可能直接不挂 SL 而裸奔。 开 MT5 新建一个 EA,把下面这行贴进 input 区,编译后到策略测试器里把 StopLoss 从 0 改到 30,观察成交明细里止损触发价的变化,就能确认你的下单函数有没有对 0 做特殊处理。

MQL5 / C++
class="kw">input class="type">class="kw">double StopLoss = class="num">0; class=class="str">"cmt">// StopLoss from the setting price in order points

◍ 尾随离场与保证金的隐性约束

网格系统里除了逆反挂单接价格回滚、用止损做部分平仓,另一条值得试的路是尾随离场。把 trailing stop 接进网格逻辑,能在单边延伸时锁住浮盈,而不是死等网格填满才收口。 以莫斯科交易所的 PJSC Sberbank 普通股期货(代码 SBRF-6.23)做初步网格测试时,合约参数直接决定新单摆放位置——最小变动价、保证金占用、交割月这些都不是摆设。 跑单向行情时保证金压力差异很大。PJSC VTB 银行普通股期货曾走出一段干净的单向走势,同等持仓规模下所需保证金额度明显更小,这对网格层数扩展是实打实的优势。 外汇与贵金属品种波动更剧,网格叠加尾随离场虽可能降低回撤概率,但杠杆下的穿仓风险始终存在,上 MT5 用策略测试器跑一遍 VTB 类低保证金标的再决定层数更稳妥。

把这条线请下神坛

破位挂单网格在莫斯科交易所期货上跑出来的实盘逻辑,本质是把「价格走出区间才跟」这件事交给 EA 自动铺网:作者原版用周/月最小最大值勾画上下边界,订单间距取约期货日波幅的三分之一;另有使用者把上下限走廊去掉,改成每个方向恒挂 5~7 张止损单,靠 ATR 常量抛网,避免反复挂撤单的垃圾成交。 这套方法对隔夜持仓的中期交易者更顺手,白天抖动区间里容易被双向触发,此时靠同向网累计、反向网对冲来磨平浮亏。外汇和贵金属照搬前先想清楚:杠杆下的双向激活会在几根 K 线内吃掉保证金,属典型高风险博弈,只该用迷你手数在 MT5 策略测试器回测验证。 附件里 GRID_TRADING_v.03__breakdown.mq5 和一份 Sberbank 期货测试报告都已放出,真想上手就下载 ZIP,把 ATR 系数从 0.3 起调,看自己的品种会不会在横盘里把网撑爆。

常见问题

用映射表把破位触发的标的按规则转成目标合约下单,代码中维护一个品种对照数组即可实现自动兑换。
留零通常意味该笔挂单暂不挂止损,由网格整体平仓逻辑控风险,但单笔暴露会变大,需谨慎。
小布可接入账户数据实时算网格保证金占用与尾随离场触发点,异常时推送提醒,你只管看信号。
尾随修改订单要重占保证金,可用预付款不足时服务器拒改,导致离场延迟,回测需模拟这一约束。
先验触发价精度、兑换滑点、尾随步长三组数据,贵金属波动大高风险,建议用历史极端段跑一遍。