MACD振荡指标——完整实施规范

基于凌波,《振荡指标MACD升级版》


目录

  1. 概述
  2. MACD构成与组件
  3. 柱状图分析
  4. 零轴交叉
  5. MACD背离
  6. 信号线交叉
  7. 多时间周期MACD分析
  8. MACD结合成交量
  9. MACD结合移动平均线
  10. MACD结合其他指标
  11. A股专用MACD应用
  12. 常见MACD陷阱与失败
  13. 高级MACD形态
  14. 实施伪代码
  15. 关键语录

1. 概述

凌波是中国技术分析作者,以实用、系统化的A股交易方法闻名。《振荡指标MACD升级版》提供了对移动平均收敛发散指标的全面处理,远超"MACD上穿信号线买入、下穿卖出"的标准教科书描述。

本书将MACD不是作为独立的信号生成器,而是作为阅读价格动量结构的工具。凌波的关键贡献是将MACD分析系统化为一个层次结构:零轴位置定义趋势,柱状图形态定义动量,信号线交叉定义时机——每一层都由上一层过滤。

1.1 为何MACD适用于A股

凌波认为MACD特别适合A股交易,因为:

1.2 MACD的三个维度

维度 组件 揭示什么
趋势 MACD线相对于零轴的位置 整体趋势方向和强度
动量 柱状图(高度和变化方向) 趋势强度的变化率
时机 信号线交叉 趋势内的入场和出场点

2. MACD构成与组件

2.1 数学基础

MACD指标由三个从指数移动平均线(EMA)导出的组件组成:

凌波指出标准参数(12, 26, 9)在A股日线图上效果良好。他警告不要过度参数优化,这会导致曲线拟合而非真正的改进。

2.2 EMA计算

伪代码:EMA计算
──────────────────────────────
函数 EMA(prices, period):
    multiplier = 2 / (period + 1)
    ema = prices[0]    // 用第一个价格初始化
    对于 i 从 1 到 len(prices):
        ema = (prices[i] - ema) * multiplier + ema
    返回 ema

2.3 参数调整

虽然默认(12, 26, 9)推荐用于大多数目的,凌波讨论了具体调整:


3. 柱状图分析

3.1 柱状图作为动量仪表

根据凌波,柱状图是MACD最有信息的组件。它代表MACD线和信号线之间的距离,其行为揭示了价格确认之前的动量转移:

柱状图上升(柱变高): 动量在趋势方向上加速。无论在零轴上方还是下方,更高的柱意味着趋势正在加强。

柱状图下降(柱变短): 动量正在减弱。趋势可能继续,但其力量正在衰退。这是最早的潜在反转警告。

柱状图穿越零轴: MACD线已经穿越信号线——这是实际的交叉信号。但通过提前阅读柱状图收缩,交易者已经做好准备。

3.2 柱状图颜色模式

在中国交易软件中,柱状图通常显示为:

3.3 "山峰与山谷"形态

凌波引入了柱状图"山峰"(形成驼峰的连续红柱)和"山谷"(形成谷底的连续绿柱)的概念:


4. 零轴交叉

4.1 零轴作为趋势分界线

零轴是MACD分析中最重要的参考点。当MACD线(DIF)在零轴上方时,12期EMA在26期EMA上方,表明上升趋势。在零轴下方表明下降趋势。

4.2 零轴交叉信号

看涨零轴交叉: DIF从下方穿越零轴。这确认从下降趋势到上升趋势的转变。凌波认为这是最高质量的MACD信号之一,因为它确认了真正的趋势变化而非仅仅是回调反弹。

看跌零轴交叉: DIF从上方穿越零轴。确认从上升趋势到下降趋势的转变。当这发生在长期上升趋势之后,是退出多头仓位的强烈警告。

4.3 零轴拒绝

看涨拒绝: DIF在上升趋势中向零轴回落但不穿越,然后重新上升。这表明上升趋势完整,回调是买入机会。

看跌拒绝: DIF在下降趋势中向零轴反弹但不穿越,然后重新下降。下降趋势完整;反弹应该卖出。

