Cross-Timeframe Value Overlay [AGPro Series]Cross-Timeframe Value Overlay
🔷 Overview
Cross-Timeframe Value Overlay projects up to three independent rolling value
bands — one per selected higher timeframe — onto a single chart. Each band
marks the region where price has been accepted on that timeframe over a
configurable lookback window, built from a volume-weighted or mean-based
anchor surrounded by an ATR envelope. A built-in state engine then classifies
the relationship between bands in real time as ALIGNED, OVERLAP, CONFLICT or
NEUTRAL, so multi-timeframe context becomes readable in a single glance.
🔷 What Makes This Different
Most multi-timeframe scripts stack indicators or draw fixed HTF pivots. This
tool builds a *rolling* value envelope on each timeframe and then compares
them structurally rather than numerically.
• Three independent MTF value bands on one chart, each with its own lookback
context and ATR-sized width.
• Dedicated state engine with four discrete regimes — ALIGNED / OVERLAP /
CONFLICT / NEUTRAL — based on pairwise band geometry, not on raw price.
• Dynamic z-order rendering that automatically draws the slowest timeframe
behind faster ones, and an opacity hierarchy that keeps the slowest band
lightest and the fastest band darkest. Larger structures frame smaller
ones instead of obscuring them.
• Rank-based label placement that prevents collisions when bands overlap in
price, so labels remain readable even during OVERLAP or ALIGNED states.
• Box width adaptively capped so a Daily band cannot swallow a 1H chart.
• Dominant-TF tracking that always reports the highest enabled timeframe and
the price position relative to its band.
🔷 Methodology
For each enabled timeframe the script computes:
• Anchor = VWAP (volume-weighted HLC3) over the rolling window, or HLC3 SMA
when volume data is unreliable.
• Half = ATR(window) multiplied by the configured band-width factor.
• Band = .
Values are requested with lookahead disabled, so historical band positions
reflect only data that was available at the time.
The state engine then evaluates:
• Pairwise overlap — do any two bands share a price region?
• Alignment — are all enabled band centers clustered within a strictness
threshold (Loose 1.2 ATR / Standard 0.8 ATR / Strict 0.4 ATR) of their
mean?
• Disjoint count — how many pairs are fully separated?
These three checks map deterministically to one of four states on every bar.
🔷 Signals and Alerts
Three built-in alert conditions cover the most useful MTF transitions:
• Value Overlap Detected — a new pairwise overlap forms between any two
enabled timeframes.
• Higher-Timeframe Value Lost — price leaves the dominant HTF value band
after being inside it on the previous bar.
• Cross-Timeframe Conflict — the state engine transitions into CONFLICT,
indicating that at least one enabled pair of bands has become fully
disjoint.
All alerts are wired as alertcondition() entries so they can be combined
with the standard PulseWire alert workflow.
🔷 Key Inputs
• Timeframes — enable/disable up to three HTFs and pick any resolution for
each (defaults 1H / 4H / Daily).
• Rolling Window — 10 to 500 bars for the anchor and ATR.
• Band Width — 0.25 to 3.0 ATR half-width.
• Anchor Method — VWAP + ATR or HLC3 MA + ATR.
• Alignment Strictness — Loose, Standard or Strict threshold for the state
engine.
• Show Only Overlapping Bands — hides isolated bands to keep confluence
zones visible.
• Visuals — per-TF color, base opacity, right-edge label toggle, label font
size.
• Panel — position, font size and master visibility switch.
🔷 How to Use
• Read the state first. ALIGNED = all enabled timeframes agree on a common
value region; OVERLAP = partial confluence; CONFLICT = disjoint
timeframes; NEUTRAL = fewer than two active bands or indeterminate.
• Read the Dominant row to see which timeframe currently carries the most
structural weight.
• Read the per-TF rows to locate price as Above / Inside / Below each band.
• Combine the three in a single pass: for example, price Above a dominant
HTF band while the state is CONFLICT is a very different context from
price Inside an ALIGNED stack.
• Pair with your existing entry framework (breakout, mean-reversion, order
flow, trend-following) — this tool is a context layer, not an entry
signal generator.
🔷 Limitations and Transparency
• Box-based rendering is capped at three concurrent bands by design to keep
the chart readable.
• All values are computed with lookahead disabled. Bands update when the
corresponding HTF bar closes, which is the expected behavior for any MTF
tool.
• Volume-weighted anchoring depends on the quality of the instrument's
volume feed; on markets with unreliable volume, switch to the HLC3 MA
method.
• This script is an analytical overlay. It is not a strategy, does not
produce buy/sell signals, and makes no forecasting claim.
🔷 Risk Disclosure
Trading involves substantial risk. This indicator is provided for research
and educational purposes only and does not constitute financial advice.
Past market behavior does not guarantee future results. Always perform your
own due diligence and use proper risk management.
Open-source under Mozilla Public License 2.0. Indicator

Mean Reversion Corridors [AGPro Series]Mean Reversion Corridors
🔹 Overview
Mean Reversion Corridors is a volatility-adaptive deviation framework that maps how far price has stretched from a chosen fair-value center and classifies that stretch into two actionable zones. An inner corridor marks the early reversion band where price is meaningfully extended but not yet extreme; an outer corridor marks statistical exhaustion where continuation becomes less probable under normal conditions. A higher-timeframe trend filter separates controlled mean reversion from failure-continuation expansions, so traders can tell fading the edge from respecting a real break — all from a single clean overlay.
🔸 Unique Edge
Most band systems (Bollinger, Keltner, ATR channels) offer a single width engine and a single band pair, leaving the trader to guess whether a tag is an exhaustion or a breakout. Mean Reversion Corridors is built around three ideas that work together:
- A dual-engine width unit that linearly blends ATR (range-based) and Standard Deviation (dispersion-based) so the corridor is stable on both gap-heavy and low-dispersion regimes.
- A two-layer corridor with distinct roles — inner for early stretch, outer for exhaustion — rendered as transparent zones you can read at a glance.
- A regime-aware state machine that uses a higher-timeframe trend filter to reclassify outer tags as either reversion candidates or failure-continuation, tracked as explicit REV and FAIL states with a bounded confirmation window.
🧠 Methodology
- Center Model — user choice of EMA, VWMA (volume-aware, default) or HMA (responsive), calculated on chart closes.
- Width Unit — the current volatility unit is a linear blend: (1 − blend) × ATR + blend × StDev, protected against empty volatility periods.
- Corridors — inner band at ±(width × inner multiplier), outer band at ±(width × outer multiplier). Stretch is reported in width-unit sigma.
- Trend Filter — the same center model is evaluated on a higher-timeframe via request.security with lookahead off, and its slope is normalized by ATR so the "strong" threshold is volatility-aware, not symbol-specific.
- State Machine — tracks the most recent outer-band extreme with a rolling 20-bar confirmation window. A reversion is confirmed only when price closes back inside the inner corridor and the trend filter is not strongly aligned with the original stretch. When the trend is strongly aligned, the outer break is reclassified as corridor failure (continuation).
- All conditions evaluate on confirmed bars to avoid repainting behavior.
⚡ Signals & Alerts
On-chart markers:
- REV — reversion confirmed back through the inner band after an outer extreme, trend-filtered.
- FAIL — corridor failure / trend-aligned continuation beyond the outer band.
Six bar-close alert conditions:
- Inner corridor entered — upside stretch
- Inner corridor entered — downside stretch
- Outer corridor hit — upside exhaustion
- Outer corridor hit — downside exhaustion
- Reversion confirmed
- Corridor failure (continuation)
⚙️ Key Inputs
- Center Model — EMA / VWMA / Hull
- Center Length and Volatility Length — independent lookbacks
- ATR ↔ StDev Blend — balance between range and dispersion engines
- Inner Corridor Width and Outer Corridor Width — in volatility units
- Trend Filter — enable, timeframe, length, strength threshold
- Visuals — outer-only mode, center line, fills, edge tags, state labels, label size
- Info Panel — show/hide, position (six options), font size
- Alerts — individually toggleable for each of the six events
📖 How to Use
- Start with the defaults on your main chart timeframe. The 34-period VWMA center, balanced blend and 1.0 / 2.2 inner/outer multipliers are chosen to work as a neutral starting point across liquid markets.
- Inner corridor tags are early stretch cues — they flag that price is extended, not that a turn is due. Use them as context for setups, not as standalone signals.
- Outer corridor tags with the trend filter neutral or opposed are the primary mean reversion setup; wait for a REV confirmation back inside the inner band before acting.
- When FAIL appears, the stretch is trend-aligned; treat the outer band as continuation, not resistance. This is the signal to stop fading.
- Use the Info Panel to read current state, reversion bias, trend regime and stretch magnitude in sigma at a glance.
⚠️ Limitations & Transparency
- This is an analytical tool, not a trading strategy or financial advice. It does not predict future price.
- Band-based classification assumes statistical behavior; during shocks, news events or illiquid sessions the width engine can lag.
- The trend filter uses a higher-timeframe slope — it reacts slower than short-term momentum by design, which is the intended behavior.
- Signals are evaluated on confirmed bars; intrabar crosses are not counted as events.
- Past behavior of any indicator does not guarantee future results. Always apply your own risk management. Indicator

Multi-Anchor VWAP Grid [AGPro Series]Multi-Anchor VWAP Grid
🔹 Overview
Multi-Anchor VWAP Grid is a volume-weighted analysis tool that plots five independently anchored VWAP lines on the same chart — anchored from swing high, swing low, higher-timeframe pivot, all-time high, and session open. Each anchored VWAP includes optional ±1σ and ±2σ standard deviation bands, forming a dynamic grid of volume-weighted support and resistance levels. When three or more VWAPs converge within a tight ATR-based band, the indicator draws a rectangular confluence zone highlighting the area as a higher-probability price reaction region.
The script is fully automatic. All five anchors are detected by internal engines (pivot detection, session detection, timeframe change detection, all-time-high tracker) and require no manual date picking or retroactive anchor placement. Install the indicator, select which anchors you want active, and the grid builds itself.
🔹 What It Does Differently
Most anchored VWAP tools plot one anchor at a time and require the user to manually place the anchor each time a new swing or event is identified. This script plots five anchors simultaneously and lets them compete for relevance. When multiple independent anchors agree on a price level, that agreement itself becomes the signal — visualized as a confluence zone. A single VWAP is one data point. Five VWAPs intersecting within 0.5 ATR of each other is a structural event.
The confluence detection engine tests each active VWAP as a reference point, counts how many others fall within the user-defined ATR tolerance, and picks the densest cluster on each bar. A minimum VWAP count threshold (default 3) prevents noise, and a lifecycle manager extends, adaptively resizes, and expires zones based on bar age and midpoint drift.
🔹 Methodology
**Anchor engines**
Swing High and Swing Low VWAPs reset on each confirmed pivot using the standard ta.pivothigh / ta.pivotlow detector with a configurable lookback length. HTF Pivot VWAP resets at the start of each selected higher-timeframe period (daily, weekly, or monthly) using timeframe.change. ATH VWAP resets whenever a new all-time high is printed on the visible chart. Session Open VWAP resets at the first bar of each trading session defined by the session window input.
**VWAP calculation**
Each anchor maintains three running accumulators since its last reset: sum of (price × volume), sum of volume, and sum of (price² × volume). VWAP is computed as the first divided by the second. Standard deviation is derived from the variance identity: sqrt(E − E ²), where E and E are computed from the running accumulators. Bands are plotted at configurable multipliers of this running standard deviation.
**Confluence engine**
On each bar, the script evaluates every active VWAP as a potential cluster center. For each candidate center, it counts how many other active VWAPs fall within ATR × tolerance distance. The cluster with the highest count wins. If the winning count meets or exceeds the minimum threshold, the bar is marked as confluence-active.
**Zone lifecycle**
When confluence becomes active, a new rectangular zone is created spanning the min/max of the clustered VWAPs. As long as confluence remains active and the cluster midpoint drifts less than 0.5 ATR from its original midpoint, the zone extends to the current bar and adaptively resizes with rate-limited expansion (maximum 1 ATR growth per bar per direction, preventing erratic stretching). If the midpoint drifts more than 0.5 ATR, a new zone is created. A 5-bar debounce prevents micro-breaks in confluence from prematurely closing active zones. Zones auto-expire after a configurable age limit (default 120 bars).
🔹 Signals and Panel Readouts
The information panel in the top-right corner (position and theme configurable) displays:
- **Price Bias** — count of VWAPs price is currently above vs below, with an overall BULL / BEAR / MIXED classification
- **Confluence** — current status (active with cluster count, or none) and the minimum-count threshold in use
- **Closest VWAP** — which of the five VWAPs is currently closest to price, and the distance in ATR units
- **Active VWAPs** — each enabled VWAP's current value and percent distance from close
Two alert conditions are built in: new confluence zone detection, and price crossing any active VWAP line.
🔹 Key Inputs
**Anchor Points group** — toggle each of the five VWAPs on or off, set swing pivot lookback length, choose HTF timeframe (D/W/M), define the session window for intraday anchoring.
**Deviation Bands group** — toggle bands on or off, configure band 1 and band 2 multipliers, enable or disable gradient fills between VWAP and the first band.
**Confluence Zones group** — toggle zones on or off, set minimum VWAPs required for a confluence (2 to 5), adjust the ATR-based tolerance, define maximum zone age in bars.
**Panel group** — toggle panel, choose location (six positions), select Dark or Light theme, set font size (Small / Normal / Large).
**Labels group** — toggle the compact end-of-line labels that identify each VWAP at the right edge of the chart.
🔹 How to Use
This indicator is designed as a context layer, not a standalone entry signal. Suggested workflow:
**1. Identify structural bias.** Check the Price Bias row in the panel. If 4 or 5 VWAPs sit below price (BULL), the market is trading above its most relevant volume-weighted averages across multiple timeframes and event contexts. The opposite applies for BEAR.
**2. Watch for confluence formation.** When the panel shows Confluence ACTIVE with 3 or more VWAPs clustered, a meaningful volume-weighted support or resistance area is forming. These zones often precede reaction or reversal behavior.
**3. Use bands for context.** When price trades near the ±1σ band of a single VWAP, reversion back toward that VWAP is statistically more likely. ±2σ extensions indicate volatility outliers.
**4. Cross-reference with your own tools.** This script is most useful combined with price action, volume profile, or a trend filter of your choice. It does not generate entries or exits on its own.
🔹 Tips
- On crypto 24h markets, set Session Window to 0000-2359 for a full-day session VWAP.
- Higher Swing Pivot Length values (30–50) filter noise on higher timeframes; lower values (10–15) are better for intraday.
- If the chart feels visually crowded, disable the ±2σ bands or reduce the number of active anchors. All five are rarely needed simultaneously.
- For the strongest confluence signals, increase Min VWAPs for Confluence to 4 — rarer but higher conviction.
🔹 Limitations and Transparency
- The script uses standard Pine Script pivot detection for swing anchors. Pivots are confirmed only after the pivot length has passed, which means swing VWAP anchors are placed retrospectively by that many bars. This is an inherent limitation of all pivot-based tools, not a bug.
- ATH tracking is limited to the visible chart range. On timeframes or symbols where the chart does not load full history, the "ATH" anchor represents the highest point within loaded data, not the true all-time high.
- Standard deviation bands assume price dispersion around each VWAP is approximately normal over the anchored period. In strongly trending markets, this assumption weakens and bands may widen significantly.
- Confluence zones are descriptive, not predictive. They mark areas where multiple volume-weighted averages happen to agree. They do not guarantee price reaction, only indicate where reaction is more plausible than average.
- Session Window input must match the instrument's trading hours to produce a meaningful intraday VWAP. Incorrect session definitions will produce misleading anchor points.
🔹 Risk Disclosure
This indicator is provided for educational and analytical purposes only. It is not financial advice, investment advice, or a recommendation to buy, sell, or hold any asset. All trading involves substantial risk of loss. Past chart behavior and historical VWAP reactions do not guarantee future results. Users are solely responsible for their own trading decisions and risk management. Always combine indicator output with independent analysis and appropriate position sizing. The author accepts no responsibility for any financial outcome resulting from the use of this script. Indicator

