您应该了解的MQL5向导技巧(第七十三部分):使用一目均衡表形态与ADX-Wilder形态(基础篇)
用向导拼一目均衡表加ADX-Wilder策略
MT5 的 MQL5 向导能不写代码就搭出基于技术指标形态的信号逻辑。这一节里直接用到两个形态模块:Ichimoku 一目均衡表形态,以及 ADX-Wilder 平滑方向指数形态,两者叠加用于过滤趋势与震荡。 在 2026 年 7 月 3 日发布的示例里,作者 Stephen Njuki 将这两类形态放进 EA 模板,生成后可在策略测试器内直接回测。需要注意,外汇与贵金属品种杠杆高、滑点跳空频繁,这类形态组合仅提供概率倾向,不代表信号必有效。 实际落地时,打开 MT5 的「文件 → 新建 → 智能交易系统(向导)」,在信号模块里分别勾选 Ichimoku 和 ADX-Wilder,向导会产出带双形态判断的 EA 骨架,你再调 Kijun-sen 周期或 ADX 阈值即可验证不同参数下的表现。
「为什么只让一目和ADX管支撑阻力」
把一目均衡表(Ichimoku)和韦尔德ADX凑一对,思路很直接:前者专门看支撑阻力,后者只负责判趋势强弱。一目本身能干的远不止画线,但这里刻意只取它的支撑阻力段,避免信息过载。 指标互补搭配,有可能让EA的入场触发更干净,而不是被同源噪声反复打脸。我们按这套组合抽了10种信号形态做映射测试。 形态索引从0到9,EA用2的幂次去单独调用:索引1对应参数PatternsUsed=2,索引4对应16,最大有效值是1023(即2^10-1)。中间不是纯幂次的值,表示同时叠加多种形态。 之前已经验证过:多信号一起训练或优化,回测再漂亮也大概率实盘拉胯。根因是多个信号在有限样本里,会在最该吃利润的地方互相把单子抵消掉。本文测试窗口只取一年,扩窗法用不了,所以这次严格限定形态组合范围。外汇与贵金属属高风险品种,任何形态组合都只是概率偏好,不是确定性路径。
◍ 拆开一目均衡表的五条线与云带
一目均衡表不是单线指标,而是由五个数据缓冲区拼出的全局视图:转换线、基准线、先行上线A、先行下线B、滞后线,外加两者围成的云带(Kumo)。云带厚度本身就能当作趋势强度的粗度量——厚云意味着支撑阻力区被反复确认,薄云则容易给价格让路。 整套计算只吃三个参数:9、26、52。经验上别轻易动这三个周期,外汇和贵金属里乱改默认值的回测稳定性往往更差,不如去调别的过滤条件。 转换线 =(9周期最高价+9周期最低价)/2,是短期冷热计;基准线换成26周期,是中期晴雨表兼支撑阻力。先行上线A =(转换线+基准线)/2,先行下线B =(52周期最高价+52周期最低价)/2,两者夹出云带。滞后线直接取当前收盘价但向前偏移26周期画,用来回看历史与当下的位置关系。 云带方向看 A 与 B 谁在上:A>B 为看涨云,A<B 为看跌云。MT5 里把周期切到 H1 加载默认参数,能直观看到价格穿过云带时斜率和厚度的变化,贵金属 XAUUSD 近半年这种穿越信号比均线交叉少噪音,但杠杆品种高风险,信号只是概率倾向而非确认。
ADX 怎么算出来又该怎么读
韦尔德平均趋向指数(ADX)只回答一个问题:趋势有多强,不回答往哪走。主线在 0–100 之间浮动,实盘里极少越过 25,所以上破 25 常被当作强趋势确认;掉到 20 以下基本就是横盘疲软。它是滞后指标,默认算 14 根 K 线,外汇贵金属都能用,但别忘了杠杆品种本身高风险,信号再强也只是概率。 除了 ADX 主线,还有 +DI 和 -DI 两条附属线。+DI 在 -DI 上方且 ADX 抬升,多头动能占优;反之下穿就是空头动能占优。方向看这两条线交叉,强度交给 ADX 主缓冲区确认。
| 底层其实跑了 6 个缓冲区:+DM、-DM、+DI、-DI、TR 和 ADX。+DM = 今高 − 昨高,且昨低必须高于今低,否则记 0;-DM = 昨低 − 今低,且今高必须高于昨高,否则记 0。TR 取三个值的最大者:今高减今低、 | 今高减昨收 | 、 | 今低减昨收 | ,用来衡量波动。 |
|---|
| +DI =(平滑后 +DM ÷ 平滑后 TR)× 100,-DI 同理用平滑后 -DM。这里的平滑都是指数移动平均,周期 14。ADX = 对( | +DI − -DI | ÷(+DI + -DI))× 100 再做 14 周期指数平均;平滑前的叫 DX,平滑后才是 ADX。 |
|---|
我们这次回测落在 30 分钟周期,品种 GBPUSD,用 2023 年回测、2024 年前向步进。选 30 分钟是因为一目均衡表在一年窗口的 4 小时信号太少,不够统计。打开 MT5 把 ADX(14) 调出来,切到 GBPUSD 的 M30,自己看几次上破 25 后价格是否延续,比看说明直观。
「云带突破叠ADX的pattern-0写法」
形态0用 pattern-0 做索引而不是按出现顺序编号,好处是直接用输入参数就能单独切出一种形态来回测,不会和其他信号混在一起。多头触发条件是收盘价向上跨过先行上线A,也就是价格刺出云带上方;空头则是收在先行上线A之下,视为跌破云带。两类信号都要求 ADX(X()) >= 25.0,用来卡掉弱势震荡里的毛刺。 两年期(2023–2024)回测里,2023 年初次测试曲线抖动明显但净值为正,前向步进资金曲线形状相近也维持盈利。这说明该组合在趋势段可能比单纯云带突破更耐噪,但震荡市失效概率偏高,外汇与贵金属品种本身杠杆高、滑点跳空频繁,实盘前务必先开 MT5 用历史数据自测。 止损摆放很直接:多单放在云带下沿之下,空单放在云带上沿之上,给假突破留缓冲。另一个落地动作是切到更高周期看趋势是否同向,再决定是否跟 pattern-0 信号。 下面这段是 MT5 里判断 pattern-0 的核心函数,逐行拆一下逻辑: //+------------------------------------------------------------------+
| // | Check for Pattern 0. |
|---|
//+------------------------------------------------------------------+ // 函数声明:传入持仓方向 T,返回布尔 bool CSignalIchimoku_ADXWilder::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < Ichimoku_SenkouSpanA(X() + 1) && Close(X()) > Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0) // 多单:上一根收在线A下、当前收在线A上,且ADX不低于25 { return(true); // 满足条件返回真 } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Ichimoku_SenkouSpanA(X() + 1) && Close(X()) < Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0) // 空单:上一根收在线A上、当前收在线A下,且ADX不低于25 { return(true); // 满足条件返回真 } return(false); // 都不满足返回假 }
class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Check for Pattern class="num">0. | class=class="str">"cmt">//+------------------------------------------------------------------+ class="type">bool CSignalIchimoku_ADXWilder::IsPattern_0(class="type">ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + class="num">1) < Ichimoku_SenkouSpanA(X() + class="num">1) && Close(X()) > Ichimoku_SenkouSpanA(X()) && ADX(X()) >= class="num">25.0) { class="kw">return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + class="num">1) > Ichimoku_SenkouSpanA(X() + class="num">1) && Close(X()) < Ichimoku_SenkouSpanA(X()) && ADX(X()) >= class="num">25.0) { class="kw">return(true); } class="kw">return(false); }