在莫斯科交易所(MOEX)里使用限价订单进行自动网格交易·进阶篇
◍ 网格的边界与摊薄陷阱
网格 EA 启动后,不会在现有网格未全平前塞入外部新单,盈亏随整网了结而落定。品种上要挑量能充足、走势清晰的,避开持仓隔夜续期导致盘口空虚的标的,也尽量躲开新闻驱动、无回踩的单边行情。 这套系统本质是平均摊薄层级交易:价格更优时沿原方向加仓(多头补买、空头补卖)。缺点是你事先不知道行情会逆向走多远,且每次加仓都吃保证金,持仓风险随之抬升。Nayman E. 在《交易大师:秘密资料》134–135 页指出,新手常把杠杆拉到惊人地步追求高利润,账户超负荷后直接爆仓耗尽资金。 技术落点在于可设最小/最大价位,把限价单锁在指定区间运作;上下止损价位一设,账户亏损就被框住。触发止损时终端会提示突破预设价及可能朝向,这时要重估价格层级,去 EA 外部参数里改值。外汇/贵金属波动剧烈,网格加仓属高风险操作,爆仓概率不低,开 MT5 前先算清保证金占用。
等距网格怎么在 MT5 里落地
网格 EA 启动时本身不带仓位,等行情越过最近挂单价才激活。以 VBM2 期货为例,2022-01-04 设价格下限 1600、上限 2800、网格元素 10、等距模式:买入限价分布在 1600/1733/1866/1999,卖出限价在 2135 至 2800 共 6 档,激活首单后余下 9 笔待触发。 配对结算用 FILO(先进后出),利润按每对买卖单算。订单总宽度要高于品种点差,边界价须落在当前价格区间之外;元素数从 3 起设比较稳。也可参考 D1 的 ATR 百分比排单,中等风险下可能拿到较优利润。 每次限价单成交就重排网格:最后执行的变空,按步长补反向单。比如首笔卖限价激活后价格上扬、再触下一道卖限价,买入侧就多补 1 张、比上一买限价高 1 步长。只要价仍在区间内来回扫,账户倾向持续累积小利;若单边强趋势不回滚,亏损可能扩大——外汇和贵金属波动更烈,属高风险玩法。 外部变量已够自解释,下限不要低于 MOEX 公布值。下面这段代码直接贴进 MT5 的 EA 输入区就能跑出网格框架。
class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| EXTERNAL GRID VARIABLES class=class="str">"cmt">//+------------------------------------------------------------------+ class="kw">input class="type">int Volume = class="num">1; class=class="str">"cmt">//Contract/lot volume class="kw">input class="type">class="kw">double HIGH_PRICE_SellLim = class="num">2800.00; class=class="str">"cmt">//HIGH_PRICE_SellLim(the upper price of the last SellLim grid order) class="kw">input class="type">class="kw">double LOW_PRICE_BuyLim = class="num">1600.00; class=class="str">"cmt">//LOW_PRICE_BuyLim (the lower price of the last BuyLim grid order) for BuyLim class="kw">input class="type">class="kw">double HIGH_PRICE_SL = class="num">100.00; class=class="str">"cmt">// HIGH_PRICE_SL: SL in points from HIGH_PRICE_SellLim(the upper stop loss price) for SellLim class="kw">input class="type">class="kw">double LOW_PRICE_SL = class="num">100.00; class=class="str">"cmt">// LOW_PRICE_SL: SL in points from LOW_PRICE_BuyLim(lower stop loss price) for BuyLim class="kw">input class="type">int Pending_order_period = class="num">12; class=class="str">"cmt">// Pending_order_period: limit order setting time in months class="kw">input class="type">int Number_of_elements_in_the_grid = class="num">10; class=class="str">"cmt">// Number of elements in the grid(number of limit orders) class="kw">input class="type">class="kw">double TakeProfit = class="num">0; class=class="str">"cmt">// TakeProfit from the setting price in order pips class="kw">input class="type">class="kw">double Profit_percentage = class="num">0; class=class="str">"cmt">// Profit_percentage - grid closure % in profit class=class="str">"cmt">// works if > "class="num">0" class="kw">input class="type">bool Continued_trading = class="kw">false; class=class="str">"cmt">// Continued_trading - whether to class="kw">continue trading after exiting by the grid closure % with profit class="kw">input class="type">int Time_to_restrict_trade = class="num">0; class=class="str">"cmt">// Time_to_restrict_trade - setting the expiration time(in days) for a position with profit
「挂单边界与魔术码的参数落点」
这段脚本片段给出了日内周期收线退场的注释,以及两个输入项的实际写法。Magic 被硬编码为 10,用于在 MT5 订单池里隔离本 EA 的持仓与挂单,避免和手动单或其他程序冲突。 HIGH_PRICE_SellLim 与 LOW_PRICE_BuyLim 两个标识符紧接在 Magic 之后,从命名看是用来圈定限价卖单和限价买单的触发边界,但片段里没给赋值,直接拷进编辑器会编译报错。 想跑通的话,得在 MT5 里补上这两个变量的 input 声明并给具体价格或计算逻辑,比如用 iHigh(0, PERIOD_D1, 0) 做上边界。外汇和贵金属杠杆高,边界设错可能瞬间吃掉保证金,先用策略测试器验证再上实盘。
class=class="str">"cmt">// (exiting the market upon the period end in days) class="kw">input class="type">int Magic = class="num">10; class=class="str">"cmt">// Magic Number HIGH_PRICE_SellLim LOW_PRICE_BuyLim
◍ 网格边界外的风险自留
这套网格 EA 的逻辑前提是价格待在指定区间内。当报价逼近边界,限价单会暂停原网格,并在新区间按新手数重启——横盘越久,双向挂单滚动执行的频率越高。 单边行情靠限价单的止损位来兜住,暴跌暴涨后常有调整走势,EA 借此避开极端冲击。但能否避开回撤,完全取决于你选的区间宽度、合约价值、网格层数,以及止盈止损算得准不准。 外汇和贵金属带高杠杆,网格在窄幅震荡里可能舒服,一旦脱区间就是连续止损。策略文件 GRID_TRADING_v.01.mq5 已放出,自己开 MT5 用历史数据跑一遍,看回撤曲线再决定手数,比任何口头结论都实在。