您应该了解的MQL5向导技巧(第 75 部分):动量震荡指标与包络线的应用·进阶篇
📊

您应该了解的MQL5向导技巧(第 75 部分):动量震荡指标与包络线的应用·进阶篇

(2/3)· USDJPY 30分钟2023回测显示,AO与包络线混搭能比纯趋势信号少等几根K线

案例拆解新手友好 第 2/3 篇

很多人把 AO 当单纯的趋势确认工具,却忽略了它在零轴附近的回踩动作可以和包络线中轨对齐,从而提前半步发现行情换挡。另一批人只在横盘里用包络线抄底摸顶,遇到趋势市就硬等均值回归,结果单子被拖死。把两者叠在同一张图上,很多误判其实能省掉。

动量归位叠加中轨支撑的续涨入场

趋势延续里最实用的一种买点,是 AO 从零轴下翻上、价格同步回踩包络线中轨获撑。中轨本质是通道的核心移动平均线,在多头行情中向上倾斜,充当动态支撑;AO 零轴则是多空动量的硬分界线。两者在同一根 K 线附近共振,往往意味着短暂逆势调整接近尾声,主趋势动能重新接管。 具体落地:看涨情形要求此前 AO 已稳在零轴上方(AO(X()+2)>0.0),价格前一根还在中轨下方(Close(X()+1)<Envelopes_Up),当前根直接收上中轨(Close(X())>Envelopes_Up),且 AO 近三根呈加速上扬——AO(X())-AO(X()+1) 大于前一根差值。这过滤掉了动量走平时的假触碰。看跌版本对称处理,中轨变为动态阻力。 外汇与贵金属杠杆高、滑点突发行情多,这种顺势回踩信号失效时止损通常要靠中轨另一侧,实盘务必按品种波动率缩手下量。下面这段 MT5 逻辑可直接拷进 CSignalAO_Envelopes 类做验证。

C++
class=class="str">"cmt">//+------------------------------------------------------------------+

class=class="str">"cmt">//| Check for Pattern class="num">3.                                             |

class=class="str">"cmt">//+------------------------------------------------------------------+

class="type">bool CSignalAO_Envelopes::IsPattern_3(class="type">ENUM_POSITION_TYPE T)

{  if

   (

      T == POSITION_TYPE_BUY &&
      AO(X()) - AO(X() + class="num">1) > AO(X() + class="num">1) - AO(X() + class="num">2) &&
      AO(X() + class="num">1) > AO(X() + class="num">2) &&
      AO(X() + class="num">2) > class="num">0.0 &&
      Close(X() + class="num">1) < Envelopes_Up(X() + class="num">1) &&
      Close(X()) > Envelopes_Up(X())

   )

   {  class="kw">return(true);

   }
   else if

   (

      T == POSITION_TYPE_SELL &&
      AO(X() + class="num">1) - AO(X()) > AO(X() + class="num">2) - AO(X() + class="num">1) &&
      AO(X() + class="num">2) > AO(X() + class="num">1) &&
      AO(X() + class="num">2) < class="num">0.0 &&
      Close(X() + class="num">1) > Envelopes_Lo(X() + class="num">1) &&
      Close(X()) < Envelopes_Lo(X())

   )

   {  class="kw">return(true);

   }
   class="kw">return(class="kw">false);

}

◍ 包络线挤压里用 AO 读突破倾向

包络线上下轨显著收窄、趋于走平,是典型低波动盘整的视觉信号。此时价格高低点与均线偏离很小,市场进入平静期,这种「挤压」状态往往预示波动率即将放大并出现突破。 在挤压过程中,AO 在零轴附近的细微偏移比价格本身更早透露方向。看涨倾向下,AO 直方图短绿柱出现频率高于红柱,即便整体仍在小区间波动,重心也缓慢抬高;看跌倾向则反之,零轴附近一串高点逐步降低,暗示向下阻力更小。 把主观观察量化也很直接:测上下轨间距占均线百分比,就能得到通道收缩度。实测中该形态的前瞻胜率并不如后频突破信号那般漂亮,回测属于首个表现存疑的形态,但仍有提前布局价值——多数人要等突破走出来才反应,而 AO 偏向在挤压中段就已给出线索。外汇与贵金属品种在此类行情中滑点扩大、假突破概率偏高,需严控仓位。 下面这段 MQL5 判定函数,把「价格贴下轨且 AO 先下后上破零轴」写成多头触发,镜像处理为空头触发: bool CSignalAO_Envelopes::IsPattern_4(ENUM_POSITION_TYPE T) { if ( T == POSITION_TYPE_BUY && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) < AO(X()) && AO(X() + 1) > 0.0 && Close(X() + 2) <= Envelopes_Mid(X() + 2) && Close(X() + 2) >= Envelopes_Lo(X() + 2) && Close(X() + 1) <= Envelopes_Mid(X() + 1) && Close(X() + 1) >= Envelopes_Lo(X() + 1) && Close(X()) <= Envelopes_Mid(X()) && Close(X()) >= Envelopes_Lo(X()) ) { return(true); } else if ( T == POSITION_TYPE_SELL && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) < AO(X()) && AO(X() + 1) > 0.0 && Close(X() + 2) >= Envelopes_Mid(X() + 2) && Close(X() + 2) <= Envelopes_Up(X() + 2) && Close(X() + 1) >= Envelopes_Mid(X() + 1) && Close(X() + 1) <= Envelopes_Up(X() + 1) && Close(X()) >= Envelopes_Mid(X()) && Close(X()) <= Envelopes_Up(X()) ) { return(true); } return(false); } 逐行拆解:函数入口按多/空类型分支;多头要求 AO 在最近三根 K 线呈「X+2 高于 X+1、X+1 低于 X」且 X+1 已站上零轴,说明动能先抑后扬;同时三根收盘都落在中轨与下轨之间,确认价格被压在包络线下半通道。空头分支镜像处理,收盘约束改为中轨与上轨之间。两个条件都不满足则返回 false,不触发。

