MACD 指標完整教學
黃金/死亡交叉的真實用法
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 上面 = 多頭動能; 反之為負(紅柱)= 空頭動能。
2. 入門用法:黃金 / 死亡交叉
這是教科書版本:
- 黃金交叉:MACD 線從下往上穿越 Signal 線 → 買
- 死亡交叉:MACD 線從上往下穿越 Signal 線 → 賣
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)意義不同:
- 零軸上方的黃金交叉:多頭趨勢中的回踩買點,勝率高
- 零軸下方的黃金交叉:弱反彈,常常假突破
- 空頭交叉同理(零軸下方更可靠)
//@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 棒。
//@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 反應短期動能更敏感)。可以兩個都看,互相確認。
ta.pivothigh 和 ta.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) | 標準仍可用,較短款更應對快波動 |
7. 常見錯誤
❌ 在震盪盤用 MACD
MACD 是趨勢追蹤指標,震盪盤連續假交叉打臉。 先用 ADX / 波動率指標判斷市場狀態,趨勢盤才用 MACD。
❌ 只用 MACD 不設止損
MACD 給的是進場訊號,不是出場保護。 配合 ATR 止損或固定百分比止損是必須的。
❌ 多時間框架不一致
1 小時 MACD 黃金交叉但日線在死亡交叉中 → 逆勢進場,勝率低。 先看大時間框架方向再用小時間框架抓進場點。
Get started
把你的策略接上 TradingView webhook,自動下單到 Binance / OKX / Bybit 等 7 家交易所。
免費註冊 TVSBot8. 進階:MACD + RSI 雙重確認策略
實戰常見組合:MACD 給進場、RSI 過濾趨勢方向。
//@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)