您应当知道的 MQL5 向导技术(第 53 部分):市场促进指数·进阶篇
📊

您应当知道的 MQL5 向导技术(第 53 部分):市场促进指数·进阶篇

(2/3)· 接上篇 AO 基础,本文进阶拆解 MFI 五大形态信号,看清成交量与价格区间的真实博弈

偏理论 第 2/3 篇

接上篇,我们继续深挖比尔·威廉姆斯指标家族里的市场促进指数。很多交易者把 MFI 直方图当普通动量看,却忽略它不依赖零轴、只比变化的本质,结果在假突破里反复吃亏。把 MFI 和 AO 混为一谈,等于用错了尺子量不同的布。

◍ MFI动量衰落与背离识别

衰落形态指 MFI 在价格延续趋势时动量减弱,通常意味着买卖压力流失,可能预示逆转或盘整。主要看法是价格创新高(或新低)而 MFI 出现粉色记号,即多头或空头背离;本系列代码里粉色由交易量萎缩推导而来,维持趋势的动能随之降低。 在 EURJPY 的 12 分钟周期上,仅测形态-1(输入位图取 2,即 2 次幂得 2)时,可见价格高点后横盘、成交量下滑。除了量缩,获利了结与动量耗尽也可能催生该形态,含义偏早期逆转信号或盘整警告——若未见波动或背离,盘整概率更高。 当衰落伴随价格背离,后续逆转的概率明显抬升,信号更可靠。实盘处理上,可把止损收紧,并将布林带、移动平均线叠用来确认回撤。外汇与贵金属属高风险品种,任何形态都只是概率参考,须以仓位控制为前提。 下面这段 MQL5 是形态-1 的判定核心,逻辑直接可用: //+------------------------------------------------------------------+

//Check for Pattern 1.

//+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_1(ENUM_POSITION_TYPE T) { if(Color(X()) == clrPink) { if(T == POSITION_TYPE_BUY && Close(X()) < MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X())) { return(true); } } return(false); } 逐行看:函数接收持仓方向 T;先判当前根 K 的 MFI 颜色是否为粉色(量缩标记)。若为多头持仓且收盘价低于均线,或为空头持仓且收盘价高于均线,即认为衰落形态成立并返回 true,否则 false。开 MT5 把 Color(X()) 接好你自己的 MFI 配色就能跑。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Check for Pattern class="num">1.                              |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">bool CSignalMFI::IsPattern_1(class="type">ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrPink)
   {  if(T == POSITION_TYPE_BUY && Close(X()) < MA(X()))
      {  class="kw">return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X()))
      {  class="kw">return(true);
      }
   }
   class="kw">return(false);
}

蓝柱 MFI 的挖坑逻辑

MFI 直方图转蓝(形态-2)代表价格区间扩张但成交量萎缩,价格动作缺少交易量背书,容易演成假突破或假逆转。在 EUR/JPY 的 2023 年数据中,用 12 分钟周期做优化,得到了可加载的优化参数集合,但这类信号本身胜率偏低。 判定规则很直接:蓝柱出现时,收盘价低于均线视为看涨假信号,收盘价高于均线则为看跌假信号。核心假设是当前价格动作没反映底层趋势,修正可能很快到来。 别把蓝柱当反转铁律。实盘中它多出现在主趋势的回调里,反而可能作为趋势延续的提醒;新闻或操纵带来的成交量突刺也会让 MFI 发出噪声。单靠 MFI 会频繁交易并亏损,叠均线或价格通道、布林带、支撑阻力蜡条才能过滤。 外汇与贵金属属高风险品种,低概率形态务必等确认、切更高时间帧再看。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Check for Pattern class="num">2.                                              |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">bool CSignalMFI::IsPattern_2(class="type">ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBlue)
   {  if(T == POSITION_TYPE_BUY && Close(X()) < MA(X()))
      {  class="kw">return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X()))
      {  class="kw">return(true);
      }
   }
   class="kw">return(false);
}

「MFI棕柱下的深蹲博弈」

深蹲形态(形态-3)的识别核心是 MFI 直方图转为棕色:它对应资金流量指标公式中「下 MFI」叠加「降交易量」的计算结果,意味着买卖压力几乎打平、成交量在萎缩。价格层面即便有可观波动,也只是市场在突破或逆转前「下蹲蓄力」,属于犹豫不决的过渡区。 棕柱出现时,看涨分支要求价格从均线下方上穿并收在其上;看跌分支则反过来,从均线上方下穿且收在下方。若单独把该形态做位图优化,输入赋值为 2 的 3 次幂即 8,回测中能筛出若干有利参数组合,说明纯粹靠成交量压缩信号也存在正期望窗口。 这类低波动区间往往卡在累积/派发阶段之后,或是重大经济数据、地缘事件发布前夜。其价值不在预测突破方向,而在框出关键支撑阻力,并给出贴近近期极值的紧止损位——外汇与贵金属杠杆高,深蹲后假突破概率不低,用紧止损控风险比赌方向更实在。 过滤假信号的一个实操思路:价格突破后,等即时报价量回升再入场,等于拿「棕柱+价格动作+量能确认」双信号,而非裸靠形态。下面这段 MT5 函数就是棕柱结合均线穿越的判定原型,开终端照抄能直接验证。 //+------------------------------------------------------------------+

//Check for Pattern 3.

