# Impulse MACD

A Momentum & Oscillators concept (MACD lineage) in the LuxAlgo Library, with 1 indicator implementation.

## What is the Impulse MACD?

The Impulse MACD is a [MACD](https://www.luxalgo.com/library/concept/macd/) variant engineered to go silent in ranges. Instead of subtracting two EMAs of the close, the common construction builds a band from smoothed moving averages of the highs and of the lows (34 periods in the widely used defaults) and tracks a zero-lag average of typical price against it. While that average sits inside the band, the oscillator prints zero; only when it presses above or below the band does the line register, measuring how far price has displaced beyond its own recent range.

The construction is a TradingView-era design: the pseudonymous author LazyBear published the widely copied Impulse MACD script, and most versions in circulation follow it. The lineage runs back to Gerald Appel's original MACD from the late 1970s, but the variant borrows elsewhere too: Wilder-style smoothed moving averages for the band, and a zero-lag exponential average, which offsets smoothing delay by extrapolating from its own lag, for the price input.

A short simple average of the line (9 periods in the same defaults) acts as the signal, with a histogram for the gap between them. The dead zone is the entire point: standard MACD keeps crossing its signal line in flat markets, while this variant refuses to print until price actually leaves the smoothed range. In effect it hard-codes the range filter that users of a regular MACD have to bolt on separately.

The trade-off is information loss. Inside the dead zone the indicator says nothing about pressure building within the range, and because every component smooths past prices, the first print after a flat stretch still arrives after the move has begun. It is best read as a [momentum](https://www.luxalgo.com/library/concept/momentum/) tool that trades sensitivity for selectivity, closer to breakout confirmation than to the continuous oscillation of an [RSI](https://www.luxalgo.com/library/concept/rsi/) or [stochastic oscillator](https://www.luxalgo.com/library/concept/stochastic-oscillator/).

## How to read the Impulse MACD on a chart

The indicator plots an oscillator line, a signal average, and a histogram in a pane below price; everything meaningful is a departure from zero.

1. A flatline at zero means price is inside its smoothed high/low band, this tool's working definition of a range; the designed response is to stand aside.
2. A first push above zero marks price escaping the band upward, a first drop below zero a downside escape. These ignition points are what the indicator was built to isolate.
3. Once the line is active, apply normal MACD grammar: line-versus-signal crosses, a histogram that widens as the move accelerates and narrows as it tires.
4. Watch the return to zero, which declares the escape finished and the range reasserted.
5. Size readings against recent history. The line has no fixed bounds, so there are no standard [overbought or oversold](https://www.luxalgo.com/library/concept/overbought-oversold/) levels; large only means large relative to that market's recent prints.

## How it's calculated

A MACD-style oscillator that stays at zero while a zero-lag average of typical price remains inside a smoothed high/low band, and measures the escape distance once it leaves.

```
Hi_t = SMMA_t(H, 34)
Lo_t = SMMA_t(L, 34)
Mid_t = ZLEMA_t((H + L + C) / 3, 34)
SMMA_t(x, n) = (SMMA_(t-1)(x, n) × (n - 1) + x_t) / n, seeded with an n-bar SMA
ZLEMA_t(x, n) = 2 × EMA_t(x, n) - EMA_t(EMA(x, n), n)
ImpulseMACD_t = Mid_t - Hi_t if Mid_t > Hi_t; Mid_t - Lo_t if Mid_t < Lo_t; otherwise 0
Signal_t = SMA_t(ImpulseMACD, 9)
Histogram_t = ImpulseMACD_t - Signal_t

  H, L, C: bar high, low, close; (H + L + C) / 3 is the typical price
  SMMA(x, n): smoothed (Wilder-type) moving average of series x with length n
  ZLEMA(x, n): zero-lag EMA of series x with length n
  EMA(x, n): exponential moving average with multiplier 2 / (n + 1)
  SMA(x, n): simple moving average of x over n bars
  x_t: value of the input series at bar t
  n: moving average length (default 34 for the bands and midline)
  Hi_t, Lo_t: smoothed high and low bands at bar t (default 34)
  Mid_t: zero-lag average of typical price at bar t (default 34)
  ImpulseMACD_t: main oscillator line at bar t
  Signal_t: signal line, SMA of the main line (default 9)
  Histogram_t: main line minus signal line
  t: bar index
```

This is LazyBear's Impulse MACD; defaults are 34 for the SMMA bands and the ZLEMA midline and 9 for the signal SMA.

Forcing the line to zero inside the band mutes rangebound noise, so a move off zero marks price escaping the band rather than an ordinary MACD zero cross.

## How traders use it

- As a momentum-ignition read: the first push out of the zero zone marks price escaping its smoothed high/low band, a candidate start of an impulse rather than a mid-range wiggle.
- With standard MACD grammar (signal-line crosses, histogram shrinking) applied only outside the dead zone, which cuts out much of the whipsaw that chop produces.
- As an implicit range filter: a flatlined zero reading is itself information that price remains inside its recent trading range.
- For divergence on active stretches: [regular bullish and bearish divergence](https://www.luxalgo.com/library/concept/regular-bullish-bearish-divergence/) is read the usual way where the line is off zero, with the caveat that the dead zone deletes the reference swings a continuous oscillator would keep.
- As a veto for faster triggers: some traders take entries from a [stochastic RSI](https://www.luxalgo.com/library/concept/stochastic-rsi/) or [CCI](https://www.luxalgo.com/library/concept/cci/) only while the Impulse MACD is active, letting the dead zone filter out range-bound signals.

## Impulse MACD vs related concepts

- **MACD** (https://www.luxalgo.com/library/concept/macd/): Standard MACD is the spread between two EMAs of the close: it always prints something and crosses its signal line repeatedly in chop. The Impulse MACD clamps to zero inside a smoothed high/low band and only measures the displacement beyond it.
- **Volume-weighted MACD** (https://www.luxalgo.com/library/concept/volume-weighted-macd/): Another MACD variant, pulling a different lever. Volume weighting changes what the averages listen to, so heavily traded bars count for more, but the line stays continuous. The Impulse MACD instead changes when the indicator speaks at all, suppressing output inside the band regardless of volume.
- **ROC** (https://www.luxalgo.com/library/concept/roc/): The simplest momentum gauge: percent change over a fixed lookback, always printing, never suppressed. It shows raw thrust the moment it happens, at the cost of constant oscillation in ranges, exactly the noise the Impulse MACD's dead zone was designed to remove.

## FAQ

### How is the Impulse MACD different from the regular MACD?

Regular MACD subtracts a slow EMA of the close from a fast one, so it always prints a value and is prone to whipsaw in flat markets. The Impulse MACD compares a zero-lag average of typical price to a band built from smoothed highs and lows: inside the band it outputs zero, outside it outputs the overshoot. It trades continuous information for silence in ranges.

### Is the Impulse MACD the same as the Elder Impulse System?

No. The Elder Impulse System colors bars by combining the slope of an EMA with the slope of the MACD histogram to classify each bar as bullish, bearish, or neutral. The Impulse MACD is a distinct oscillator that suppresses its output while price sits inside a smoothed high/low band. They share a word and the MACD lineage, nothing else.

### What are the standard Impulse MACD settings?

The widely copied script uses 34-period smoothed moving averages of the high and the low for the band, a 34-period zero-lag average of typical price (the average of high, low, and close) as the input, and a 9-period simple moving average of the result as the signal. The numbers are published defaults rather than optimized values; lengthening them widens the dead zone, shortening does the reverse.

### Can you trade divergence with the Impulse MACD?

Only where the line is active. Divergence needs comparable oscillator swings, and the dead zone erases them, since consecutive pullbacks inside the band all print zero. On active stretches both regular and [hidden divergence](https://www.luxalgo.com/library/concept/hidden-divergence/) read as on any oscillator, though fewer usable swings exist than on an RSI pane.

### Is the Impulse MACD leading or lagging?

Lagging by construction. Every component smooths past prices, and the zero-lag average reduces delay rather than eliminating it. What the design buys is abstention, not foresight: silence through conditions that make other oscillators noisy, in exchange for a first print that arrives after the move is underway.

## Implementations in the Library

- Impulse MACD (LuxAlgo): https://www.luxalgo.com/library/indicator/impulse-macd/

## Related concepts

- MACD: https://www.luxalgo.com/library/concept/macd/
- PPO: https://www.luxalgo.com/library/concept/ppo/
- APO: https://www.luxalgo.com/library/concept/apo/
- OsMA: https://www.luxalgo.com/library/concept/osma/
- Zero-lag MACD: https://www.luxalgo.com/library/concept/zero-lag-macd/
- MACD-V: https://www.luxalgo.com/library/concept/macd-v/
- Volume-weighted MACD: https://www.luxalgo.com/library/concept/volume-weighted-macd/
- Schaff Trend Cycle: https://www.luxalgo.com/library/concept/schaff-trend-cycle/

---

Source: https://www.luxalgo.com/library/concept/impulse-macd/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/