Iterative Locally Periodic EnvelopeThe Iterative Locally Periodic Envelope is a phase-conditioned kernel estimator with temporal locality and endogenous dispersion modeling, implemented as a Nadaraya–Watson estimator under a locally periodic kernel.
The locally periodic kernel defines similarity through cyclical phase alignment modulated by temporal proximity. Observations contribute to the estimator based on both their position within a repeating cycle structure and their recency, emphasizing structural recurrence with sensitivity to local regime conditions.
The indicator computes a latent equilibrium using a kernel-weighted mean and a dispersion measure using kernel-weighted variance under the same weighting structure. The resulting envelope reflects cycle-consistent deviation with temporal locality, rather than a conventional volatility band. All values are computed exclusively on closed historical bars using a bounded lookback window to ensure non-repainting behavior.
This indicator belongs to a broader class of iterative kernel-based envelopes that includes Gaussian, Rational Quadratic, and Periodic variants. All share a common Nadaraya–Watson estimation framework, differentiated by their kernel.
TRADING USES
The Iterative Locally Periodic Envelope is best interpreted as a cycle-aware structural estimator with adaptive temporal sensitivity, rather than a volatility-based band. The temporal locality component allows the estimator to adapt more readily to emerging regime shifts than the pure periodic variant.
Equilibrium Tracking
The latent equilibrium represents the phase-conditioned central tendency of price under locally periodic similarity weighting. Oscillations around this level reflect movement within a repeating structural cycle, with more recent phase-aligned observations contributing more strongly than temporally distant ones.
Cycle Regime Structure
The envelope emphasizes repeating structural behavior through phase recurrence weighting, modulated by temporal decay. Changes in symmetry, amplitude, or persistence of oscillation around the latent equilibrium may indicate transitions between cyclical regimes.
Mean Reversion Within Cycles
When a stable periodic structure is present, deviations from the latent equilibrium may revert toward phase-consistent levels. Mean-reversion behavior is conditioned on both cycle structure and temporal proximity.
Structural Extremes
Extreme deviations relative to the envelope correspond to phase-inconsistent states where cyclical structure becomes stretched or destabilized. Because the kernel incorporates temporal decay, these conditions are identified with greater sensitivity to recent price behavior.
State Estimation
The system defines a latent equilibrium as the inferred central cyclical state under joint phase and temporal weighting, with dispersion derived from kernel-weighted variance under identical constraints. This produces a structurally consistent representation of the market state that is sensitive to both cyclical position and local regime conditions.
LOCALLY PERIODIC ENVELOPE CONSTRUCTION
The envelope is constructed using kernel-weighted variance under the same locally periodic similarity measure used to estimate the latent equilibrium. The latent equilibrium defines the central state estimate and kernel-weighted variance defines dispersion under identical weighting, producing an endogenously determined envelope. The band width is fixed at ±1 kernel standard deviation with no multiplier, ensuring dispersion remains an intrinsic property of the locally periodic similarity structure rather than an externally imposed scaling parameter.
THEORY
The locally periodic kernel defines similarity in terms of cyclical phase recurrence modulated by temporal proximity. Observations contribute to the estimator based on alignment within a repeating cycle structure, with influence attenuated by temporal distance from the estimation point.
The estimator is formulated as a Nadaraya–Watson kernel regression under a locally periodic kernel, where weights are defined as:
k(i) = exp( -2 · sin²(πi / p) / L² ) · exp( -i² / 2L² )
Where:
p = period (cycle length)
L = lookback window (shared bandwidth parameter; effective smoothing scales with L²)
In this MacKay consistent formulation, the lookback window acts as a unified bandwidth parameter governing periodic phase selectivity and the Radial Basis Function (RBF) temporal decay envelope. The two components are coupled through L, producing a kernel that simultaneously emphasizes phase-aligned and temporally proximate observations.
As L increases, both the periodic and RBF components broaden, producing stronger smoothing across phase and time. As L decreases, phase selectivity and temporal locality both increase, making the estimator more sensitive to recent cycle-consistent observations.
This induces a similarity structure in which influence concentrates at phase-aligned intervals within a temporally bounded neighborhood. The resulting estimator defines a latent equilibrium governed by phase alignment and temporal proximity that can be interpreted as a locally stationary periodic extension of kernel regression on a circular phase manifold.
The key distinction from the pure periodic kernel is that phase-aligned observations at distant lags are progressively suppressed by the RBF decay term, allowing the estimator to adapt to structural drift while preserving cycle-aware weighting. During stable cyclical regimes the two estimators converge; during structural transitions the locally periodic variant adapts faster by downweighting older phase information.
CALIBRATION
As established in Gaussian Processes for Machine Learning (Rasmussen & Williams, 2006), the period should reflect the recurrence interval of the dominant cycle in the data, while the bandwidth parameter L controls how quickly similarity decays away from perfect phase alignment. For daily charts, common cycle anchors include the trading week (~5 bars), trading month (~21 bars), trading quarter (~63 bars), and trading year (~252 bars).
Length (Lookback / Bandwidth)
Controls structural depth of the estimator and acts as the unified bandwidth parameter for the periodic and RBF components; as L governs phase selectivity and temporal decay simultaneously, its effect is stronger than in the pure periodic variant. The default of 100 reflects the locally periodic kernel's temporal decay component; at longer lengths the RBF term weakens and behavior converges toward the pure periodic estimator.
- 50–100: high responsiveness, strong temporal locality, short-cycle sensitivity
- 150–250: balanced regime stability with moderate temporal decay
- 300+: broad structural smoothing, weak temporal decay, behavior converges toward pure periodic envelopes
Period (Cycle Length)
Defines the recurrence interval of the kernel and governs phase alignment and cyclical structure. Shorter periods increase phase resolution and cycle sensitivity, while longer periods emphasize broader structural recurrence. The period should reflect the dominant cycle present in the data, aligned with the anchor scales defined above.
Start At Bar
Offsets the kernel window backward from the most recent bars and excludes newer observations from the estimator. This ensures all calculations are based strictly on closed historical data and preserves non-repainting behavior.
MARKET USAGE
Stock, Forex, Crypto, Commodities, and Indices.
Performance is dependent on the presence of stable cyclical structure; in regimes lacking periodic coherence, the estimator converges toward a local smoother with reduced phase discrimination. Indicator

Iterative Periodic EnvelopeThe Iterative Periodic Envelope is a phase-conditioned kernel estimator with endogenous dispersion modeling, implemented as a Nadaraya–Watson estimator under a canonical periodic kernel.
The periodic kernel defines similarity through cyclical phase alignment rather than temporal proximity or multi-scale distance decay. Observations contribute to the estimator based on their position within a repeating cycle structure, emphasizing structural recurrence over linear time dependence.
The indicator computes a latent equilibrium using a kernel-weighted mean and a dispersion measure using kernel-weighted variance under the same weighting structure. The resulting envelope reflects cycle-consistent deviation, rather than a conventional volatility band. All values are computed exclusively on closed historical bars using a bounded lookback window, ensuring non-repainting behavior.
This indicator belongs to a broader class of iterative kernel-based envelopes that includes Gaussian and Rational Quadratic variants. All share a common Nadaraya–Watson estimation framework, differentiated by their kernel.
TRADING USES
The Iterative Periodic Envelope is best interpreted as a cycle-aware structural estimator rather than a volatility-based band.
Equilibrium Tracking
The latent equilibrium represents the phase-conditioned central tendency of price under periodic similarity weighting. Oscillations around this level reflect movement within a repeating structural cycle rather than directional drift.
Cycle Regime Structure
The envelope emphasizes repeating structural behavior through phase recurrence weighting. Changes in symmetry, amplitude, or persistence of oscillation around the latent equilibrium may indicate transitions between cyclical regimes.
Mean Reversion Within Cycles
When a stable periodic structure is present, deviations from the latent equilibrium may revert toward phase-consistent levels. This supports mean-reversion behavior that is conditioned on cycle structure rather than purely statistical dispersion.
Structural Extremes
Extreme deviations relative to the envelope correspond to phase-inconsistent states where cyclical structure becomes stretched or destabilized. These conditions often precede transitions such as cycle inversion, expansion, or compression.
State Estimation
The system defines a latent equilibrium as the inferred central cyclical state, with dispersion derived from kernel-weighted variance under identical periodic similarity constraints. This produces a structurally consistent representation of market state.
PERIODIC ENVELOPE CONSTRUCTION
The envelope is constructed using kernel-weighted variance under the same periodic similarity measure used to estimate the latent equilibrium. The latent equilibrium defines the central state estimate and kernel-weighted variance defines dispersion under identical weighting, producing an endogenously determined envelope. The band width is fixed at ±1 kernel standard deviation with no multiplier, ensuring dispersion remains an intrinsic property of the periodic similarity structure rather than an externally imposed scaling parameter.
THEORY
The periodic kernel defines similarity in terms of cyclical phase recurrence rather than linear temporal distance. Observations contribute to the estimator based on alignment within a repeating cycle structure.
The estimator is formulated as a Nadaraya–Watson kernel regression under a canonical periodic kernel, where weights are defined as:
k(i) = exp( -2 · sin²(πi / p) / L² )
Where:
p = period (cycle length)
L = lookback window (bandwidth parameter; effective smoothing scales with L²)
In this MacKay consistent formulation, the lookback window acts as a bandwidth control parameter, governing phase selectivity and structural smoothing. As L increases, the kernel becomes broader, producing stronger smoothing and reduced phase sensitivity. As L decreases, phase selectivity increases and the estimator becomes more locally sensitive to cyclical alignment.
This induces a cyclical similarity structure in which influence concentrates at recurring phase intervals. The resulting estimator defines a latent equilibrium governed by phase alignment rather than temporal proximity. This formulation can be interpreted as a periodic extension of kernel regression on a circular phase manifold.
CALIBRATION
Length (Lookback / Bandwidth)
Controls structural depth of the estimator and acts as the primary kernel bandwidth parameter.
- 50–100: high responsiveness, short-cycle sensitivity
- 150–250: balanced regime stability
- 300+: strong structural smoothing, reduced sensitivity to phase noise
Period (Cycle Length)
Defines the recurrence interval of the kernel and governs phase alignment and cyclical structure. Commonly aligns with dominant market rhythms such as intraday or macro-cycle structure.
- Lower values: faster cycle sensitivity
- Higher values: slower, broader structural cycles
Start At Bar
Offsets the kernel window backward from the most recent bars and excludes newer observations from the estimator. This ensures all calculations are based strictly on closed historical data and preserves non-repainting behavior.
MARKET USAGE
Stock, Forex, Crypto, Commodities, and Indices.
Performance is dependent on the presence of stable cyclical structure; in regimes lacking periodic coherence, the estimator converges toward a smoother, low-information state. Indicator