//+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_3(ENUM_POSITION_TYPE T) { if(Color(X()) == clrBrown) { if(T == POSITION_TYPE_BUY && Close(X()+1) <= MA(X()+1) && Close(X()) >= MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()+1) >= MA(X()+1) && Close(X()) <= MA(X())) { return(true); } } return(false); } 逐行拆解:Color(X())==clrBrown 先卡住「当前根 MFI 为棕柱」这一前提;买权分支里 Close(X()+1)<=MA(X()+1) 且 Close(X())>=MA(X()),表示前一根收在均线下、当前根收上去了,完成上穿;卖权对称处理下穿。函数只返回布尔,真值即深蹲方向的雏形信号,具体过滤交给上层策略。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Check for Pattern class="num">3.                                              |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">bool CSignalMFI::IsPattern_3(class="type">ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBrown)
   {  if(T == POSITION_TYPE_BUY && Close(X()+class="num">1) <= MA(X()+class="num">1) && Close(X()) >= MA(X()))
      {  class="kw">return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+class="num">1) >= MA(X()+class="num">1) && Close(X()) <= MA(X()))
      {  class="kw">return(true);
      }
   }
   class="kw">return(false);
}

◍ MFI下降里的背离信号怎么抓

形态-4 的逻辑不靠颜色,也不看 MFI 量级放大,核心只有一条:MFI 处于下降段时,价格却走出更低最低价或更高最高价,就算背离。更低最低价配 MFI 下降,是空头趋势和温和 MFI 的背离;更高最高价配 MFI 下降,则指向价格区间缩窄却仍微涨,两种都算有效背离。 代码里买信号要求 Low(X()+1) > Low(X()) 且 MFI(X()+1) > MFI(X()),卖信号反过来要求 High(X()+1) < High(X()) 且 MFI 同样走高——注意这里判断的是相邻两根的 MFI 对比,不是绝对值门槛。读者可以直接把这段塞进 MT5 的 CSignalMFI 类里跑。 回测里把 MFI 的交易量成分拆出来看,伴随交易量降低的背离确实更容易出逆转,但本形态特意试了交易量上升或恒定、价格区间却在 MFI 绝对值里下降的情形,结果纸面表现有前景。外汇和贵金属杠杆高,背离在强趋势里往往只引发修正而非反转,区间震荡市才更可靠。 实操上别单押这一形态。和比尔·威廉姆斯动量振荡器或加速器振荡器叠看,再等价格碰上支撑阻力位,信号质量会明显提升。源码开放,你可以把看涨配置的 MFI 阈值调高,或单独测更高最高价分支的命中率。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Check for Pattern class="num">4.                                                        |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">bool CSignalMFI::IsPattern_4(class="type">ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X()+class="num">1) > Low(X()) && MFI(X()+class="num">1) > MFI(X()))
   {  class="kw">return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X()+class="num">1) < High(X()) && MFI(X()+class="num">1) > MFI(X()))
   {  class="kw">return(true);
   }
   class="kw">return(false);
}

突破信号里的量价暗坑

形态-5 与形态-1 逻辑相近,只是前提换成「等待突破」。MQL5 实现上,仅在判定时多挂了一个 MA 交叉检查,代码见下。回测里按前文类似优化跑出来的输入设置,这类突破信号在关键位伴随 MFI 绿柱时,往往更像是有效突破。 价格穿过支撑或阻力、同时 MFI 出绿柱,手工盘里关键位的定义交易者一眼能定;但自动化里要严格落到逐品种调参,否则容易在别的品种上误触。外汇与贵金属波动大、杠杆高,这类信号仍可能缺乏量能,假突破风险不低。 「量能亏欠」不是拍脑袋:MFI 公式里成交量分量在分母,绿柱只说明比值上行,真实成交量未必同步放大。拿布林带做陪衬,能给这种量价背离的假突破多一层过滤。分形或 RSI 也可补一刀,确认动量和突破确实同向。 //+------------------------------------------------------------------+

//Check for Pattern 5.&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

//+------------------------------------------------------------------+ bool CSignalMFI::IsPattern_5(ENUM_POSITION_TYPE T) { if(Color(X()) == clrGreen) { if(T == POSITION_TYPE_BUY && Close(X()+1) < MA(X()+1) && Close(X()) > MA(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X()+1) > MA(X()+1) && Close(X()) < MA(X())) { return(true); } } return(false); } 代码逐行拆:函数 IsPattern_5 接收持仓方向 T;先判当前根 MFI 颜色为绿(Color(X())==clrGreen)才继续。买突破要求前一根收盘在 MA 下、当前根收盘上穿 MA,即均线金叉式突破;卖突破对称,前根在 MA 上、当前根下穿。都不满足则返回 false,不报信号。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Check for Pattern class="num">5.                                                                 |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">bool CSignalMFI::IsPattern_5(class="type">ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrGreen)
   {  if(T == POSITION_TYPE_BUY && Close(X()+class="num">1) < MA(X()+class="num">1) && Close(X()) > MA(X()))
      {  class="kw">return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+class="num">1) > MA(X()+class="num">1) && Close(X()) < MA(X()))
      {  class="kw">return(true);
      }
   }
   class="kw">return(false);
}
把量价诊断交给小布盯盘
这些 MFI 形态的颜色切换与背离判定,小布盯盘的 AIGC 已内置,打开对应品种页即可看到实时标注,你只需在突破临界时做决策。

常见问题

AO 靠零轴上下分辨动量类型,MFI 生成正值直方图、需直接比较自身前后变化,侧重价格区间相对成交量的效率,不依赖零轴。
外汇去中心化致真实成交量难获,研究显示即刻报价量与实际交易量强相关,用作 MFI 输入偏差不大,且兼容多数经纪商平台。
可以,小布盯盘对应品种页已内置 MFI 形态识别,包含背离与假信号提示,省去手动比对直方图的重复劳动。
绿色代表价量齐升的效率扩张,蓝色代表价升但量能走平的潜在衰竭前兆,具体需结合本文深蹲与突破节对照。
MFI 量价效率视角在突破时辨认真实推动力强,而 AO 更擅长分形定位与动量转移,趋势跟随用 AO 更顺手。