Power of Three (often abbreviated AMD: Accumulation, Manipulation, Distribution) is a widely-taught smart-money / price-action concept that frames how a trading session or candle is said to unfold in three phases. This breakdown explains the idea neutrally, how traders define entries, exits, and risk around it, and why it is a discretionary framework rather than a mechanical signal. It is educational only — no part of it predicts price or implies profit, and trading carries risk of loss.
Power of Three (PO3), commonly written as AMD, is a way some traders mentally segment a session or a higher-timeframe candle into three sequential phases. It is popularised in the smart-money / ICT-influenced trading community as a teaching model, not a proven mechanism.
The three phases, as traders describe them:
Traders typically map this onto fixed reference windows: a daily candle is described in terms of its open, a misleading wick, and the body/close; or an intraday session (for example, a chosen futures or FX session open) is watched for an early range, a sweep of that range, and a subsequent expansion. The concept is descriptive and pattern-based — it labels structure after the fact and offers a lens for considering that an early breakout might reverse. It is not a formula and does not output a numeric signal. Crucially, identifying which phase you are in is only unambiguous in hindsight; in real time it is a judgement call, which is why this reduces to a discretionary framework rather than a mechanical strategy. None of these phases is guaranteed to occur, and labelling one does not forecast what price will do next.
//@version=6
// ILLUSTRATIVE ONLY — this is a detection/marker script, NOT a strategy.
// Power of Three (AMD) is a discretionary framework, so it does not reduce
// to a single mechanical entry/exit. This script merely (a) marks a chosen
// session's early "accumulation" range and (b) flags candidate liquidity
// sweeps of that range. It places no orders and predicts nothing.
indicator("Power of Three (AMD) - Illustrative Marker", overlay = true)
// --- Inputs -------------------------------------------------------------
accSess = input.session("0930-1000", "Accumulation window (exchange time)")
fullSess = input.session("0930-1600", "Active session window")
showRange = input.bool(true, "Show accumulation range")
// --- Session helpers ----------------------------------------------------
inAcc = not na(time(timeframe.period, accSess))
inSess = not na(time(timeframe.period, fullSess))
accStart = inAcc and not inAcc[1] // first bar of the accumulation window
// --- Build the accumulation range --------------------------------------
// Levels reset at the start of each accumulation window so one session's
// range is not carried into the next day.
var float accHi = na
var float accLo = na
var bool sweptHi = false
var bool sweptLo = false
if accStart
accHi := high
accLo := low
sweptHi := false
sweptLo := false
else if inAcc
accHi := math.max(accHi, high)
accLo := math.min(accLo, low)
// --- Flag candidate manipulation (sweep) after accumulation ends --------
// Uses only the current, completed bar's high/low vs. the stored range.
// No higher-timeframe lookahead and no reference to an unformed value.
postAcc = inSess and not inAcc and not na(accHi)
sweepUp = postAcc and not sweptHi and high > accHi // swept the range high
sweepDn = postAcc and not sweptLo and low < accLo // swept the range low
if sweepUp
sweptHi := true
if sweepDn
sweptLo := true
// --- Plot ---------------------------------------------------------------
plot(showRange and not na(accHi) ? accHi : na, "Acc High", color.new(color.teal, 0), 1, plot.style_linebr)
plot(showRange and not na(accLo) ? accLo : na, "Acc Low", color.new(color.teal, 0), 1, plot.style_linebr)
plotshape((sweepUp) and barstate.isconfirmed, "Sweep of high", shape.triangledown, location.abovebar, color.new(color.red, 0), size = size.tiny)
plotshape((sweepDn) and barstate.isconfirmed, "Sweep of low", shape.triangleup, location.belowbar, color.new(color.green, 0), size = size.tiny)
// Note: a sweep marker is NOT a buy/sell signal. Confirming whether a sweep
// becomes "manipulation -> distribution" is a discretionary judgement the
// trader makes; this tool only highlights candidates for study. Past
// behaviour does not predict future price, and trading risks loss.AMD stands for Accumulation, Manipulation, Distribution — the three phases traders use to describe how a session or higher-timeframe candle is said to develop: a build-up range, a misleading move that is interpreted as sweeping liquidity, then an expansion in the opposite direction. It is a descriptive model, not a guarantee that price will behave this way.
Not cleanly. Identifying the accumulation range can be automated, and you can flag candidate sweeps mechanically (as the illustrative script does), but deciding that a sweep is genuine 'manipulation' followed by 'distribution' is a discretionary judgement. That is why the Pine example here is a marker/detection tool, not an order-placing strategy.
No. It is a lens for interpreting structure after a possible liquidity sweep, popularised in the smart-money community. It does not forecast direction, does not imply any win-rate or profit, and trading based on it still carries risk of loss. Treat it as a study framework and validate any coded version for look-ahead bias and repainting before relying on it.
Educational & software only — not financial advice, not a recommendation to trade. Backtests are illustrative; past performance does not predict future results. Trading involves substantial risk of loss.