Meridian Lens PRO🟦 Meridian Lens PRO is a multi-kernel trend indicator built on the KernelLens Nadaraya–Watson regression library (a_jabbaroff/KernelLens/1). Three independently configurable kernel lines — Fast, Medium, and Slow — cover the full reactivity spectrum from scalping to position trading, each accepting any of the eight kernel families and three filter modes exposed by the library. The visual layer applies volume-intensity-adaptive coloring, gradient-filled trailing bands, 3-layer neon glow signal arrows, and a theme-aware dashboard — all driven by a single theme selection from ten optical-brand palettes.
🟦 HOW IT WORKS
Meridian Lens PRO calls the KernelLens library's unified dispatcher (`kl.estimate`) three times per bar — once for each kernel line:
```
Fast = kl.estimate(type, src, bw=8, α, period, phase, filter)
Medium = kl.estimate(type, src, bw=16, α, period, phase, filter)
Slow = kl.estimate(type, src, bw=32, α, period, phase, filter)
```
Each line independently selects its kernel family (Rational Quadratic, Gaussian, Periodic, Locally Periodic, Epanechnikov, Tricube, Triangular, Cosine), its filter mode (No Filter / Smooth / Zero Lag), its bandwidth, shape α, period, phase, and line width. The library handles all weighted-sum computation, loop-depth selection, NA-safe iteration, and input validation internally.
The Medium line is the primary trend reference — it drives the trailing bands, the main signal arrows, the dashboard trend cell, and the direction variable that colors every visual component. The Fast line provides early-warning reactivity for short-term entry timing. The Slow line anchors the macro trend for crossover logic and confluence scoring.
🟦 KERNEL LIBRARY INTEGRATION
Meridian Lens imports the published KernelLens library and uses the following exports:
| Library Export | Used For |
|---|---|
| `kl.estimate()` | Unified dispatcher — routes to the correct kernel based on user's dropdown selection |
| `kl.trendState()` | Returns +1 / −1 / 0 for each kernel's slope — drives dashboard arrows and signal triggers |
| `kl.crossSignal()` | Detects Fast × Slow crossovers — drives the Cross row in the dashboard and crossover alerts |
The indicator does not reimplement any kernel math — all regression computation is delegated to the library, ensuring that every bug fix or optimization in the library automatically propagates to this indicator.
🟦 THREE KERNEL LINES
**Fast Kernel** — The most reactive line. Default bandwidth 8, No Filter. Designed for scalping and short-term entry timing. Flips direction frequently on noisy charts — its signal markers are OFF by default to avoid visual clutter.
**Medium Kernel** — The primary trend reference. Default bandwidth 16, Smooth filter. Drives the trailing bands, the main 3-layer glow signal arrows, the dashboard Trend cell, and the direction variable that colors every visual component. This is the indicator's core signal.
**Slow Kernel** — The macro trend anchor. Default bandwidth 32, Smooth filter. Provides structural support for crossover logic (Fast × Slow) and triple-line confluence scoring. Its signal markers are ON by default because Slow flips are rare and meaningful.
Each kernel group exposes: Show toggle, Kernel Type dropdown (8 families), Bandwidth, Shape α (RQ only), Period (Periodic / Locally Periodic only), Phase (non-repainting offset), Filter (None / Smooth / Zero Lag), and Line Width.
🟦 NON-REPAINTING BEHAVIOR
Meridian Lens inherits non-repainting behavior directly from the KernelLens library's `_phase` parameter. Each kernel line has its own Phase input (default: 2), which shifts the kernel center into the past by that many bars.
- Phase = 0 — live estimate, flickers on the current bar (real-time only; history is immutable)
- Phase = 1 — 1-bar lag, non-repainting once the bar is confirmed
- Phase = 2 — recommended balance between freshness and stability (default)
- Phase = 3+ — extra stability for swing and position trading
Historical repainting never occurs at any phase value. The library contains no `request.security` calls, no lookahead, and no array rotation that could leak future data. Every historical bar's plotted value is final once confirmed.
🟦 SIGNAL SYSTEM
The indicator produces three tiers of trend-flip signals, each visually distinct:
**Medium Signals (Primary)** — 3-layer neon glow arrows rendered when the Medium kernel's direction flips. The outer halo is large and 80% transparent, the middle layer is normal-sized and 50% transparent, and the core arrow is small and fully opaque — creating a luminous halo effect on dark charts. Controlled by the "Glow Effect" toggle.
**Slow Signals** — Minimal tiny arrows (40% transparent) that fire when the Slow kernel flips direction. ON by default — these mark rare, meaningful macro trend changes.
**Fast Signals** — Minimal tiny arrows (40% transparent) that fire when the Fast kernel flips direction. OFF by default — enable for early-warning entry timing on lower timeframes.
🟦 VISUAL PIPELINE
**Volume-Intensity Adaptive Color** — The Medium line's transparency responds to the current volume reading. High volume = bright line (volume-confirmed trend), low volume = dim line (low-conviction drift). Uses a 33-bar HMA-smoothed normalized volume metric. Disable for a fixed 50% transparency.
**Trailing Bands** — Gradient-filled bands on the bullish/bearish side of the Medium line. Band width is driven by the rolling 100-bar average candle body size multiplied by a configurable distance factor (default: 2.0×). Bull bands fill below the Medium line during uptrends, bear bands fill above during downtrends.
**Theme System** — Ten cohesive palettes drive every visual component:
| Theme | Bull | Bear |
|---|---|---|
| Prism | Forest green | Crimson red |
| Focus | Cyan steel | Deep orange |
| Solar | Warm amber | Indigo red |
| Frost | Sky blue | Soft lavender |
| Laser | Neon lime | Hot crimson |
| Aurora | Bright gold | Scarlet |
| Plasma | Electric aqua | Magenta |
| Bloom | Mint green | Hot pink |
| Eclipse | Deep navy | Dark crimson |
| Carbon | Near-black | Silver grey |
🟦 PRO DASHBOARD
A 2-column, 11-row theme-aware status panel that updates only on the last bar (zero historical overhead). Supports Dark and Light display modes with configurable position and text size.
| Row | Label | Content |
|---|---|---|
| Header | MERIDIAN LENS | DARK / LIGHT |
| Theme | Theme | Active palette name |
| Kernel | Kernel | Medium kernel type |
| Divider | KERNELS | — |
| Fast | Fast | ▲/▼ + price value (bull/bear colored) |
| Medium | Medium | ▲/▼ + price value (bull/bear colored) |
| Slow | Slow | ▲/▼ + price value (bull/bear colored) |
| Divider | SIGNALS | — |
| Trend | Trend | ▲ BULL / ▼ BEAR |
| Cross | Cross | ↑ UP / ↓ DOWN / — |
| Strength | Strength | ▰▰▰ TRIPLE / ▰▰▱ STRONG / ▰▱▱ WEAK / ▱▱▱ NEUTRAL |
**Confluence Strength** — Counts how many of the three kernels (Fast, Medium, Slow) have their trend aligned with the Medium's direction. Score 3 = TRIPLE BULL/BEAR, 2 = STRONG, 1 = WEAK, 0 = NEUTRAL.
🟦 ALERT CONDITIONS
Six opt-in alert conditions, each gated by its own toggle:
| Alert | Fires When |
|---|---|
| Bull Crossover | Fast line crosses above Slow line |
| Bear Crossover | Fast line crosses below Slow line |
| Trend Up | Medium kernel trend flips to rising |
| Trend Down | Medium kernel trend flips to falling |
| Triple Bullish | Fast > Medium > Slow AND Medium rising |
| Triple Bearish | Fast < Medium < Slow AND Medium falling |
All alerts use `alertcondition()` for maximum compatibility with PulseWire's alert system including webhooks.
🟦 RECOMMENDED PRESETS
| Style | Fast bw | Med bw | Slow bw | Phase | Med Filter | Chart |
|---|---|---|---|---|---|---|
| Scalper | 4–8 | 8–16 | 16–32 | 1 | No Filter | 1m–5m |
| Day Trader | 8–12 | 14–24 | 24–48 | 2 | Smooth | 15m–1h |
| Swing | 16–24 | 24–40 | 48–80 | 2 | Smooth | 4h–1D |
| Position | 24–48 | 40–80 | 80–200 | 3 | Smooth | 1D–1W |
🟦 COMPATIBILITY
- Pine Script v6
- All exchanges, all asset classes (crypto, forex, equities, commodities)
- All timeframes (1 minute through Monthly)
- No exchange-specific logic — fully deterministic
🟦 TECHNICAL NOTES
- **Library dependency** — `import a_jabbaroff/KernelLens/1` — all kernel regression math is delegated to the library
- **Plot budget** — 5 plots + 2 fills + 10 plotshapes = well under Pine's 64-plot limit
- **Table** — Single `var table` created once on `barstate.islast`, zero historical overhead
- **No persistent drawing objects** — no `box.new`, `label.new`, `line.new` — no garbage collection needed
- **Non-repainting** — inherits from the library's `_phase` parameter; no `request.security`, no lookahead
- **Volume-intensity** — uses HMA-smoothed normalized volume (33-bar window) for adaptive transparency
🟦 DISCLAIMER
Meridian Lens PRO is a technical analysis overlay indicator built on the KernelLens Nadaraya–Watson regression library. It is provided solely for educational and research purposes and does not constitute financial, investment, or trading advice.
Kernel regression is a local smoothing technique. It estimates the mean of a source series in the neighborhood of the current bar based on historical data, but it does not predict future prices, does not generate trading signals on its own, and does not guarantee the profitability of any strategy built on top of its output.
Past performance of any model does not guarantee future results. Markets contain systemic risks that cannot be eliminated by any amount of mathematical rigor. Responsibility for any trading decisions rests entirely with the user. Always apply sound capital management, conduct your own independent analysis, and never risk capital you are not prepared to lose.
The author assumes no liability for direct or indirect losses incurred through the use of Meridian Lens or the underlying KernelLens library.
Indicator

