开发跨平台网格EA(第二部分):在趋势方向上的基于范围的网格(基础篇)
📘

开发跨平台网格EA(第二部分):在趋势方向上的基于范围的网格(基础篇)

第 1/3 篇

把网格挂单锁在趋势一侧

经典网格常被诟病双向铺单,横盘能磨利润,一遇单边就爆仓。这篇思路直接把网格砍掉一半:只在当前趋势方向上挂基于价格区间的挂单,逆风侧不入场。 判定趋势用最朴素的均线斜率。比如取 H1 图表上的 SMA(50),若 close 连续 N 根高于均线且均线本身向上,就只做多侧网格;斜率转负则只做空侧。这样把网格从“无论涨跌都接刀”改成“顺水推舟”。 基于范围的网格意思是:以上一根已完成 K 线的真实波幅(ATR 或 High-Low)作为一个步长单位,挂单间距 = k * 步长。k 取 0.5~1.5 之间可调,步长随波动率自适应,避免固定点数在重大数据行情里被秒穿。 原文 2019-07-31 发布于 MT5 社区,截至统计有 4857 次查看、9 条评论,说明这类“半边网格”构想在中长线交易者里有稳定受众。外汇与贵金属杠杆高,半边网格只降风险不灭风险,实盘前请用策略测试器跑至少三年 tick 数据。

「旧网格EA的实盘硬伤」

上一篇文章里我写过一个简单的网格EA,MT4和MT5都能跑。它的逻辑很直接:铺好一层网格后,只要这一层没以整体盈利或触到最大总亏损离场,就不会再往里加新单。 回测数据摆在那:这套EA从2018年之后才转为持续盈利,而2014到2018这四年正好是存款式连续亏损段,实盘直接挂上去基本等于送钱。外汇和贵金属本身杠杆高、滑点狠,这种回撤跨度对本金是致命的。 所以本文不接着缝补旧思路,而是换一套交易理念重做网格EA,先把这个坑记清楚再动手。

◍ 网格跟随价格才能活下来

最初的设想很朴素:价格总会往某个方向走,所以在反向挂一堆单子,等正向单子出来填坑。具体做法是当前价上方铺 N 个买网格,下方铺同等数量卖网格,靠迟早到来的趋势把整条链的利润拉平。 但回测直接打脸——价格常先扫上方单、再砸下方单、又弹回去,来回搓就把多空网格几乎全激活,潜在利润被磨到零。这种在区间里反复捅网格的走势,在外汇和贵金属里出现频率高得离谱,原版体系根本不完善。 既然横跳这么频繁,不如让网格跟着价格跑。两个改动是关键:第一,获利了结绑定到每一张单而不是整条链,止损也按单设;但实测加止损不赚钱,所以砍掉。第二,价格一动就补限价单、删掉偏离太远的旧单——价上移一格,就在网格尾端上方加新买限价、下方加新卖限价作首单,同时删掉最下方那个卖限价。 这样网格始终咬着资产价格。趋势切换时吃方向单的利润,回调时吃反向单的利润;大周期里只要价格有变动,不论朝哪边,都可能有油水。外汇与贵金属杠杆高,这种磨网格策略遇单边瀑流仍可能快速扩大浮亏,只适合用小仓位在 MT5 里先跑模拟验证。

用价格位数定义浮动网格步长

做浮动网格最怕的是 EA 在近似价位反复挂出几百张限价单,把账户拖垮。原文给出的解法不是用「点」去卡间距,而是用 Decade for limit orders 这个参数直接指定小数位,把网格步长绑定到价格位数上。 Decade=2 时,对 4/5 位报价的外汇品种,网格步长就是 100 点:现价 1.1234,买入挂在 1.13、1.14、1.15…,卖出挂在 1.11、1.10、1.09…。Decade=3 则步长缩到 10 点(1.124、1.125…)。参数取 0 时步长为 1 整数价;取负值把位数向左移,-1 是步长 10、-2 是步长 100。 光靠整数位还不够,Shift in points 能把网格从整数位偏移指定点数。Decade=2、Shift=1 时,买入不再是 1.12/1.13 而是 1.121/1.131,卖出对应 1.119/1.129。思路是利用近似价,赌价格反向前先不碰限价单。不过回测显示 Shift 并非总为正向,外汇与贵金属网格本身高风险,参数要自己跑 MT5 验证。 手数、单向最大挂单数、单笔止盈都用网格步数表达。Order take profit=2 且 Decade=3 时,实际止盈距现价 0.002(20 点)。测试表明这类网格加止损无效,原文 EA 默认不用。单笔止盈 1–5 之间:靠近 1 平仓快、回撤小;靠近 5 吃大趋势整体利润更大。 批量平仓组里,If equity increased, $ 比 Profit, $ 更稳妥;Close all at price exceeding / less than 是区间保护,但实测常在退出区间时砍掉已有利润,关键还在趋势出来后的处理。部分标 (-) 的参数实测无正果,但代码里留着,可自己改了试。

「用区间行情给网格EA做压力测试」

这套EA的逻辑不赌单边,而是赌价格在区间里来回扫:在当前价上下等距挂限价单,上方买、下方卖,只要波动发生就能吃到差价。长期单向走势里夹着修正,正是网格补单的窗口,但外汇和贵金属杠杆高,区间一旦被突破就容易连续止损,风险不低。 网格密度由『一个方向最大限价单数』控制,不过实战里它很少触发——只有当某根K线把整列挂单全穿透并继续原方向走,这个上限才管用。回测显示EA在M5周期表现相对稳,所以测试都压在五分钟图上跑。 标的选择偏向W1或MN肉眼能看出箱体的品种。拿AUDCAD说,过去5到10年都困在固定区间,理论上网格外挂应该吃得开。我们挑了EURUSD、AUDUSD、AUDCAD三个,统一用10点步长(decade 3)测;步长拉到100点(decade 2)也能做,但一年没几笔,纯长线。 测试周期只取四年(2015–2019)找最优参数,短于一年的不去管。EA在超十年回测里要么跑不过、要么微利,所以它不是『挂上就十年不管』的东西,得定期重测调参。

常见问题

用均线或结构高低点判断主趋势,只在趋势方向那侧用挂单函数下网格,反向不挂单即可锁住一侧。
旧版双向铺单遇到趋势加速会逆势加仓,浮亏滚雪球;应改为跟随价格移动网格而非固定原点。
小布可基于AIGC识别当前品种趋势与区间状态,在反转概率高时提醒你暂停网格或只留顺向单。
用价格位数(如小数点后几位)定义步长,能随报价精度自适应,比写死点数更不易在极端波动失效。
挑一段明显箱体震荡的K线回放,观察网格在突破与回归时的成交与回撤,验证步长和层数设置。