伪代码:零轴分析
──────────────────────────────
函数 analyze_zero_line(dif_series):
    当前 = dif_series[-1]
    前一个 = dif_series[-2]
    趋势 = "看涨" 如果 当前 > 0 否则 "看跌"
    
    // 零轴交叉
    如果 前一个 < 0 且 当前 > 0:
        返回 "看涨交叉 — 趋势转上"
    如果 前一个 > 0 且 当前 < 0:
        返回 "看跌交叉 — 趋势转下"
    
    // 零轴拒绝(看涨)
    如果 趋势 == "看涨":
        近期低点 = 最小值(dif_series[-10:])
        如果 近期低点 > -0.05 * ABS(最大值(dif_series[-30:])):
            如果 当前 > 前一个:
                返回 "看涨拒绝 — 上升趋势中的回调,买入机会"
    
    // 零轴拒绝(看跌)
    如果 趋势 == "看跌":
        近期高点 = 最大值(dif_series[-10:])
        如果 近期高点 < 0.05 * ABS(最小值(dif_series[-30:])):
            如果 当前 < 前一个:
                返回 "看跌拒绝 — 下降趋势中的反弹,卖出机会"
    
    返回 "中性"

5. MACD背离

5.1 背离作为最强信号

凌波认为背离是MACD产生的最可靠和最有利可图的信号。背离发生在价格创出新极端但MACD未确认时,表明动量未能支持价格移动。

5.2 看涨背离

价格创出更低的低点但MACD(DIF或柱状图)创出更高的低点。这信号卖压正在减弱,反转可能即将发生。

高质量看涨背离的条件:

  1. 价格处于明确的下降趋势(不仅仅是小幅下跌)
  2. 背离发生在重要支撑位附近
  3. 第二低点成交量下降(卖压衰竭)
  4. 柱状图谷底在第二低点明显更浅

5.3 看跌背离

价格创出更高的高点但MACD创出更低的低点。买压尽管价格更高正在减弱。

高质量看跌背离的条件:

  1. 价格处于成熟的上升趋势(已经有多波上涨)
  2. 背离发生在显著价格上升之后
  3. 第二高点成交量下降
  4. 柱状图山峰在第二高点明显更矮

5.4 三重背离

当背离连续发生三次时(价格创出三个更高的高点但MACD创出三个更低的低点,反之亦然),信号极强。凌波认为三重背离是技术分析中最可靠的反转信号之一。

5.5 隐藏背离

隐藏看涨背离: 在上升趋势中,价格创出更高的低点但MACD创出更低的低点。这信号趋势继续——回调是买入上升趋势的机会。

隐藏看跌背离: 在下降趋势中,价格创出更低的高点但MACD创出更高的高点。趋势继续下行——反弹应该卖出。


6. 信号线交叉

6.1 金叉和死叉

金叉: DIF上穿DEA。看涨信号。质量取决于相对于零轴的位置。

死叉: DIF下穿DEA。看跌信号。质量取决于相对于零轴的位置。

6.2 交叉质量层次

凌波按质量对交叉信号进行排名:

交叉类型 位置 质量 行动
金叉 零轴上方 最高 强烈买入 — 趋势延续
金叉 零轴附近(向上穿越) 买入 — 新趋势开始
金叉 零轴下方远处 中等 可能底部,但趋势仍向下
死叉 零轴下方 最高 强烈卖出 — 趋势继续向下
死叉 零轴附近(向下穿越) 卖出 — 趋势转下
死叉 零轴上方远处 中等 反弹警告,趋势可能仍向上

6.3 "亲吻"交叉

一种特殊形态,DIF和DEA几乎触点(或短暂触碰)但未完成完整交叉,然后再次在原始方向上分离。这种"亲吻"形态是强烈的延续信号:趋势 tested 但 held。


7. 多时间周期MACD分析

7.1 时间周期层次

凌波的多时间周期方法使用三个层次:

关键规则:永远不要逆着更高时间周期的MACD趋势交易。

7.2 多时间周期对齐

伪代码:多时间周期MACD决策
────────────────────────────────────────────
周线MACD = calculate_macd(周线价格)
日线MACD = calculate_macd(日线价格)
小时MACD = calculate_macd(小时价格)

// 从周线确定趋势
如果 周线MACD.dif > 0 且 周线MACD.柱状图 > 前期柱状图:
    周线趋势 = "强劲上升"
