解读经典和隐藏背离的新途径。 第二部分·进阶篇
📉

解读经典和隐藏背离的新途径。 第二部分·进阶篇

(2/3)· 当 Elder 的零轴铁律遇上现代终端,经典背离还值得信吗?我们逐个指标拆给你看

偏理论 第 2/3 篇
很多人背下「MACD 必须过零轴才算背离」就直接上实盘,却不知道 Elder 书里写的 MACD 其实是 OsMA,且他自己都说过右肩缺失时零轴交叉只是可选项。用错了定义,过滤出来的信号从根上就偏了。

「用 ZigZag 给 RSI 背离当滤波器」

RSI 由 J.Welles Wilder 在 1978 年 6 月提出,公式是 RSI = 100 - 100/(1 + U/D),U 为收盘价上涨时的平均变化、D 为下跌时的平均变化,结果归一化在 0–100。它不像随机指标那样带平滑选项,所以对价格过度敏感,只在持续单边行情里走线性,横盘时全是锯齿,突破信号泛滥。 直接用分形滤波不灵。Bill Williams 的五点分形在横盘里照样刷信号,而且由五根 K 线构成,至少有 1 根烛条的延迟,反而把噪音带进 RSI 主线。均线平滑强但变种太多(SMA/EMA/SMMA/LWMA × 七种价格 × 任意周期),没必要穷举。 之字折线按定义就是找符合偏差过滤的极值,正好补位。问题是原版 RSI 用收盘价、ZigZag 用最高/最低价,二者源头错位。基于中位价 (高+低)/2 重算 RSI 能部分消掉这个偏差——图例 24 里指标分形和价格分形错位不超 2 根柱线,写代码时很容易补偿。 我们只关心信号“形状”而非数值,所以 RSI 仅用于抓背离,不当独立入场信号。RSI 周期只改幅度不改形态,ZigZag 参数不改极值位置,两者可任意组合。套用随机指标规则:背离成形前 RSI 须触 30 以下或 70 以上。调 ZigZag 能同时拿短线和中长线信号,2 个滤波器 + 1 个基础指标就能覆盖全图,滤波器还能加到 3 个以上。 图例 26 第一个信号 RSI 没进超卖区,这时直接把 RSI 计算周期调大、拉大幅度,它就落进对应区域了。外汇和贵金属波动剧烈、杠杆高风险极大,这种滤波组合只提高信号可辨性,不预示胜率。

◍ CCI 的锯齿脾气与背离线画法

商品通道指数(CCI)是 Donald Lambert 在 1980 年提出的振荡器,公式写作 CCI = (1/0.015) * ((TypicalPrice - SMA) / MedianDeviation)。它自带冲量特征,既能抓超买超卖,也能识别初始行情冲量;但这份灵敏在实战里常变成缺点——曲线像 RSI 一样锯齿化,所以 RSI 那套过滤规则(按最高/最低/收盘价分型,再抓价格极值)对 CCI 同样适用。 CCI 有个怪癖:寻找背离时,若发生多线突破,算法得跟着改。别的指标很少这么跳,CCI 却频繁出现这种状况,图例 27、28 能直接看到。 按第一篇文章的思路,正因为这种特殊行为,CCI 反而成了好用的操作工具:在价格图上,从最后一个逆转背离(最近多空各一)拉出延伸指示线,当作价格支撑/阻力(图例 29);若 CCI 本身画在副图窗口,就把支撑/阻力线画在振荡器窗口里(图例 30)。外汇与贵金属波动剧烈,这类线只是概率参考,破线不意味趋势反转。

冲量指标与RoC的换算陷阱

冲量(Momentum)本质就是价格变化率,另一个名字叫 RoC。两者唯一硬差别在基准线:RoC 以 0 为中轴,冲量以 100 为中轴。John Murphy 在《期货市场的技术分析》里给过最原始的定义式 Momentum = Pn - Pn-1,但这式子直接挂着资产绝对价格,不同品种数值不可比,实战里很别扭。 后来补了相对化处理:RoC_tn = (Momentum / P_t-n) * 100。换句话说,标准冲量其实就是 RoC,而平时说的 RoC 又等于常用冲量减 100。这套绕口令式的对应关系,是写 EA 前必须先理清的,否则指标缓冲区取值会整错。 它的计算逻辑和 CCI、RSI 一样会画出锯齿线,信号密密麻麻。图例 31 里连自动化判定都容易乱触发。现有资料没把它拿来做背离识别。 周期参数决定它的性格:6–14 周期偏向伺候短线;大于 20 周期时,它更像趋势过滤器,能较清楚标出趋势末端。若你认同「趋势由三个连续冲量构成」的波浪思路,冲量原理确实可能帮你在末段减仓。外汇与贵金属波动剧烈、杠杆高风险,任何信号都只是概率倾向,需 MT5 回测验证。

「ADX 的背离玩法与同类振荡器冗余」

