Skip to content

Technical indicators

Chaikin Oscillator

The momentum of the Accumulation Distribution Line.

The Accumulation Distribution Line adds up each bar’s volume, weighted by where the close fell in the bar’s range. Marc Chaikin’s oscillator takes a 3-bar EMA of that line less a 10-bar one, as MACD does with price, so it shows whether accumulation or distribution is speeding up. The line’s level depends on where it was started, but the oscillator does not.

Crossing above zero says buying pressure is building, and below zero selling pressure. A divergence from price, such as a new price high without a new oscillator high, warns of a turn. On FX the volume is the broker’s tick volume, a count of price changes, so read it as activity rather than traded amount.

money flow volume = ((CLOSE − LOW) − (HIGH − CLOSE)) / (HIGH − LOW) × VOLUME (0 if HIGH = LOW)
ADL = running total of money flow volume
Chaikin = EMA(ADL, fastPeriods) − EMA(ADL, slowPeriods)

Each EMA starts from the mean of its first values.

Call: chaikinOscillator(fastPeriods, slowPeriods)

Setting Chart default
fastPeriods: Fast EMA Periods 3
slowPeriods: Slow EMA Periods 10

What you get: a number.

Warm-up: with chaikinOscillator(3, 10), it asks for 0 bars of history and a run-up of 40, and its first value came on bar 10 of the example data.

Chaikin Oscillator drawn by its own code on example prices

The prices are made up, hourly, and the same on every page, so the chart shows how the indicator behaves, not how a market behaved.

function onIntervalClose() {
const pressure = chaikinOscillator(3, 10);
if (pressure !== null && pressure > 0 && OPEN_POSITIONS_COUNT === 0) {
openPosition("BUY", { quantity: 10000, stopLossPips: 30 });
}
}