否则如果 周线MACD.dif > 0:
    周线趋势 = "上升"
否则如果 周线MACD.dif < 0 且 周线MACD.柱状图 < 前期柱状图:
    周线趋势 = "强劲下降"
否则:
    周线趋势 = "下降"

// 只在周线上升或强劲上升时做多
如果 周线趋势 在 ["上升", "强劲上升"]:
    如果 日线MACD.金叉() 或 日线MACD.看涨背离():
        如果 小时MACD.柱状图转上():
            信号 = "买入"
            置信度 = "高" 如果 周线趋势 == "强劲上升" 否则 "中"

// 只在周线下降或强劲下降时做空/卖出
如果 周线趋势 在 ["下降", "强劲下降"]:
    如果 日线MACD.死叉() 或 日线MACD.看跌背离():
        信号 = "卖出 / 回避"

7.3 时间周期冲突

当时间周期冲突时(例如,周线看涨但日线看跌),凌波建议:


8. MACD结合成交量

8.1 成交量确认规则

MACD信号在成交量确认时显著更可靠:

8.2 成交量-MACD背离

成交量和MACD之间存在另一种形式的背离:


9. MACD结合移动平均线

9.1 MA支撑/阻力 + MACD时机

凌波建议使用移动平均线(通常20日和60日)作为支撑/阻力水平,然后使用MACD来把握入场时机:

9.2 移动平均线对齐 + MACD

当短期均线在长期均线上方(看涨对齐)且MACD在零轴上方且柱状图上升,代表最大趋势强度。凌波称之为"三重确认"状态——均线对齐、MACD趋势和MACD动量全部一致。


10. MACD结合其他指标

10.1 MACD + KDJ(随机指标)

KDJ提供MACD缺乏的超买/超卖读数:

10.2 MACD + RSI

RSI提供动量极端:

10.3 MACD + 布林带

布林带提供波动率背景:


11. A股专用MACD应用

11.1 板块特定行为

凌波观察到MACD在不同A股市场板块表现不同:

11.2 开盘和收盘竞价效应

A股有显著的竞价效应。凌波警告小于30分钟的时间框架上的日内MACD可能被开盘和收盘竞价机制扭曲。使用60分钟或更长用于日内MACD。

11.3 涨停和跌停日

当股票达到每日价格限制(涨停/跌停)时,应谨慎解读MACD信号:

11.4 政策驱动的市场移动

在A股,突然的政策公告可能导致缺口移动,使MACD信号失效。凌波建议将任何超过3%的缺口视为"重置事件",需要从头重新分析MACD结构。


12. 常见MACD陷阱与失败

12.1 盘整市场中的锯齿

MACD在横向、无趋势的市场中表现不佳。DIF和DEA在零轴附近反复交叉,产生买入和卖出信号,两者都失败。凌波的解决方案:当柱状图柱非常小且快速交替时,置身事外。

12.2 滞后性质

MACD本质上是滞后指标。它在趋势变化已经开始后才确认,而非之前。背离提供了一些领先质量,但即使背离也需要第二峰值或谷底形成后才能被识别。

12.3 假背离

并非所有明显的背离都会导致反转。在非常强劲的趋势中,MACD可以显示多个背离而价格继续趋势方向。凌波称这些为"背离陷阱",建议使用成交量和价格结构(而不仅仅是MACD)来确认背离信号。

12.4 交叉频率过滤器

凌波建议在交叉之间的最小时间过滤:如果金叉后在3根K线内出现死叉,将两者都视为噪音而非真实信号。质量交叉通常持续至少5-8根K线。


13. 高级MACD形态

13.1 "水下金叉"

发生在零轴下方的金叉。这是一个具有中等可靠性的抄底信号。它表明下降动量正在放缓,但整体趋势仍是下降的。仅作为初步信号使用——等待零轴交叉以获得完全确认。

13.2 "零轴上方第二次金叉"

在零轴上方金叉后,DIF回落到DEA(或略低)然后再次向上交叉。零轴上方的第二次金叉是凌波最高置信度的买入信号:上升趋势已经确立,回调很小,动量正在恢复。

13.3 MACD"翅膀"形态