Iterative Rational Quadratic ChannelThe Iterative Rational Quadratic Channel is a kernel-based smoothing and state estimation framework that applies a Rational Quadratic kernel regression to price data, combined with a rolling standard deviation envelope to construct adaptive dynamic channel boundaries.
Unlike exponential kernel methods that prioritize recent data at the expense of historical context, the rational quadratic kernel introduces a heavy-tailed weighting structure that preserves multi-scale memory in price dynamics. This enables the channel to reflect not only short-term fluctuations, but also broader structural regime context.
The resulting channel is less reactive to micro-noise and more representative of persistent market structure, making it particularly effective for trend continuity analysis, regime modeling, and reducing sensitivity to false reversals.
Its primary utility is as a state estimation and regime-filtering tool for price behavior, rather than a pure high-frequency signal isolation tool.
TRADING USES
The Rational Quadratic Channel is best interpreted as a regime-aware structural filter rather than a purely reactive trading band.
Trend Continuity
The channel basis line (RQ smoothed price) provides a stable representation of underlying market direction. Sustained movement above or below the basis reflects trend persistence rather than short-lived fluctuations, making it useful for maintaining directional bias.
Regime Persistence
Due to the heavy-tailed memory of the rational quadratic kernel, historical price structure continues to influence current valuation. This produces smoother transitions between market phases and reduces sensitivity to short-term reversals, improving regime stability.
False Reversal Filtering
Compared to exponentially weighted kernels, the RQ channel reduces overreaction to transient volatility spikes. This helps filter out low-quality reversals driven by noise rather than structural change.
State Estimation
The channel functions as a continuous estimator of market state:
- The basis represents the inferred latent price state
- The envelope represents dynamic volatility dispersion around that state
This makes it well-suited for manual, semi-automated, and automated trading systems requiring a stable structural representation of price rather than raw responsiveness. Gradual shifts in the basis line and channel position can also serve as a framework for monitoring changes in trend direction and regime transitions over time.
Volatility & Risk Context
The rolling standard deviation envelope expands and contracts based on realized volatility, providing a contextual risk framework. Wider channels indicate increased uncertainty and dispersion, while tighter channels indicate compression and lower variance conditions.
THEORY
The rational quadratic kernel is a member of the scale-mixture family of Gaussian kernels and can be interpreted as a superposition of Gaussian processes operating at multiple length scales. This allows it to capture both local and global structure in time series data.
It is defined as:
k(i)=(1+i22αℓ2)−αk(i) = \left(1 + \frac{i^2}{2\alpha \ell^2}\right)^{-\alpha}k(i)=(1+2αℓ2i2)−α
Where:
---> α\alphaα controls tail heaviness (relativeWeight)
---> ℓ\ellℓ defines the characteristic scale (lookback)
Unlike Gaussian kernels, which enforce exponential decay and emphasize locality, the rational quadratic kernel follows a power-law decay. This allows older observations to retain influence over the estimator for longer periods, producing a smoothing effect that is inherently multi-scale and well-suited for modeling persistent structural behavior.
The rolling standard deviation complements this by measuring dispersion around the estimated state, forming a volatility-adaptive envelope. Rather than acting as a strict statistical confidence interval, it provides a dynamic representation of market expansion and contraction.
The iterative implementation processes data sequentially (bar-by-bar), ensuring computational efficiency and making the indicator suitable for real-time use without repainting.
CALIBRATION
Calibration determines the balance between responsiveness, structural memory, and regime stability.
Length (Lookback)
Lower (50–100): More responsive, increased sensitivity to short-term structure
Medium (150–250): Balanced for swing trading and intermediate regimes
Higher (300+): Strong regime persistence, reduced sensitivity to noise
Relative Weight (Tail Sensitivity)
Controls how quickly historical influence decays:
Lower values (≈ 0.5 – 1.0):
- Behavior approaches Gaussian
- More responsive to recent price action
- Faster detection of trend changes
- Slightly more sensitive to noise
Higher values (≈ 2.0+):
- Stronger heavy-tail behavior
- Increased influence of older price data
- Smoother output and stronger regime anchoring
- Improved false reversal filtering
Start At Bar (Lag / Structural Anchoring)
Controls how much recent price data is excluded from the kernel calculation:
Lower values (0–10):
- Uses most recent data
- Faster reaction to price changes
- More sensitive to short-term volatility
Moderate values (10–30):
- Balanced responsiveness and stability
- Reduces noise without excessive lag
- Suitable for most trading environments
Higher values (30+):
- Strong structural anchoring
- Significantly reduced sensitivity to recent fluctuations
- Enhanced regime persistence
- Slower response to turning points
This parameter effectively introduces a controlled lag, allowing users to tune the tradeoff between responsiveness and regime stability.
MARKET USAGE
Stock, Forex, Crypto, Commodities, and Indices. Indicator

AG Pro ATR Envelope Breakout Quality [AGPro Series]AG Pro ATR Envelope Breakout Quality
Overview / What it does
AG Pro ATR Envelope Breakout Quality is a volatility-aware breakout framework built around a dynamic ATR envelope rather than a static horizontal level, fixed box, or session-defined range. The script tracks when price closes outside an ATR-based outer band, then evaluates whether that move shows enough quality to be treated as a meaningful breakout instead of a weak expansion, short-lived overshoot, or low-conviction push.
The core logic is centered on three linked questions. First, did price achieve a valid close outside the active envelope? Second, was that move supported by enough momentum and relative participation to deserve attention? Third, what happened when price came back toward the broken area? This progression allows the script to move beyond a simple breakout marker and present a more structured breakout-quality workflow.
Because the reference structure is dynamic, the script adapts to changing market conditions instead of forcing all setups into a fixed box logic. In periods of contraction, the envelope tightens and makes outside acceptance more meaningful. In periods of expansion, the envelope widens and helps separate true continuation pressure from ordinary volatility noise. This makes the tool especially useful for traders who want to judge whether an expansion is merely visible or genuinely tradable.
The visual design is intentionally clean and overlay-first. The envelope defines the active volatility shell, breakout markers show where price escapes that shell, the throwback zone highlights the key acceptance pocket after the move, and the optional target line provides a simple expansion objective. A compact panel then summarizes the current state without taking over the chart. The result is a script that aims to look premium while still keeping the main story readable in a publish screenshot.
Unique Edge
The main distinction of this script is that it does not evaluate breakout quality from a static support/resistance line, a consolidation rectangle, a Donchian extreme, or an opening range boundary. It evaluates breakout quality from a moving ATR envelope. That difference is not cosmetic. It changes the entire logic of what counts as a breakout, how follow-through is judged, and how retests are interpreted.
In several classic breakout tools, the market is asked to escape a fixed historical structure. Here, the market is asked to achieve acceptance outside a live volatility shell. This creates a different analytical lens. A move that looks impressive relative to a flat level may not be meaningful relative to a volatility-adjusted envelope. On the other hand, a clean close outside an adaptive outer band can reveal expansion quality that a simple line break would miss.
This also separates the script from our other AG Pro tools. It is not a consolidation breakout evaluator, because its reference structure is not a box. It is not a Donchian breakout tool, because it is not based on period highs and lows. It is not an opening-range breakout model, because it is not session-box dependent. It is not a standard break-retest script, because the retest here happens around a dynamic envelope acceptance area rather than around a static horizontal level.
That distinction matters both analytically and visually. Analytically, the script focuses on volatility-adjusted breakout acceptance. Visually, it produces a different type of chart story: an active envelope, a breakout event, a throwback pocket, and a projected path. This gives the script its own place inside the AG Pro catalog rather than making it feel like a variation of an existing breakout family member.
Methodology
The script begins with an ATR-based envelope built around a moving basis. This creates an adaptive upper and lower band that expand or contract with market volatility. A bullish breakout candidate appears when price closes outside the upper band. A bearish breakout candidate appears when price closes outside the lower band. Wick-only excursions are not enough. The script is designed to care about acceptance, not mere contact.
Once an outside close is detected, the script evaluates breakout quality through a compact scoring framework. Momentum contribution helps measure whether the breakout candle shows real displacement or just a hesitant push. Volume contribution helps detect whether the breakout is supported by stronger-than-usual participation or whether it lacks confirmation. The combined result becomes the displayed breakout-quality score.
After the initial breakout, the script monitors the first return toward the broken band area. This is where the throwback logic becomes important. Instead of treating every pullback the same way, the script classifies what happens around the envelope area and updates the state accordingly. A successful hold suggests that the market accepted the breakout. A failure suggests that the move lost structural quality after the initial expansion.
An optional target line can be used to project a simple post-breakout objective. This is not presented as a promise of outcome. It is a visual planning reference intended to show a possible expansion path if the breakout continues to behave constructively. Together, the envelope, the breakout signal, the throwback state, and the target framework create a full breakout-quality sequence rather than a single event label.
Signals & Alerts
The script is designed to organize the breakout workflow into visible states rather than flooding the chart with constant commentary. The main states include bullish breakout, bearish breakout, throwback monitoring, throwback hold, breakout failure, and target hit. This makes the chart easier to read and helps the user understand where the setup currently stands.
Bullish and bearish breakout markers appear when price achieves a confirmed outside close beyond the relevant envelope band. These are the initial expansion events. They are then followed by a monitoring phase in which the script watches how price behaves around the broken band area. If the return is constructive, the script can label that behavior as a successful hold. If the move loses quality and breaks down, the script can classify it as a failure.
The target marker is optional and functions as a planning aid, not as a certainty engine. It simply shows that the projected expansion objective has been reached based on the chosen configuration. In practical use, this can help traders separate the breakout event itself from the later progression of the move.
The alert set is intended to remain deterministic and chart-state aware. It focuses on confirmed breakout events, throwback behavior, breakout failure, and target completion. This keeps the script aligned with workflow clarity instead of turning it into a noisy alert generator.
Key Inputs
The envelope settings control the moving basis, ATR length, and multiplier that define the adaptive breakout shell. These settings determine how sensitive the script is to changing volatility and how demanding the outside-close condition becomes.
The breakout filter settings allow the user to regulate confirmation quality. Depending on the selected configuration, the script can require stronger momentum, clearer outside distance, and optional volume confirmation. This helps users decide whether they want a more selective or more responsive model.
The throwback analysis settings define how the script interprets the first return toward the broken envelope area. These settings influence how deeply price can revisit the area before the move is treated as weak, failed, or still acceptable.
The target settings control whether the projected objective is shown and how far it is placed from the breakout area. The visual settings then manage panel visibility, panel placement, font sizing, historical object behavior, and label density so the script can remain clean in live use and in publish screenshots.
Limitations & Transparency
This script is a breakout-quality framework, not a prediction engine. It does not know in advance whether a breakout will continue. It evaluates the quality of a breakout after a valid outside-close event occurs and then tracks how price behaves afterward. That distinction is important.
The ATR envelope is an adaptive reference, which means the same market move may be classified differently under different volatility regimes. That is intentional. The script is designed to respond to changing market structure, but any adaptive model will also reflect the sensitivity of its settings. Users should therefore expect the behavior of the tool to vary across symbols, timeframes, and volatility environments.
Volume inputs may also behave differently across markets and data feeds. On some instruments, volume can add useful confirmation. On others, it may be less informative. For that reason, volume should be treated as a supporting factor rather than as an absolute truth layer.
The target projection is a chart-planning feature, not a guaranteed outcome. Likewise, a breakout failure label does not mean the market cannot later recover, and a target hit does not mean the move was universally optimal. The script is meant to help structure chart reading, not replace trade management, context analysis, or personal decision-making.
How this script differs from our other AG Pro tools
Within the AG Pro lineup, this script is intentionally positioned as a volatility-envelope breakout tool. It does not compete with our box-based breakout logic, our period-high/low breakout logic, or our static break-retest logic. Its role is to answer a different question: did price achieve meaningful acceptance outside an adaptive ATR shell, and did that acceptance survive the first return test?
That makes it especially useful when traders want a volatility-adjusted view of expansion quality. In markets where static levels are repeatedly pierced, an adaptive envelope framework can provide a cleaner read on whether the move is truly escaping current volatility conditions or simply stretching within ordinary noise.
In that sense, the script is not a replacement for our other breakout-oriented tools. It is a separate layer with a different reference model, different retest logic, and a different chart story. That separation is deliberate and is one of the reasons the script belongs in its own category inside the broader AG Pro collection.
Risk Disclosure
This script is an analytical chart tool designed to visualize volatility-adjusted breakout conditions, breakout quality, and post-breakout behavior. It is not financial advice, not a signal service, and not a guarantee of future price direction.
All breakout conditions can fail. Momentum can fade, volume can be inconsistent, and throwback behavior can change quickly. Markets remain uncertain, and no indicator can eliminate risk. Users should always apply their own market judgment, risk controls, and execution rules.
Use the script as a structured decision-support layer, not as a stand-alone trading instruction. Confirmation from broader context, trend conditions, liquidity structure, and personal risk management remains essential.
Indicator