ADX 由 Wells Wilder 在 1978 年《技术交易系统中的新概念》里提出,主线由 +DI、-DI 与 ATR 推算:ADX = (MA_n((+DI - -DI)/(+DI + -DI))) * 100,其中 n 为 SMA 周期。主线本身不指示方向,只反映行情活跃度,单看容易误判为‘无用’。 第一种用法是在价格方向与 ADX 走向之间找背离:价格续跌而 ADX 同步走低,即暗示下跌动能与价格创新低并不确认,属于背离信号。难点在方向判定,可先排价格波峰波谷顺序——若最近峰值低于前峰、最近谷值高于前谷(或反之,即内包/外包柱),就要警惕方向模糊区。 第二种用法直接读 +DI / -DI 曲线:上行趋势中 +DI 高于 -DI,用 +DI 峰找经典熊背离,用 -DI 峰找隐藏牛背离;下行则反过来。第三种最实用——前两种合并,能在 ADX 主线上抓背离且不用干等反转,信号按总趋势类型过滤即可,不依赖额外工具。 外汇与贵金属市场高波动,ADX 背离只提示动能倾向减弱,不代表反转必现,需结合仓位风控。 很多经典振荡器其实是换皮:WPR(10) 等同 Stochastic(10,1,1 基于最低/最高) 只是量程倒转为 100-0;AO 近似 MACD(5,35,1 用中位价),差别仅在 AO 用 SMA 平滑、MACD 用 EMA,信号形态无大变;AC 类同 OsMA(5,34,5 中位价);TRIX 调好 MACD 参数也能复刻。选指标优先挑计算公式原创的,避免重复劳动。

◍ 把交易量拆成五色直方图的实战思路

MT5 标准包里直接吃交易量的指标少得可怜:吸筹/派发、资金流指数、能量潮、市场灵活指数,加上最朴素的 Volume 本身。外汇盘口没有真实成交堆量,只有 tick 成交量,所以亚洲时段柱量天然比欧美时段薄,趋势启动和砍仓时刻才会出现尖峰,而砍仓那一下往往量比启动还大。 直接用裸 Volume 做背离自动识别很别扭——不同时区量纲错位,新闻秒杀也会炸出孤立巨量。一个取巧办法是用带均衡线的变种,比如 BetterVolume,或者把价格区间和量绑在一起重绘直方图。 下面这段是把经典 Volume 改成的五色直方图核心:新高新低判定给柱线染色,绿色为内包上行、红色为内包下行、蓝色和粉色对应外侧上下、灰色归其他。主计算仍沿用标准交易量缓冲,只是 CalculateVolume 里多写了一套颜色映射。 #property indicator_type1 DRAW_COLOR_HISTOGRAM #property indicator_color1 Green,Red,Blue,Magenta,Gray void CalculateVolume(const int nPosition, const int nRatesCount, const long &SrcBuffer[], const double &h[], const double &l[], const double &o[], const double &c[]) { ExtVolumesBuffer[0]=(double)SrcBuffer[0]; ExtColorsBuffer[0]=0.0; //--- for(int i=nPosition;i<nRatesCount && !IsStopped();i++) { //--- calculate indicator color ExtVolumesBuffer[i]=(double)SrcBuffer[i]; ExtColorsBuffer[i]=4.0; //--- uptrend, UP bar ---- if(h[i]>h[i-1] && l[i]>l[i-1]&& o[i]<c[i])ExtColorsBuffer[i]=0.0; //--- uptrend, DN bar ---- if(h[i]>h[i-1] && l[i]>l[i-1]&& o[i]>c[i])ExtColorsBuffer[i]=3.0; //--- downtrend, DN bar ---- if(h[i]<h[i-1] && l[i]<l[i-1]&& o[i]>c[i])ExtColorsBuffer[i]=1.0; //--- downtrend, UP bar ---- if(h[i]<h[i-1] && l[i]<l[i-1]&& o[i]<c[i])ExtColorsBuffer[i]=2.0; //--- outside UP bar ---- if(h[i]>h[i-1] && l[i]<l[i-1] && o[i]<c[i])ExtColorsBuffer[i]=2.0; 逐行拆解:前两句 #property 声明画彩色直方图、调色板顺序绿红蓝粉灰;函数入参把高低开收和量缓冲全传进来。ExtVolumesBuffer 装量值,ExtColorsBuffer 装颜色代号,初始 0 是绿。循环里先默认染灰(4.0),再按高低关系与阴阳线覆盖:内包上行染绿、内包下行染红、下行趋势里的阴线染红、下行趋势里的阳线染蓝、外侧上行也染蓝。 资金流指数(MFI)公式近似 RSI,但用典型价乘量再算正向负向比,比 RSI 更贴近‘多少人参与’而不是‘价走多远’,抓超买超卖可能更准。能量潮(OBV)靠收盘价升降累加量,核心假设是指标先动价格后动,适合人工找量价背离。推力指数(Elder)原始为 Volume*(Close-Close昨),终端里换成 MA 差,信号形状没大变,也能搜背离。外汇和贵金属波动受时段与新闻驱动,用量工具须警惕高风险,任何背离都只是概率倾向而非确定性。