当柱状图形成两个相似高度的山峰,中间有接近零轴(但不穿越)的回调分隔,这创造了视觉上的"翅膀"形态。这表明强劲、持续的动量,暗示趋势将延续。

13.4 零轴"蹦床"

DIF在上升趋势回调期间短暂触碰或略穿透零轴,然后强劲弹回零轴上方。就像蹦床效应,短暂的零轴触碰为下一波上涨提供"弹力"。


14. 实施伪代码

伪代码:A股完整MACD交易系统
─────────────────────────────────────────────────────

函数 MACD_Trading_System(stock):
    // 计算多时间周期的MACD
    周线 = calculate_macd(stock.周线价格, 12, 26, 9)
    日线 = calculate_macd(stock.日线价格, 12, 26, 9)
    
    // 步骤1:从周线确定主要趋势
    如果 周线.dif > 0:
        主要趋势 = "看涨"
    否则如果 周线.dif < 0 且 周线.dif > 周线.dif_prev:
        主要趋势 = "恢复中"
    否则:
        主要趋势 = "看跌"
    
    // 步骤2:检查日线背离
    日线背离 = check_divergence(日线)
    
    // 步骤3:生成信号
    信号 = []
    
    // 高质量买入信号
    如果 主要趋势 == "看涨":
        如果 日线.金叉 且 日线.dif > 0:
            信号.添加(("买入", "A级:周线上升趋势中的零轴上方金叉"))
        否则如果 日线.金叉 且 日线.dif > -0.1:
            信号.添加(("买入", "B级:周线上升趋势中的零轴附近金叉"))
        否则如果 日线.零轴看涨拒绝:
            信号.添加(("买入", "B级:零轴拒绝"))
    
    如果 日线背离 == "看涨" 且 主要趋势 != "看跌":
        信号.添加(("买入", "B级:看涨背离"))
    
    // 高质量卖出信号
    如果 主要趋势 == "看跌":
        如果 日线.死叉 且 日线.dif < 0:
            信号.添加(("卖出", "A级:周线下降趋势中的零轴下方死叉"))
    如果 日线背离 == "看跌":
        信号.添加(("卖出", "A级:看跌背离"))
    如果 日线.死叉 且 日线.dif > 0 且 周线.柱状图萎缩:
        信号.添加(("卖出", "B级:早期警告,周线动量衰减"))
    
    // 步骤4:成交量确认
    对于 信号 中的每个:
        如果 信号.类型 == "买入" 且 成交量放大():
            信号.置信度 += 1
        否则如果 信号.类型 == "买入" 且 成交量萎缩():
            信号.置信度 -= 1
    
    返回 信号


函数 check_divergence(macd_data):
    // 找到近期价格高/低和对应的MACD值
    价格高点 = find_peaks(prices, lookback=60)
    macd高点 = find_peaks(macd_data.dif, lookback=60)
    
    如果 len(价格高点) >= 2:
        如果 价格高点[-1] > 价格高点[-2] 且 macd高点[-1] < macd高点[-2]:
            返回 "看跌"
    
    价格低点 = find_troughs(prices, lookback=60)
    macd低点 = find_troughs(macd_data.dif, lookback=60)
    
    如果 len(价格低点) >= 2:
        如果 价格低点[-1] < 价格低点[-2] 且 macd低点[-1] > macd低点[-2]:
            返回 "看涨"
    
    返回 "无"

15. 关键语录

"MACD不是信号机器——它是一种动量语言。学会阅读它,市场就会对你说话。"

"零轴是MACD世界的赤道。在它上方,牛市控制。在它下方,熊市主导。最重要的决策发生在交叉时。"

"背离是市场在低语趋势在说谎。在它变成尖叫之前聆听低语。"

"零轴上方的金叉值得在零轴下方三个金叉。趋势中的位置比交叉本身更重要。"

"柱状图告诉你现在正在发生什么。DIF和DEA告诉你发生了什么。只有背离暗示接下来会发生什么。"

"在盘整市场中,MACD会伤害你。MACD交易者的第一个技能是识别何时不交易。"

"多时间周期对齐不是可选的——它是基础。逆着周线下降趋势交易日线金叉是在逆流而上。"

"成交量是任何MACD信号的真相血清。没有成交量的交叉是没有承诺的承诺。"