A running, volume-weighted tally of where price closes within each bar's range — used to study whether buying or selling pressure appears to be building.
The Accumulation/Distribution Line (A/D Line), developed by Marc Chaikin, is a cumulative volume-based indicator. For each bar it looks at where the close sits inside the high-low range, weights that by volume, and adds the result to a running total. The idea is to gauge whether a market is being "accumulated" (closing in the upper part of its range on volume) or "distributed" (closing in the lower part). It is a study tool for interpreting volume relative to price, not a forecast of future prices. Nothing here is predictive, and trading carries risk of loss.
The A/D Line is built in three steps. First, the Money Flow Multiplier is calculated for each bar: ((close − low) − (high − close)) / (high − low). This produces a value between −1 and +1 — near +1 when the close is at the high, near −1 when the close is at the low, and near 0 when the close is mid-range. Second, that multiplier is scaled by the bar's volume to get Money Flow Volume. Third, each bar's Money Flow Volume is added to the prior total, forming a cumulative line. Because it is cumulative, the absolute level is arbitrary; what traders study is the direction and shape of the line over time, and how it lines up with price. Note that the multiplier uses only each bar's own high, low, and close, so it ignores the gap between one bar's close and the next bar's open — a known limitation of the formula.
The A/D Line has no period or length input — it is purely cumulative and calculated bar by bar from price and volume. Some traders add a moving average of the line (for example a 20-period average) to smooth it and judge its slope, but that average is a personal overlay, not part of the core indicator.
//@version=6
indicator("Accumulation/Distribution Line", overlay = false)
// Built-in cumulative A/D Line
ad = ta.accdist
plot(ad, "A/D Line", color = color.blue)
// Optional smoothing overlay (personal study aid, not part of the core indicator)
adMa = ta.sma(ad, 20)
plot(adMa, "A/D 20 SMA", color = color.orange)Pro tip: Because the A/D Line is unbounded and cumulative, comparing its raw value between two charts tells you nothing. For a like-for-like read, study the line's slope and its agreement or disagreement with price on the same chart, rather than the level.
Educational only — not financial advice, not a recommendation to trade. No indicator is predictive; trading involves substantial risk of loss.