◆ New — Strategy Validator, Code Fixer & Prop Compliance Checker are live. Try one free →
Home / Indicators / Chaikin Oscillator
Volume indicator

Chaikin Oscillator

The MACD of the Accumulation/Distribution line — a fast EMA minus a slow EMA of cumulative money flow.

Illustrative diagram — not live market data.

What it is

The Chaikin Oscillator, developed by Marc Chaikin, measures the momentum of the Accumulation/Distribution (A/D) line by subtracting a slower EMA of that line from a faster one — structurally, it is a MACD applied to cumulative money flow instead of price. It is important to distinguish it from Chaikin Money Flow (CMF), a different indicator by the same author that people routinely confuse with it: CMF is a windowed ratio — the sum of money-flow volume over the last N bars divided by the sum of volume over the same window — producing a bounded reading around zero, while the Chaikin Oscillator is an unbounded momentum reading of the cumulative A/D line. Same building block, different construction, different behaviour. The oscillator is plotted in a separate pane and read around its zero line. Like all volume-derived indicators, it summarizes past closing positions within each bar's range weighted by volume; it describes pressure that has already been recorded and predicts nothing. This entry is educational only — no indicator is predictive, and trading always involves risk of loss.

How it works

The calculation has two stages. First, build the A/D line: for each bar, compute the money flow multiplier ((close − low) − (high − close)) / (high − low), which ranges from +1 when the bar closes at its high to −1 when it closes at its low. Multiply that by the bar's volume to get money-flow volume, and keep a cumulative running total — that total is the A/D line. Second, take a 3-period EMA and a 10-period EMA of the A/D line and subtract: Chaikin Oscillator = EMA(A/D, 3) − EMA(A/D, 10). When the A/D line is accelerating upward, the fast EMA pulls above the slow one and the oscillator rises above zero; when cumulative money flow is decelerating or falling, the oscillator drops below zero. Because the A/D line is cumulative and unbounded, the oscillator is unbounded too — its magnitude depends on the instrument's volume scale, so there are no universal overbought or oversold levels. Note the edge case in stage one: when high equals low, the multiplier's denominator is zero, and a correct implementation must define that bar's contribution (usually zero) rather than divide by zero.

How traders read it

Common settings

The classic settings are a 3-period fast EMA and a 10-period slow EMA of the A/D line, and most charting platforms ship those defaults. Slower pairs (such as 6/20) smooth the line at the cost of responding later. There is no length on the A/D line itself — it is cumulative by definition. As with any EMA-based tool, changing the settings or the chart timeframe changes every crossing, so treat the defaults as a convention to test, not a recommendation.

Strengths

Pitfalls to watch

Pine v6 example

//@version=6
indicator("Chaikin Oscillator Example", overlay = false)

fastLen = input.int(3,  "Fast EMA Length", minval = 1)
slowLen = input.int(10, "Slow EMA Length", minval = 1)

// Stage 1: Accumulation/Distribution line (guard zero-range bars)
mfm = high == low ? 0.0 : ((close - low) - (high - close)) / (high - low)
adLine = ta.cum(mfm * volume)

// Stage 2: fast EMA minus slow EMA of the A/D line
chaikinOsc = ta.ema(adLine, fastLen) - ta.ema(adLine, slowLen)

crossUp = ta.crossover(chaikinOsc, 0) and barstate.isconfirmed
plotshape(crossUp, "Zero Cross Up", style = shape.triangleup, location = location.bottom, color = color.teal, size = size.tiny)

plot(chaikinOsc, "Chaikin Oscillator", color = color.blue)
hline(0, "Zero", color = color.gray)

Pro tip: Before acting on any Chaikin Oscillator reading, check which Chaikin indicator you are actually looking at — a surprising amount of online commentary quotes CMF levels (like +0.05/−0.05) against the oscillator, where they are meaningless because the oscillator is unbounded. If you use both, treat CMF as the windowed snapshot and the oscillator as the momentum of the cumulative line, and read them against price structure rather than in isolation. Educational context only, not financial advice — indicators describe the past, and all trading carries risk of loss.

Built an indicator from this? Run it through the Validator to catch look-ahead bias and repainting, or convert a strategy to Pine Script.

Educational only — not financial advice, not a recommendation to trade. No indicator is predictive; trading involves substantial risk of loss.

Catch the bug that compiles.Run auditGet Pro