技术分析 · 趋势指标

MACD 指标完整教学
黄金/死亡交叉的真实用法

2026-06-03·11 分钟阅读·初学 ~ 中阶

MACD(Moving Average Convergence Divergence,指数平滑移动平均线)由 Gerald Appel 在 1979 年发明,是技术分析最经典的趋势追踪指标。 几乎每个人都听过「黄金交叉买、死亡交叉卖」,但单看交叉胜率约 50% — 跟丢硬币差不多。本文讲为什么 + 怎么改进。

1. MACD 是什么?三条线在干嘛

MACD 由三个元素组成:

① MACD 线 = EMA(12) - EMA(26)

两条均线的差值。当短期 EMA 高过长期 EMA → MACD > 0;反之 < 0。 快速反映短期动能 vs 长期动能的关系。

② Signal 线 = EMA(MACD, 9)

MACD 线的 9 期均线,反应慢一些。当作 MACD 线的「平滑参考」。

③ Histogram = MACD - Signal

两条线的差值用直方图呈现。Histogram 为正(绿柱)= MACD 在 Signal 上面 = 多头动能; 反之为负(红柱)= 空头动能。

MACD 指標教學圖上方價格 K 線,下方為 MACD 雙線。MACD(藍)上穿 Signal(橙)為 黃金交叉,價格隨後上漲;下穿為死亡交叉,價格隨後下跌。價格(K 線)MACDMACD 線Signal 線🟢 黃金交叉🔴 死亡交叉
圖 2:MACD 黃金/死亡交叉,搭配價格走勢

2. 入门用法:黄金 / 死亡交叉

这是教科书版本:

  • 黄金交叉:MACD 线从下往上穿越 Signal 线 → 买
  • 死亡交叉:MACD 线从上往下穿越 Signal 线 → 卖
为什么纯交叉策略胜率约 50%
MACD 是滞后指标 — 它是两条均线的差, 交叉发生时行情已经走了一段。震荡盘更惨, 可能 1 天黄金死亡交叉各 3 次,全部止损出场。

Pine 实作(纯交叉,教学用):

pine
//@version=5
strategy("MACD 纯交叉(教学版)", overlay=true)

[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

if (ta.crossover(macdLine, signalLine))
    strategy.entry("Long", strategy.long)

if (ta.crossunder(macdLine, signalLine))
    strategy.entry("Short", strategy.short)

3. 中阶用法:MACD + 零轴过滤

黄金交叉发生在零轴上方(MACD > 0) vs零轴下方(MACD < 0)意义不同:

  • 零轴上方的黄金交叉:多头趋势中的回踩买点,胜率高
  • 零轴下方的黄金交叉:弱反弹,常常假突破
  • 空头交叉同理(零轴下方更可靠)
pine
//@version=5
strategy("MACD + 零轴过滤", overlay=true)

[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// 只接受「零轴上方的多头交叉」+「零轴下方的空头交叉」
longSignal = ta.crossover(macdLine, signalLine) and macdLine > 0
shortSignal = ta.crossunder(macdLine, signalLine) and macdLine < 0

if (longSignal)
    strategy.entry("Long", strategy.long)
if (shortSignal)
    strategy.entry("Short", strategy.short)

4. 进阶用法:MACD 直方图缩放

Histogram 不只是看正负,绝对值大小反映动能强度。 当红柱连续变短(负值缩小) → 空头动能在减弱 → 可能反弹。 这比看交叉早 1-2 根 K 棒。

pine
//@version=5
indicator("Histogram 缩放侦测", overlay=false)

[_, _, hist] = ta.macd(close, 12, 26, 9)

// 连续 3 根红柱越来越短 → 空头动能衰竭
weakening_down = hist < 0 and hist > hist[1] and hist[1] > hist[2] and hist[2] > hist[3]

// 连续 3 根绿柱越来越短 → 多头动能衰竭
weakening_up = hist > 0 and hist < hist[1] and hist[1] < hist[2] and hist[2] < hist[3]

bgcolor(weakening_down ? color.new(color.green, 80) : na, title="多头警示")
bgcolor(weakening_up ? color.new(color.red, 80) : na, title="空头警示")

5. 高阶用法:MACD 背离

跟 RSI 一样,MACD 也有背离信号:

  • 价格创新高,MACD 创新高 → 空头背离(看跌)
  • 价格创新低,MACD 创新低 → 多头背离(看涨)

MACD 背离跟 RSI 背离原理一样,但 MACD 的背离通常更早出现(因为 MACD 反应短期动能更敏感)。可以两个都看,互相确认。

背离怎么自动化侦测
Pine 内建 ta.pivothighta.pivotlow 可以找 局部高低点。比对价格 pivot vs MACD pivot 的方向就能写背离侦测。 TradingView 也有许多现成的「MACD Divergence」公开脚本可以参考。

6. MACD 参数可以改吗?

预设 (12, 26, 9) 是 Wilder 当年用日线得出的。在不同市场 / 时间框架, 可以调:

情境建议参数理由
标准(传统)(12, 26, 9)通用
较敏感(短线)(5, 13, 5)捕捉短线转折,杂讯多
较稳定(中长线)(19, 39, 9)过滤杂讯,但信号慢
高波动加密永续(12, 26, 9) 或 (8, 17, 9)标准仍可用,较短款更应对快波动
不要过度调参
参数调太多很容易 overfit(过拟合)— 在历史数据上完美但未来不准。 建议先用标准参数验证策略逻辑,再用前向测试(forward-test) 至少 30 天确认稳定,最后才微调参数。

7. 常见错误

❌ 在震荡盘用 MACD

MACD 是趋势追踪指标,震荡盘连续假交叉打脸。 先用 ADX / 波动率指标判断市场状态,趋势盘才用 MACD。

❌ 只用 MACD 不设止损

MACD 给的是进场信号,不是出场保护。 配合 ATR 止损或固定百分比止损是必须的。

❌ 多时间框架不一致

1 小时 MACD 黄金交叉但日线在死亡交叉中 → 逆势进场,胜率低。 先看大时间框架方向再用小时间框架抓进场点。

Get started

想把今天学到的东西自动化跑起来?

把你的策略接上 TradingView webhook,自动下单到 Binance / OKX / Bybit 等 7 家交易所。

免费注册 TVSBot

8. 进阶:MACD + RSI 双重确认策略

实战常见组合:MACD 给进场、RSI 过滤趋势方向。

pine
//@version=5
strategy("MACD + RSI 双重确认", overlay=true)

[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
rsi = ta.rsi(close, 14)

// 多头:MACD 黄金交叉 + MACD > 0 + RSI > 50
longSignal = ta.crossover(macdLine, signalLine) and macdLine > 0 and rsi > 50

// 空头:MACD 死亡交叉 + MACD < 0 + RSI < 50
shortSignal = ta.crossunder(macdLine, signalLine) and macdLine < 0 and rsi < 50

if (longSignal)
    strategy.entry("Long", strategy.long)
if (shortSignal)
    strategy.entry("Short", strategy.short)