The most-referenced institutional levels in intraday trading — automatically calculated in Pine Script and used as bias filters, support/resistance zones, and breakout targets.
The previous day's high, low, and close are among the most widely referenced levels in professional intraday trading — not because of any mathematical formula, but because they represent a direct record of what market participants were willing to pay during the prior session.
The previous day's high (PDH) marks where sellers overwhelmed buyers. The previous day's low (PDL) marks where buyers stepped in against sellers. The previous day's close (PDC) is the final consensus price of all participants before the market closed — the most recent "agreed fair value" before the new session begins.
These three levels reset daily, providing a fresh context for each trading session. Whether price opens above or below PDC establishes an immediate bias. Whether it can break PDH or hold PDL tells you something about the relative strength of today's session versus yesterday's. Every institutional algorithm tracks them; every serious intraday trader references them.
Institutional algorithms — the programs managing billions in capital — all begin each session by loading the previous day's OHLC. These are fixed, permanent reference points that don't change during the session. When multiple large systems are all watching the same level, the level becomes self-fulfilling: orders cluster there, and price reactions at those levels become more pronounced.
The levels also carry context about the prior session's narrative. A day that closed near its high (strong close) gives a different context to the next session than a day that closed near its low (weak close). The relationship between the current session's opening price and PDC communicates immediately whether sentiment has shifted overnight.
A clean break and hold above PDH is a bullish signal — the supply that capped price yesterday has been cleared. A reversal at PDH (price touches and retreats) confirms the prior session's resistance is still active.
### PDC — Previous Day Close (bias anchor) PDC is the simplest but arguably most powerful of the three. It is the last agreed-upon fair value from the prior session. Opening above PDC suggests overnight sentiment was bullish (buyers were willing to pay more than yesterday's final price). Opening below PDC suggests the reverse.
The intraday bias rule — trade in the direction suggested by price relative to PDC — is one of the most widely used institutional filters: if price is above PDC and holding above it, only look for long entries; if below and failing to reclaim it, only look for short entries.
### As a bias filter The simplest application: add a PDC check to every entry condition. `longEntry and close > pdClose` limits longs to sessions where price is showing above-PDC strength. This often improves win rate at the cost of fewer trades.
### As a target If you enter a long position and PDH is overhead, PDH is a natural take-profit level. Price frequently stalls or reverses at PDH on the first test. Setting a target at PDH gives you a defined, market-structure-based exit rather than an arbitrary ATR multiple.
### As a stop reference Stops placed just below PDL (for longs) or just above PDH (for shorts) make structural sense: if price violates the prior day's extreme in the direction against your trade, the session bias has shifted and the trade rationale is gone.
The same logic extends to higher timeframes. Previous week high/low (PWH/PWL) act as larger-scale reference points that are particularly significant for daily chart traders. Previous month levels function similarly for swing traders.
The code includes an optional previous week level display, using `"W"` as the timeframe in `request.security()`. The same pattern extends to monthly levels with `"M"`.
Previous day levels and session highs & lows are complementary tools. Session levels tell you what happened during specific activity windows today; previous day levels tell you what the prior session established. When a session level coincides with a previous day level — for example, the Asian session high aligning exactly with PDH — the combined zone carries significantly more weight than either level alone.
//@version=6
indicator("Previous Day High, Low & Close", overlay=true)
// ── Fetch previous day's OHLC via request.security() ─────────────────
// [1] offset requests the PREVIOUS daily bar's values.
// lookahead_on is correct here because the [1] offset means we are
// intentionally requesting completed, historical data — not the current day.
[pdHigh, pdLow, pdClose] = request.security(syminfo.tickerid, "D",
[high[1], low[1], close[1]],
lookahead=barmerge.lookahead_on)
// ── Optional: previous week levels ────────────────────────────────────
showWeekly = input.bool(false, "Show Previous Week Levels")
[pwHigh, pwLow, pwClose] = request.security(syminfo.tickerid, "W",
[high[1], low[1], close[1]],
lookahead=barmerge.lookahead_on)
// ── Intraday bias: above or below PDC ─────────────────────────────────
abovePDC = close > pdClose
// ── Plots ─────────────────────────────────────────────────────────────
plot(pdHigh, "PDH", color=color.new(color.red, 20), linewidth=1, style=plot.style_linebr)
plot(pdLow, "PDL", color=color.new(color.green, 20), linewidth=1, style=plot.style_linebr)
plot(pdClose, "PDC", color=color.new(color.orange, 20), linewidth=1, style=plot.style_linebr)
plot(showWeekly ? pwHigh : na, "PWH", color=color.new(color.red, 50), linewidth=1, style=plot.style_linebr)
plot(showWeekly ? pwLow : na, "PWL", color=color.new(color.green, 50), linewidth=1, style=plot.style_linebr)
plot(showWeekly ? pwClose : na, "PWC", color=color.new(color.orange, 50), linewidth=1, style=plot.style_linebr)
// ── Bias shading ───────────────────────────────────────────────────────
bgcolor(abovePDC ? color.new(color.green, 96) : color.new(color.red, 96),
title="Bias vs PDC")
// ── Labels at right edge ───────────────────────────────────────────────
if barstate.islast
label.new(bar_index + 2, pdHigh, "PDH", style=label.style_label_left,
color=color.new(color.red, 10), textcolor=color.white, size=size.small)
label.new(bar_index + 2, pdLow, "PDL", style=label.style_label_left,
color=color.new(color.green, 10), textcolor=color.white, size=size.small)
label.new(bar_index + 2, pdClose, "PDC", style=label.style_label_left,
color=color.new(color.orange, 10), textcolor=color.white, size=size.small)