Indicators··6 min read

Session Open Anchored Move

0 references, link-verifiedEditor of record: Shane CantyStandards review editorial standard · audit log

This indicator measures the distance between the current price and the session open, expressed in two forms: absolute points and as a multiple of ATR (Average True Range). A trader observing a 2.5 ATR move from the open understands at a glance whether the current move is routine or exceptional relative to the instrument's recent volatility. The indicator suits intraday traders, scalpers and market-structure analysts who anchor decisions to session opens and want volatility-normalized context for every bar.

//@version=6
indicator("Session Open Anchored Move", overlay=false)

// Inputs
atrLength = input(14, "ATR Length", minval=1)
sessionHour = input.int(9, "Session Start Hour", minval=0, maxval=23)
sessionMinute = input.int(30, "Session Start Minute", minval=0, maxval=59)
displayMode = input.string("Both", "Display", options=["Points", "ATR Multiples", "Both"])

// Detect session start bar
isSessionStart = hour == sessionHour and minute == sessionMinute

// Track session open price (resets at each session start)
var float sessionOpenPrice = na
if isSessionStart
    sessionOpenPrice := open

// Calculate move from session open in points
movePoints = close - sessionOpenPrice

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate move in ATR multiples
moveATR = atr != 0 ? movePoints / atr : 0

// Determine which values to plot
pointsToPlot = displayMode == "Points" or displayMode == "Both" ? movePoints : na
atrMultiplesToPlot = displayMode == "ATR Multiples" or displayMode == "Both" ? moveATR : na

// Plot both metrics
plot(pointsToPlot, "Move (Points)", color.blue, linewidth=2)
plot(atrMultiplesToPlot, "Move (ATR Multiples)", color.orange, linewidth=2)
hline(0, "Zero", color.gray, linestyle.dashed)

How the code works

The indicator opens by accepting three user inputs: the length of the ATR lookback window (default 14 bars), the time when each trading session begins (default 9:30 AM), and a display mode to toggle between points, ATR multiples, or both.

On each bar, the code checks whether the current time matches the session start. When a session open bar arrives, a variable named sessionOpenPrice stores the open price of that bar and holds it unchanged across all subsequent bars until the next session open resets it. This is accomplished using the var keyword, which preserves the value across bars.

The move in points is simply the difference between the current close and the stored session open. The ATR is calculated over the specified length using the built-in ta.atr() function, which measures average price volatility. The move in ATR multiples divides the points move by the ATR value, expressing how many standard volatility units the market has traveled from the open.

The plot statements respect the display mode input: if the user selects "Points", only the absolute move plots; if "ATR Multiples", only the normalized move plots; if "Both", both lines appear. The zero line anchors the chart, making positive and negative moves equally visible.

Reading it on a chart

When applied to a five-minute or one-minute chart, the indicator generates two lines that begin at zero when the session opens and drift upward or downward as the market moves away from that anchor.

A steady, gradual climb suggests accumulating directional momentum within the session. A jagged line with sharp reversals indicates choppy, indecisive price action. If the ATR multiples line reaches 2 or higher, the session's move already exceeds twice the average daily swing, signalling exceptional volatility or a breakaway move.

Comparing the two lines reveals whether the session is generating an objectively large move (high points value) in the context of expected volatility (high ATR multiples), or whether the move appears large only because volatility is unusually quiet. For example, an ES (E-mini S&P 500) move of 15 points may be 1 ATR in choppy conditions but 0.5 ATR in a calm session, suggesting the latter offers less commitment.

The indicator is purely mechanical and offers no entry or exit signal; it is a measurement tool. Traders typically use it as context within a broader decision framework that considers support, resistance, volume profile or other structural levels.

Limitations

The indicator's utility depends entirely on the accuracy of the session start time input. Markets in different regions or trading venues operate on different hours, and the code applies only to instruments with a fixed intraday session boundary. For 24-hour instruments (cryptocurrency spot, some currency pairs), or for instruments subject to holiday closures or irregular schedule changes, a static time input will misfire.

ATR is a lagging measure of volatility, calculated from the trailing 14 bars (or user-defined length). During the opening minutes of a session, ATR reflects the prior session's volatility, not the current session's emerging behavior, so the ATR multiples ratio is less informative early in the session and becomes more reliable as bars accumulate.

The indicator does not account for pre-market or after-market sessions, overnight gaps, or halted trading. On the first bar of the chart, sessionOpenPrice may remain undefined, causing the move to read as zero or undefined until the next session boundary.

The move measurement is based on close price only, not the intrabar extremes; a bar that opens below the session open and closes above it will register a smaller move than its true intrabar range. For instruments with significant intrabar wicks, a point-based reading can understate volatility.

Finally, ATR multiples assume a normal or near-normal distribution of moves. In markets undergoing structural breaks, regime changes or unusual liquidity events, the historical ATR fails to predict the scale of the current move, rendering the multiple less meaningful.

Key definitions

Session open: the opening price of a trading session, defined by the user's input hour and minute; acts as the anchor for all measurements within the session.

Average True Range (ATR): a volatility measure calculated over a rolling lookback period (default 14 bars) that captures the average distance between high and low prices, adjusted for gaps.

ATR multiple: the ratio of the current move to the ATR value; expresses how many standard volatility units the price has traveled from the session open.

Intraday: relating to trading activity within a single calendar day, typically measured on timeframes from one minute to one hour.

Lookback period: the number of bars used to calculate a rolling average or indicator; longer periods smooth noise but respond more slowly to recent changes.

References


Educational research on historical data only. Not investment advice, not a signal, and never a performance promise. Past results do not predict future performance. Every reference is link-verified before publication and every paper is re-audited weekly against the library's editorial standard.

Last reviewed by the PropLedger research pipeline: 2026-10-26. Educational research on historical data, not financial advice.

Educational research on historical data only. Not investment advice, not a signal, and never a performance promise. Past results do not predict future performance. Every reference is link-verified before publication and every paper is re-audited weekly against the library's editorial standard. Found an error? Email support@prop-ledger.org and the paper is corrected or withdrawn.