MACD (Moving Average Convergence Divergence) packages trend direction AND momentum acceleration into three components — a fast line, a slow signal line, and a histogram — giving you multiple signal types from a single indicator.
Section 1: Core Mechanics
MACD measures the gap between two exponential moving averages of price. When the fast EMA moves away from the slow EMA, momentum is building. When they converge, momentum is fading. The histogram shows whether that gap is growing or shrinking — before the crossover happens.
Formulas
Where all EMA values use the standard smoothing multiplier .
Inputs
- Price source: Close price (default — applied to all three EMA calculations)
- Fast period: 12 (EMA applied to closing prices)
- Slow period: 26 (EMA applied to closing prices)
- Signal period: 9 (EMA applied to the MACD Line output)
Parameters
| Parameter | Default | Range | Impact |
|---|---|---|---|
| Fast EMA period | 12 | 5–20 | Lower = more responsive MACD line |
| Slow EMA period | 26 | 20–50 | Higher = smoother, slower baseline |
| Signal EMA period | 9 | 5–15 | Lower = earlier crossovers, more noise |
Output
MACD outputs three series:
- MACD Line: oscillates above/below zero based on the spread between EMA(12) and EMA(26)
- Signal Line: smoothed version of the MACD Line — slower and lagging behind it
- Histogram: bar chart showing the difference between MACD Line and Signal Line — positive when MACD is above Signal, negative when below
Visual Behavior
- Histogram bars grow → momentum accelerating in that direction
- Histogram bars shrink → momentum decelerating — watch for reversal
- MACD and Signal lines crossing → trend shift signal
- Both lines above zero → broader uptrend context
- Both lines below zero → broader downtrend context
Section 2: Interpretation & Signals
Signal Zones
| Condition | Signal Type | Strength |
|---|---|---|
| MACD crosses above Signal | Bullish momentum | Moderate |
| MACD crosses below Signal | Bearish momentum | Moderate |
| MACD crosses above zero line | Bullish trend confirmation | Strong |
| MACD crosses below zero line | Bearish trend confirmation | Strong |
| Histogram makes higher lows while price makes lower lows | Bullish divergence | Very strong |
| Histogram makes lower highs while price makes higher highs | Bearish divergence | Very strong |
Signal Type 1 — MACD/Signal Crossover
The most common signal. MACD Line crossing above Signal Line = buy. Crossing below = sell. Generates many signals but has lower accuracy in isolation.
MACD Signal Crossover — Bullish Cross
Signal Type 2 — Zero-Line Cross
Stronger confirmation than the MACD/Signal crossover. When MACD Line crosses above zero, the 12-period EMA has moved above the 26-period EMA — the shorter-term trend is now stronger than the longer-term trend. This signals a sustained trend change rather than a short-term momentum swing.
Signal Type 3 — Histogram Divergence (Earliest Signal)
The histogram shows momentum before the price or the crossover does. When the histogram makes a higher low while price makes a lower low (bullish divergence), it signals that selling pressure is fading — even before MACD crosses the Signal Line.
This is the earliest and most powerful MACD signal. It appears BEFORE the crossover.
Signal Type 4 — Price/MACD Divergence (Strongest Reversal Signal)
When price makes a new high but the MACD Line does not confirm it (lower high on MACD), trend strength is waning. This is a classic leading signal of trend exhaustion.
Section 3: Pass vs. Live — Real-Time Reliability
All three MACD components (Line, Signal, Histogram) update continuously on the live bar and lock on close. There is no historical repaint. The double-layer EMA structure means MACD carries more lag than a single EMA — it is a confirmation tool, not a leading indicator.
Section 4: Practical Use Cases
Setup: MACD(12,26,9) on 15m with EMA(21) on price
Signal: MACD/Signal bullish cross while MACD is below zero (buy dip in downtrend) OR above zero in uptrend
Entry: Next candle open after confirmed cross — use MACD > Signal on closed bar
Exit: MACD crosses back below Signal, or 1× ATR profit target
Key rule: Only trade crosses in direction of MACD's zero-line position — above zero = longs only
Setup: MACD(12,26,9) on daily chart, use histogram for entry timing Signal: Histogram turns from negative to positive (first positive bar) after a pullback Entry: Daily close on the first positive histogram bar in an uptrend Stop: Low of the pullback candle that triggered the divergence Target: Prior swing high or until histogram starts shrinking
Setup: MACD(12,26,9) on weekly — zero-line cross only Signal: Weekly MACD Line crosses above zero after extended downtrend Entry: Weekly close after zero-line cross, with ADX(14) weekly > 20 confirming trend Stop: Weekly close below EMA(26) Target: None fixed — hold while MACD stays above zero; exit on zero-line cross down
Real example: SPY daily — In December 2021, MACD histogram made a lower high while SPY printed a new all-time high near 479. This bearish histogram divergence preceded the 2022 bear market that took SPY down 20% over the next six months. The divergence signal appeared six weeks before the peak.
Section 5: Pseudo Code
INPUT: close_prices[], fast=12, slow=26, signal=9
PROCESS:
Step 1: Compute k_fast = 2 / (fast + 1) # e.g. 2/13 ≈ 0.1538
Step 2: Compute k_slow = 2 / (slow + 1) # e.g. 2/27 ≈ 0.0741
Step 3: Compute k_sig = 2 / (signal + 1) # e.g. 2/10 = 0.2000
Step 4: Seed ema_fast = SMA of close_prices[0:fast]
Seed ema_slow = SMA of close_prices[0:slow]
Step 5: For each bar i from index slow onward:
ema_fast[i] = close_prices[i] * k_fast + ema_fast[i-1] * (1 - k_fast)
ema_slow[i] = close_prices[i] * k_slow + ema_slow[i-1] * (1 - k_slow)
macd[i] = ema_fast[i] - ema_slow[i]
Step 6: Seed signal_line = SMA of macd[slow : slow + signal]
Step 7: For each bar i from index (slow + signal) onward:
signal_line[i] = macd[i] * k_sig + signal_line[i-1] * (1 - k_sig)
histogram[i] = macd[i] - signal_line[i]
OUTPUT: macd[], signal_line[], histogram[]
EDGE CASES:
- Need at least (slow + signal) bars for valid output: 26 + 9 = 35 bars minimum
- Bars before index (slow + signal - 1): all outputs = NaN
- NaN in input: propagates NaN through EMA chain — check for gaps
Section 6: Parameters & Optimization
Standard Conventions
| Setting | Common Use | Notes |
|---|---|---|
| 12 / 26 / 9 | Equities, standard default | Most widely used — highest institutional recognition |
| 5 / 35 / 5 | Slower, for weekly charts | Less noise on position trades |
| 8 / 17 / 9 | Faster intraday variation | More signals, more whipsaws |
| 3 / 10 / 16 | Scalping variant | Very sensitive, for high-frequency analysis |
Parameter Impact
| Change | Effect | When to Apply |
|---|---|---|
| Reduce fast period | Earlier signals, more noise | Fast markets, momentum scalping |
| Increase slow period | Smoother baseline, more lag | Weekly/monthly charts |
| Reduce signal period | Faster crossovers | Timing-sensitive setups |
| Increase signal period | Fewer crossovers, higher accuracy | Swing trading to filter whipsaws |
Why is the default setting 12/26/9?
These periods correspond to roughly 2.5 weeks (12 days ≈ half a month), 5 weeks (26 days ≈ one month), and 1.5 weeks (9 days) of trading days. Gerald Appel designed MACD in the late 1970s for daily stock charts. The parameters captured short-term and medium-term momentum cycles. They stuck because they work across asset classes and timeframes, and because widespread use creates self-fulfilling signals.
How does MACD behave differently on crypto vs equities?
Crypto trades 24/7 including weekends. Standard 12/26/9 on daily crypto charts produces similar signals to equities. On 1H crypto charts, consider faster settings (6/13/5) to account for the faster price cycles. Crypto MACD divergences on the 4H chart are particularly reliable during major trend reversals — BTC's 2022 bottom was flagged by bullish histogram divergence on the 4H chart in October 2022.
Section 7: Synergies & Conflicts
| Works Well With | Avoid Combining With | |
|---|---|---|
| EMA(21/50) | MACD crossovers in the direction of EMA trend = high-confidence entries | — |
| RSI | RSI above 50 + MACD bullish cross = double momentum confirmation | — |
| Volume | Volume spike on MACD zero-line cross confirms institutional participation | — |
| ADX | ADX above 25 validates that MACD trend signals are in a real trending market | — |
| Stochastic | — | Both are momentum oscillators — stochastic adds no new information beyond MACD |
| Second MACD different period | — | MACD of MACD is noise — the histogram already shows momentum change |
| Bollinger Bands alone | — | Bollinger measures volatility; MACD measures momentum — they conflict on direction signals |
Section 8: Common Mistakes
| Mistake | Root Cause | Solution |
|---|---|---|
| Taking every MACD/Signal crossover | Crossovers are frequent and many are false | Filter: only trade crossovers where MACD is on the correct side of zero |
| Missing the histogram divergence | Watching lines only, ignoring histogram | Check histogram for shrinking bars as the primary early-warning signal |
| Entering on live-bar cross | MACD/Signal cross can flip before bar closes | Wait for confirmed close — set alert on close price condition, not tick |
| Ignoring the 35-bar warmup | MACD needs slow+signal = 35 bars minimum | Never apply MACD to fewer than 50 bars of data — first 35 bars are unreliable |
| Using MACD in a sideways market | MACD generates continuous low-quality crosses in ranges | Check ADX(14) — below 20 means no trend; MACD signals degrade severely |
Section 9: Cheat Sheet
USE WHEN: Clear trend visible, ADX > 20, entering on pullbacks or momentum shifts
AVOID WHEN: ADX < 20 (ranging), earnings/news catalyst imminent, thin liquidity
ENTRY SIGNAL: Histogram first positive bar after pullback / MACD crosses Signal above zero line
EXIT SIGNAL: Histogram starts shrinking / MACD crosses back below Signal
PARAMETERS: Standard: 12/26/9 | Faster: 8/17/9 | Weekly: 5/35/5
CONFLUENCE: EMA(21/50) for trend bias + ADX for strength + Volume for confirmation
RISK: High false-signal rate from MACD/Signal crossovers alone — use histogram + zero-line filter
BEST TIMEFRAME: Daily and 4H for swing trades — histogram divergence most reliable on daily