AG Pro Bollinger Bands Squeeze Map [AGPro Series]AG Pro Bollinger Bands Squeeze Map
Overview
AG Pro Bollinger Bands Squeeze Map is a Bollinger-based compression and release mapping tool designed to show how volatility contracts, matures, expands, and sometimes fails directly on price.
Instead of reducing the entire process to a simple binary squeeze dot, this script organizes the behavior into a visual regime map. It tracks when compression is only beginning, when it becomes more meaningful, when it reaches deeper squeeze conditions, and when price transitions into a release phase. It also highlights failed releases and re-compression behavior, which can be useful when an expansion loses follow-through and the market slips back into a tighter volatility regime.
The goal of the script is not to predict the next move in advance, and it is not presented as a standalone trade system. Its purpose is to provide structured context around Bollinger Band compression so the user can evaluate whether the market is still coiling, already expanding, or losing expansion quality after an initial move.
This script is plotted directly on the chart and is built to remain readable without requiring a separate lower panel. The design prioritizes chart-first interpretation, moderate visual hierarchy, and state clarity.
Unique Edge
Many Bollinger squeeze tools stop at a yes/no condition or a single timing marker. This script takes a broader approach.
Its primary difference is that it treats squeeze behavior as a sequence of states rather than as a single event. That means the script does not only ask whether a squeeze exists. It also asks:
- Is compression only building, or is it already active?
- Has the squeeze become deep or mature?
- Did the first release show better or weaker expansion quality?
- Did the move fail and rotate back toward the basis?
- Is the market entering a re-compression phase after release?
This state-based mapping framework is the main distinction of the indicator. The intent is to help the user see volatility structure more clearly, rather than to provide a simplistic breakout label.
What the Script Does
The script combines Bollinger Band structure, normalized band width, width percentile logic, optional Keltner Channel confirmation, and release-state scoring into a single on-chart map.
In practice, the indicator can highlight:
- Building Compression
- Active Squeeze
- Deep Squeeze
- Mature Squeeze
- Up Release
- Down Release
- Failed Release
- Re-Compression
The result is a visual progression from contraction to expansion, with added context about the quality of that transition.
Methodology
1) Bollinger Band Structure
The script begins with a standard Bollinger Band framework built from a basis line and upper/lower deviations. This establishes the primary price envelope used throughout the tool.
2) Normalized Band Width
Raw band width is normalized relative to the basis so that compression can be assessed more consistently across changing price levels.
3) Width Percentile Regime Detection
The script evaluates current band width against a lookback window using percentile rank logic. This allows the user to frame current compression relative to recent history rather than relying only on absolute width values.
4) Optional Keltner Confirmation
An optional Keltner containment component can be used to strengthen squeeze filtering. Depending on the selected mode, the script can use percentile logic, Keltner logic, or a hybrid of both.
5) Compression State Classification
Compression is not handled as one flat condition. The script distinguishes between building compression, active squeeze, deep squeeze, and mature squeeze based on percentile thresholds and persistence.
6) Release Quality Scoring
When price exits a squeeze state, the script evaluates the release using a score that incorporates bar body behavior, close location, width expansion, distance from basis, and wick influence. The output is grouped into quality labels such as Weak, Clean, or Strong.
7) Failed Release Logic
A release is not automatically treated as durable. If the move loses structure and rotates back through the basis within the monitoring window, the script can classify that behavior as a failed release.
8) Re-Compression Detection
After release, markets do not always trend cleanly. Sometimes they compress again. The re-compression logic is included to identify this return into tighter volatility conditions.
Signals and Alerts
The script includes deterministic alert conditions tied to state transitions. These alerts are intended to notify the user when a specific structural condition appears on the chart.
Available alert categories include:
- Active Squeeze
- Deep Squeeze
- Mature Squeeze
- Up Release
- Down Release
- Failed Release
- Re-Compression
These alerts describe indicator states. They are not guarantees of continuation, reversal, or trade outcome.
Visual Design
The indicator is designed to work as an on-chart map rather than as a lower-pane oscillator.
The visual structure includes:
- Bollinger Bands
- Optional Keltner Channel
- Compression and release zone fills
- State labels
- Compact information panel
The zone rendering is intentionally state-weighted. More important states such as release, deeper squeeze regimes, and failure/re-compression conditions receive stronger visual emphasis, while lower-priority compression states can remain lighter to reduce chart clutter.
Key Inputs
The script includes adjustable controls for:
- Detection mode
- Bollinger Band length and multiplier
- Percentile lookback and thresholds
- Keltner Channel length and ATR multiplier
- Minimum bar requirements for deeper squeeze states
- Release persistence window
- Failure and re-compression windows
- Label size and offset
- Band and channel visibility
- Map intensity
- Theme selection
- Panel position and font size
These controls allow the user to adapt the script to different assets, volatility profiles, and charting preferences.
How to Interpret It
A practical way to read the script is to think in phases.
When the indicator shows Building Compression, volatility is tightening but may not yet be at a stronger squeeze threshold.
When the indicator shifts into Active, Deep, or Mature squeeze conditions, compression is becoming more statistically notable relative to the selected lookback.
When a release label appears, the script is identifying a transition out of compression. The associated quality label is meant to describe the character of that release, not to certify future follow-through.
If a failed release appears, the script is signaling that the initial expansion did not maintain structure within the observation window.
If re-compression appears, the market may be moving from expansion back into tighter volatility conditions.
This framework is often more useful for context and filtering than for isolated signal-chasing.
Use Cases
This tool may be useful for users who want to:
- study volatility contraction and expansion directly on price
- compare weaker and cleaner releases after squeeze conditions
- identify failed expansion behavior
- add context to existing discretionary workflows
- use squeeze structure as a filter rather than a complete decision engine
It can also be used alongside structure analysis, trend analysis, support/resistance mapping, or broader workflow-based chart review.
Limitations and Transparency
This script is a volatility-structure tool. It is not a prediction engine and does not forecast future price direction with certainty.
Several important limitations should be kept in mind:
- A squeeze can resolve in either direction.
- A strong-looking release can still fail.
- A failed release does not automatically imply a reversal trend.
- Different symbols and timeframes may require different threshold settings.
- Very noisy instruments may produce more frequent state changes.
Because of this, the script should be interpreted as a structured context layer rather than as a standalone execution model.
Open-source access does not remove the need for user judgment. Inputs still need to be reviewed and adjusted where appropriate for the instrument and timeframe being studied.
Risk Disclosure
This indicator is for chart analysis and educational use. It does not provide financial, investment, legal, or tax advice.
Any decision based on this script remains the responsibility of the user. Markets can behave unpredictably, and no indicator can eliminate risk. Users should evaluate signals, states, and visual conditions in the context of their own methodology, time horizon, and risk framework. Indicator

AG Pro VWAP Reclaim Quality [AGPro Series]AG PRO VWAP RECLAIM QUALITY
OVERVIEW
AG Pro VWAP Reclaim Quality is a chart-first tool built to evaluate whether a move back above VWAP is clean, weak, delayed, or structurally fragile.
This script does not treat every recovery above VWAP as equally meaningful. Instead, it grades the reclaim event itself and then follows what happens next: whether price can hold above VWAP, whether the retest is constructive, and whether the reclaim deteriorates shortly after recovery.
The objective is simple: separate efficient VWAP reclaims from noisy or late recoveries that may look promising at first glance but fail to show durable acceptance.
This makes the script useful for traders who want more context than a basic VWAP cross. A standard cross can show that price moved from one side of VWAP to the other. This script is designed to evaluate the quality of that transition.
UNIQUE EDGE
The focus here is not generic VWAP direction bias and not a simple above/below state model.
The main edge of the script is its reclaim-quality framework. It evaluates the reclaim as a sequence rather than as a one-line event:
1) reclaim strength,
2) post-reclaim acceptance,
3) retest behavior,
4) timing quality,
5) failure risk.
That structure is what differentiates it from ordinary VWAP cross tools.
A reclaim that closes back above VWAP with a strong bar, holds acceptance, and survives a disciplined retest should not be treated the same as a reclaim that occurs late, stalls immediately, or fails after a shallow recovery. This script is designed to reflect that distinction visually and systematically.
In practical terms, the script attempts to answer a more specific question:
Is this reclaim simply back above VWAP, or is it actually behaving like a higher-quality recovery?
METHODOLOGY
The script starts by tracking session VWAP and identifying reclaim attempts after price has spent time below it.
Once a reclaim is detected, the script evaluates several components:
1) Reclaim strength
The reclaim bar is assessed using distance from VWAP, body efficiency, and close location within the bar. This helps distinguish decisive recoveries from marginal crosses.
2) Acceptance above VWAP
After the reclaim, the script measures whether price is actually holding above VWAP over the next bars. Stable acceptance is treated differently from mixed or poor acceptance.
3) Retest behavior
The script checks whether price revisits VWAP inside a defined tolerance area and whether that test is held constructively. A confirmed retest is handled as separate information rather than being merged blindly into the initial reclaim.
4) Timing quality
Reclaims that occur after an extended stay below VWAP, or later in the intraday session, can be penalized. This allows the script to separate timely recoveries from delayed ones.
5) Failure logic
A reclaim can later be downgraded if price loses structure below VWAP after the recovery. This failure layer is intentionally more selective so that minor noise is not treated as a meaningful reclaim breakdown.
The result is a compact grading model that produces a readable chart-first output instead of a large diagnostic dashboard.
HOW TO READ THE OUTPUT
Main chart labels:
- CLEAN: reclaim quality is strong and structurally healthy
- LATE: reclaim occurred, but timing quality is weaker or delayed
- RT HOLD: VWAP retest was revisited and held constructively
- FAILED: reclaim lost quality and broke down after recovery
Panel fields:
- VWAP Reclaim: current reclaim classification
- Reclaim: strength of the reclaim move itself
- Acceptance: quality of post-reclaim holding behavior
- Retest: whether a constructive retest is confirmed
- Bias: summary interpretation of the current reclaim state
- Quality: compact score representation
The chart is intentionally designed to stay visual and readable. The panel provides state context, while the labels highlight the important transition points.
SIGNALS AND ALERTS
The script includes alert conditions for:
- Clean Reclaim
- Late Reclaim
- Retest Hold
- Failed Reclaim
These alerts are intended to map to the reclaim lifecycle rather than to every minor VWAP interaction.
For more conservative usage, bar-close confirmation is generally preferable when evaluating reclaim quality, especially on volatile instruments or during rapid intrabar movement.
KEY INPUTS
Some of the main controls include:
- VWAP source
- ATR length
- reclaim distance normalization
- minimum prior bars below VWAP
- late reclaim thresholds
- acceptance lookback
- retest tolerance and retest window
- failure delay bars
- panel text size and panel theme
- label visibility and label discipline controls
The script also includes label filtering logic to reduce clustering and keep the chart cleaner by default.
WHAT THIS SCRIPT IS DESIGNED FOR
This script is designed for traders who want to evaluate reclaim quality around VWAP, not merely track whether price is above or below it.
Typical use cases may include:
- reviewing whether a recovery above VWAP has enough structural follow-through
- filtering weak reclaims from stronger continuation candidates
- identifying retest discipline after reclaim
- spotting delayed or fragile recovery behavior
- keeping a cleaner visual workflow around VWAP-based chart reading
LIMITATIONS AND TRANSPARENCY
This script is not a prediction engine and should not be interpreted as a guaranteed continuation model.
A reclaim labeled as clean can still fail.
A reclaim labeled as late can still continue.
A failed reclaim label does not automatically imply a larger bearish trend.
The tool is designed to classify reclaim behavior around VWAP, not to replace broader market structure analysis.
Like all chart-based tools, outputs can vary depending on instrument, volatility regime, timeframe, and user settings.
VWAP-based behavior is also context-dependent. Market environment, liquidity, trend phase, and volatility expansion can all influence reclaim behavior beyond what a single script can capture.
This script is therefore best used as a structured interpretation tool, not as a standalone decision framework.
RISK DISCLOSURE
This indicator is for chart analysis and research use only. It does not provide investment advice, portfolio advice, or trade guarantees.
Always evaluate signals within broader market context, risk management, and your own execution process.
No single indicator should be relied upon in isolation.
NOTES
This publication focuses on reclaim quality around VWAP rather than generic VWAP crosses.
The aim is to keep the logic interpretable, the visuals readable, and the methodology transparent. Indicator

Indicator

Indicator

Fractal Retracement [Jamallo](2025)
Intro
FRAMA is a moving average that adapts its speed based on fractal geometry — specifically, the fractal dimension (D) of recent price action. When price is trending strongly (low fractal dimension), it moves fast. When price is choppy/ranging (high fractal dimension), it slows down. This makes it far more responsive than a standard EMA or SMA.
Breakdown:
The indicator wraps this with a continuous range logic layer: the filtered line = k only moves if price breaks beyond the FRAMA ± ATR-based range, creating a stepped/ratcheting effect that filters out noise.
Two sets of bands are plotted around the filtered line, scaled by ATR multiplied by user-defined multipliers (tight at 0.5×, medium at 1.0×). They're smoothed with a short EMA to reduce jitter, and filled with gradient colors for visual clarity.
Direction is simply determined by whether k is rising or falling, and colors everything green (uptrend) or pink/red (downtrend).
END
In short, it's a noise-filtered trend indicator useful for identifying trend direction, dynamic support/resistance , and gauging how far price has retraced from the trend baseline. Indicator

Indicator

Indicator

Indicator

