Accumulation/Distribution Indicator: Formula, Settings and How to Read It

Accumulation/Distribution is a cumulative volume line that weights each bar's volume by where the close falls inside that bar's range. A bar closing at its high adds its full volume to the running total, a bar closing at its low subtracts it, and a bar closing exactly at the midpoint of its range adds nothing at all.

Senzoukria · Indicators · Updated September 2026


Accumulation/Distribution ships with the Senzoukria desktop app, in the Volume group of the indicator catalogue. It is drawn in its own panel below the chart.

What Accumulation/Distribution measures

Each bar produces a money flow multiplier — the close's position inside the range, rescaled to between −1 and +1 — which is multiplied by the bar's total volume and added to a running sum. Senzoukria seeds that sum at 0 on the first bar loaded in the chart, so the absolute level of the line carries no meaning on its own; its direction and shape do. When a bar's high equals its low the multiplier would be a zero divided by zero, and the bar contributes exactly 0 rather than breaking the accumulation. The line is continuous across sessions: it is not reset at the 17:00 CT futures open, unlike the session-anchored orderflow cumulations.

The formula, as implemented

This is not a description of how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:

Accumulation/Distribution Line (Chaikin) : MFM = ((close − low) − (high − close)) / (high − low) A/D = Σ MFM × volume (cumul depuis la 1ʳᵉ barre) POURQUOI : là où l'OBV signe le volume par le sens du close (tout ou rien), l'A/D le PONDÈRE par la position du close dans le range. Une barre qui monte mais ferme au milieu n'apporte que la moitié de son volume — c'est ce qui rend l'A/D plus sensible aux barres de distribution qu'un OBV. RANGE NUL (high = low) → CONTRIBUTION 0, pas un trou. Justification (cf. en-tête, exception documentée) : l'A/D est un accumulateur, un `null` au milieu couperait le trait ET ferait perdre l'ancrage à toutes les barres suivantes. Une barre sans range n'a aucun contenu directionnel : « elle n'apporte rien » est la lecture EXACTE, pas un pis-aller. C'est aussi la convention Chaikin d'origine et celle de TradingView/StockCharts. Graine 0 sur la première barre chargée, mêmes conséquences et mêmes raisons que l'OBV. CONTINU — pas de reset session.

How to read it

  • Read the slope, not the value. Because the series is anchored at zero on the first loaded bar, loading more history shifts the whole curve without changing what it says.
  • A rising line while price stalls describes bars that keep closing in the upper part of their range on real volume. That is the classic accumulation reading, and it describes bars already printed rather than the next ones.
  • When price makes a new high and the line does not, the new high was built by bars closing away from their extremes — a divergence worth investigating against the tape, not a signal in itself.
  • Flat stretches mean either low volume or closes landing mid-range; check the volume pane before deciding which.
  • Put A/D and OBV on the same chart: they disagree exactly when closes stop landing near the extremes, which is where the weighting does its work.

Parameters and defaults

The only numeric setting is Smoothing, kept at 1 by default, which plots the cumulative line exactly as computed. Raising it toward the 200 maximum applies a post-smoothing pass that makes the curve easier to follow but delays every turn. The colour setting (#26c6da by default) affects the plot and nothing else.

Accumulation/Distribution — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Smoothingnumber11 – 200

What it does not show

A/D is built from open, high, low, close and total volume, so it never sees which side was the aggressor — a bar can close at its high on buying that was entirely absorbed and still register full positive flow. The zero anchor makes the absolute level arbitrary and not comparable between charts, instruments or history depths. Bars with no range contribute nothing, so quiet or illiquid periods flatten the line without that flattening meaning anything about intent. Gaps between bars are invisible to the formula: the move from one close to the next open is never priced in.

Using it in Senzoukria

Add it from the Indicators panel of any footprint chart or candle chart. It runs on futures data from Rithmic or Databento and on crypto pairs from Binance and Bybit, on the same engine — the calculation does not change with the venue, only the data feeding it does. Market data subscriptions are billed by the provider, separately from the app.

See the full indicator library, or start with the order flow guide if you are new to reading aggression, delta and absorption.

Frequently asked questions

What is the difference between Accumulation/Distribution and OBV?
OBV assigns a bar's entire volume to whichever direction the close moved, all or nothing. Accumulation/Distribution weights that same volume by how close the bar settled to its high or low, so a bar that rises but closes mid-range counts for far less. The two lines diverge precisely when closes stop landing at the extremes of their ranges.
Why does the Accumulation/Distribution line start at zero?
Senzoukria seeds the cumulative sum at 0 on the first bar loaded in the chart. The indicator has no absolute origin of its own, so anchoring at 0 makes the plotted series reproducible from one load to the next. Loading a longer history shifts the entire curve vertically while leaving its shape and slope unchanged.
Does the A/D line use bid and ask data?
No. It reads high, low, close and total volume only. Aggressor-side information lives in the footprint and in the delta family of indicators; the A/D line infers pressure from where the close settled inside the range instead.

Keep reading