OPEN-SOURCE SCRIPT

Volume Profile S/R Zones (Peaks)

130
Volume Profile S/R Zones (Peaks) is a volume-profile based support/resistance tool that converts significant volume nodes into tradable zones, then ranks them by how consistently price respected them over the selected lookback.

The script builds a rolling Volume Profile over a user-defined window (default 81 days) using a fixed number of price bins (default 33 rows). For each price bin it accumulates:

Total volume traded inside that price region

Bullish volume (lower-timeframe bars that close above open)

Bearish volume (implied as total − bullish)

The profile is plotted on the left side of the chart. All profile elements and zones are intentionally forced to a single clean style: white at 20% opacity (labels keep the chart’s default text color styling).

What it detects
1) High Volume Nodes (Peaks)

The script scans the profile rows and detects local maxima (HVNs). To prevent noisy “micro peaks,” a peak must pass two quality filters:

Relative-to-Max filter: peak volume must be at least a % of the largest node’s volume

Prominence filter: peak volume must exceed the average of nearby nodes by a minimum ratio

These filters remove weak nodes and keep only meaningful price areas where the market traded heavily.

2) Optional Low Volume Nodes (Troughs / LVNs)

When enabled, the script also detects local minima (LVNs). LVNs can behave like “barrier” areas where price rejects or moves quickly through.

Zones instead of lines

Each detected node becomes a zone, not a single price line.

Zone center = middle of the profile row

Zone thickness is adaptive:

Zone Half-Width = max(price bin size, ATR × fraction)

This makes zones robust to volatility and reduces “false breaks” caused by small wicks.

Zone merging (reduces clutter)

Nodes close to each other are merged into a single zone if their centers are within:

Merge Distance = ATR × fraction

The merged zone center becomes volume-weighted, so stronger nodes dominate.

Reliability scoring (the core feature)

Every zone is scored by replaying price interaction over the lookback window:

Events

Touch: candle range intersects the zone

Valid rejection: touch + close exits the zone in the expected direction

Confirmed break: close outside the zone, confirmed by:

distance beyond the zone (ATR-based), or

a minimum number of consecutive closes outside

Scoring

Touch adds points

Rejection adds more points

Confirmed break subtracts points

A decay factor is applied each bar so older interactions matter less than recent ones

This produces a practical ranking: zones that get repeatedly respected score high; zones that fail score low.

What you see on the chart

Left-side Volume Profile (white 20% opacity)

Top N strongest zones (ranked by score), drawn as horizontal bands across the chart

Right-side price labels showing each zone’s center price

Label tooltip includes:

zone center price

reliability score

current “role” (support-side vs resistance-side)

polarity bias (bull/bear/neutral based on volume delta)

Inputs and how to tune

Volume Profile

Profile Lookback (Days): defines market memory (short = tactical, long = structural)

Rows: resolution of price bins (higher = more detailed, lower = smoother)

Profile Width: visual width of the profile histogram

POC mode: optional regular or developing POC line

Zones

Top N Zones: limits clutter by plotting only the strongest zones

ATR Length / Zone Half-Width: controls how wide zones are

Prominence / Relative-to-Max: controls strictness of peak detection

Merge Distance: merges nearby zones into one

Scoring

Touch / Rejection / Break points

Decay factor (higher = longer memory)

Break confirmation settings (ATR distance + consecutive closes)

How to use (practical framework)

This indicator is designed to treat volume nodes as acceptance/rejection areas, not perfect lines:

Focus on high-score zones (they have the most recent evidence of being respected)

Use zones as:

potential accumulation/defense areas (support-side)

potential supply/ceiling areas (resistance-side)

Break confirmation is ATR-based to reduce false breakdowns/breakouts

For investing, many users run two instances:

long lookback (e.g., 252 days) for macro zones

shorter lookback (e.g., 81 days) for tactical entries

Notes / Limitations

The script is a historical structure tool, not a predictor.

Zones can shift gradually as the rolling lookback window updates.

Different assets (high volatility vs low volatility) may require different row counts and filter strictness.

License / Credits
Based on LuxAlgo’s Volume Profile foundation and heavily modified to add zone construction, merging, and reliability scoring.
Licensed under CC BY-NC-SA 4.0 (Attribution–NonCommercial–ShareAlike).

免责声明

这些信息和出版物并非旨在提供,也不构成TradingView提供或认可的任何形式的财务、投资、交易或其他类型的建议或推荐。请阅读使用条款了解更多信息。