MQL5 / C++
class="macro">#class="kw">property indicator_type1  DRAW_COLOR_HISTOGRAM
class="macro">#class="kw">property indicator_color1 Green,Red,Blue,Magenta,Gray

class="type">void CalculateVolume(class="kw">const class="type">int nPosition,
                     class="kw">const class="type">int nRatesCount,
                     class="kw">const class="type">long &SrcBuffer[],
                     class="kw">const class="type">class="kw">double &h[],
                     class="kw">const class="type">class="kw">double &l[],
                     class="kw">const class="type">class="kw">double &o[],
                     class="kw">const class="type">class="kw">double &c[])
  {
  ExtVolumesBuffer[class="num">0]=(class="type">class="kw">double)SrcBuffer[class="num">0];
  ExtColorsBuffer[class="num">0]=class="num">0.0;
class=class="str">"cmt">//---
  for(class="type">int i=nPosition;i<nRatesCount && !IsStopped();i++)
    {
    class=class="str">"cmt">//--- calculate indicator class="type">class="kw">color
    ExtVolumesBuffer[i]=(class="type">class="kw">double)SrcBuffer[i];
    ExtColorsBuffer[i]=class="num">4.0;
    class=class="str">"cmt">//--- uptrend, UP bar ----
    if(h[i]>h[i-class="num">1] && l[i]>l[i-class="num">1]&& o[i]<c[i])ExtColorsBuffer[i]=class="num">0.0;
    class=class="str">"cmt">//--- uptrend, DN bar ----
    if(h[i]>h[i-class="num">1] && l[i]>l[i-class="num">1]&& o[i]>c[i])ExtColorsBuffer[i]=class="num">3.0;
    class=class="str">"cmt">//--- downtrend, DN bar ----
    if(h[i]<h[i-class="num">1] && l[i]<l[i-class="num">1]&& o[i]>c[i])ExtColorsBuffer[i]=class="num">1.0;
    class=class="str">"cmt">//--- downtrend, UP bar ----
    if(h[i]<h[i-class="num">1] && l[i]<l[i-class="num">1]&& o[i]<c[i])ExtColorsBuffer[i]=class="num">2.0;
    class=class="str">"cmt">//--- outside UP bar ----
    if(h[i]>h[i-class="num">1] && l[i]<l[i-class="num">1] && o[i]<c[i])ExtColorsBuffer[i]=class="num">2.0;

外包线内包线的着色判定

这段逻辑接在前面高低点扫描之后,专门给非吞没的两种特殊 K 线打标记。当第 i 根 K 线的高点高于前一根、低点低于前一根,且收阴(开盘大于收盘),判定为外包阴线(DN bar 之外),缓冲值写 3.0。 若第 i 根高点低于前一根、低点高于前一根,则是标准内包线,缓冲值写 4.0。这两个数值后续由颜色索引映射,交易者可在 MT5 里直接改 3.0 / 4.0 对应的色号,把这两种形态从主图里一眼筛出来。 外汇与贵金属波动下内包线常出现在整理段,形态出现只代表区间收敛概率偏高,不代表方向突破,实盘须结合成交量与更高周期确认。

MQL5 / C++
   class=class="str">"cmt">//--- outside DN bar ----
   if(h[i]>h[i-class="num">1] && l[i]<l[i-class="num">1] && o[i]>c[i])ExtColorsBuffer[i]=class="num">3.0;
   class=class="str">"cmt">//--- inside bar ----
   if(h[i]<h[i-class="num">1] && l[i]>l[i-class="num">1])ExtColorsBuffer[i]=class="num">4.0;
    }
class=class="str">"cmt">//---
  }
class=class="str">"cmt">//+------------------------------------------------------------------+
让小布替你跑这套
这些指标与背离结构的对照诊断,小布盯盘的 AIGC 已内置,打开对应品种页即可看到实时标注,你只需判断概率倾向。

常见问题

RSI 基于价格涨跌比例且自带边界,对短线摆动更敏感;MACD 类更偏趋势动能。本篇会单独拆 RSI 的结构适配性。
他书中 MACD 实为 OsMA,而早期终端无线性 MACD、子窗口仅画两条均线无零轴绑定,导致原描述无法直接套用。
可以。小布盯盘的 AIGC 模块对经典与隐藏背离均做实时识别,并在品种页给出结构注释,省去手动逐根比对。
ADX 衡量趋势强度而非方向,可过滤掉低动能区的假背离;具体阈值与搭配方式见本篇 ADX 小节。
量能背离往往领先价格,冲突时概率上倾向等待确认而非直接反向,外汇贵金属属高风险品类需谨慎。