C++
class="type">bool CSignalAO_Envelopes::IsPattern_4(class="type">ENUM_POSITION_TYPE T)
{  if
   (
      T == POSITION_TYPE_BUY &&
      AO(X() + class="num">2) > AO(X() + class="num">1) &&
      AO(X() + class="num">1) < AO(X()) &&
      AO(X() + class="num">1) > class="num">0.0 &&
      Close(X() + class="num">2) <= Envelopes_Mid(X() + class="num">2) &&
      Close(X() + class="num">2) >= Envelopes_Lo(X() + class="num">2) &&
      Close(X() + class="num">1) <= Envelopes_Mid(X() + class="num">1) &&
      Close(X() + class="num">1) >= Envelopes_Lo(X() + class="num">1) &&
      Close(X()) <= Envelopes_Mid(X()) &&
      Close(X()) >= Envelopes_Lo(X())
   )
   {  class="kw">return(true);
   }
   else if
   (
      T == POSITION_TYPE_SELL &&
      AO(X() + class="num">2) > AO(X() + class="num">1) &&
      AO(X() + class="num">1) < AO(X()) &&
      AO(X() + class="num">1) > class="num">0.0 &&
      Close(X() + class="num">2) >= Envelopes_Mid(X() + class="num">2) &&
      Close(X() + class="num">2) <= Envelopes_Up(X() + class="num">2) &&
      Close(X() + class="num">1) >= Envelopes_Mid(X() + class="num">1) &&
      Close(X() + class="num">1) <= Envelopes_Up(X() + class="num">1) &&
      Close(X()) >= Envelopes_Mid(X()) &&
      Close(X()) <= Envelopes_Up(X())
   )
   {  class="kw">return(true);
   }
   class="kw">return(class="kw">false);
}

「AO 极值配包络扩张的趋势惯性」

形态 5 盯的是动量冲到极值的强趋势:AO 长时间黏在零轴上方高位或下方深谷,同时包络线通道明显变宽、斜率转陡。两者叠加,可视作买压或卖压在持续堆叠,方向牵引力较强。 看涨侧典型画面是一整片绿色 AO 柱体高耸在零轴上,数值常高于近期峰值;包络线上轨被一根根新 K 线不断顶高,通道明确向上倾斜而非走平。由于包络线按百分比度量,即便百分比恒定,价格越高轨道间的绝对距离也越大,视觉上就是轨道在适应更高价位。 看跌侧则反过来:AO 深负、红柱成片,包络线陡峭下倾,往往对应失控式暴跌。该形态常出现在盘整突破后,也可能紧接前期蓄势形态发生;实盘里它更像‘价格沿轨道跑’的确认器,而非反转信号。外汇与贵金属杠杆高,顺势追单遇流动性抽离可能瞬时反向,下单前先在 MT5 回看历史极值段。 下面这段 MQL5 把形态 5 的判定落了地:多单要求 AO 近三段仍为负却拐头回升、低点下移且包络带宽收窄;空单对称。逐行看:函数入口取 AO 最近 3 值;买权分支里 _last[0]<0 且 _last[2]<0 保证 AO 仍在零轴下,_last[0]>_last[2] 表动量回升;Low 创新低确认下探;包络带宽收缩滤掉扩张震荡。卖权分支逻辑镜像。

C++
class=class="str">"cmt">//+------------------------------------------------------------------+

class=class="str">"cmt">//| Check for Pattern class="num">5.                                             |

class=class="str">"cmt">//+------------------------------------------------------------------+

