// Licensed under the Apache License, Version 2.0 // © mihakralj //@version=6 indicator("Accumulation/Distribution Line (AD)", "AD", overlay=false) //@function Calculates the Accumulation/Distribution Line (AD), a volume-based indicator that measures money flow into and out of a security //@param src_high The high price (default: built-in high) //@param src_low The low price (default: built-in low) //@param src_close The close price (default: built-in close) //@param src_vol The volume (default: built-in volume) //@returns The cumulative AD value representing buying/selling pressure ad(src_high = high, src_low = low, src_close = close, src_vol = volume) => float mfm = 0.0 if not na(src_high) and not na(src_low) and not na(src_close) mfm := (src_close - src_low) - (src_high - src_close) mfm := src_high != src_low ? mfm / (src_high - src_low) : 0.0 float mfv = na(src_vol) ? 0.0 : src_vol * mfm var float cumulativeSum = 0.0 cumulativeSum := na(mfv) ? cumulativeSum : cumulativeSum + mfv cumulativeSum // ---------- Inputs ---------- // ---------- Calculations ---------- ad_val = ad(high, low, close, volume) // ---------- Plotting ---------- plot(ad_val, "AD", color=color.yellow, linewidth=2)