Multi-TF Keltner Heatmap# Multi-TF Keltner Heatmap
A multi-timeframe volatility structure indicator designed to show where momentum pivots are forming across timeframes.
Instead of plotting a single Keltner Channel, this script overlays Keltner envelopes from 12 timeframes simultaneously, allowing traders to see when lower timeframe volatility begins pivoting relative to higher timeframe structure.
For options traders, these pivot points often represent the moments where momentum changes fastest while options are still relatively cheap.
The goal is to identify the earliest structural shift in volatility expansion before the larger move becomes obvious.
## Core Idea
Momentum rarely appears suddenly on higher timeframes.
Instead, it typically builds from smaller timeframes upward.
Lower timeframes begin expanding volatility until they interact with or surpass the volatility boundaries of larger timeframes.
When this occurs, the script identifies it as a pivot event.
A pivot means the shorter timeframe volatility envelope has reached or crossed the adjacent higher timeframe envelope, indicating that momentum pressure is shifting.
As these pivots propagate upward through the timeframe ladder, a momentum chain forms.
This chain represents how many layers of the market structure are currently shifting direction.
## Timeframes Included
The script pulls Keltner Channel data from the following timeframes:
- 1 Minute
- 3 Minute
- 5 Minute
- 10 Minute
- 15 Minute
- 30 Minute
- 45 Minute
- 1 Hour
- 2 Hour
- 4 Hour
- 1 Day
- 1 Week
These timeframes together create a stacked volatility structure showing how pressure builds through the market.
## Keltner Channel Construction
Each timeframe uses the same parameters.
Basis
EMA (default length: 200)
Volatility Envelope
ATR (default length: 200)
Bandwidth Multiplier
ATR × 8
These intentionally large settings create structural volatility envelopes rather than short-term reactive channels.
The focus is on major volatility shifts rather than micro fluctuations.
## Visual Structure
The indicator uses color to separate layers of the timeframe hierarchy.
### White Bands (1m – 15m)
These represent short-term market microstructure.
They allow traders to see:
- short-term compression
- micro volatility expansion
- early directional pressure
Opacity is reduced so these bands remain informational rather than dominant.
### Intermediate Layer (30m / 45m)
Upper bands are colored green.
Lower bands are colored red.
These timeframes often act as the bridge between intraday volatility and higher timeframe momentum.
When price begins interacting strongly with these bands, it often signals that pressure is building toward a larger pivot.
### Higher Timeframe Bands (1H – 1W)
Higher timeframe bands are hidden by default.
They only appear when a pivot condition occurs.
A pivot occurs when:
Shorter timeframe upper band ≥ adjacent higher timeframe upper band
or
Shorter timeframe lower band ≤ adjacent higher timeframe lower band
Example:
45m upper ≥ 1H upper
When this happens, the 1H upper band becomes visible.
This signals that short-term volatility is now interacting with higher timeframe structure.
## Pivot Chain
Momentum shifts are tracked using adjacent timeframe pivots.
Upper band pivots follow this sequence:
- 45m → 1H
- 1H → 2H
- 2H → 4H
- 4H → 1D
- 1D → 1W
Lower band pivots follow the same sequence.
This adjacency logic reflects how momentum realistically propagates through the market rather than skipping timeframes.
## Pivot Chain Depth
The indicator calculates two values shown in the status line and data window.
Bull Chain
Number of upward pivot steps currently active.
Example:
45m pivoting above 1H
1H pivoting above 2H
2H pivoting above 4H
Bull Chain = 3
Bear Chain
Number of downward pivot steps currently active.
Example:
45m pivoting below 1H
1H pivoting below 2H
2H pivoting below 4H
Bear Chain = 3
## Interpreting Chain Depth
Lower chain values typically indicate:
- localized volatility
- range conditions
- early momentum shifts
Higher chain values indicate:
- stronger structural alignment
- expanding volatility
- sustained directional momentum
Deep pivot chains are relatively rare and often occur during:
- breakouts
- strong trend continuation
- macro directional moves
## Why This Matters for Options
Options traders benefit most when they can identify large momentum shifts early, before volatility expansion fully develops.
When lower timeframes begin pivoting relative to higher timeframe envelopes, it often means:
- directional pressure is building
- volatility expansion may follow
- option pricing has not fully reacted yet
This creates the opportunity to enter positions before volatility and delta expansion make contracts expensive.
## Practical Uses
This indicator can help traders:
- identify early momentum pivots
- visualize multi-timeframe volatility alignment
- detect volatility expansion before breakouts
- confirm trend continuation across timeframes
It is particularly useful when looking for high momentum opportunities while options remain relatively inexpensive.
## Conceptual Summary
Momentum builds from smaller timeframes upward.
When lower timeframe volatility begins interacting with and pivoting against larger timeframe envelopes, the market is often entering a structural shift phase.
This indicator visualizes that process so traders can see momentum transitions while they are still forming. Indicator

Ornstein-Uhlenbeck Mean Reversion Probability Bands [UAlgo]Ornstein-Uhlenbeck Mean Reversion Probability Bands is a statistical mean reversion indicator that models price as a mean reverting process and projects dynamic probability style zones around an estimated equilibrium mean. The script uses a rolling lookback of closing prices, fits an Ornstein-Uhlenbeck inspired parameter set from recent behavior, and then converts that estimate into inner and outer deviation bands around the current mean.
The indicator runs directly on price ( overlay=true ) and is built to help traders identify when price is stretched away from its estimated equilibrium. Instead of using a fixed moving average and static standard deviation, the script attempts to infer a mean reverting structure from the data itself. It estimates the long term mean, the speed of reversion, and an equilibrium style dispersion measure, then plots two upside and two downside mean reversion zones.
When price pushes into the upper or lower band regions, the script calculates a standardized distance from the estimated mean and displays a probability style label with both the percentage score and the current z score. This gives the user a quick visual read of how statistically extended price is relative to the model.
A key strength of this script is that it combines:
A rolling Ornstein-Uhlenbeck style parameter estimation
Adaptive mean reversion zones
Probability style stretch labels at band events
A clean overlay presentation with visible upper and lower probability regions
Important note: The percentage label in this script is a normal distribution coverage style score derived from the current z score. It is best understood as a probabilistic stretch measure, not a literal exact OU first passage probability.
🔹 Features
🔸 1) Ornstein-Uhlenbeck Inspired Mean Reversion Model
The script estimates a mean reverting process from recent closing prices instead of relying only on a moving average. It uses a rolling regression style approach on consecutive price observations, then converts those estimates into Ornstein-Uhlenbeck style parameters.
This makes the indicator more model driven than a standard band tool.
🔸 2) Rolling Adaptive Mean Line
The central mean line is not a fixed average only. It is the estimated equilibrium level ( mu ) of the fitted process. As the rolling price sample changes, the model updates and the mean shifts with changing market structure.
The mean line also changes color depending on whether current price is above or below that estimated equilibrium.
🔸 3) Dual Mean Reversion Zones (Inner and Outer)
The script builds two sets of reversion bands around the mean:
Inner bands using the inner multiplier
Outer bands using the outer multiplier
This creates a layered framework where the inner zone marks an early stretch area and the outer zone marks a more extreme statistical extension.
🔸 4) Probability Style Stretch Labels
When price crosses into the upper or lower band regions, the script calculates a z score based on current distance from the estimated mean and converts it into a percentage style probability score.
The label shows:
A directional marker
The probability style percentage
The current z score
This gives the user both a visual event trigger and a numeric measure of extension.
🔸 5) Visual Zone Based Design
The indicator uses filled upper and lower zones rather than emphasizing the band lines themselves. This creates a cleaner chart display where the mean line stays visible and the stretch regions are highlighted as colored areas above and below it.
This makes the indicator easy to read during fast chart scanning.
🔸 6) Configurable Lookback, Time Step, and Band Width
Users can customize:
The rolling lookback period used for model estimation
The time step parameter ( dt ) used in OU conversion
The inner band multiplier
The outer band multiplier
This makes the script adaptable to different timeframes, instruments, and preferred sensitivity levels.
🔸 7) Built In Estimation Safeguards
The parameter estimation logic includes fallback protections. If the inferred model parameters are unstable or unrealistic, the script falls back to simpler sample statistics. This helps prevent unusable outputs during difficult market regimes or low quality fits.
🔸 8) Directional Touch Event Logic
The script tracks both upper side and lower side band interaction:
Upper side events can signal statistically stretched bullish price movement
Lower side events can signal statistically stretched bearish price movement
Labels are only created on crossing events, which helps reduce repeated prints while price remains outside the band.
🔹 Calculations
1) Rolling Price Queue Management
The script stores recent closing prices in an array with a fixed maximum length:
price_array.update_queue(close, length_input)
The queue update method behaves differently depending on bar state:
On a new bar, it pushes the latest value
On an updating live bar, it overwrites the last stored value
This keeps the rolling sample aligned with the current chart state without duplicating the active bar.
2) Fallback Mean and Dispersion Estimates
Before attempting the OU style fit, the script calculates simple fallback values:
float fallback_mu = src_array.avg()
float fallback_sigma = src_array.stdev()
These act as safety defaults if the regression based OU estimate is not reliable.
Important note:
In this script, fallback_sigma is a simple sample standard deviation of price levels, not return volatility.
3) AR(1) Style Regression on Consecutive Prices
The model estimation is built from consecutive price pairs:
x = price
y = price
The script computes:
Mean of x
Mean of y
Covariance between x and y
Variance of x
Then it estimates:
float b = sum_cov / sum_var_x
This creates an AR(1) style coefficient that is later translated into OU style parameters.
4) Conversion from AR(1) Form to OU Style Parameters
If the estimated b is within a valid range:
if b > 0.05 and b < 0.95
the script computes:
float a = mean_y - b * mean_x
float mu_exact = a / (1.0 - b)
float theta_exact = -math.log(b) / dt
Interpretation:
mu_exact is the estimated long run mean.
theta_exact is the implied mean reversion speed.
The conversion assumes the AR(1) relation is a discrete time representation of a mean reverting process.
5) Residual Variance and Equilibrium Dispersion
The script next measures residual error from the AR(1) fit:
float err = y_i - (a + b * x_i)
float var_err = sum_err_sq / (n - 1)
Then it converts that residual variance into an equilibrium variance estimate:
float var_eq = var_err / (1.0 - b * b)
Finally:
float calc_sigma = math.sqrt(var_eq)
Important implementation note:
The variable named sigma in this script is used as an equilibrium style standard deviation around the mean, not as the continuous time OU diffusion coefficient from the SDE form.
6) Stability Filter for the Estimated Sigma
Even if the AR(1) fit is mathematically valid, the script only accepts the calculated sigma when it is reasonably close to the fallback sample standard deviation:
if calc_sigma < fallback_sigma * 1.5 and calc_sigma > fallback_sigma * 0.5
If this test fails, the script keeps the fallback values instead.
This helps avoid unstable band widths caused by bad short term fits.
7) Final Parameter Output
The estimation method returns:
OU_Params.new(theta, mu, sigma_eq)
Where:
theta is the estimated reversion speed
mu is the estimated equilibrium mean
sigma_eq is the accepted equilibrium dispersion measure
These parameters are then used to build the bands.
8) Band Construction
The script computes four band levels around the estimated mean:
float up_out = mean_val + (dev_val * mult_outer)
float up_in = mean_val + (dev_val * mult_inner)
float dn_in = mean_val - (dev_val * mult_inner)
float dn_out = mean_val - (dev_val * mult_outer)
Interpretation:
Inner bands represent a milder deviation from the mean.
Outer bands represent a more extreme deviation from the mean.
9) Mean and Zone Visualization
The mean line is explicitly plotted:
p_mean = plot(ou_bands.mean, color=color_mean, linewidth=2, title="Mean")
The inner and outer band plots are also created, but their colors are fully transparent:
color color_inner_up = color.new(#ffb74d, 100)
color color_outer_up = color.new(#ef5350, 100)
...
This means the visible structure mainly comes from the zone fills:
fill(p_ui, p_uo, ...)
fill(p_li, p_lo, ...)
So the user sees clean upper and lower probability zones rather than several bright boundary lines.
10) Touch and Crossing Logic
The script first checks whether price is currently inside a stretch area:
bool touch_upper = close >= ou_bands.upper_inner
bool touch_lower = close <= ou_bands.lower_inner
Then it checks for fresh crossings:
bool cross_up_in = ta.crossover(close, ou_bands.upper_inner)
bool cross_up_out = ta.crossover(close, ou_bands.upper_outer)
bool cross_dn_in = ta.crossunder(close, ou_bands.lower_inner)
bool cross_dn_out = ta.crossunder(close, ou_bands.lower_outer)
Labels are only created when price is touching the region and a fresh crossing occurs. This avoids creating labels on every bar that remains outside the band.
11) Z Score Calculation
When an event occurs, the script calculates the standardized distance from the mean:
float current_z_score = dev_val != 0 ? math.abs(close - mean_val) / dev_val : 0.0
Interpretation:
A z score of 1 means price is one equilibrium standard deviation away from the estimated mean.
Higher values indicate a more statistically stretched condition.
12) Probability Style Score Calculation
The script converts the z score into a percentage style score using an approximation of the error function:
float x = math.abs(z_score) / math.sqrt(2.0)
...
float prob = erf_approx * 100.0
Because erf(|z| / sqrt(2)) corresponds to the probability mass within plus or minus that z distance under a normal distribution, the output behaves like a confidence or coverage score.
Important note:
This is not a direct OU mean reversion probability in the strict stochastic process sense. It is a normal distribution style stretch score based on the current z distance.
13) Upper Event Label Logic
When price crosses into the upper band region:
if (touch_upper and cross_up_in) or (touch_upper and cross_up_out)
the script prints a bearish styled label above the bar:
"▼ %" + str.tostring(probability, "#.##") + " (Z:" + str.tostring(current_z_score, "#.##") + ")"
This reflects the idea that price is statistically extended above the mean and may be vulnerable to reversion.
14) Lower Event Label Logic
When price crosses into the lower band region:
if (touch_lower and cross_dn_in) or (touch_lower and cross_dn_out)
the script prints a bullish styled label below the bar:
"▲ %" + str.tostring(probability, "#.##") + " (Z:" + str.tostring(current_z_score, "#.##") + ")"
This reflects the idea that price is statistically extended below the mean and may be vulnerable to reversion.
15) Role of the Time Step Input
The dt_input parameter affects the conversion from the AR(1) coefficient into the OU reversion speed:
float theta_exact = -math.log(b) / dt
A larger dt lowers the inferred theta for the same b .
A smaller dt raises the inferred theta for the same b . Indicator

