MACD 背离——顶背离与底背离的识别、计算与实战
一句话:价格和 MACD 走势方向相反,说明动能与价格在"说谎",可能是转折信号。
实证结论:底背离在熊市是可靠的买入信号;顶背离在趋势股上反复失效,不宜用来减仓。

一、MACD 基础(必须先懂)
背离是在 MACD 图上识别的,先确认 MACD 三条线的含义:
| 名称 | 计算方式 | 图表颜色(通常) |
|---|---|---|
| MACD 线 | EMA(12) − EMA(26) | 蓝色/白色实线 |
| Signal 线 | MACD 线的 EMA(9) | 橙色/红色实线 |
| Histogram(柱) | MACD 线 − Signal 线 | 绿/红色柱状 |
背离主要看 MACD 线(或 Histogram)的高点和低点,与价格高低点对比。
二、背离的定义
顶背离(Bearish Divergence)——看跌信号
条件:价格创新高,但 MACD 线未创新高
价格: [高点①] ─── [高点②] ← 高点② > 高点①(价格创新高)
MACD: [高点①] ─── [高点②] ← MACD② < MACD①(MACD 未创新高)
直观图:
价格 ↗↘↗ ↗↘↗↘↗ ← 第二个山峰更高
MACD ↗↘↗ ↗↘↗ ← 第二个山峰更低 ← 背离!
含义: 价格虽然涨了,但推动上涨的动能(MACD)在减弱。
就像跑步运动员步伐在加快,但心跳已经跑不上去——速度不可持续。
底背离(Bullish Divergence)——看涨信号
条件:价格创新低,但 MACD 线未创新低
价格: [低点①] ─── [低点②] ← 低点② < 低点①(价格创新低)
MACD: [低点①] ─── [低点②] ← MACD② > MACD①(MACD 未创新低)
直观图:
价格 ↘↗↘ ↘↗↘↗↘ ← 第二个谷底更低
MACD ↘↗↘ ↘↗↘ ← 第二个谷底更高 ← 背离!
含义: 价格虽然还在跌,但下跌动能已经在衰减。
就像刹车踩到底,但车速减缓的幅度越来越小——下跌快要停了。
三、手动识别背离的步骤
工具准备
- 任意 K 线软件(TradingView / 富途 / 东方财富)
- 在副图开启 MACD(12, 26, 9)
步骤一:在价格图上找"相邻两个同类极值点"
找顶背离:找价格的两个相邻高点(中间有明显回调)
判断标准:
✅ 高点之间的回调幅度 > 3%(小噪声不算)
✅ 两个高点之间相隔 ≥ 10 个交易日
✅ 第二个高点明确高于第一个高点
找底背离:找价格的两个相邻低点(中间有明显反弹)
判断标准:
✅ 低点之间的反弹幅度 > 3%
✅ 两个低点之间相隔 ≥ 10 个交易日
✅ 第二个低点明确低于第一个低点
步骤二:在 MACD 副图上找对应位置的值
- 找到价格高点对应日期 → 读取该日 MACD 线的数值
- 找到价格低点对应日期 → 读取该日 MACD 线的数值
📌 用 MACD 线(快线),不用 Histogram(柱)。
Histogram 会受 Signal 线位置影响,会产生误判。
步骤三:比较
| 类型 | 价格条件 | MACD 条件 | 结论 |
|---|---|---|---|
| 顶背离 | 高点② > 高点① | MACD② < MACD① | ✅ 背离成立 |
| 底背离 | 低点② < 低点① | MACD② > MACD① | ✅ 背离成立 |
| 无背离 | 高点② > 高点① | MACD② > MACD① | ❌ 趋势一致,无背离 |
具体示例(GOOGL 2022 年底背离)
以 2022 年三次底背离为例:
第一次(3月 → 7月):
价格低点:3月14日 $124.8 → 7月26日 $104.1(价格更低 ✅)
MACD: 3月14日 -1.998 → 7月26日 -1.231(MACD 更高 ✅)
→ 底背离成立,加仓信号
第二次(7月 → 11月):
价格低点:7月26日 $104.1 → 11月3日 $82.7(价格更低 ✅)
MACD: 7月26日 -1.231 → 11月3日 -3.494
→ MACD 更低 ❌,背离不成立(直接创新低,是真实熊市)
→ 但此时正是绝对底部……(背离的局限性见下文)
第三次(独立低点):
2022-11-03 $82.7,MACD -3.494
→ 随后反弹,成为整个熊市的最低点
⚠️ 注意:背离的识别需要"事后"确认极值点,实时操作中无法100%确定当前是否是极值。
这是所有基于极值点的技术分析方法的共同局限。
四、GOOGL 背离策略回测结果(2022-2026)
检测到的所有信号
底背离(加仓信号)— 共 5 次
| 日期 | 价格 | MACD | 信号质量 |
|---|---|---|---|
| 2022-03-14 | $124.8 | -1.998 | ✅ 有效,熊市中段 |
| 2022-07-26 | $104.1 | -1.231 | ✅ 有效,继续下跌前的反弹 |
| 2022-11-03 | $82.7 | -3.494 | ✅ 绝对大底,完美信号 |
| 2024-09-10 | $147.7 | -4.618 | ✅ 有效,随后涨至 $200+ |
| 2026-07-23 | $317.7 | -6.312 | 待验证 |
顶背离(减仓信号)— 共 11 次
| 日期 | 价格 | 之后走势 | 信号质量 |
|---|---|---|---|
| 2023-07-31 | $131.6 | 调整后涨至 $200+ | ❌ 过早 |
| 2023-09-18 | $137.0 | 短跌后继续上涨 | ❌ 过早 |
| 2023-10-11 | $139.3 | 涨至 $200+ | ❌ 过早 |
| 2024-04-26 | $170.4 | 涨至 $200 | ❌ 过早 |
| 2024-07-10 | $189.7 | 跌后涨至 $350+ | ❌ 过早 |
| 2025-01-06 | $195.8 | 跌后涨至 $390+ | ❌ 过早 |
| 2025-02-04 | $205.3 | 跌至 $145,短期对 | ⚠️ 部分对 |
| 2025-07-03 | $179.0 | 涨至 $390+ | ❌ 过早 |
| 2025-10-20 | $256.0 | 涨至 $390+ | ❌ 过早 |
| 2026-01-13 | $335.5 | 跌后涨回 $390 | ❌ 过早 |
| 2026-02-02 | $343.2 | 跌至 $270,后涨回 | ⚠️ 部分对 |
策略对比
| 策略 | 最终资产 | 总收益 | 最大回撤 | 加仓 | 减仓 |
|---|---|---|---|---|---|
| ⑦ RSI买+MA50偏离+20%卖(推荐) | $246,310 | +146.3% | -41.9% | 34 | 7 |
| ⑧ 纯背离 | $198,328 | +98.3% | -38.1% | 5 | 11 |
| ⑨ 底背离或RSI买+顶背离卖 | $237,610 | +137.6% | -42.1% | 39 | 11 |
| 🟠 Buy & Hold | $240,681 | +140.7% | -43.6% | — | — |
五、为什么顶背离在趋势股上连续失效
顶背离的逻辑是"动能减弱 → 价格即将反转"。但在趋势股上,这个逻辑有个致命漏洞:
趋势股上涨的节奏是"加速 → 减速 → 加速 → 减速"的波浪,
而不是"加速 → 减速 → 停止"。
每一次减速(MACD 动能降低)都触发顶背离,
但随后价格重新加速,继续创新高。
11次顶背离中,有9次事后看是中途调整,不是见顶。
汽车比喻:
顶背离 = "油门踩浅了" = "可能要停车"
趋势股上 = 司机只是在换挡,不是真的要停
每次换挡你都下车,结果车没停,你在路边等
六、使用建议
✅ 底背离——推荐用于加仓判断
适合场景:
- 熊市中段或末段,价格持续下跌
- 基本面无重大变化(逻辑未破坏)
- 日线级别背离(不要用分钟线)
配合信号(提高可靠性):
- 底背离 + 成交量萎缩 → 抛压枯竭,更可靠
- 底背离 + RSI < 30 → 双重超卖确认
- 底背离 + 长下影线 K 线 → 有承接力
最佳用法:
价格创新低 + MACD 未创新低 + RSI < 30
→ 三重确认,分批加入浮动仓
❌ 顶背离——不推荐用于趋势股减仓
顶背离有效的场景(有限):
- 震荡行情(没有明确上涨趋势)
- 周线级别出现顶背离(更可靠,但滞后更多)
- 配合放量长上影线(量价同时异常)
对于趋势成长股(GOOGL/NVDA 等):
- 用 MA50 偏离 +20% 替代顶背离作为减仓信号
- 理由:MA50 偏离衡量的是"脱离均值多远",而顶背离只看动能节奏
七、编程实现(Python)
import numpy as np
from scipy.signal import find_peaks
def mark_divergence(df, prom=4.0, dist=12):
"""
df 需包含 'Close'(收盘价)和 'MACD'(MACD线)两列
prom : 峰值突出度,过滤小噪声(单位:价格点数)
dist : 相邻两峰最小间距(交易日数)
返回 : 带 'top_div' 和 'bot_div' 布尔列的 DataFrame
"""
price = df["Close"].values
macd = df["MACD"].values
# 找价格高点和低点
peaks, _ = find_peaks( price, prominence=prom, distance=dist)
troughs, _ = find_peaks(-price, prominence=prom, distance=dist)
top_div = np.zeros(len(df), dtype=bool)
bot_div = np.zeros(len(df), dtype=bool)
# 顶背离:价格创新高,MACD 未创新高
for k in range(1, len(peaks)):
i, j = peaks[k-1], peaks[k]
if price[j] > price[i] and macd[j] < macd[i]:
top_div[j] = True
# 底背离:价格创新低,MACD 未创新低
for k in range(1, len(troughs)):
i, j = troughs[k-1], troughs[k]
if price[j] < price[i] and macd[j] > macd[i]:
bot_div[j] = True
df = df.copy()
df["top_div"] = top_div
df["bot_div"] = bot_div
return df
参数调节指南:
| 参数 | 效果 | 建议值 |
|---|---|---|
prom 增大 |
只保留大波动的极值,信号更少但更可靠 | 日线用 3.0~5.0 |
prom 减小 |
捕捉小波动,信号更多但噪声更多 | ≥ 1.5 |
dist 增大 |
两次信号间隔更长,减少密集误报 | 日线用 10~15 |
dist 减小 |
反应更快,但可能在同一行情触发多次 | ≥ 5 |
八、核心教训
背离是"动能衰减"的信号,不是"价格反转"的保证。
底背离在下跌趋势末期非常可靠:下跌动能衰减 = 真实底部临近。
顶背离在上涨趋势中反复失效:上涨动能减速 ≠ 趋势结束,只是换挡。用背离做加仓判断(买),用 MA 偏离做减仓判断(卖)。
两种工具各司其职,不要混用。
See Also
- wiki/投资/core/关键指标/RSI指标原理与手动计算.md — RSI 与背离的配合使用(双重确认)
- wiki/投资/基础概念/看盘指标全解读.md — MACD 完整介绍(零轴/金叉死叉/多周期共振)
- wiki/投资/策略回测/GOOGL-6底4浮-RSI仓位策略回测.md — 背离策略在 6/4 仓位管理中的完整回测对比
- wiki/投资/量价背离.md — 量价背离(与 MACD 背离是不同的概念)
- wiki/投资/杂谈/日本蜡烛图.md — 背离出现时配合 K 线形态使用
Sources
- 对话整理:MACD 背离策略 GOOGL 实证回测(2026-08-17)
raw/投资/MACD背离策略回测对话-20260817.md- 背离计算参考:
wiki/投资/基础概念/看盘指标全解读.md(原有定义章节)