class="type">bool CSignalAO_Envelopes::IsPattern_5(class="type">ENUM_POSITION_TYPE T)
{  vector _last = AO_Last3(X());

   if
   (
      T == POSITION_TYPE_BUY &&
      _last[class="num">0] < class="num">0.0 &&
      _last[class="num">2] < class="num">0.0 &&
      _last[class="num">0] > _last[class="num">2] &&
      Low(X()) < Low(X() + class="num">1) &&
      Envelopes_Up(X() + class="num">1) - Envelopes_Lo(X() + class="num">1) > Envelopes_Up(X()) - Envelopes_Lo(X())
   )
   {  class="kw">return(true);
   }
   else if
   (
      T == POSITION_TYPE_SELL &&
      _last[class="num">0] > class="num">0.0 &&
      _last[class="num">2] > class="num">0.0 &&
      _last[class="num">0] < _last[class="num">2] &&
      High(X()) > High(X() + class="num">1) &&
      Envelopes_Up(X() + class="num">1) - Envelopes_Lo(X() + class="num">1) > Envelopes_Up(X()) - Envelopes_Lo(X())
   )
   {  class="kw">return(true);
   }
   class="kw">return(class="kw">false);
}

包络带边缘的 W/M 底顶配 AO 双峰

把包络线下轨的 W 形双底和 AO 零轴下看涨双峰叠在一起,就是形态 6 的看多版本。两个低点贴着下轨同一带,说明该位置两次都兜住了;AO 两个谷底都在零轴下方、互不穿越,且第二谷更靠近零轴,抛压衰减的信号比较明确。 看空一侧是上轨 M 形双顶加 AO 零轴上看跌双峰,两峰无穿越、第二峰更低,买盘力道走弱。入场通常等双底颈线被突破,或二底成形后 AO 翻正再动;止损放在双底低点稍下或双顶高点稍上,局部风险可控,目标可看向包络带另一端。 美元兑日元 30 分钟、同样两年样本里,这形态触发次数明显少于其他形态,条件卡得太死,可能更适合小周期去淘信号。下面这段是 MT5 里判定形态 6 的核心函数,直接贴进同类信号类就能跑。 [CODE] 里 POSITION_TYPE_BUY 分支要求两根 K 线前 AO 为正、前一根为负、当前为正,且价格前前根在包络下轨上方、前一根刺穿下轨、当前收回上方——本质上抓的是下轨处的二脚回踩确认;SELL 分支镜像处理上轨。外汇与贵金属波动剧烈,此类形态仅提供概率倾向,实盘须自验。

C++
class=class="str">"cmt">//+------------------------------------------------------------------+

class=class="str">"cmt">//| Check for Pattern class="num">6.                                             |

class=class="str">"cmt">//+------------------------------------------------------------------+

class="type">bool CSignalAO_Envelopes::IsPattern_6(class="type">ENUM_POSITION_TYPE T)

{  if

   (

      T == POSITION_TYPE_BUY &&

      AO(X() + class="num">2) > class="num">0.0 &&

      AO(X() + class="num">1) < class="num">0.0 &&

      AO(X()) > class="num">0.0 &&

      Close(X() + class="num">2) > Envelopes_Lo(X() + class="num">2) &&

      Close(X() + class="num">1) <= Envelopes_Lo(X() + class="num">1) &&

      Close(X()) > Envelopes_Lo(X())

   )

   {  class="kw">return(true);

   }

   else if

   (

      T == POSITION_TYPE_SELL &&

      AO(X() + class="num">2) < class="num">0.0 &&

      AO(X() + class="num">1) > class="num">0.0 &&

      AO(X()) < class="num">0.0 &&

      Close(X() + class="num">2) < Envelopes_Up(X() + class="num">2) &&

      Close(X() + class="num">1) >= Envelopes_Up(X() + class="num">1) &&

      Close(X()) < Envelopes_Up(X())

   )

   {  class="kw">return(true);

   }

   class="kw">return(class="kw">false);

}
让小布替你叠这套通道
小布盯盘的 AIGC 已内置 AO 与包络线叠加模板,打开 USDJPY 对应品种页即可直接切换信号模式视图,你只管看哪根 K 线触发了组合条件。

常见问题

通常指价格重新跌回中轨下方且 AO 同步转负,这种情况趋势延续概率偏低,应暂停原方向的加仓计划。
包络线带宽收窄代表静默期,此时 AO 若从负值区悄悄上翘,向上突破包络线上轨的概率相对更大,但外汇贵金属属高风险品种仍需防守。
可以,在品种页开启形态叠加后,小布会把 AO 双峰与价格双底时空重合的区域用淡色块标出,省去肉眼翻历史。
扩张意味着行情在跑趋势,沿通道带续涨续跌的可能性更高,此时逆势接边界容易吃亏,应等 AO 第一峰回落再评估。