Liquidity Bands1. CONCEPT & PURPOSE
Liquidity Bands is a volume-weighted volatility envelope indicator. Unlike standard Bollinger Bands that use a Simple Moving Average and equal-weighted standard deviation, this indicator weights every price observation by its liquidity (volume × true range). This means:
High-volume, high-volatility bars have a stronger influence on the bands
Low-volume, quiet bars contribute less to the calculation
The bands naturally gravitate toward price levels where real trading activity occurred
This makes the bands more responsive to institutional activity and genuine supply/demand zones rather than treating every bar equally.
2. CORE CALCULATIONS
2.1 Liquidity Proxy
text
liquidity = volume × true_range
Each bar's "weight" is determined by multiplying its volume by its true range. This captures dollar-flow intensity — a bar with high volume AND wide range represents significant market participation. If volume is unavailable (e.g., some crypto pairs), it defaults to 1 so the indicator still functions.
2.2 Liquidity-Weighted Moving Average (LMA)
text
LMA = Σ(price × liquidity, n) / Σ(liquidity, n)
Instead of a simple average where each bar counts equally, the LMA is a weighted mean where high-liquidity bars pull the average toward their price level more strongly. This is the center line (basis) of the bands.
Interpretation:
LMA represents the fair value based on where the most trading activity occurred
Price above LMA → bullish bias
Price below LMA → bearish bias
2.3 Liquidity-Weighted Standard Deviation
text
variance = Σ(price² × liquidity, n) / Σ(liquidity, n) − LMA²
std_dev = √variance
The standard deviation is also liquidity-weighted, meaning volatility is measured relative to where liquidity actually participated, not just raw price swings.
2.4 Band Construction
Band Formula Purpose
Upper Band LMA + (mult × std_dev) Overbought / resistance zone
Lower Band LMA − (mult × std_dev) Oversold / support zone
Inner Upper LMA + (inner_mult × std_dev) First standard deviation — early warning
Inner Lower LMA − (inner_mult × std_dev) First standard deviation — early warning
Default multipliers: Outer = 2.0, Inner = 1.0
This creates four zones:
Above upper band → extreme overbought
Upper band to inner upper → overbought zone
Inner upper to inner lower → neutral / fair value zone
Inner lower to lower band → oversold zone
Below lower band → extreme oversold
3. SIGNAL MODES
3.1 Mean Reversion Mode
Philosophy: Price tends to return to the mean after touching extremes.
Signal Condition Logic
LONG Previous close was at or below the lower band, current close is back above it Price was rejected at the lower extreme and is recovering — buy the bounce
SHORT Previous close was at or above the upper band, current close is back below it Price was rejected at the upper extreme and is fading — sell the rejection
Best used in: Ranging/sideways markets, mean-reverting instruments, when squeeze is active.
3.2 Breakout Mode
Philosophy: When price breaks through the bands with conviction, momentum follows.
Signal Condition Logic
LONG Price crosses above the upper band Bullish momentum breakout — buy the strength
SHORT Price crosses below the lower band Bearish momentum breakdown — sell the weakness
Best used in: Trending markets, after a squeeze, high-momentum instruments.
3.3 Both Mode
Fires signals from either mode. Useful for scanning all opportunities but requires additional context/filtering to avoid conflicting signals.
3.4 LMA Cross Signals (Optional)
Signal Condition
Cross Up Price crosses above the LMA basis line
Cross Down Price crosses below the LMA basis line
These are secondary/confirmation signals — a diamond shape appears. Useful for:
Confirming a mean reversion signal (price bounced off band AND crossed back above LMA)
Identifying trend direction shifts
4. BAND WIDTH & SQUEEZE DETECTION
4.1 Band Width
text
band_width = (upper_band − lower_band) / LMA × 100
Expressed as a percentage of the LMA, this normalizes volatility across different price levels and instruments. A 5% band width means the bands span 5% of the current price level.
4.2 Squeeze Detection
text
squeeze = band_width < lowest(band_width, 50) × 1.05
A squeeze is detected when the current band width is within 5% of the lowest band width in the last 50 bars. This means volatility has contracted to near-historic lows for the recent window.
What it means:
Energy is building — a large move is likely coming
Direction is unknown — wait for breakout confirmation
Displayed as a soft orange/yellow background tint across the chart
4.3 Expansion Detection
text
expansion = band_width > highest(band_width , 20) × 0.95
Bands are expanding when width is near the 20-bar high. This confirms an active trend/momentum move is underway.
4.4 Price Position Ratio
text
ratio = (close − lower_band) / (upper_band − lower_band)
Gives a 0–100% reading of where price sits within the bands:
0% = at the lower band
50% = at the LMA
100% = at the upper band
>100% = above upper band
<0% = below lower band
Displayed as a visual gauge bar ████░░░░░░ 40% in the dashboard.
5. VISUAL SYSTEM
5.1 Color Themes
Theme Character Upper Lower Best For
Cyber Futuristic neon Cyan #00e5ff Pink #ff006e Dark charts
Ocean Cool aquatic Teal #00b4d8 Deep blue #0077b6 Clean look
Lava Hot aggressive Orange #ff6b35 Red #d90429 High energy
Frost Soft pastel Light blue #a2d2ff Pale blue #bde0fe Light charts
Neon Maximum contrast Green #39ff14 Red #ff073a Visibility
Each theme defines a coordinated 7-color palette (upper, lower, basis, bull, bear, squeeze, accent) so everything matches.
5.2 Glow Effect
Three concentric layers are drawn behind each band line:
Layer Opacity Width Effect
Outer glow 92% transparent 6px Soft ambient halo
Mid glow 82% transparent 4px Intermediate diffusion
Inner glow 60% transparent 2px Concentrated glow
Core line 0% transparent 1px Sharp band edge
This creates a neon light tube effect around each band.
5.3 Zone Fills
Five separate fill regions create depth:
Zone Between Opacity Meaning
Upper zone Upper band → Inner upper 88% Overbought territory
Lower zone Lower band → Inner lower 88% Oversold territory
Core zone Inner upper → Inner lower 95% Fair value area
Upper half Upper band → LMA 94% Subtle upper bias tint
Lower half Lower band → LMA 94% Subtle lower bias tint
5.4 Dynamic Basis Color
The LMA line color shifts in real-time based on price position:
When price is near the lower band → basis turns lower band color
When price is near the upper band → basis turns upper band color
This creates an instant visual read of where price sits
5.5 Signal Visualization (Triple-Layer)
Each signal has three visual layers for maximum clarity:
Layer Element Purpose
Primary Large ▲/▼ triangle with bold "LONG"/"SHORT" text Unmissable directional signal
Accent Small circle dot at the same location Adds visual weight and layering
Context Dotted horizontal line spanning ±1 bar Marks the exact price level of the signal
Background Full-bar bgcolor tint (green/red) Makes signal bars visible even when zoomed out
5.6 Band Touch Markers
Small xcross shapes appear when price first touches a band without triggering a full signal. These serve as early warnings that price is testing an extreme.
5.7 LMA Dot Trail (Optional)
When enabled, alternating dots • appear on the LMA line every other bar, creating a stylized beaded line effect instead of a solid line.
6. DASHBOARD
A real-time information panel displayed in the corner with alternating dark row backgrounds:
Row Left Column Right Column Color Logic
Header ⚡ LIQUIDITY BANDS ━━━━━━ Theme accent
Theme Theme Active theme name + ● Upper band color
Mode Mode Active signal mode Accent color
Width Width Band width as % Orange if squeeze, green if expanding, gray if normal
Status Status ⊘ SQUEEZE / ⊕ EXPANDING / ◎ NORMAL Contextual color
Price Price ▲ ABOVE / ▼ BELOW / ◈ INSIDE Green/red/white
Ratio Ratio ████░░░░░░ 40% gauge bar Gradient from lower to upper band color
7. ALERTS
Alert Fires When
Long Signal Any long condition triggers (based on selected mode)
Short Signal Any short condition triggers (based on selected mode)
LMA Cross Up Price crosses above the LMA
LMA Cross Down Price crosses below the LMA
Squeeze Band width hits squeeze threshold
All alert messages include the ticker symbol via {{ticker}}.
8. INPUT REFERENCE
Input Default Range Description
Lookback Length 20 1+ Number of bars for LMA and std dev calculation
StdDev Multiplier 2.0 0.1+ Width of outer bands (higher = wider)
Price Source Close Any Which price to use for calculations
Inner Band Multiplier 1.0 0.1+ Width of inner bands
Signal Mode Mean Reversion 3 options Which signal logic to use
Show Signals ✓ Toggle Display signal markers
Show LMA Cross ✗ Toggle Display LMA cross diamonds
Color Theme Cyber 5 options Visual color scheme
Band Glow Effect Indicator

Premium Price Action [Alpha Extract]A sophisticated trend-following rail system that combines dual-lookback price averaging with adaptive ATR-based trailing levels for clean trend identification and momentum-sensitive visual feedback. Utilizing staircase rail logic with dynamic ribbon visualization and strength-modulated transparency, this indicator delivers institutional-grade trend detection with minimal whipsaw through intelligent rail adaptation. The system's multi-lookback baseline construction combined with ATR-scaled distance creates robust trend rails that only flip on genuine structural changes while maintaining visual clarity through glow effects and regime-based background coloring.
🔶 Advanced Dual-Lookback Baseline Framework
Implements sophisticated baseline calculation using two configurable lookback periods to sample recent price history at different intervals, averaging results and applying dual smoothing for stable trend reference. The system retrieves close prices from first lookback (default 12 bars) and second lookback (default 27 bars), calculates their average, applies SMA smoothing, then EMA smoothing for ultra-clean baseline resistant to short-term noise while maintaining responsiveness to genuine trend shifts.
// Dual-Lookback Baseline Construction
Close_1 = close
Close_2 = close
Close_Avg = (Close_1 + Close_2) / 2.0
Baseline_Raw = ta.sma(Close_Avg, SMA_Length)
Baseline = ta.ema(Baseline_Raw, Smooth_Length)
🔶 Adaptive Trailing Rail Architecture
Features intelligent rail calculation that trails price using ATR-scaled distance from baseline with ratcheting logic preventing premature reversals. The system calculates upper rail (baseline + ATR × multiplier) and lower rail (baseline - ATR × multiplier), implements adaptive trailing where bullish rail only rises or holds while bearish rail only falls or holds, and transitions rails only when price violates opposite rail creating clean staircase pattern.
// Adaptive Rail Logic
Upper_Rail = Baseline + ATR * Rail_Multiplier
Lower_Rail = Baseline - ATR * Rail_Multiplier
// Ratcheting Behavior
Bull_Rail = close > Bull_Rail ? max(Lower_Rail, Bull_Rail ) : Lower_Rail
Bear_Rail = close < Bear_Rail ? min(Upper_Rail, Bear_Rail ) : Upper_Rail
// Trend Determination
Trend = close < Bull_Rail ? -1 : close > Bear_Rail ? 1 : Trend
🔶 Staircase Step-Line Visualization
Implements stepline plot style creating distinctive staircase appearance that visually emphasizes trend persistence and makes rail level changes instantly recognizable. The system uses plot.style_stepline rendering that draws horizontal segments at each rail level with vertical connections only at transition points, producing clean geometric pattern that distinguishes this rail system from curved moving averages or bands.
🔶 Dynamic Strength-Based Transparency
Provides sophisticated transparency modulation where background and ribbon opacity adjust based on momentum strength relative to ATR volatility. The system calculates momentum as price distance from baseline, normalizes by ATR to produce 0-1 strength score, and reduces transparency (increases intensity) as strength increases, creating visual feedback where strong trends display vivid colors and weak trends show muted tones.
🔶 Multi-Layer Glow Effect System
Features triple-layer rail rendering with progressively wider and more transparent outer layers creating luminous glow effect emphasizing trend rail. The system plots core rail at specified width with full color intensity, adds inner glow layer at +2 width with moderate transparency, and outer glow at +4 width with higher transparency, producing visual depth and making rail instantly recognizable without cluttering chart space.
🔶 Adaptive Ribbon Visualization
Creates ATR-scaled ribbon extending below bullish rail or above bearish rail with width proportional to current volatility and transparency modulated by trend strength. The system calculates ribbon size using ATR × ribbon multiplier, positions ribbon adjacent to active rail, and applies dynamic transparency that intensifies during strong momentum creating intuitive visual representation of trend conviction and volatility context.
🔶 Regime Background Highlighting
Implements subtle background wash using trend color with strength-adjusted transparency providing full-chart regime awareness without obscuring price action. The system applies bullish or bearish background color with base transparency that decreases (color intensifies) as momentum strength increases, creating gradient effect where powerful trends display more prominent backgrounds while weak trends maintain subtle presence.
🔶 Intelligent Flip Detection Logic
Generates trend reversal signals only when price violates opposite rail with confirmation, preventing false signals during normal retracements. The system detects bullish flip when previous trend bearish and close crosses above bearish rail, detects bearish flip when previous trend bullish and close crosses below bullish rail, and places compact BULL/BEAR labels at ribbon edges marking exact reversal bars for clear visual confirmation.
🔶 Comprehensive Visual Integration
Provides multi-dimensional trend visualization through colored rail with glow effects, ATR-scaled ribbons, regime backgrounds, trend-synchronized candle plotting, and optional chart candle coloring. The system enables selective display toggling for each visual component while maintaining consistent color scheme and strength-based intensity across all elements, allowing customization from minimal (rail only) to comprehensive (all features) presentation.
🔶 Baseline Reference System
Includes optional baseline plot showing underlying smoothed dual-lookback average serving as neutral reference level and trend bias indicator. The system displays baseline with neutral color at reduced opacity, enabling traders to assess whether price trades above baseline (inherent bullish bias) or below baseline (inherent bearish bias) independent of current rail trend state for confluence analysis.
🔶 Performance Optimization Framework
Employs efficient calculation methods with optimized rail ratcheting logic, streamlined strength calculations, and intelligent plot rendering that only processes active visual elements. The system includes smart state tracking for trend persistence, minimal recalculation overhead through nz() functions and conditional logic, and smooth visual updates maintaining consistent performance across extended historical periods.
🔶 Why Choose Premium Price Action ?
This indicator delivers sophisticated trend-following analysis through adaptive rail methodology with dual-lookback baseline construction and ATR-scaled distance. Unlike traditional moving average systems prone to whipsaw during choppy conditions, the ratcheting rail logic with opposite-rail violation requirements creates definitive trend states that persist through normal retracements. The system's staircase visualization instantly communicates trend persistence, strength-modulated transparency provides conviction feedback, and comprehensive visual integration enables complete trend assessment without switching between multiple indicators. Perfect for swing traders and position managers seeking clear trend identification with minimal false signals across cryptocurrency, forex, and equity markets where the adaptive rails naturally adjust to varying volatility regimes while maintaining consistent signal quality. Indicator

Momentum Cycle Sentry [LuxAlgo]The Momentum Cycle Sentry indicator is a comprehensive momentum visualization tool designed to identify trend cycles, measure volatility extremes, and precisely track retracement phases through a unique multi-layered symmetric architecture.
🔶 USAGE
The indicator provides a high-fidelity view of market "flow" by mirroring price momentum across a zero line, creating a symmetric "cloud" whose width represents the intensity of the current move. It is primarily used to distinguish between strong trending expansion and temporary pullback cycles.
🔹 Trend Identification
Bullish Momentum: The oscillator cloud appears above and below the zero line in a teal (bullish) color.
Bearish Momentum: The oscillator cloud appears in a coral (bearish) color.
Width: An expanding cloud indicates increasing velocity, while a thinning cloud suggests a squeeze or waning interest.
🔹 Momentum Cycle Tracing
One of the core features of this tool is the Neon Path logic. When the indicator detects that momentum is cooling off against the prevailing trend (a retracement cycle):
The background cloud and candle colors dim to signify a "resting" phase in the market.
A Triple-Layer Glow activates directly on the oscillator's curve, making the retracement segments "light up" in a high-intensity version of the trend color.
This glow uses graduated transparency to create a neon-like halo, visualizing the exact path of the pullback as it moves toward the zero line.
Cross (X) markers appear on the zero line to provide a horizontal anchor for the duration of the retracement period.
🔹 Extreme Zones
The indicator features dynamic Overbought (OB) and Oversold (OS) corridors. When the oscillator enters these shaded gradient zones, the trend cycle is considered overextended. Traders can look for the oscillator to curve back toward the zero line as a sign of potential exhaustion or mean reversion.
🔶 DETAILS
🔹 Layered Oscillator Architecture
The script utilizes five distinct layers of Exponential Moving Average (EMA) smoothing applied to a base momentum calculation. This creates a "glow" effect where the inner core reacts to immediate price action while the outer layers represent the broader trend. The symmetric mirroring ensures that the visual weight of the momentum is balanced, making it easier to perceive the total "volume" of the move regardless of direction.
🔹 Dynamic Volatility Corridors
Unlike traditional oscillators with fixed levels (e.g., 70/30), the Momentum Cycle Sentry uses standard deviation-based bands that adapt to current market volatility. This ensures that the overbought and oversold thresholds are relevant to the specific asset and timeframe being traded.
🔶 SETTINGS
🔹 Settings
Base Length: Sets the lookback period for the underlying momentum calculation.
Smoothing: Determines the base EMA smoothing for the multi-layered layers.
Magnitude: A multiplier to scale the vertical height of the oscillator.
Retracement Sensitivity: Adjusts how quickly the script detects a pullback/retracement cycle on the curve.
🔹 Extreme Zones
OB/OS Lookback: The period used for the standard deviation calculation of the volatility bands.
Inner Multiplier: Sets the threshold for the start of the OB/OS corridor.
Outer Multiplier: Sets the threshold for the outer edge of the OB/OS corridor (historical extreme).
🔹 Visuals
Bullish/Bearish Color: Customizes the colors for uptrends and downtrends.
Base Transparency: Adjusts the transparency of the layered cloud effect.
Color Candles: Toggles the synchronization of price chart candles with the oscillator's momentum state.
Indicator

Donchian Ribbon [UAlgo]Donchian Ribbon is a chart-overlay Donchian Channel ribbon that visualizes multiple lookback lengths at the same time. Instead of plotting a single Donchian Channel, the script builds a fixed stack of channels that increase in length and blends them into a clean, layered ribbon above and below price using progressive fills.
The goal is to make market structure and regime easier to read without clutter:
- When the ribbon expands and stays orderly (fast boundaries leading, slow boundaries following), it often reflects sustained range expansion and more directional flow.
- When the ribbon compresses and bands overlap frequently, it typically reflects consolidation, rotational behavior, and reduced clarity.
- The slowest channel provides the structural “outer frame” of the market’s recent range, while shorter channels react first and show how quickly the range is shifting.
This indicator is designed as a context tool. It does not attempt to “predict” direction by itself, but it gives a high-quality visual map of evolving highs/lows across multiple sensitivities so you can align entries, risk, and expectations with the current regime.
🔹 Features
1) Multi-Length Donchian Stack (Ribbon Engine)
The script constructs several Donchian Channels from a Base Length and a Step Length. Each band represents a different sensitivity level:
- Fast bands respond quickly to recent highs and lows.
- Slow bands respond more conservatively and define broader containment.
By stacking these lengths together, you can see short-term responsiveness and higher-level structure simultaneously.
2) Two-Sided Ribbon (Upper and Lower Envelopes)
The indicator visualizes both sides of the Donchian framework:
- Upper ribbon is built from stacked Donchian highs (highest highs per length).
- Lower ribbon is built from stacked Donchian lows (lowest lows per length).
This keeps interpretation intuitive: price pressing into the upper ribbon suggests pressure toward recent highs, while leaning into the lower ribbon suggests pressure toward recent lows.
3) Gradient Depth via Layered Fills (Clean Charts)
Instead of drawing many lines, the script fills the space between consecutive bands. Transparency is gradually adjusted from the fast band to the slow band, producing a smooth depth effect that stays readable even on busy charts.
Intermediate plots are intentionally hidden so the ribbon remains the main visual output.
4) Regime Readability (Expansion vs Compression)
Because each band has a different lookback length, the ribbon naturally communicates volatility and state:
- Expansion: spacing between fast and slow bands increases, commonly seen in stronger directional phases.
- Compression: spacing collapses and bands cluster, commonly seen in ranges, pauses, or choppy rotation.
This helps you quickly decide whether to treat price action as breakout-oriented, trend-continuation, or mean-reverting.
5) Trend Baseline Reference (Slow Midpoint)
A baseline is plotted using the midpoint of the slowest channel. This provides a stable reference that helps you judge whether price is operating in the upper or lower half of the broader range structure.
🔹 Calculations
1) Donchian High, Low, and Midpoint Per Band
Each Donchian band is computed from its own length:
- High = highest high over the lookback length
- Low = lowest low over the lookback length
- Mid = average of High and Low
id.high := ta.highest(id.length)
id.low := ta.lowest(id.length)
id.mid := math.avg(id.high, id.low)
2) Length Sequencing (Base Length + Step Length)
The indicator creates a fixed number of bands. Lengths are built as:
- Band 1: base_length
- Band 2: base_length + step_length
- Band 3: base_length + 2 * step_length
- ...
- Final band: base_length + (ribbon_count - 1) * step_length
This yields a consistent progression from fast to slow sensitivity.
int len = base_length + (i * step_length)
channels.push(DonchianChannel.new(len))
3) Iterative Updates with Arrays and Methods
All bands are stored in an array and updated every bar using a unified method call. This ensures every band follows identical rules and makes the logic scalable and maintainable.
for dc in channels
dc.update()
4) Upper Ribbon Construction (Layered Fills Between Highs)
The upper ribbon is created by filling between consecutive Donchian highs. Each layer uses the same upper tone with progressively stronger visibility toward the slow band.
fill(p_fast_high, p_mid1_high, color.new(col_upper, 90), "Ribbon Upper 1")
fill(p_mid1_high, p_mid2_high, color.new(col_upper, 80), "Ribbon Upper 2")
fill(p_mid2_high, p_mid3_high, color.new(col_upper, 70), "Ribbon Upper 3")
fill(p_mid3_high, p_slow_high, color.new(col_upper, 60), "Ribbon Upper 4")
5) Lower Ribbon Construction (Layered Fills Between Lows)
The lower ribbon is created by filling between consecutive Donchian lows with the lower tone, again using progressive transparency.
fill(p_fast_low, p_mid1_low, color.new(col_lower, 90), "Ribbon Lower 1")
fill(p_mid1_low, p_mid2_low, color.new(col_lower, 80), "Ribbon Lower 2")
fill(p_mid2_low, p_mid3_low, color.new(col_lower, 70), "Ribbon Lower 3")
fill(p_mid3_low, p_slow_low, color.new(col_lower, 60), "Ribbon Lower 4")
6) Trend Baseline (Slow Midpoint)
The baseline is the midpoint of the slowest Donchian band, plotted as a stable center reference for the broadest range framework.
plot(dc_slow.mid, "Trend Baseline",
color = color.from_gradient(0.5, 0, 1, col_lower, col_upper),
linewidth = 2)
7) Visualization Choice (Hidden Internals, Visible Structure)
To keep charts clean, most intermediate plots are hidden and the ribbon fills do the heavy lifting visually, while the slow boundaries remain visible as the outer frame.
p_fast_high = plot(dc_fast.high, "Fast High", color = color.new(col_upper, 80), display = display.none)
p_fast_low = plot(dc_fast.low, "Fast Low", color = color.new(col_lower, 80), display = display.none)
p_slow_high = plot(dc_slow.high, "Slow High", color = color.new(col_upper, 50))
p_slow_low = plot(dc_slow.low, "Slow Low", color = color.new(col_lower, 50))
Indicator

Neighboring Price Bands [LuxAlgo]The Neighboring Price Bands indicator provides dynamic support and resistance levels based on the local statistical distribution of historical prices relative to the current market position. Unlike traditional volatility bands that rely on fixed standard deviations, this tool identifies "price neighbors" within a sorted historical buffer to determine where the market has previously found friction.
🔶 USAGE
The indicator helps traders identify potential reversal zones and breakout opportunities by analyzing the density of price action around the current level.
🔹 Support and Resistance
The bands act as flexible zones of interest. The upper (green) band represents a bullish boundary derived from historical prices slightly higher than the current price, while the lower (red) band represents a bearish boundary from prices slightly lower. When the price interacts with these bands, it is entering a zone where historical price density suggests a potential reaction.
🔹 Price Discovery & Breakouts
A unique feature of this tool is the "Discovery" mechanism. If the current price moves beyond the range of its historical "neighbors" (e.g., reaching a new multi-period high or low), the corresponding band will disappear, and a background highlight will appear.
Bullish Discovery: A green background highlight indicates the price is entering uncharted territory relative to the historical buffer, suggesting a strong bullish breakout.
Bearish Discovery: A red background highlight indicates the price is dropping below its local historical distribution, suggesting a strong bearish breakdown.
🔶 DETAILS
The script maintains a historical buffer of prices, which it constantly sorts to create a price distribution. For every new bar, the algorithm performs the following:
It locates the current price within the sorted distribution.
It identifies a specific number of "neighbors" (K) above and below that position.
It calculates a specific percentile within those neighbors to plot the bands.
Because the bands are derived from actual price frequency rather than a calculation like standard deviation (Bollinger Bands) or Average True Range (Keltner Channels), they adapt more specifically to "sticky" price levels where the market has historically spent time.
🔶 SETTINGS
Historical Buffer (Bars): The total number of past bars used to build the price distribution. A larger buffer includes more historical context, while a smaller buffer makes the bands more reactive to recent local ranges.
Neighboring Range (K): Determines how many samples from the sorted distribution are used to calculate the bands. A smaller K makes the bands tighter and more sensitive to the immediate price position.
Percentile: Controls the width of the bands within the neighbor groups. Higher values push the bands further away from the current price.
Smoothing: Applies an SMA to the resulting bands to reduce noise and provide a cleaner visual output.
Indicator
