Market Microstructure Pulse [JOAT]MARKET MICROSTRUCTURE PULSE
A composite microstructure oscillator that fuses three lower-timeframe-reconstructed flow primitives into a single bounded pulse line — the tick imbalance, the aggressive ask/bid streak, and the single-bar massive imbalance event. The pulse tells you in one number whether buyers or sellers are currently dominant at the tape level, and whether that dominance is at warning or extreme intensity.
Lower-timeframe reconstruction
Real microstructure lives below the chart timeframe. The pulse engine pulls intrabar prints from a configurable LTF (default 1 minute; auto-mode picks ~1/20 of the chart TF) and classifies each tick via the standard tick rule. The classified ticks are then EMA-smoothed by a configurable pulse length (default 14) and optionally volume-weighted (default ON) so a heavy print contributes proportionally more to the read than a light one.
The output is a smoothed signed value bounded approximately in where:
+1 — all recent ticks were buy-classified.
−1 — all recent ticks were sell-classified.
0 — perfectly balanced flow.
Aggressive streak histograms
Two separate counters track consecutive same-side ticks — one for aggressive asks, one for aggressive bids. When a streak exceeds the Aggressive Streak Min threshold (default 5), it qualifies as institutional persistence. The two histograms are rendered as a colour-coded background to the pulse line so you can see at a glance which side has been running consecutively. EMA-smoothed for visual stability.
Massive imbalance event
A single-bar event: when one side's share of total bar volume exceeds imbalancePct (default 80%), a Massive Imbalance event fires. This is the script's strongest single-bar read — institutional decisiveness landing on the tape.
Two-tier threshold system
Pulse Warning — |pulse| above the warning threshold (default 0.50). Inner band, visual reference.
Pulse Extreme — |pulse| above the extreme threshold (default 0.70). Triggers the Pulse Extreme alert and tints the chart background.
A toggleable Aggression Flip Marker prints a glyph at the bar where the pulse sign actually flips — useful for catching the moment dominance rotates sides.
Visual system
Pulse line in the iridescent palette (magenta buy / cyan sell) with configurable width.
Aggressive streak histograms — two-sided coloured columns behind the pulse (transparency configurable).
Threshold levels at ±warning and ±extreme (toggleable).
Gradient fill from pulse line to zero, coloured by current sign (transparency configurable).
Background tint on extreme — magenta or cyan tint when |pulse| is above extreme threshold (transparency configurable).
Aggression flip markers at sign-change bars (toggleable).
A locked Iridescent palette (magenta buy aggression / cyan sell aggression / yellow extreme accent on pure black) gives the pane a distinctive cyberpunk-tape identity.
Dashboard
Monospaced 11-row table positionable to any of nine corners. Surfaces:
Current pulse value with sign.
Buy streak count and sell streak count.
Aggressive side dominance with bar age.
Last extreme event direction with bars-ago.
Last flip direction with bars-ago.
Last massive imbalance event with bars-ago.
LTF in use, volume-weighting flag, pulse EMA length.
Threshold values for warning and extreme.
Alerts
Three alert conditions, each independently controllable:
Pulse Extreme — fires when |pulse| crosses above extreme threshold.
Aggression Flip — fires when pulse sign flips (positive ↔ negative).
Massive Imbalance — fires when a single bar's directional share exceeds the imbalance threshold.
How to read it
Three reads, in order of conviction:
Massive Imbalance alert at a structural level — the highest-conviction single read. Institutional decisiveness landed on the tape at a known S/R; the next directional move is more conviction-aligned with the imbalance side.
Pulse Extreme + matching aggressive streak — sustained dominance. The pulse is decisively past its extreme threshold AND the streak histograms show consecutive same-side runs above the streak minimum. This is the regime where momentum tools have their largest edge.
Aggression Flip after extreme — exhaustion read. The pulse hit extreme then flipped sign; the institutional commitment that drove the extreme has just rotated. Often produces clean reversals.
Suggested settings
Defaults (1m LTF, pulse EMA 14, streak EMA 7, volume-weighted ON, ±0.50 / ±0.70 thresholds, 80% imbalance, 5-tick streak min) are tuned for 5m–15m charts on liquid futures and crypto. For lower-timeframe scalping, drop LTF to 15s or 30s (Premium plan required) and pulse EMA to 8. For HTF, set LTF auto-mode and raise streak min to 10. The volume-weighting is the recommended default — without it, equal-tick instruments dominate the read regardless of size.
Originality
The implementation — the LTF tick-rule reconstruction with optional volume weighting, the bounded pulse formulation, the dual aggressive-streak histograms with EMA smoothing, the two-tier (warning / extreme) threshold system, the single-bar massive-imbalance detector, the aggression-flip marker logic, the chart-overlay extreme tinting, and the iridescent dual-hue palette — is JOAT-original. No third-party code reused. The pulse is the original composite formulation.
Limitations
Reconstructed tick direction is an inference — the tick rule is the accepted public-market proxy but it is not a direct read of bid/ask volume. Sub-minute LTFs require a PulseWire Premium or Ultimate plan. The pulse is bounded approximately in but extreme volume-weighted reads can briefly exceed those bounds; this is intentional and not a bug. EMA smoothing introduces a small lag; turn pulse length to 1 to see the raw imbalance.
—
-made with passion by jackofalltrades
Indicator

Kalman Quantum Drift [JOAT]KALMAN QUANTUM DRIFT
A trend-and-envelope engine built on the cleanest pair of state-space tools in quantitative finance: a Kalman filter for the centreline (Bayesian, adaptive, mathematically optimal under linear-Gaussian assumptions) and a GARCH(1,1) conditional-variance model for the envelope (the institutional standard for time-varying volatility). The script reads price as a noisy observation of an unobservable true state; the Kalman filter estimates that state recursively; GARCH estimates the noise's volatility; the envelope = mid ± k · σ_GARCH. A signal engine layered on top detects Collapse events (>3σ excursions) and Tunnel events (gap-throughs of the envelope) — the quantum analogues of state collapse and quantum tunnelling.
The Kalman filter, properly
A single-state recursive Bayesian filter. At each bar:
Predict : prior estimate = previous estimate. Prior variance = previous variance + Q.
Update : Kalman gain = prior variance / (prior variance + R). New estimate = prior + gain × (observation − prior). New variance = (1 − gain) × prior variance.
The two tuning knobs are:
Q (process noise) — how much the script trusts new observations. Higher Q = faster, noisier mid-line.
R (measurement noise) — how much the script trusts the model. Higher R = slower, smoother mid-line.
This is the Bayesian-optimal smoother for linear-Gaussian state-space data. Real markets are not perfectly linear-Gaussian, but the Kalman estimate is robust enough to be the cleanest mid-line you can build without going into heavy non-linear filtering.
GARCH(1,1) envelope
The envelope around the Kalman mid is not ATR or stdev — it is GARCH(1,1) :
σ²_t = ω + α · ε²_{t−1} + β · σ²_{t−1}
ω is the long-run variance baseline, α is the reaction to last shock squared (ARCH term), β is the persistence of past variance (GARCH term). For stationarity, α + β < 1 (the script's α/β defaults respect that). Optional log returns (default ON) and a warm-up window seed the variance from realised returns.
The envelope is mid ± k · σ_GARCH , rendered as a gradient (configurable number of nested fills, each at progressive transparency from edge to core).
Three-signal engine
Collapse — fires when price travels more than collapse threshold (default 3.0) σ-units from the Kalman mid. The "state collapse" event — price has decisively departed the filter's expected band. Bull or bear depending on direction.
Tunnel — fires when a bar gaps through the entire envelope from one side to the other. The "quantum tunnel" event — a discontinuous jump that bypasses the band gradient.
Buy / Sell crosses — fire when price crosses the Kalman mid from one side. Optional Collapse confirmation gate (default ON) — Buy / Sell only fires when a Collapse occurred within the configurable lookback window. This dramatically improves signal quality.
A configurable signal cooldown (default 5 bars) prevents stacking.
Visual system
Kalman mid-line — coloured by its own slope (bull / bear), configurable width.
Gradient envelope — nested fills (configurable steps, default 6) using the same base hue with progressive transparency from edge to core. Strict two-hue discipline (bull cyan / bear pink only).
Price bar colouring by mid slope (toggleable).
Background tint on extremes — subtle bgcolor when price is at envelope edge (toggleable, default 92 transparency).
Event glyphs — C (Collapse) and T (Tunnel) markers at the event bar. Configurable size.
A locked Quantum palette (cyan bull / pink bear / muted cyan mid on a deep violet-black) gives the chart a distinctive quant-physics identity.
Dashboard
Monospaced table positionable to any of nine corners. Surfaces:
Current Kalman mid value with slope direction.
σ_GARCH value and the envelope half-width.
Distance of price from mid in σ-units.
Last Collapse / Tunnel / Buy / Sell event with bar age.
Q / R settings in use.
GARCH ω / α / β confirmation.
Alerts
Six alert conditions, each independently controllable:
Collapse Up / Down (>kσ excursion)
Tunnel Up / Down (envelope gap-through)
Slope Flip (Kalman mid changes direction)
Sigma Spike (σ_GARCH exceeds its own recent baseline)
How to read it
Three reads, in order of conviction:
Buy/Sell after a Collapse (the script's intended signal) — the cleanest trend-entry the engine produces. A Collapse means price decisively departed expected range; the subsequent mid-line cross confirms the new direction with the strongest possible context. This is the highest-conviction read.
Tunnel — an exceptional, rare event. When a single bar jumps the entire envelope, the market has experienced a discontinuity (news, large block, exchange dislocation). Often produces the day's largest moves; almost always followed by elevated volatility.
σ Spike alert without a directional event — a regime warning. Volatility just expanded without a directional commitment yet. The next signal that fires is statistically more likely to be meaningful than the one before the spike.
Suggested settings
Defaults (Q = 0.02, R = 1.5, GARCH ω=2e-6 / α=0.10 / β=0.85, k = 2.5, gradient steps 6) are tuned for 15m–1H on liquid markets. For lower timeframes drop k to 2.0. For HTF raise R to 3.0 (more model trust on smoother data). The GARCH α/β defaults are the institutional standard; α + β remains under 1 for stationarity.
Originality
Kalman filtering and GARCH(1,1) are textbook quantitative-finance methods — both decades-old, both well-documented. The implementation here — the single-state recursive Kalman with exposed Q/R, the GARCH(1,1) variance recursion with warm-up window, the gradient-envelope render using strict two-hue alpha-only variation, the three-signal engine (Collapse / Tunnel / Cross), the optional Collapse-confirmed Buy/Sell gating, the event glyph markers, and the background tint on extremes — is JOAT-original. No third-party code reused. The pairing of Kalman + GARCH + quantum-inspired signal naming is the original presentation.
Limitations
The Kalman filter assumes linear-Gaussian state dynamics — real markets violate this, especially around news and gaps. The Q / R tuning is exposed precisely because no single setting is universally correct; tune to your instrument's noise profile. GARCH's α/β must sum to less than 1 for stationarity — the defaults respect this; if you push them too aggressively the variance can explode. Collapse and Tunnel events are confirmed on bar close (non-repainting).
—
-made with passion by jackofalltrades
Indicator

Hurst Regime Sentinel [JOAT]HURST REGIME SENTINEL
A proper R/S Hurst-exponent regime classifier — the single most respected statistical test for "is this market trending, mean-reverting, or random?". On top of the textbook R/S analysis, the Sentinel adds a five-class regime taxonomy (Strong MR, MR, Random, Trend, Strong Trend), a confirmation-bars filter to suppress flicker, a right-side floating Hurst badge, a regime-tinted background, and — uniquely — a Suggested JOAT Indicator dashboard row that names the best-fit companion script in the JOAT suite for the current regime.
The Hurst exponent, properly
The Hurst exponent H is a number between 0 and 1 that characterises the long-run persistence of a time series:
H < 0.5 — anti-persistent / mean-reverting. The series tends to reverse its recent direction.
H = 0.5 — random walk (Brownian motion). No memory.
H > 0.5 — persistent / trending. The series tends to continue its recent direction.
The classical estimator is R/S analysis (rescaled range): split the window into sub-segments, compute the range of cumulative deviations from each sub-mean, normalise by the sub-stdev, average, and fit a log-log slope. This script implements that estimator over a configurable lookback (default 100, the canonical value), with optional log-return source for theoretical correctness, and an EMA smoother on top of the raw H series to give a stable regime read.
Five-class regime taxonomy
The Sentinel does not just classify into trend/MR/random — it sub-classifies the trend and MR sides:
Strong MR — H below the strong-MR boundary (default 0.30). Severely anti-persistent. Aggressive reversion regime.
MR — H between strong-MR and the MR upper (default 0.40). Mean-reverting.
Random — H between MR upper and trend lower (default 0.55). No statistical edge from persistence assumptions.
Trend — H above trend lower. Trending.
Strong Trend — H above the strong-trend boundary (default 0.65). Strongly persistent. Aggressive momentum regime.
A Minimum-bars-to-confirm filter (default 3 bars) suppresses regime flicker; a change must persist this many bars before it is committed.
Suggested JOAT Indicator row (unique)
The dashboard exposes a Suggested Indicator row that names the best-fit companion script from the JOAT suite for the current regime. The user can pick which suggestions appear (defaults: Volatility Reversion Bands Pro for MR, Quantum Trend Matrix for Trend, Liquidity Magnet Pro for Random — but every other JOAT indicator is selectable). This converts the abstract regime read into a concrete next action: when the regime changes, the script tells you which other tool in the suite to put on the chart.
Visual system
Right-side floating label — anchored N bars to the right of the latest bar with current H value, regime, and sub-class.
Regime-change labels — drawn at the bar where a confirmed regime change occurs.
Background tint by regime — violet for MR, teal for Trend, untinted for Random. Strong sub-classes use a stronger (lower-transparency) alpha than mild sub-classes. Both alphas are configurable.
Optional Hurst line companion — when enabled, plots the H series scaled to a configurable fraction of the visible price range. Use to visually track H movement over time. Off by default for a clean chart.
Optional reference levels at 0.40 / 0.50 / 0.55 when the line is shown.
A locked Mystic palette (teal trend / violet MR / white random on a midnight-blue ground) gives the chart a distinctive structural identity.
Dashboard
Monospaced table positionable to any of nine corners. Surfaces:
Current H value (raw and smoothed).
Regime classification with glyph.
Sub-class (Strong MR / MR / Random / Trend / Strong Trend).
Bars in current regime.
Distance from H to nearest threshold.
Suggested JOAT Indicator row (toggleable).
Source series in use (Close / HL2 / HLC3 / OHLC4 / Log Returns).
Alerts
Multiple alert conditions, each independently controllable:
Regime changed to MR / Random / Trend
Sub-class changed to Strong MR / Strong Trend
H crosses 0.50 (random-walk centre)
How to read it
Three reads, in order of conviction:
Sub-class entry (Strong MR or Strong Trend) — the highest-conviction read. The market has decisively committed to a persistence regime; the suggested companion indicator becomes high-conviction.
Regime change confirmed (after the minimum-bars filter) — meaningful enough to switch toolkits. If you were trading momentum and the script now reads MR, your edge has just rotated.
H crossing 0.50 — the structural fault line. Above, persistence is positive; below, it is negative. Even without a sub-class entry, a clean cross of 0.50 is a regime warning.
Suggested settings
Defaults (lookback 100, EMA smoothing 14, MR upper 0.40, trend lower 0.55, strong boundaries 0.30 / 0.65) are tuned for daily and 4H charts on liquid markets — the timeframes where R/S analysis is statistically most meaningful. For 1H and below the indicator works but the H estimate becomes noisier; raise the EMA smoother to compensate. For very long horizons (1W+) increase lookback to 200.
Originality / what's reused
The R/S Hurst estimator is the textbook 1951 method — public-domain statistics, implemented from the original Hurst paper. The implementation here — the bounded-loop R/S computation with sub-segment averaging, the five-class regime taxonomy with strong sub-classes, the confirmation-bars regime-change filter, the regime-driven background tint with mild/strong alpha tiers, the optional scaled Hurst-line overlay, the right-side floating badge, and the suggested-JOAT-indicator dashboard row — is JOAT-original. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. The R/S loop, the regime classifier, the suggested-indicator router, and the dashboard are isolated modules. Forks welcome with credit.
Limitations
Hurst R/S is statistical — it describes the recent past, it does not predict the future. The estimator carries the natural noise of finite-sample R/S; the EMA smoother is there to suppress flicker but cannot eliminate underlying noise on short lookbacks. The "Suggested JOAT Indicator" row is a heuristic mapping from regime to tool, not a prediction that any specific signal from that tool will fire — it tells you which corner of the toolkit to look at; the tool itself tells you when to act.
—
-made with passion by jackofalltrades
Indicator

Heisenberg Uncertainty Bands [JOAT]HEISENBERG UNCERTAINTY BANDS
A novel band-and-state engine inspired by the Heisenberg uncertainty principle: the recognition that for a market, just as for a quantum particle, you cannot simultaneously be certain about both position (where price is) and momentum (how fast it is moving). Heisenberg Uncertainty Bands measures both uncertainties, tracks their empirical floor, classifies the current market into one of three quantum-inspired states — pure position |x⟩, pure momentum |p⟩, or mixed |ψ⟩ — and projects bands around price accordingly.
The principle, translated
In quantum mechanics, Δx · Δp ≥ ℏ/2 — the product of the position uncertainty and the momentum uncertainty cannot fall below a constant called Planck's reduced. For markets the analogue is:
Δx — the rolling standard deviation of price over a configurable window. The uncertainty in where price is sitting.
Δp — the rolling standard deviation of returns (log or arithmetic, configurable) over a separate window. The uncertainty in how fast price is moving.
ℏ̂ (hbar-hat) — the EMA-smoothed long-run product Δx · Δp. The script's empirical estimate of the market-specific lower bound.
Just like in physics, when the market is certain about position (price has been stable), it becomes uncertain about momentum (next direction is unknown) — and vice versa. The script measures both, computes the product, compares it to the empirical floor, and uses the ratio Δx/Δp as the state classifier.
Three quantum states
Pure Position State |x⟩ — Δx/Δp below the position threshold (default 0.40). Price is constrained to a tight band; the next directional move is uncertain. Yellow palette.
Pure Momentum State |p⟩ — Δp/Δx below the momentum threshold (default 0.40). Direction is committed; the range is widening. Magenta palette.
Mixed State |ψ⟩ — neither pure state condition holds. Violet palette.
The state badge on the right of the chart shows the bra-ket glyph (Unicode |x⟩ / |p⟩ / |ψ⟩ by default; can fall back to plain POS / MOM / MIX if your font lacks the brackets). A state cooldown (default 3 bars) debounces flicker.
Band projection
Two band families are projected around the live mid price:
Position bands — mid ± k × Δx. Solid by default. The classic "how wide is price ranging right now" envelope.
Momentum bands — mid ± k × (Δp scaled to the price axis). Dashed by default (configurable: Dashed / Dotted / Solid). Projected so their visual range matches the position bands.
When the two families are far apart in width, the state is decisive (|x⟩ if position is much tighter, |p⟩ if momentum is much tighter). When they are similar, the state is mixed.
Optional uncertainty-score candle tint
A toggleable layer recolours each candle based on how far the current Δx · Δp product deviates from the empirical floor ℏ̂. When the product is at the floor, the market is at its quantum-mechanical minimum — the most decisive setup; further from the floor means the market is "spending uncertainty" on both axes simultaneously.
Visual system
Position bands (solid, gradient fill optional).
Momentum bands (dashed / dotted / solid).
Mid line (style configurable).
State badge (right-side floating, configurable offset and size).
Background tint by state (configurable transparency, institutional default).
Optional candle re-tint by uncertainty score.
A locked Plasma palette (yellow position / magenta momentum / violet mixed on a deep-void ground) gives the chart a distinctive physics-inspired identity.
Dashboard
Monospaced table, positionable to any of nine corners, optional compact-no-header mode. Surfaces:
Current Δx and Δp values.
Δx · Δp product and its ratio to the ℏ̂ floor.
Δx / Δp ratio (drives the state).
Current state (|x⟩ / |p⟩ / |ψ⟩) with bar age.
Last state change with bars-ago.
Return mode (Log / Arithmetic) in use.
Alerts
Three alert conditions:
Pure Position State entry
Pure Momentum State entry
Mixed State return
How to read it
Two reads, in order of conviction:
Pure Momentum State |p⟩ entry is the script's directional commitment signal. Momentum has decisively exceeded position uncertainty — the move is real. Trend-following tools and breakout entries become high-conviction.
Pure Position State |x⟩ is the coil. Range has clamped down, direction is undecided. Reversion tools become high-conviction inside the band; the next state transition (back to |ψ⟩ or jumping to |p⟩) often produces a decisive breakout.
When Δx · Δp is close to ℏ̂ (the empirical floor) the market is at its most efficient — there is no slack in either axis to spare. These bars often coincide with the cleanest reversals and breakouts; the candle-tint layer is there specifically to highlight them.
Suggested settings
Defaults (position window 20, momentum window 20, hbar smoothing 100, k = 2.0, state threshold 0.40) are tuned for 15m–4H on liquid markets. For lower timeframes drop both windows to 10–14. For HTF (4H+) raise both to 30–50. Log returns are the theoretically-correct mode and the recommended default; switch to Arithmetic only if your instrument has trivially small price scale.
Originality
The implementation — the Δx / Δp dual-uncertainty pipeline, the EMA-smoothed empirical ℏ̂ floor, the three-state quantum-inspired classifier with bra-ket labelling, the dual-band projection with auto-scale, the uncertainty-score candle tint, the cooldown-debounced state machine, and the plasma palette — is JOAT-original. No third-party code reused. The Heisenberg principle is fundamental physics; the financial-market analogue and its implementation here are original work.
Limitations
The Heisenberg analogy is structural, not literal — markets do not obey the quantum-mechanical commutator relation; the script uses the concept of an inviolable joint-uncertainty floor as a market-regime classifier. The empirical floor ℏ̂ is estimated by EMA over a long window (default 100 bars) — on instruments with very short history the floor is approximate. State classification can flicker across the threshold; the cooldown is there to suppress this and is tunable.
—
-made with passion by jackofalltrades
Indicator

Fractal Dimension Index [JOAT]FRACTAL DIMENSION INDEX
A proper Higuchi-method Fractal Dimension Index that tells you whether the market is currently trending (D approaches 1.0 — a smooth, linear path), chopping (D approaches 2.0 — a noisy, plane-filling random walk), or somewhere in between. Unlike volatility, FDI does not care about how much price moved — it cares about how convoluted the path was getting there . That makes it the single cleanest regime-classification number in technical analysis.
What FDI measures
The fractal dimension of a curve is a number between 1.0 (a perfect line) and 2.0 (a curve dense enough to fill a plane). For price series:
D ≈ 1.0–1.4 — the price path is close to a straight line. The market is trending; momentum tools work, reversion tools don't.
D ≈ 1.4–1.6 — the path is in a transitional regime. Use neutral tools.
D ≈ 1.6–2.0 — the path is chaotic and self-intersecting. The market is chopping; reversion tools work, momentum tools whipsaw.
The Higuchi-paper canonical thresholds are 1.4 (trend) and 1.6 (chop); both are configurable.
Higuchi algorithm — done properly
The implementation is the standard Higuchi method:
For each k from 1 to k_max (configurable, default 8), compute the average curve length L(k) across k starting offsets, normalised by the window length N.
Build the k_max pairs (log k, −log L(k)) .
Fit a least-squares line through those pairs; the slope is the fractal dimension D .
Apply optional EMA smoothing (configurable, default 5 bars) to suppress per-bar jitter.
A minimum-valid-pairs guard (default 3) prevents D from being computed when too few (k, L) pairs are finite, and a warmup-bars gate (default 50) prevents wild D values on sparse early data.
Regime classification with hysteresis
Raw D is mapped to one of three regimes — Trending / Random / Chop — using the two-threshold scheme. Two extra alert thresholds ( Extreme Trend D < 1.30 and Extreme Chop D > 1.70) flag the high-conviction tail cases.
Visual system
Background tint by regime — pastel mint for trend, coral for chop, cream for random. Transparency configurable (default 88, institutional-subtle).
Regime-change markers — tiny up/down/circle glyphs above price at every confirmed flip.
Optional candle tinting by regime (off by default to preserve user's chart style).
Optional D-line companion — when enabled, the smoothed D is plotted as a series. Because the script is overlay, pin the line to its own scale (right-click → Pin to scale → No Scale). For a true sub-pane, add the indicator a second time and drag that instance into a new pane.
Right-side floating label — anchored N bars right of the live close showing current D and a regime glyph. Configurable size, offset, regime text.
Optional reference horizontal lines at D = 1.4 / 1.5 / 1.6 when the D-line is shown.
A locked Pastel palette (mint trend / coral chop / cream random on a warm-white ground) gives the indicator a distinctive soft-institutional look.
Dashboard
Monospaced table positionable to any of nine corners. Surfaces:
Current D value and smoothed D value.
Regime classification with glyph.
Bars in current regime.
Distance to nearest threshold.
Extreme-state badge when in tail regions.
Alerts
Four alert conditions, each independently controllable:
Regime Flip (any classification change)
Extreme Trend (D crosses below 1.30)
Extreme Chop (D crosses above 1.70)
D Series Crosses 1.5 (the random-walk centre)
How to read it
Two reads, in order of conviction:
Regime classification + bars in regime — the more bars the current regime has persisted, the more reliable the read. Brand-new flips can flicker; multi-bar confirmed regimes do not.
Extreme regime alerts — when D crosses below 1.30, the market is in an extremely directional regime — momentum trades are the highest-conviction setups. When D crosses above 1.70, the market is in pathological chop — fade extremes, do not chase breakouts.
The single most useful workflow is to use FDI as a meta-filter — pair every signal-generating indicator with FDI regime. Trend signals from a momentum tool become high-conviction when D < 1.4; reversion signals from a Z-score oscillator become high-conviction when D > 1.6. The Suggested JOAT Indicator dashboard rows in Hurst Regime Sentinel and Entropy Oscillator follow exactly this principle.
Suggested settings
Defaults (window 30, k_max 8, EMA smoothing 5, warmup 50) are tuned for 15m–1H. For lower timeframes drop window to 20 and EMA to 3. For HTF (4H+) raise window to 50 and EMA to 8. The Higuchi-paper thresholds (1.4 / 1.6) are intentionally classical — tighten only if you find the regime classification too sensitive on your instrument.
Originality / what's reused
The Higuchi fractal-dimension algorithm is the textbook 1988 method — a public-domain piece of applied mathematics, implemented from the paper. The implementation here — the bounded-loop Higuchi pipeline with minimum-pairs guard and warmup gate, the two-threshold regime classifier with extreme-tail alerts, the pastel-palette regime tint, the pin-to-scale D-line companion logic, the right-side floating label, and the dashboard — is JOAT-original. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. The Higuchi loop, the regime classifier, the alert logic, and the dashboard are isolated modules — adapt any single piece without reading the whole file. Forks welcome with credit.
Limitations
Higuchi D is statistical — it tells you about recent path complexity , not future direction. A trending regime (D < 1.4) does not say which way; it says momentum tools should work. Combine with a directional indicator. The algorithm uses bounded Pine loops; very large window values increase compile cost. D is smoothed (EMA-filtered) by default, which trades some lag for substantially reduced flicker; turn smoothing off to see raw D.
—
-made with passion by jackofalltrades
Indicator

Entropy Oscillator [JOAT]ENTROPY OSCILLATOR
A pane oscillator that measures the Shannon entropy of recent returns — the information-theoretic measure of how uncertain (chaotic) vs how predictable (directional) the recent distribution of price moves has been. Low entropy = the market is in a directional regime; high entropy = the market is chopping. Unlike volatility, entropy does not care about how big moves are — only how concentrated their distribution is. That distinction is what makes it one of the cleanest regime-classification tools in quantitative finance.
Shannon entropy, applied to markets
For a sequence of N recent log returns, the script:
Bins the returns into B equal-width bins across the empirical range.
Computes the probability of each bin (count / N).
Computes the Shannon entropy: H = −Σ p(i) · log(p(i)) over non-zero bins.
Normalises to by dividing by log(B) — the maximum possible entropy for B bins, which corresponds to a perfectly uniform distribution.
A perfectly uniform distribution (returns evenly spread across all bins → chaotic chop) produces normalised entropy of 1.0. A perfectly concentrated distribution (all returns in one bin → directional regime) produces entropy of 0. Real markets sit in between, and the script's job is to tell you where.
Two-threshold regime classification
Normalised entropy < low threshold (default 0.30) → DIRECTIONAL regime. The distribution of returns is concentrated; momentum tools work.
Normalised entropy > high threshold (default 0.70) → CHOP regime. The distribution is spread; reversion tools work.
Between the thresholds → MIXED regime. Neither side has the edge.
The thresholds are the spec-default institutional values; tighten or loosen for your instrument.
Slope-coloured entropy line
The smoothed entropy series is plotted in the pane with a slope-driven colour gradient — bull colour when entropy is falling toward directional, bear colour when entropy is rising toward chop. At a glance you can see which way the regime is moving even before it has crossed a threshold.
Visual system (pane + chart overlay)
In the pane:
Slope-coloured entropy line.
Threshold lines at low / 0.5 / high (toggleable).
Translucent fill zones for the low and high regions.
Pane background tint by current regime (toggleable).
On the chart (force_overlay):
Bar colouring — chart bars tinted by regime (cool when directional, hot when chop, neutral when mixed). Off by default.
Overlay background — subtle bgcolor projected onto the main chart marking the current regime. Off by default.
A locked Crimson Pulse palette (electric blue directional / lime-yellow chop / muted mauve mixed on a crimson-black ground) gives the pane a distinctive structural identity.
Regime Suggestion dashboard row
Like its sister script Hurst Regime Sentinel, Entropy Oscillator exposes a Suggested JOAT Indicator row that names the best companion script for the current regime. Defaults: AlphaTrend / Kalman Quantum Drift / Doppler Velocity Shift family for Directional regimes; Z-Score Reversion / Heisenberg Uncertainty Bands / Brownian Motion Residual / Renaissance Mean Reversion for Chop; Liquidity Magnet / Schrödinger Zone Probability / Fractal Dimension Index for Mixed. Every suggestion is user-configurable — you pick from the JOAT suite which tool the dashboard recommends per regime.
Dashboard
Monospaced table positionable to any of nine corners. Surfaces:
Current normalised entropy value.
Smoothed entropy and its slope direction.
Regime classification.
Bars in current regime.
Distance from entropy to nearest threshold.
Source series + window length + bin count in use.
Suggested JOAT Indicator (toggleable).
Alerts
Three alert conditions, each independently controllable:
Cross into Low Entropy (directional regime entry).
Cross into High Entropy (chop regime entry).
Any Regime Change (any classification flip).
How to read it
Two reads, in order of conviction:
Entry into Low Entropy — the directional commitment signal. The recent distribution of returns has narrowed; the market is in a momentum regime. Pair with a directional indicator (the dashboard's suggestion row tells you which).
Entry into High Entropy — the chop confirmation signal. Returns are widely distributed; momentum tools whipsaw, reversion tools work. Pair with a reversion indicator.
The "slope of entropy" itself is the leading read — when the line is falling toward the low threshold, a directional regime is forming; when it is rising toward the high threshold, chop is building. You do not need to wait for the threshold cross if you trust the slope gradient.
Suggested settings
Defaults (window 50 returns, 10 bins, EMA smoothing 3) are tuned for 15m–4H on liquid markets. The rule of thumb is window / bins ≥ 5 so each bin has enough samples to be statistically meaningful. For lower timeframes drop window to 30 and bins to 6. For HTF raise window to 100 and bins to 12.
Originality / what's reused
Shannon entropy is textbook 1948 information theory — public domain. The implementation here — the rolling N-return histogram pipeline with configurable bins, the log(B)-normalised entropy formula, the two-threshold regime classifier with mixed centre, the slope-coloured entropy line, the chart-overlay bar-colouring projection from the pane, and the user-configurable Suggested JOAT Indicator dashboard row — is JOAT-original. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. The histogram + entropy loop, the regime classifier, the slope-colour pipeline, and the dashboard are isolated modules. Forks welcome with credit.
Limitations
Shannon entropy describes the recent distribution of returns — it does not predict direction. A directional regime tells you momentum tools should work; it does not say which way. The histogram is sensitive to bin count and window length; the rule-of-thumb window / bins ≥ 5 is the default sanity check. EMA smoothing trades some lag for substantially reduced flicker; turn smoothing to 1 to see raw entropy.
—
-made with passion by jackofalltrades
Indicator

Doppler Velocity Shift [JOAT]DOPPLER VELOCITY SHIFT
A trend-acceleration / exhaustion detector built on the Doppler shift principle : a stationary observer (the baseline frequency) compared to a moving source (the instant frequency) produces a measurable shift whose sign tells you whether the source is approaching (compression / acceleration) or receding (rarefaction / exhaustion). For markets the analogue is simple: when the residual wave's oscillation frequency is slower than its long-run baseline, momentum is accelerating into the trend; when it is faster than baseline, the trend is exhausting into chop.
The Doppler analogue, translated
The script's pipeline:
Detrend price by subtracting an EMA (configurable length). The result is a residual wave oscillating around zero.
Optionally normalise by ATR so the wave amplitude is regime-aware.
Count zero-crossings of the residual over a short window — this gives the instant frequency .
Count zero-crossings over a long window — this gives the baseline frequency .
Compute the Doppler shift = (instant − baseline) / baseline. Positive shift = faster than baseline → exhaustion. Negative shift = slower than baseline → acceleration.
EMA-smooth the shift to reduce flicker.
The output is a percentage that is intuitive to read: +0.30 means oscillations are 30% faster than baseline (approaching exhaustion); −0.30 means 30% slower (accelerating into trend).
Two-threshold event detection
Exhaustion — shift > +exhaustion threshold (default +0.30) for N consecutive bars (configurable, default 3). Fires the Exhaustion label.
Acceleration — shift < −acceleration threshold (default −0.30) for N consecutive bars. Fires the Acceleration label.
Frequency Anomaly — when |shift| crosses threshold × multiplier (default 2.0× → ±0.60). The anomaly alert fires and the chart background tints accordingly.
A configurable Event Cooldown (default 8 bars) prevents same-type events from stacking. A multi-bar confirmation gate prevents single-bar noise from triggering events.
Visual system
Detrend residual line (overlay) with configurable transparency and cosmetic display scale.
Vertical event lines at each Acceleration / Exhaustion event, with optional full-height extension for emphasis.
Event labels — Unicode glyphs by default (toggleable to plain text ACCEL / EXHAUST).
Frequency anomaly background tint when the |shift| crosses the anomaly trigger.
Pane companion (toggleable, on by default) — plots instant frequency, baseline frequency, and Doppler shift % in a separate pane below the chart.
A locked Cyber Aqua palette (electric blue acceleration / hot pink exhaustion / muted blue-gray stable on a near-black ground) gives the indicator a distinctive physics-inspired identity.
Dashboard
Monospaced table, positionable to any of nine corners, with row-fade gradient. Surfaces:
Instant frequency (zero-crossings in the short window).
Baseline frequency (zero-crossings in the long window).
Doppler shift % (signed).
Current status (ACCEL / EXHAUST / STABLE).
Last event direction with bars-ago.
Configuration: detrend length, frequency window, baseline window.
Anomaly flag when triggered.
Alerts
Three alert conditions, each independently controllable:
Trend Acceleration (shift < −threshold for N bars)
Approaching Exhaustion (shift > +threshold for N bars)
Frequency Anomaly (|shift| > threshold × multiplier)
How to read it
Two reads, in order of conviction:
Acceleration label after a quiet period — the script's intended trend-entry signal. Frequency has slowed, meaning the residual is making fewer mid-line crossings — the wave has lengthened and is now committed in one direction. Pair with a directional indicator for entry.
Exhaustion label inside an extended trend — the script's intended trend-exit signal. Frequency has risen above baseline — the residual is making more crossings, meaning the trend is fragmenting. Reduce / exit trend exposure; the next move is often a reversal.
The Frequency Anomaly alert is the script's headline event — when |shift| spikes far past threshold the market is in an extreme state, almost always associated with either an explosive breakout (acceleration anomaly) or an exhaustion blowoff (exhaustion anomaly).
Suggested settings
Defaults (detrend EMA 20, frequency window 40, baseline window 200, smoothing EMA 3, ±0.30 thresholds, 3-bar confirmation) are tuned for 15m–1H on liquid markets. For lower timeframes drop windows proportionally (10 / 20 / 100). For HTF (4H+) raise windows (30 / 80 / 400). The ATR-normalised residual is the recommended default — without it, the script's behaviour drifts on instruments with changing volatility levels.
Originality
The Doppler shift is a fundamental result of classical physics; the financial-market analogue and its implementation here are original. The pipeline — the EMA-detrended residual wave with optional ATR normalisation, the rolling zero-crossing frequency estimator at two scales, the (instant − baseline) / baseline shift formula, the EMA-smoothed shift, the multi-bar confirmed event classifier with cooldown, the anomaly multiplier layer, the vertical event line render, the pane-companion three-series overlay, and the dashboard — is JOAT-original. No third-party code reused. The use of oscillation-frequency shift as a trend acceleration / exhaustion metric is the original quantitative contribution.
Limitations
Zero-crossing frequency estimation is noisy on short windows; the smoothing input (default 3) exists to suppress that. The frequency-anomaly trigger is a heuristic — it tells you the market is in a rare state, not which direction it will resolve. Events confirm only after the multi-bar threshold; events are non-repainting but lag by the confirmation window.
-made with passion by jackofalltrades
Indicator

Brownian Motion Residual [JOAT]BROWNIAN MOTION RESIDUAL
A regime classifier rooted in the sqrt(T) scaling law of geometric Brownian motion. Under a true random walk, the standard deviation of T-bar returns scales as σ₁ · √T — that is the central fact of Brownian motion in continuous time. Markets violate this scaling in revealing ways: when they trend, dispersion at long horizons grows faster than √T; when they mean-revert, it grows slower. Brownian Motion Residual measures that violation across three horizons simultaneously, aggregates it, and surfaces a single Z-like residual that classifies the market into Strong MR / MR / Random / Trend / Strong Trend.
The sqrt(T) scaling law, restated
For a Brownian process with per-bar volatility σ₁:
σ(T-bar return) = σ₁ · √T
For a real market the observed σ at horizon T can be measured directly. The residual is the deviation of the observed value from the Brownian-implied value:
residual(T) = σ_observed(T) − σ₁ · √T
When the residual is positive , dispersion at T is greater than Brownian predicts — the market is trending (price travels further than a random walk in T bars). When it is negative , dispersion is less than Brownian predicts — the market is mean-reverting (price ends up closer to home than a random walk would).
Optional normalisation by σ₁ · √T turns the residual into a unit-less percentage of expected dispersion, so the same threshold values are meaningful across instruments and timeframes.
Three horizons, weighted blend
A single horizon is noisy. Brownian Motion Residual reads three horizons simultaneously (default 5 / 20 / 100 bars), each independently toggleable and weighted (default 1.0 each). The horizons are aggregated into a single residual line — the script's headline metric. Toggling off the short horizon makes the read smoother and slower; toggling off the long horizon makes it more reactive. Configurable.
A configurable EMA on top of the aggregated residual suppresses single-bar noise without lagging the regime view.
Two-tier classification
The aggregated residual is mapped to one of five regimes by two symmetric thresholds (default ±1 mild, ±2 strong):
Strong Trend — residual > +2. Aggressive momentum regime.
Trend — residual between +1 and +2. Trending.
Random — residual between −1 and +1. Brownian-like.
MR — residual between −2 and −1. Mean-reverting.
Strong MR — residual < −2. Aggressive reversion regime.
Visual system
Slope-coloured residual line with configurable width and optional area fill under it (transparency configurable).
Zero line and ±1 / ±2 threshold lines (toggleable).
Background tint by regime (subtle 88 transparency default) — teal trend, lavender MR, mint random.
Per-horizon plots (toggleable, off by default) — each horizon's residual as a faint dotted overlay; useful for seeing which horizon is driving the read.
Regime-change dots above the line at every confirmed flip.
A locked Aurora palette (teal trend / lavender MR / mint random on a deep-night ground) gives the pane a distinctive structural identity.
Dashboard
Monospaced table, positionable to any of nine corners, with vertical row-fade. Surfaces:
Aggregated residual (raw and smoothed).
Regime classification with glyph.
σ₁ value (the Brownian anchor).
Per-horizon residuals (h1 / h2 / h3) when enabled.
Bars in current regime.
Distance to nearest threshold.
Optional fancy Unicode header for the institutional aesthetic.
Alerts
Three alert conditions, each independently controllable:
Regime Change (any classification flip)
Strong threshold cross (±2)
Mild threshold cross (±1) — off by default
How to read it
Three reads, in order of conviction:
Strong Trend / Strong MR entry — the highest-conviction read. The market has decisively departed from Brownian scaling in one direction. Pair with a momentum tool in Trend regimes, a reversion tool in MR regimes.
Residual crossing zero — the regime fault line. Even before crossing a threshold, a sustained sign flip means the underlying distribution has rotated; the next threshold cross will confirm the new regime.
Per-horizon disagreement (when enabled) — when the short horizon is in trend regime but the long horizon is in MR regime, the market is in a nested state: short-term momentum inside a longer reversion. This is the textbook setup for fade-the-extreme intraday plays inside a wider range.
Suggested settings
Defaults (σ₁ window 100, observed σ window 60, horizons 5/20/100, equal weights, log returns ON, normalisation ON) are tuned for 15m–4H on liquid markets. For lower timeframes drop horizon 3 to 50. For HTF (daily+) raise horizon 3 to 200 and σ₁ window to 200. Log returns are theoretically correct and the recommended default — the script's regime classification depends on the scaling law, which assumes log returns; switch off only for research.
Originality
The √T Brownian scaling law is textbook continuous-time finance — the central piece of Bachelier's 1900 thesis and the foundation of every diffusion model in pricing. The implementation here — the per-horizon σ measurement pipeline, the σ₁-anchored Brownian baseline with optional normalisation, the three-horizon weighted aggregation, the EMA-smoothed residual classifier with two-tier thresholds, the per-horizon overlay layer, the regime-tinted background, and the dashboard — is JOAT-original. No third-party code reused. The use of residual against Brownian as a regime classifier is the original quantitative contribution.
Limitations
The √T law is exact only for Brownian motion — real markets have fat tails, autocorrelation, and discrete bars, so the measured "residual" is always non-zero even in a regime that looks random. The thresholds (±1 / ±2) are calibrated to be the regime boundaries empirically; tighten or loosen if your instrument has unusual variance behaviour. Per-horizon σ values need their respective windows populated to be meaningful — early bars give a warm-up read.
—
-made with passion by jackofalltrades
Indicator

Whale Absorption Profile [JOAT]WHALE ABSORPTION PROFILE
The flagship orderflow visual in the JOAT suite. A complete institutional-grade footprint dashboard — heatmap candle strips, horizontal volume profile, delta ladder, side histogram, POC/VAH/VAL lines, and whale / absorption / imbalance glyphs — all driven by the same underlying lower-timeframe-reconstructed intrabar data and rendered in a curated asthetics. Built to give you the entire auction picture in one indicator, on chart, without a dedicated orderflow platform.
Six visual layers, one engine
Every layer reads from the same intrabar data pipeline. The pipeline uses request.security_lower_tf at a configurable LTF (1m / 3m / 5m / 15m / 30m) to sample sub-bar prints, classifies each via the standard tick rule, then buckets the classified volume into a price-binned profile (configurable rows, default 50). Every layer below reads from those bins.
Heatmap candle strips — the body of each recent chart candle is overlaid with horizontal heat slices coloured along an absorption-intensity ramp (deep blue → indigo → violet → magenta → gold). At a glance you can see where, inside each bar, the auction happened.
Horizontal volume profile — a classic side profile of total volume per bin, rendered with split buy/sell colour so you can read which side dominated each price.
Delta ladder column — a vertical ladder of per-bin delta (buy − sell), positionable to any of nine corners on the chart. Drawn as a horizontal-going-left-to-right cell array so it never collides with the dashboard.
Side volume histogram — a compact buy/sell volume histogram aligned to the profile bins, for traders who want a second view of side-share that is not contaminated by total volume.
POC / VAH / VAL lines — the Point of Control, Value Area High, and Value Area Low computed from the profile and rendered as horizontal lines that extend right of the latest bar.
Whale / Absorption / Imbalance glyphs — three separate detection layers (described below) each render a distinct on-chart glyph at the bin where their condition fires.
A Lite Mode toggle disables the heaviest layers (heatmap strips + side histogram) for low-end machines or multi-indicator stacking.
Three orthogonal detection layers
Whale Print — a bin qualifies as a whale row when total bin volume is above a configurable percentile (default 95th of the bin distribution) and is above the whale-delta threshold (default 70%). Both gates: large and one-sided.
Absorption Zone — score = min(buy, sell) / (priceMovement + ε) . High when both sides traded heavily but price did not move — the classic limit-order-absorption signature. A bin qualifies when its absorption score exceeds the configurable percentile (default 90th).
Imbalance Spike — a bin qualifies when one side's volume is at least N× the other (default 3.0×). The standard footprint imbalance ratio.
These three are deliberately separate — a single price can be a whale row, an absorption zone, and an imbalance spike at once, in which case all three glyphs fire and you have a textbook stacked-signature read.
POC shift alert
The Point of Control's bar-to-bar bin-distance is tracked. When the POC jumps more than the configurable POC Shift: Bin Distance Trigger (default 2 bins) between consecutive bars, the POC Shift alert fires — the auction's value has rotated price levels, which is the most actionable single regime-change signal a profile produces.
Visual aesthetic
A locked institutional palette: cyan-teal bull (#5CF0D7), magenta bear (#FF4D75), and a signature absorption ramp — deep void → ultramarine → indigo → violet → magenta → gold — designed to read like a heat-mapped orderbook on a deep-space background (#02011A). The four multi-stop gradients drive heatmap, absorption, delta, and whale layers independently, so the chart never looks visually flat.
Dashboard
Monospaced table, positionable to any of nine corners, with row-fade gradient. Surfaces:
Current POC price + bin distance from previous POC.
VAH / VAL price levels.
Cumulative bar delta.
Whale print count, absorption zone count, imbalance spike count in the lookback.
Current row classifications for the active price (Whale / Absorption / Imbalance).
LTF in use and bin count.
Alerts
Four alert conditions, each independently controllable:
Whale Print
Absorption Zone
Imbalance Spike
POC Shift (bin distance > threshold)
How to read it
Three reads, in order of conviction:
Stacked detection at the same bin — when a bin fires Whale + Absorption + Imbalance simultaneously, the auction has experienced a complete event: large size, both sides traded heavily, and the side imbalance was extreme. These are the rarest and strongest reads the script produces.
POC Shift through a previous structural level — value migration. The auction's centre of gravity has just moved through your S/R; the rest of the session usually follows.
Heatmap candle strip + delta ladder agreement — when the heatmap concentration sits at the same price the delta ladder shows one-sided imbalance, the bar is institutionally meaningful regardless of the candle shape.
Suggested settings
Defaults (1m LTF, 50 bins, 40-bar lookback, 95th percentile gates) are tuned for 5m–15m on liquid futures and crypto. For 1m scalping, drop bins to 30 and lookback to 20 to keep the script responsive. For 1H+ HTF, raise lookback to 100 and bins to 60. Lite Mode is recommended when stacking with other heavy indicators.
Originality
The implementation — the unified intrabar pipeline that feeds six independent visual layers, the percentile-gated whale detector, the min(buy,sell) / priceMovement absorption score, the diagonal-imbalance row detector, the multi-stop absorption gradient (six-stop signature ramp), the configurable delta ladder with nine-corner positioning, the POC bin-distance shift detector, and the grade composite palette — is JOAT-original. No third-party code reused. The footprint vocabulary (POC, VAH/VAL, imbalance, absorption, whale) is public-domain auction-theory language; this implementation is purpose-built for Pine v6 with bar data only.
Limitations
Reconstructed intrabar data is an approximation — the tick rule is the accepted public-market inference but it is not a direct read of bid/ask. Sub-minute LTFs require a PulseWire Premium or Ultimate plan. The script renders many polylines, boxes, and labels — Pine's max_polylines_count / max_boxes_count / max_labels_count caps apply. Lite Mode exists specifically for low-spec / multi-indicator scenarios. POC, VAH, VAL, and detection layers are computed from confirmed intrabar data so they update on bar-by-bar close (non-repainting beyond the current developing bar).
—
-made with passion by jackofalltrades
Indicator

Sweep and Cluster [JOAT]SWEEP AND CLUSTER
A two-stage liquidity-sweep engine. Most public "sweep" indicators print a label on every wick that pokes past a recent high or low — which is mostly noise. Sweep and Cluster requires two separate events to register a tradeable signal: first a strict 5-condition sweep, then a confirming cluster of price action in the rejection direction. The label that actually appears on the chart is the rare intersection — the moments where institutional stop-running is followed by genuine commitment in the opposite direction.
Stage 1 — Strict 5-condition sweep detection
A sweep is registered only when all of these are true on the same bar:
Real pivot reference — the swept level is an actual minor pivot (ta.pivothigh / ta.pivotlow) from the rolling cache, not a rolling max/min. A scan-depth input controls how far back to look; a minimum-age gate prevents self-reference.
Wick magnitude — the wick that exceeds the pivot must be at least Wick ATR Multiplier × ATR(14) (default 0.8 ATR). The KB-published strict threshold.
Wick dominance — wick length must be at least Wick/Range Ratio of the candle's total range (default 35%). The wick must dominate the bar's shape, not be a side-effect of a large body.
Closing direction — close must be back inside the swept level. A clean wick that closed beyond the pivot is a breakout, not a sweep — and is filtered out by construction.
Cooldown — at least N bars (default 8) since the last same-side sweep. Prevents one stop-run from being counted as multiple sweeps when the wick prints over several bars.
If all five conditions are met a pending marker is placed (optional). Pending markers represent "a sweep happened" but not yet "the sweep was meaningful" — until the cluster confirms, the sweep is not actionable.
Stage 2 — Cluster confirmation
After a sweep fires, the next N bars (cluster window, default 5) are monitored for confirming follow-through. The cluster confirms only when:
At least M bars (default 1) close against the swept direction inside the window.
Average body/range across the qualifying cluster bars exceeds the Min Body Ratio (default 0.25) — the rejection candles must be impulsive, not micro-bodies.
Cumulative volume across the cluster window is at least Volume Multiplier × Average Volume (default 0.8×). Without volume the cluster is not commitment.
When all three confirm, the script fires the SAC (Sweep And Cluster) label — the actionable signal. A cluster strength badge (body sum / ATR) is rendered next to the label so you can rank one SAC vs another at a glance.
A failed sweep marker (toggleable, off by default) tracks sweeps that expired without confirming — useful for auditing the false-positive rate visually and for choosing thresholds.
Visual system
Sweep wick highlight — a thin coloured line at the swept reference price, extended right by a configurable number of bars. Makes the rejection unmistakable.
Reference level triangle — small glyph at the actual pivot level that was swept.
Cluster candle override — when SAC fires, the confirming cluster candles are repainted in the active-side theme colour via plotcandle so the move stands out from background.
Optional background tint — fading directional bgcolor for a few bars after a confirmed SAC.
Optional bar paint by active bias — every bar painted bull/bear based on the most recent SAC. Off by default to preserve chart neutrality.
A locked Quantum palette (cyan-quantum bull / pink-quantum bear on a deep void) gives the chart a distinctive sweep-and-reverse identity.
Dashboard + rolling statistics
A monospaced table, positionable to any of nine corners, with vertical row-fade for premium feel. Surfaces:
Total sweeps and total SACs since the last session/day/week reset (configurable reset frame).
Rolling Confirmation Rate (% of recent sweeps that became SACs) over a configurable window (default 50). The script's own success metric.
Pending sweep status with bars-remaining-in-cluster-window.
Last SAC direction with strength badge and bars-ago.
Last failed sweep tag (when failed markers are enabled).
Confirmation Rate is the headline read — it lets you see whether the current threshold settings are producing meaningful or sparse signals on the instrument you are trading.
Alerts
Three alert conditions, each independently controllable:
Pending Sweep (Stage 1 fires)
SAC Confirmed (Stage 2 confirms)
SAC Failed (Stage 2 expires without confirming) — off by default
How to read it
Two reads, in order of conviction:
SAC Confirmed alert with a high strength badge — the script's intended signal. Liquidity was swept, a real rejection followed inside the window, and the rejection had body and volume. This is the actionable read.
Pending Sweep at a known structural level (S/R, supply/demand) — useful as a "watch for the cluster" warning. If the cluster confirms, you have a high-conviction reversal at a structural location.
In persistent trends the failed-sweep rate climbs — that is the script telling you the regime does not currently favour sweep-and-reverse setups; stand aside or use the script in the trend direction only.
Suggested settings
Defaults (pivot lookback 8, wick ATR 0.8, body ratio 0.35, cluster window 5) are tuned for 15m–1H on liquid markets. For scalping (1m–5m), drop pivot lookback to 4 and cluster window to 3. For HTF macro reads (4H+), raise pivot lookback to 12–20 and cluster window to 8. The strict-threshold wick filters (0.8 ATR + 35%) are intentionally institutional — loosen for less liquid instruments.
Originality
The implementation — the five-condition strict sweep gate, the rolling minor-pivot cache with age and scan-depth filters, the three-condition cluster confirmation, the cluster-strength badge calculation, the pending → confirmed → failed state machine, the wick-level highlight render, the plotcandle override for confirming bars, the rolling confirmation-rate metric, and the session-reset counter — is JOAT-original. No third-party code reused. The "sweep + reaction" pattern is well-known to professional tape readers; the strict double-gate implementation is built specifically for chart-based Pine data.
Limitations
A confirmed SAC requires the cluster window to elapse — by definition the signal carries the cluster window bars of lag relative to the sweep. This is intentional; the cluster is what makes the signal meaningful. Failed sweeps are expected — the confirmation rate metric is there for you to see and tune accordingly. The script is structure-aware (uses real pivots) but does not know about HTF structure; combine with a higher-timeframe S/R indicator for best fit.
—
—
-made with passion by jackofalltrades
Indicator

Order Flow Footprint [JOAT]ORDER FLOW FOOTPRINT
A full intrabar footprint engine — POC, Value Area, per-row imbalance detection, stacked imbalance zones, delta-flip alerts, POC-shift alerts, and per-bar footprint ladder labels — built to read like a Bookmap-style auction view directly on a PulseWire chart. Uses the native Footprint API when your plan provides it, with a graceful fallback to lower-timeframe tick-rule reconstruction so the script works on every account tier.
Data source — Footprint API or reconstructed
Three modes, behaviourally identical:
Footprint API — uses request.footprint() with a configurable aggregation (Auto / 1m / 3m / 5m / 15m / 30m). Native bid/ask volume per row when your plan supports it.
Reconstructed — uses request.security_lower_tf() to sample intrabar prints, then assigns each tick to buy or sell via the standard tick rule. Configurable LTF (1m / 3m / 5m / 15m / 30m).
Auto — picks Footprint when available, falls back to Reconstructed. The recommended default.
A configurable Profile Rows input (default 24, max 80) sets the vertical resolution — each chart bar's intrabar volume is bucketed into N horizontal price slices and the footprint is built from those buckets.
Imbalance detection (Bookmap diagonal)
The institutional definition of an imbalance is diagonal , not lateral :
A buy row is imbalanced when buy ≥ ratio × sell (this row's buys vs the row below it's sells).
A sell row is imbalanced when sell ≥ ratio × buy (this row's sells vs the row above it's buys).
The ratio is configurable (default 3.0× — the institutional norm). An optional minimum-row-volume filter mutes illiquid wick rows from being counted as imbalances. When N or more same-side imbalances occur inside a single bar, the Burst alert fires.
Stacked imbalance zones (the headline)
Stacked imbalances are the textbook order-flow structural read: N consecutive same-side imbalanced rows on top of each other. They mark where price had to gap through multiple thin levels to print — and they are reliable revisit zones.
Minimum stack count is configurable (default 4 consecutive rows).
Each stack zone is drawn as a box extending right by a configurable bar count.
Optional glow border on stack zones (toggleable).
Maximum active zones is capped (default 8) — older zones shift out FIFO.
POC + Value Area
Per-bar Point of Control (the row with the highest volume), Value Area High and Value Area Low (the 70%-volume centred range) are computed and toggleable. POC is rendered as a dot; VAH / VAL as lines. A configurable POC Shift Threshold (in mintick units) fires the POC Shift alert when the POC jumps more than the threshold bar-over-bar.
Delta flip detection
Per-bar delta (buy − sell) is computed continuously. The delta-flip alert fires only when delta switches sign after at least N consecutive same-sign bars (configurable, default 5). This filters out the micro-fluctuations that pure-sign-flip detectors would noise on.
Per-bar footprint ladder (optional, heavy)
When enabled, inline labels at every row of every recent bar (configurable history depth) show the buy × sell tuple per row — the full Bookmap-style read. This is visually rich but rendering-heavy; keep it off when scrolling long histories or running on low-end hardware.
Visual system
POC dot in accent yellow.
Value Area lines (VAH / VAL).
Imbalance cells highlighted in palette colour per row.
Stacked imbalance zones with optional glow.
Bar colouring by delta sign (toggleable).
Per-bar delta annotations every N bars (configurable).
Per-bar ladder labels (optional).
A locked Iridescent palette (magenta bull / cyan bear / yellow POC accent on pure black) gives the chart a cyberpunk holographic identity that reads as institutional rather than retail.
Dashboard
Monospaced table positionable to any of nine corners. Surfaces:
Source mode in use (Footprint / Reconstructed) with aggregation/LTF.
Current bar's delta value and sign.
POC price and intrabar volume share.
Imbalance count this bar (buy / sell).
Active stack zone count.
Last delta-flip direction with bar-age.
Alerts
Five alert conditions, each independently controllable:
Stacked Imbalance Zone Formed
POC Shift (POC jumped > threshold)
Delta Flip After Run (delta sign change after N+ same-sign bars)
Buy Imbalance Burst (N+ buy imbalances in one bar)
Sell Imbalance Burst (N+ sell imbalances in one bar)
How to read it
Three reads, in order of conviction:
Stacked imbalance zone — the highest-conviction read. Price had to plough through multiple thin levels to print. Future revisits are reliable reactive zones.
Delta flip after run — regime-change signal. When delta has been net-buying for many bars and finally flips net-selling, the auction direction has just rotated.
POC shift through a structural level — value migration. When the POC moves through a previous-day VAH or VAL, value has migrated and the next session's bias often follows.
Suggested settings
Defaults (1m reconstruction LTF, 24 rows, 3.0× imbalance ratio, 4-stack minimum) are tuned for 5m–15m charts on liquid markets. For 1m scalping, drop rows to 16 and stack minimum to 3. For HTF macro (1H+), raise rows to 36 and stack minimum to 5. The 3.0× imbalance ratio is the institutional Bookmap norm; tighten to 2.5× for more frequent imbalance prints.
Originality
The implementation — the Auto/Footprint/Reconstructed source router, the diagonal-Bookmap imbalance detector with row-volume filter, the consecutive-row stack zone builder with glow border, the POC-shift detector with mintick-unit threshold, the run-length-gated delta-flip alert, the per-bar ladder renderer with history depth control, and the dashboard's holographic palette — is JOAT-original. No third-party code reused. The footprint vocabulary (POC, VAH/VAL, imbalance, stacked imbalance, delta) is public-domain auction-theory language; the implementation here is purpose-built for chart-based Pine v6.
Limitations
Reconstructed footprints are an approximation — the tick rule is the accepted public-market inference for assigning intrabar trades to buy/sell but it is not a direct read of bid/ask volume. Footprint API requires a PulseWire Premium or Ultimate plan and is unavailable on some instruments. The per-bar ladder labels are rendering-heavy; keep them off when historical performance matters. Stacked-imbalance zones honour the max active cap (FIFO eviction) and the extension bars cap.
—
-made with passion by jackofalltrades
Indicator

Liquidity Heatmap MTF [JOAT]LIQUIDITY HEATMAP MTF
A weighted multi-timeframe liquidity-zone heatmap that aggregates pivot-based resting liquidity from up to four higher timeframes (1H / 4H / 1D / 1W by default), decays old pivots over a configurable half-life, and projects the resulting hot bins as a right-side colour strip plus optional horizontal lines that extend back across the chart so the key levels are visible on price. Adds an estimated liquidation-level layer on top — the price ranges where leveraged positions get unwound — and warns when price approaches one.
Why MTF aggregation matters
Single-timeframe liquidity maps miss the structural reality that institutional flow operates on multiple horizons simultaneously. A daily pivot high carries more resting liquidity than a 1H pivot high, but both contribute. Liquidity Heatmap MTF lets you turn on / off each of four timeframes (1H, 4H, 1D, 1W) independently and assign each a weight so the contribution to the heatmap is proportional to your conviction about how much that timeframe matters.
Defaults:
1H weight 1.0×
4H weight 1.5×
1D weight 2.5×
1W weight 4.0× (off by default; enable for macro reads)
Pivots are detected in each HTF context using configurable left/right lookbacks. Each pivot contributes intensity proportional to the volume traded on its bar (with optional log compression for instruments that have rare extreme prints).
Decay — half-life modelled
A pivot from 200 bars ago should not contribute equally to today's heatmap. The script applies an exponential decay:
intensity = volume × exp(−ln(2) × age / halfLife)
The Decay Half-Life input (default 180 bars) sets how quickly old pivots fade. After one half-life, an old pivot contributes half as much; after two, a quarter; and so on. This is the principled way to weight history — it never drops contributions discontinuously and it never lets ancient liquidity poison the current read.
Heatmap grid + hot-zone classification
The price range over the visible lookback (configurable, default 500 bars + 2% padding) is divided into N bins (default 60, capped at 200 by Pine's max_boxes_count). Each pivot's decayed intensity is accumulated into the bin closest to its level. Bins are then normalised against the hottest bin and any bin above the Hot Zone Threshold (default 70% of max) is tagged HOT.
The heatmap is rendered as a vertical strip on the right of the chart (configurable width and gap from latest bar) with bins coloured along a deep-ocean blue gradient — cold bins are near-invisible (transparency floor), hot bins are vivid cyan.
Hot-zone projection across chart (JOAT enhancement)
This is the headline visual: the top hot bins are projected back across the chart as horizontal lines (configurable count, default 5) with price labels, extending back a configurable number of bars (default 120). So you do not just see the heatmap as a right-side strip — you see the key levels on the chart at the price levels they actually occupy. Toggleable.
Estimated liquidation levels (the second layer)
On top of the liquidity heatmap, an optional liquidation layer estimates where leveraged positions get stopped out. Each significant HTF pivot extreme gets a projected liquidation level at:
liq_level = pivot ± (ATR × liqPad)
Configurable liqPad (default 0.5 ATR). Configurable caps on liquidation lines above (default 4) and below (default 4) the current price. Lines extend right by a configurable bar count. When price comes within liqAtrMult × ATR of a liquidation line, the !LIQ alert fires and the line is rendered in the accent colour (the only off-family colour in the palette — bright orange).
The liquidation logic is intentionally conservative — pivots provide the structural anchor; the ATR pad is the only configurable variable; lines are capped to avoid clutter.
Dashboard
Monospaced table positionable to any of nine corners. Surfaces:
Active timeframes and their weights.
Total pivots tracked.
Hottest bin price and intensity %.
Hot-zone count.
Liquidation lines above / below current price counts.
Distance (in ATR units) to nearest liquidation line.
Last hot-zone activation with bar-age.
Visual system
Heat strip (toggleable width / gap / transparency).
HOT tags on hottest bins (toggleable).
Optional strip border.
Horizontal hot-zone lines extending back across the chart (toggleable, capped, configurable length).
Liquidation level lines above and below (toggleable, capped).
LIQ labels (toggleable).
A locked Deep Ocean palette (bathypelagic blue gradient on near-black, with the bright orange #FF6B00 reserved exclusively for liquidation warnings) gives the chart a distinct institutional liquidity-map identity.
Alerts
Three alert conditions, each independently controllable, each cooldown-gated:
Hot Zone Activated — fires when a new bin crosses the hot threshold.
Approaching Liq Level — fires when price comes within liqAtrMult × ATR of a liquidation line.
New HTF Pivot Added — fires when a new HTF pivot is detected and added to the cache.
A configurable cooldown (default 8 bars) prevents back-to-back alert spam.
How to read it
Three reads, in order of conviction:
Approaching Liq Level alert — the most actionable single signal. Price is within striking distance of estimated leveraged-position stop-out levels. Liquidations tend to be self-fulfilling on the way in (cascade through stops) and exhaustive at the extreme (no more sellers / buyers left after the cascade).
Multi-timeframe hot zone — when a hot bin is contributed to by more than one HTF, it is by definition more significant. The hot line projections show you which levels are MTF-confluent.
New HTF Pivot in 1D or 1W context — these are the slowest-moving structural events. A new daily or weekly pivot reshapes the heatmap meaningfully.
Suggested settings
Defaults (1H/4H/1D enabled, weights 1.0/1.5/2.5, decay half-life 180, hot threshold 70%) are tuned for intraday-to-swing trading on liquid futures, FX, and crypto. For pure scalping, disable 1D / 1W and raise 1H weight. For pure macro, enable 1W and raise its weight; reduce 1H to 0.5×. The liqPad default 0.5× ATR is conservative — raise to 1.0× for more cautious liquidation projections.
Originality
The implementation — the MTF pivot aggregation pipeline with per-TF weights, the exponential half-life decay model, the bin-grid heatmap with hot-zone threshold, the cross-chart hot-line projection layer, the ATR-based liquidation level estimator with above/below caps, the cooldown-gated multi-alert engine, and the deep-ocean palette with the orange liquidation accent — is JOAT-original. No third-party code reused. The "liquidity map" concept comes from professional desks; the implementation here is purpose-built for Pine v6 with bar data only.
Limitations
Estimated liquidation levels are an inference from pivots and ATR — Pine cannot read actual leverage data or aggregated futures funding/open-interest. The lines mark where stop clusters are statistically likely to sit, not where they actually do. Pine's max_boxes_count caps the grid at 200 bins; the script clamps to 200 max even though the input allows higher requests. MTF pivots use request.security in non-lookahead mode, so they are non-repainting once confirmed at their HTF.
—
-made with passion by jackofalltrades
Indicator

Large Lot Reverse Engineer [JOAT]LARGE LOT REVERSE ENGINEER
A regression-driven block-trade detector that infers the implied size of an off-tape institutional order from the residual between price movement and volume — and turns that residual into an estimated lot count. The premise is straightforward: when a single large order moves price meaningfully more than the visible volume would justify, the gap is the size of the hidden order that absorbed the move. Large Lot Reverse Engineer models that relationship, flags the outliers, and estimates the size.
The core idea — what price movement is "worth"
In normal conditions there is a stable statistical relationship between volume and the magnitude of a bar's return. A rolling regression over a configurable window (default 60 bars) estimates expected volume as a function of return — i.e., for the move you just saw, how much volume should there have been?
The residual is the difference between actual and expected volume, Z-normalised by its own rolling stdev. Two signs of residual matter:
Implied block (residual Z ≥ +threshold) — more volume traded than the price move warrants. Someone large was on the passive side absorbing aggression. The direction of the bar tells you which side.
Thin market (residual Z ≤ −threshold) — price moved on suspiciously low volume. Liquidity was missing; the move was a low-conviction air-pocket.
Both reads are institutionally interesting. The first identifies absorbed-aggression — the textbook signature of an institutional block trade. The second identifies regimes where price prints are unreliable.
R² reliability gate
A regression is only meaningful when the underlying relationship is actually there. The script computes the rolling R² of the model and exposes a configurable minimum (default 0.10). When R² falls below the gate the model is considered unreliable; the dashboard cell turns warning-coloured and the script tags any signals fired in that regime as low-confidence. This is the difference between a real residual reading and a noise residual — a professional read forbids the same.
Significant block sizing
Three thresholds are stacked:
Implied Block Sigma (+) (default 2.0σ) — baseline implied-block trigger.
Thin Market Sigma (−) (default 2.0σ) — baseline thin-market trigger.
Significant Block Sigma (default 3.0σ) — above this the bar is rendered with a polygon glyph and gets an estimated lot-size badge . Empirical scaler converts residual-volume into a lot count.
The size unit is configurable: Shares/Coins for spot instruments, Notional USD for size in dollars (using a configurable price proxy), or Auto which picks based on instrument. The scaler is exposed because no single conversion factor is universally correct — calibrate to your instrument's typical notional.
Cluster detection
When N blocks fire inside a rolling window (configurable, default 3 in 5 bars) the Block Cluster alert fires. Cluster signals are the strongest read this script produces — they indicate sustained off-tape activity, not a single statistical outlier.
Visual system
Residual Z histogram — bars coloured bull/bear by direction, magnitude by residual.
Threshold lines at ±2 and ±3 with on/off toggle.
Zero line and significant-block polygon glyphs.
Thin-market dots in the muted palette.
Background recency fade — fresh blocks tint the background and decay to transparent over a configurable number of bars.
Cumulative implied delta (optional) — running sum of implied-block directional contributions, useful for reading sustained institutional bias.
A locked Carbon palette (neon green / neon red / white midline on carbon black) gives the pane an institutional terminal feel.
Dashboard
Monospaced table, positionable to any of nine corners, with a compact mode and optional legend footer. Surfaces:
Current residual Z value and sign.
R² value with reliability colour-coding (green / amber / red).
Last significant block direction with estimated lot size.
Block count and thin-market count in the recent window.
Cluster status with bars-since-last-cluster.
Cumulative implied delta (when enabled).
Alerts
Four alert conditions, each independently controllable:
Implied Buy Block (positive residual + up bar)
Implied Sell Block (positive residual + down bar)
Thin Market Event (negative residual)
Block Cluster (N-in-window)
How to read it
Three reads, in order of conviction:
Block Cluster + high R² — the highest-conviction read. Multiple statistically-significant blocks inside a window, with the underlying model reliable. Institutional flow is actively moving size.
Significant block (3σ+) at a known level — a single large polygon glyph at a key support/resistance is a textbook absorbed-print read. The lot-size badge gives you a magnitude proxy you can compare across bars.
Thin market warning — when the residual goes deeply negative, treat any move you see with extreme caution; the tape is hollow. Often precedes either a violent move once real flow returns or a fade back to fair value.
Suggested settings
Defaults (60-bar window, R² ≥ 0.10, ±2σ block, +3σ significant) are tuned for 5m–1H on liquid futures, FX, and large-cap equity. For lower timeframes drop the window to 30 and raise the sigma thresholds to 2.5σ / 3.5σ to filter noise. For daily and above, widen the window to 100+ and consider log returns for instruments with large price scales.
Originality
The implementation — the rolling return-vs-volume regression with R² gate, the residual-Z classifier with bidirectional thresholds, the empirical lot-size scaler with auto/notional unit switching, the polygon-glyph significant-block render, the thin-market dot variant, the N-in-window cluster trigger, the recency-fade background, and the cumulative implied delta — is JOAT-original. No third-party code reused. The "volume that should have been" inference pattern is well-known to institutional desks; the implementation here is purpose-built for chart-based bar data.
Limitations
Implied block size is an inference from residual statistics, not a direct read of off-tape trades. Pine cannot see actual block prints that occur away from the lit market; what the script flags is the visible footprint those prints leave behind. The lot-size badge depends on the empirical scaler, which must be calibrated per instrument — the default 1.0× is generic. The R² gate is the most important reliability filter; when R² is low, no signal in the model should be considered reliable, by construction.
-made with passion by jackofalltrades
Indicator

Iceberg Detector [JOAT]ICEBERG DETECTOR
A hidden-liquidity detector that infers iceberg orders from their footprint on the tape — without needing direct L2 data. The detection pattern is well-known to professional tape readers: the same price level being repeatedly tested by long wicks, with above-average volume, and price each time getting rejected back in the opposite direction. That repeated-rejection pattern is the visible signature of an iceberg — a large resting order broken into smaller slices to hide its true size. This script catches the pattern, clusters the tests, paints the zone, and tells you when the iceberg gets broken or eaten.
Detection — five gates, all required
A bar is a candidate iceberg test only when every one of these is true:
Long wick — wick-to-body ratio above the configurable threshold (default 0.75). The wick is the visible rejection; the body is the failed push.
Local extremum — the wick reached a local high or low over the configurable pivot lookback (default 5 bars). A wick that did not actually probe new territory does not count.
Above-average volume — bar volume must exceed volume average × multiplier (default 1.0×). Real absorption needs real size hitting the tape.
Wick rejection bias — the candle must close in the rejection direction (opposite of the wick).
Cluster within tolerance — at least N (default 2) of these qualifying tests must occur within ATR × tolerance of the same level inside the detection window (default 40 bars).
Only when all five gates pass does the script paint a zone. The wick rejection bias % input controls how strict the rejection-direction filter is; raising it to 70%+ makes the zone confirmation slower but cleaner.
Cluster-aware level building
When two or more qualifying tests fall within ATR-multiplier tolerance of each other, they are clustered into a single zone whose vertical extent (configurable in ATR units) covers the cluster. This means an iceberg sitting at 4382.50–4383.25 is rendered as a single horizontal band, not two separate ticks — which is how a real iceberg would actually appear on the tape.
Visual system
Iceberg zone — a horizontal band rendered in the cool-blue palette (deep void → pale violet gradient) with configurable opacity.
Glow layers — N (configurable, default 4) stacked transparent boxes behind the zone produce a soft glow border.
Pulse animation — for a configurable number of bars after a fresh test, the zone's transparency oscillates to highlight that the iceberg has just been re-tested. Toggleable.
Test ticks — small markers at each individual test bar inside the zone.
Test count badge — small number tag showing how many tests have hit the level.
Right extension — configurable bar count for forward zone projection.
A locked Void palette (cool violet gradient on a deep void ground) gives the chart a distinctive hidden-liquidity identity.
Lifecycle — persist, archive, break
Every iceberg has three life stages:
Active — currently in front of price and being honoured. New tests add ticks and trigger pulse animations.
Broken — price closed through the level by Break Distance × ATR (default 0.5 ATR). The zone moves to the muted broken-archive palette and stays on the chart for brokenStaleBars (default 150) bars so you can see where structure failed.
Stale — older than the archive lifetime, automatically removed.
A maximum-concurrent-icebergs cap (default 12 active) and a max-broken cap (default 8) keep the chart legible.
Dashboard
Monospaced table, positionable to any of nine corners, surfaces:
Active iceberg count, broken count.
Nearest iceberg level with side (resistance / support), distance in ticks or %.
Test count and age of the nearest iceberg.
Last broken event with bars-ago tag.
Alerts
Three alert conditions, each independently controllable:
New Iceberg Detected — fires the bar an iceberg is first confirmed (all five gates pass).
Iceberg Re-Tested — fires when an existing iceberg gets another qualifying test.
Iceberg Broken — fires when price closes through by the break-distance threshold.
How to read it
Two reads, in order of conviction:
Active iceberg in front of price is your immediate liquidity wall. Faded iceberg the market keeps probing without breaking = strong demand-side or supply-side hidden order. Use as a context level — fade touches if your bias is reversal, expect continuation through if your bias is breakout.
Iceberg Broken alert is your highest-conviction directional event. A hidden order has been eaten through, meaning the side that was holding it has either pulled it or been exhausted — either way, the resistance / support is gone, and the move that follows is unencumbered by the absorbed liquidity.
Suggested settings
Defaults (2 minimum tests, 40-bar detection window, 0.5 ATR cluster tolerance, 0.75 wick/body ratio) are tuned for 5m–1H on liquid markets. For lower-timeframe scalping, lower the wick/body ratio to 0.5 and raise the volume multiplier to 1.5×. For higher-timeframe macro reads, raise minimum tests to 3 and widen the detection window to 100+ bars.
Originality
The implementation — the five-gate detection (wick + extremum + volume + rejection % + cluster tolerance), the ATR-cluster level-builder, the cool-palette glow layers, the post-test pulse animation, the break-distance lifecycle with archive, and the test-count badge rendering — is JOAT-original and tuned together. No third-party code reused. The hidden-liquidity / iceberg concept is well-known to tape readers; the detection pipeline here is built specifically for chart-based bar data without requiring L2 access.
Limitations
Pine indicators cannot read L2 order book data. Iceberg Detector infers iceberg presence from the visible tape footprint — long-wick rejection candles, clustered at a level, with above-average volume, all closing in the rejection direction. This is the accepted public-market inference pattern but it is by nature an inference, not a direct observation. The script can produce false positives on instruments with naturally wicky candles and false negatives on instruments where icebergs are filled too quickly to show as multi-bar tests. On low-volume instruments the volume gate may need to be raised to compensate.
—
Open source- The five-gate detection pipeline, the ATR-cluster level-builder, the post-test pulse compositor, and the lifecycle-with-archive state machine are proprietary. Free to use; behaviour is fully described above.
—
-made with passion by jackofalltrades
Indicator

CVD Delta Divergence [JOAT]CVD DELTA DIVERGENCE
A full-featured Cumulative Volume Delta engine with proper pivot-based divergence detection. CVD on its own is one of the cleanest reads of net flow you can produce without L2 data — but the value of CVD lives almost entirely in its divergence with price. CVD Delta Divergence builds the CVD properly (with footprint-API or reconstructed-tick options), then runs a strict pivot-vs-pivot divergence engine on top of it, with strength scoring and configurable cooldown.
Three data-source modes
CVD is only as good as the delta classification underneath it. Three modes are exposed:
Footprint API — uses PulseWire's Footprint dataset when the instrument supports it. The cleanest read, equivalent to professional delta feeds.
Reconstructed — when Footprint is unavailable, reconstructs buy/sell from a configurable lower-timeframe stream (1m / 3m / 5m / 15m / 30m) using the standard tick rule. Optional intrabar volume weighting.
Auto — picks Footprint when present, falls back to Reconstructed. The recommended default.
This is unusual — most public CVD scripts hardcode one method. Auto-mode means the script works correctly on any instrument that has either dataset, without per-instrument configuration.
Four CVD anchors
Cumulative deltas need an anchor — running a sum from inception of data is rarely meaningful. Four anchoring modes:
Cumulative — never resets. Maximum context, slowest divergence detection.
Session Reset (default) — anchors at the start of each trading session. The most useful read for day-trading reference.
Day Reset — anchors at midnight exchange time.
Week Reset — anchors at week boundary. Good for swing-frame divergences.
Pivot-based divergence engine (the headline)
Slope-comparison divergence is noisy. CVD Delta Divergence uses proper pivots :
ta.pivothigh / ta.pivotlow on price with a configurable lookback (default 5 bars left/right).
At each confirmed pivot, the corresponding CVD value is recorded.
A divergence is built only when two price pivots and their CVD readings disagree directionally.
A minimum-strength filter (default 15.0 on a 0–100 scale) suppresses weak signals — strength is the normalised disagreement magnitude between the price-pivot motion and the CVD-pivot motion.
A strict HL/LL toggle requires the second pivot to strictly exceed/undershoot the first by a small fraction so equal-pivot edge cases do not produce noise divergences.
A cooldown per divergence class (default 3 bars) prevents back-to-back fires of the same class.
Four divergence classes are detected:
Regular Bull — price lower-low, CVD higher-low. Reversal up.
Regular Bear — price higher-high, CVD lower-high. Reversal down.
Hidden Bull — price higher-low, CVD lower-low. Trend continuation up.
Hidden Bear — price lower-high, CVD higher-high. Trend continuation down.
Divergence markers can be force-overlaid onto the main chart pane (toggleable) so you see them on price without flipping panes.
Visual system
Slope-coloured CVD line — bull / bear gradient based on the CVD's own short-term slope (configurable window).
Smoothed CVD overlay — toggleable EMA-smoothed CVD on top of the raw line. Useful for cutting through noisy 1m reconstructions.
Delta histogram — bar-by-bar delta as columns behind the CVD line. Useful for seeing per-bar flow vs cumulative flow.
Zero line and crossover alerts.
Divergence connecting lines — when a divergence fires, a connector line is drawn between the two pivots for visual proof.
A locked Lava palette (gold bull / orange-red bear / oxblood mid on a deep lava-black ground) gives the pane a distinctive flow-read identity.
Dashboard
Monospaced table, positionable to any of eight corners, with:
Current CVD value with sign.
CVD slope direction (Rising / Falling / Flat).
Active anchor mode.
Last divergence class with bar age.
Source mode in use (Footprint / Reconstructed).
Zero-cross status with bars-ago.
Alerts
Six alert conditions, each independently controllable:
Regular Bull Divergence
Regular Bear Divergence
Hidden Bull Divergence
Hidden Bear Divergence
CVD Crosses Zero
CVD Slope Flips
How to read it
Three reads, in order of conviction:
Regular divergence — the classic reversal read. Price made a new extreme, CVD did not. The flow that was needed to extend the move did not show up. A regular divergence at a known structural level is one of the highest-conviction reversal setups in tape reading.
Hidden divergence — the trend-continuation read. Price retraced, but CVD did not. The flow is still committed in the original direction even though price wavered. Often produces clean re-entry signals in trends.
CVD zero-cross + slope flip — the regime change read. Cumulative flow has rotated sides — what was net-buying is now net-selling (or vice versa). Useful as a "the tape has flipped" notification.
Suggested settings
Defaults are tuned for 5m–1H charts on liquid markets in Session Reset mode. For lower timeframes, drop pivot lookback to 3 and divergence window to 30. For higher timeframes, raise pivot lookback to 7–10 and switch anchor to Day Reset. The minimum strength threshold (15) is intentionally loose; raise to 25–30 if you want only the strongest divergences.
Originality / what's reused
CVD (cumulative volume delta) is public-domain market-structure language; the tick rule is standard. The implementation — the Auto/Footprint/Reconstructed source switch, the four-anchor reset logic, the pivot-based divergence engine with strict HL/LL gating and minimum-strength filter, the slope-coloured CVD with histogram backdrop, the force-overlay divergence markers, and the cooldown-per-class state machine — is JOAT-original and tuned together. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. The source is sectioned, every input has a tooltip, every helper is documented inline. The CVD engine, the source-mode router, the pivot logic, and the divergence engine are independent modules — adapt any single piece without reading the whole file.
Limitations
Reconstructed CVD is a proxy — the tick rule is the accepted public-market inference but it is not a direct read of bid vs ask volume. Footprint mode requires the PulseWire Footprint dataset and is unavailable on some instruments. Pivot divergences are non-repainting once confirmed (they lag by the pivot's right-lookback) but the divergence between two pivots cannot fire until both are confirmed — so the second pivot's lag is the structural lag of the signal.
—
-made with passion by jackofalltrades
Indicator

Technical Strength Gauge [HexaTrades]Most traders watch a handful of indicators and weigh them by gut feel. Technical Strength Meter does this objectively and at scale: It evaluates 74 indicator votes across 34 technical indicator families, turns each into a single Buy / Neutral / Sell vote, and aggregates those votes into three colour-graded strength gauges, each scored 0-100: Leading, Lagging, and an overall Summary. On top sits an analytics row that translates the raw votes into market context: regime, trend strength, volatility, confidence, probability and an A+ to D quality grade.
HOW IT WORKS - THE VOTING ENGINE
Each indicator votes : All 74 indicators are evaluated, and each casts exactly one vote:
+1 Buy (its bullish condition is met)
0 Neutral (no clear signal)
-1 Sell (its bearish condition is met)
The voting rule is matched to the indicator's nature:
• Oscillators vote by mean reversion, e.g. RSI must be below the oversold level AND turning back up to vote Buy; above the overbought level AND turning down to vote Sell; otherwise Neutral. The same "stretched, then turning" logic drives Stochastic, CCI, Williams %R, MFI, Ultimate, Stochastic RSI, TSI, Fisher and CMO.
• Moving averages vote by price location: close above the MA = Buy, below = Sell. This repeats for 10 MA families across 5 lengths (50 votes in total).
• Trend tools vote on their own state: Supertrend direction, price vs the Ichimoku cloud, +DI vs -DI, Parabolic SAR side, Linear-Regression slope, Vortex, and so on.
Votes are grouped & averaged : The votes split into a Leading set (early movers) and a Lagging set (trend confirmers). Each set is averaged into one number from -1 to +1, and the Summary is the average of the two halves.
Weighting & exclusions: By default every vote counts equally, but each gauge is a weighted average: you can scale whole categories (Oscillators / MAs / Trend) up or down, or switch any indicator off. A disabled indicator (weight 0) is dropped from both the average and the counts; it is NOT silently counted as Neutral. On symbols with no volume data, volume-based votes (VWMA, MFI) are auto-excluded the same way, so they don't dilute the score.
Score & verdict : Each -1…+1 average is rescaled to a 0-100 score and mapped to a five-step verdict:
0-25 Strong Sell · 25-45 Sell · 45-55 Neutral · 55-75 Buy · 75-100 Strong Buy
(Internally: rating <= -0.5 = Strong Sell, <= -0.1 = Sell, between = Neutral, >= 0.1 = Buy, >= 0.5 = Strong Buy.)
⭐️THREE GAUGES
• LEADING (16 indicators) momentum / early-mover tools that tend to turn before price: RSI, Stochastic, CCI, Williams %R, MFI, ROC, Momentum, Ultimate Oscillator, Awesome Oscillator, Stochastic RSI, TSI, Fisher Transform, CMO, plus Bollinger, Donchian and Aroon.
• LAGGING (58 indicators): trend-followers that confirm an established move: MACD histogram, 50 moving-average votes (10 MA types EMA, SMA, VWMA, WMA, HMA, RMA, ALMA, DEMA, TEMA, KAMA across 5 lengths), and Supertrend, ADX, Ichimoku, Parabolic SAR, Linear Regression, Vortex and DMI.
• SUMMARY: the balance of the Leading and Lagging halves; your one-number bias.
When the two halves agree, conviction is high; when Leading leads Lagging, a turn may be forming.
⭐️ANALYTICS ROW
• MARKET REGIME : Strong Bull / Bull / Sideways / Bear / Strong Bear. Combines five trend engines (Supertrend, Ichimoku, DMI, stacked-MA alignment, LinReg slope) into a directional bias, then gates it with ADX: low ADX = Sideways; high ADX + strong bias = a "Strong" trend.
• TREND STRENGTH % : how strong and aligned the trend is, blending the size of that directional bias with ADX magnitude.
• VOLATILITY : Low / Normal / High / Extreme, from the percentile rank of Bollinger Band width over the last 100 bars (so it adapts to each symbol).
• CONFIDENCE % : how trustworthy the current reading is: a blend of decisiveness (how far Summary is from neutral), Leading–Lagging agreement, and vote consistency.
• BULL / BEAR PROBABILITY % : the weighted balance of all votes, always summing to 100.
• SIGNAL-QUALITY GRADE : A+ to D, a composite of Confidence, Trend Strength and favourable volatility, for a quick "is this a clean setup?" read.
⭐️ SETTINGS GUIDE
Layout : anchor position, total width, summary size, height, compact mode, per-gauge show/hide, the five MA lengths, and toggles for the analytics row and breakdown table.
Signals & timeframe: analysis timeframe (MTF), confirm-on-close, Strong and normal Buy/Sell arrows, the signal trigger levels, the ADX whipsaw filter, background tint and the volatility alert.
Indicator periods : lengths for RSI, Stochastic, CCI, MFI, Williams %R, ROC, Momentum, ADX/DMI, Bollinger and MACD.
Overbought / Oversold: the OB/OS thresholds for RSI, Stochastic, MFI, Ultimate Oscillator, CCI and Williams %R.
Analytics thresholds: the ADX bands for regime and the percentile bands for volatility.
Weights & toggles: category weights (Oscillators / MAs / Trend) and an on/off switch for all 34 named indicators.
Colors: the full Strong-Sell to Strong-Buy palette and table colours.
Signals are calculated using closed-bar data when "Confirm on Close" is enabled. The indicator does not intentionally use future data or repaint historical signals.
⭐️How to use
Context first: read Market Regime and Volatility. "Strong" regimes favour trend-following; "Sideways" favours mean-reversion or standing aside; "Extreme" volatility means wider stops and more false breaks.
Bias: read the Summary gauge and its 0–100 score: your single-number lean.
Alignment:compare Leading vs Lagging. Both same side = confirmed conviction; Leading
ahead of Lagging = possible early turn; disagreement = mixed/choppy, so smaller size or wait.
Quality: check Confidence % and the A+…D Grade. An A-grade Strong Buy in a Strong Bull regime ≠ a borderline Buy in chop.
Execute: use the Buy/Sell arrows as visual triggers, or attach the built-in alerts.
Make it yours: shorter periods/lower triggers for scalping, longer/higher for swing; re-weight or disable indicators you don't trust; set an Analysis timeframe to read a higher TF from a lower chart.
⭐️ BEST USE CASES
Best suited for:
• Trend confirmation and trend-following strategies
• Market regime analysis (Bull, Bear, Sideways)
• Multi-indicator consensus and bias assessment
• Swing trading and position trading
• Day trading and intraday market analysis
• Higher-timeframe directional bias and confirmation
• Identifying alignment between momentum and trend indicators
Not designed for:
• Standalone trade entries without additional analysis
• Predicting exact tops, bottoms, or reversals
• Guaranteed market forecasts or future price predictions
• Fully automated trading systems without validation
• Replacing risk management, position sizing, or trading plans
Technical Strength Meter combines the signals of 74 widely used technical indicators into a single, transparent decision-support framework. By separating indicators into Leading and Lagging categories, the indicator helps traders identify potential turning points, confirm established trends, and understand the overall market bias at a glance. Rather than relying on a single indicator, it provides a structured consensus view supported by market regime, volatility, confidence, probability, and signal-quality analysis. Whether used for scalping, day trading, or swing trading, the goal is to simplify complex technical data into actionable market context while keeping every vote visible and explainable.
We would love to hear your suggestions. If you have ideas for new features, indicators, analytics, or improvements, please share your feedback. Your input helps guide future updates and improve the indicator for all traders.
For educational and informational purposes only. This indicator is designed to assist technical analysis and should not be considered financial, investment, or trading advice.
Indicator

Z-Score Flow Pro [JOAT]Z-SCORE FLOW PRO
A rigorously-statistical mean-reversion oscillator built on top of two of the cleanest primitives in market analysis — the Z-score of price against its own rolling mean and the EMA-smoothed RSI — and wrapped in a regime-aware visual and signal pipeline that knows when not to fire.
Why Z-score
A Z-score answers the question every reversion trader is really asking: "How many standard deviations is price from where it usually sits?" It is regime-aware by construction — when realised volatility expands, the same dollar move produces a smaller Z; when it contracts, the same dollar move produces a larger Z. That means the signal levels (Z = ±2, ±3, etc.) carry the same statistical meaning across instruments and timeframes, which a price-distance level never does.
Z-Score Flow Pro uses:
Z-score core — close vs SMA basis, normalised by rolling stdev, over a configurable lookback (default 100).
EMA trend filter — a long EMA (default 50) decides which side of the chart the engine considers in-regime. Signals are weighted by regime alignment, not blindly suppressed.
Smoothed RSI — RSI is computed, then EMA-smoothed (default 8-bar) to eliminate the single-bar whipsaws that plague the raw indicator without re-introducing visible lag.
A signal needs both the Z-score and the smoothed RSI to be at extremes on the same side — that AND-gating is what removes most of the false signals that pure RSI or pure Z systems produce.
Signal engine
A Buy signal requires Z ≤ Buy threshold (default −2.0) and smoothed RSI ≤ oversold level (default 30). A Sell signal requires Z ≥ Sell threshold (default +2.0) and smoothed RSI ≥ overbought level (default 70). A configurable cooldown prevents back-to-back signals; the labels respect the EMA regime filter so the strongest read is when signal direction agrees with the EMA trend.
Background heatmap (JOAT enhancement)
The chart pane is tinted bull or bear with an intensity proportional to |Z|. The mapping is linear: at Z = 0 the heatmap is nearly invisible, at |Z| = the saturation threshold (default 1.5) the tint reaches its loudest configured opacity. Both ends are tunable, so you can dial the heatmap from "barely there" to "institutional cockpit". This is the cleanest at-a-glance read of how stretched the market is right now — you do not need to read the Z value itself.
Divergence engine (JOAT enhancement)
A slope-comparison divergence runs in parallel: it compares the slope of the Z-score against the slope of price over a configurable lookback. A bullish divergence requires price slope negative and Z slope positive; bearish is the mirror. Both slopes must exceed a small epsilon to suppress flat-region noise, and a divergence cooldown spaces them out. Divergences print directly in the chart pane in the palette colour.
Slope-coloured Z-mean line
The Z-score's own running mean is plotted as a slope-coloured ribbon: bull / bear / flat colours based on the slope over a configurable sensitivity window. The shadow underneath the line uses an alpha-modulated version of the same colour so the line visually breathes with regime.
Dashboard
A compact monospaced table, positionable to any of nine corners, with togglable cell transparency. Rows surface:
Current Z-score and its direction (Rising / Falling / Flat).
One-year (252-bar) percentile of Z — how unusual the current reading is in its own recent history.
Smoothed RSI and its slope direction.
Active EMA regime (Up / Down / Neutral).
Distance of Z from its own min/max range (position-in-Z, 0–100%).
Alerts
Alerts are exposed for buy / sell signals, divergences, regime flips, and a configurable Z-extreme alert that fires when |Z| crosses a user-set high level (default 3.0). The extreme alert is the cleanest "the market is genuinely far from home" trigger this script produces and is suitable for end-of-day notification workflows.
How to read it
Three reads, in order of conviction:
Background heatmap — a glance tells you whether you are in a normal-Z regime (no tint) or stretched (bright tint). Most of the time, do nothing.
Signal labels — fade extremes only when both Z and RSI agree, and respect the EMA regime — counter-trend trades into a sustained EMA-aligned move are lower-conviction by definition.
Divergences — the highest-conviction reads. A bullish divergence with the heatmap saturated bear and the signal in the right direction is the cleanest setup the engine can produce.
Suggested settings
Defaults are tuned for 1H–4H on liquid markets. For 5m–15m, drop Z period to 50 and RSI period to 9. For daily and above, raise Z period to 200 and EMA trend filter to 100. The thresholds (±2.0 Z, 30/70 RSI) are intentionally classic — they correspond to the textbook two-sigma deviation and are well-understood; loosen them only if you are running on a less-liquid instrument.
Originality / what's reused
Z-score and RSI are public-domain mathematics, used here as primitives. The implementation — the smoothed-RSI gating, the slope-coloured Z-mean line with alpha shadow, the |Z|-driven background heatmap, the 252-bar percentile rank, the divergence epsilon filter, and the AND-gated signal pipeline — is JOAT-original and tuned together. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. Every section is banner-headed, every helper is documented inline, every input carries a tooltip. The Z-mean line, the heatmap, the divergence engine, and the dashboard are each in their own isolated module so you can study or adapt any single piece without reading the whole file.
Limitations
Z-score mean-reversion is a counter-trend tool by definition. In sustained one-sided trends the Z will live at an extreme for many bars and the signals will give back giveback — the EMA regime filter exists to warn you when you are in this state. The 252-bar percentile rank needs ~1 year of data to be meaningful; on shorter histories it warms up to neutral. Divergences are non-repainting but carry the natural lag of slope-over-window comparison.
—
-made with passion by jackofalltrades
Indicator

Volatility Reversion Bands Pro [JOAT]VOLATILITY REVERSION BANDS PRO
A two-layer reversion envelope: inner Bollinger band for the normal volatility envelope, outer ATR-extended band for the extreme envelope. Signals only fire when price has reached the outer ring — the inner band is context, the outer band is the trigger. The result is a clean mean-reversion engine that respects the difference between "stretched" and "actually stretched".
Two envelopes, one principle
Inner band — classic Bollinger: basis (SMA or EMA) ± stdev × multiplier. The familiar 20-period, 2-sigma defaults are preserved.
Outer reversion band — the outer envelope extends inner band ± ATR × multiplier . This is the band that triggers signals. Setting the ATR multiplier high makes signals rarer but deeper; setting it low makes them frequent and shallower.
Reversion bands using stdev alone collapse in low-volatility regimes (too many false signals) and explode in high-volatility regimes (signals come too late). The ATR extension on top of stdev fixes both: ATR adds a constant-floor protection in quiet markets and scales the outer band proportionally in loud ones.
Strong vs weak signals
Two signal tiers from a single channel-ratio read (close position within the outer band, normalised 0–1):
Strong signals — fire on the outer band itself (ratio ≤ 0 or ≥ 1). The high-conviction reversion read.
Weak signals — fire when ratio reaches a configurable near-band threshold (default 0.10 / 0.90). The "approaching outer band" read — useful for traders who want earlier hints. Easily disabled.
A signal cooldown suppresses same-side repetition; an exhaustion arrow prints when N consecutive bars (default 3) all live in the outer-band zone — a configurable escalating-glyph string ("^", "^^", "^^^"…) makes the run length visible at a glance.
Volatility regime classification
Independent of signals, the script classifies the current volatility regime by comparing current stdev to its own rolling average over a long lookback (default 100 bars):
Low regime — stdev / avgStdev below the low threshold (default 1.0×). Reversion is more reliable here.
High regime — above the high threshold (default 2.0×). Reversion is less reliable here; trends become dominant.
Normal regime — in between. Default mode.
Background tinting (toggleable, transparency-controlled) paints the chart by regime so the trader can see at a glance whether the current environment is suitable for reversion. This is the "do not fight the tape" filter — when the background is hot, every reversion signal is lower-conviction by definition.
Visual system
Bar gradient — bars are coloured by their position-in-band ratio (bull → mid → bear via plasma palette). At a glance you can see where price is sitting in the channel without reading the value.
Inner band fill — toggleable shoulder fill between BB and outer reversal bands with configurable transparency.
Inner BB lines and basis line are each independently toggleable for traders who want a minimalist or full envelope view.
Signal label style — Glyph (compact), Text (verbose), or Both.
A locked Plasma palette (yellow bull, magenta bear, violet mid) on a deep-void background gives the chart a distinctive look without competing with price action.
Dashboard
Monospaced table, positionable to any of nine corners, with togglable legend footer. Rows surface current basis, inner band values, outer reversion band values, channel ratio %, stdev / avgStdev ratio, regime label, last signal direction with age, and an exhaustion run counter.
Alerts
Four alert conditions, each independently controllable:
Strong Long / Short (outer band touch reversion)
Weak Long / Short (near-band threshold)
Vol Regime Change
Exhaustion Arrow (consecutive bars in outer-band zone)
How to read it
Two reads, in order of conviction:
Strong signal in a Low or Normal regime — the script's intended sweet spot. The outer band has been touched, price is statistically far from its mean, and the volatility environment supports the idea of mean-reversion.
Exhaustion arrow — when 3+ bars sit in the outer band, you usually have either a genuine breakout (the bands themselves will start to expand) or an exhaustion (the next reversal candle will be the signal). Either way, the next move is meaningful.
In a High regime, treat strong signals as cautionary at best — the bars are coloured by ratio for a reason; the gradient will tell you when one side is dominating.
Suggested settings
Defaults (length 20, stdev mult 2.0, ATR mult 1.5) are tuned to 1H–4H on liquid markets — the classical Bollinger settings plus a 1.5-ATR outer cushion. For 5m–15m, drop length to 14 and ATR multiplier to 1.0. For daily and above, raise length to 50 and ATR multiplier to 2.0. The regime thresholds (low 1.0×, high 2.0× of the long-run stdev average) are conservative — tighten the bands if your instrument is unusually quiet.
Originality / what's reused
Bollinger Bands and ATR are public-domain primitives. The implementation — the outer-band = inner-band ± ATR construction, the channel-ratio bar gradient, the regime classifier with auto-tinted background, the exhaustion-arrow consecutive-bar run logic, the weak/strong signal tiering, and the dashboard's monospaced regime-aware layout — is JOAT-original and tuned together. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. Section-headed source, tooltips on every input, helper functions documented inline. The band engine, the regime classifier, the exhaustion logic, and the dashboard are independent modules — fork or extend any single one without reading the whole file.
Limitations
Reversion bands are a counter-trend tool by construction. In sustained one-sided moves the outer band will be repeatedly touched without producing a profitable reversion — the High regime tint and the exhaustion-arrow run logic both exist to warn you when you are in this state. Signals are confirmed on bar close (non-repainting), so an intra-bar wick into the outer band that gets reabsorbed will not fire.
—
-made with passion by jackofalltrades
Indicator

Dynamic Volatility Filter [QuantAlgo]🟢 Overview
Dynamic Volatility Filter is a trend-following indicator built on an adaptive volatility threshold rather than fixed bands or moving average crossovers. It quantifies the realized volatility of recent price movement to establish a dynamic noise floor that price must overcome before the line responds, anchoring a filtered trend line that only shifts when a directional move exceeds the prevailing volatility regime, helping traders separate statistically significant trend change from noise-driven fluctuation across every timeframe and market.
🟢 How It Works
The foundation of the indicator is a rolling volatility estimate derived from the Average True Range over a configurable lookback window, scaled by a noise multiplier to produce the threshold used in all line logic:
threshold = ta.atr(lookback) * noise_mult
This threshold functions as a deviation barrier the line will not cross until price movement breaches it. On each bar the filter measures the displacement between price and the current line position, and only when that displacement exceeds the volatility threshold does the line update:
float diff = src - dvf_line
if math.abs(diff) > threshold
dvf_line := dvf_line + diff * snap_speed
The line remains stationary through movement that falls within the volatility envelope and only commits once displacement clears the threshold. Rather than converging directly onto price, the line advances by a fraction of the residual distance governed by the catch-up coefficient, producing a damped response instead of an instantaneous one. Lower catch-up values introduce deliberate lag that requires a move to persist before the line follows, while higher values tighten the track to price.
Direction state is derived from the line's own first difference, comparing its current position against the prior bar:
if dvf_line > dvf_line
trend_dir := 1
else if dvf_line < dvf_line
trend_dir := -1
Because the line holds flat whenever displacement stays inside the threshold, those periods register no direction change. With Show Neutral enabled the state resets to neutral during these pauses, and with it disabled the line retains its last directional reading until the next threshold breach.
🟢 Signal Interpretation
▶ Bullish Trend (Green): When the filter line registers positive displacement against its prior position, the indicator enters bullish mode with green coloring applied across the line, gradient fill, and volatility bands. This state persists through pullbacks contained within the threshold, since direction only updates when the line moves. The transition into green marks a potential long/buy opportunity, with pullbacks toward the line during an established bullish reading offering potential continuation entries.
▶ Bearish Trend (Red): When the filter line registers negative displacement against its prior position, the indicator enters bearish mode with red coloring across all visual elements. The reading holds bearish until price clears the volatility threshold in the opposite direction. The transition into red marks a potential short/sell opportunity, with rallies back toward the line during an established bearish reading offering potential continuation entries on the downside.
▶ Neutral (Gray): When Show Neutral is enabled, the line and fills turn gray during flat stretches where price stays inside the threshold and the line holds still. This state signals an absence of confirmed direction and is best treated as a stand-aside condition, where waiting for the line to commit back to green or red avoids entering during indecisive, range-bound conditions.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 4-hour and daily charts with a balanced threshold that filters moderate noise while staying responsive to genuine regime shifts. "Fast Response" lowers the volatility barrier and shortens the lookback for intraday charts where the line needs to adapt to shorter-duration moves. "Smooth Trend" raises the threshold and slows the catch-up for position trading on daily and weekly timeframes, where the cost of a false flip exceeds the cost of a delayed one. Selecting a preset overrides the individual noise, period, and catch-up inputs.
▶ Built-in Alerts: Three alert conditions cover all directional states. "Bullish Trend Signal" fires on the bar where the trend confirms bullish. "Bearish Trend Signal" fires on the bar where it confirms bearish. "Any Trend Change" combines both into a single condition for traders who want a unified notification regardless of direction.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish color schemes across the line, gradient fill, volatility bands, and optional bar and background coloring. The volatility bands plot one threshold above and below the line to frame the deviation envelope price must breach, and can be hidden for a clean line-only view. Bar coloring tints price candles with the active trend color at a configurable transparency level, and background coloring extends the directional tint across the full chart pane. Both are disabled by default and controlled independently.
*Recommendation: Layer the Dynamic Volatility Filter with complementary analysis rather than treating it as a standalone decision tool. Combine direction changes with volume context, since expanding volume on a flip bar suggests the move has broader participation behind it, and read transitions against key structural levels, as a flip occurring near major support or resistance carries more weight than one in open space. Pairing this script with volume, open interest, CVD, market structure, and mean reversion indicators from our QuantAlgo toolkit can further validate directional bias before entry. Indicator

Tension Flow RR [JOAT]TENSION FLOW RR
A trend-signal engine wrapped in a full risk-reward execution layer — Hull Moving Average baseline, Z-score normalised tension reading, ATR-sized stops and targets, optional R-multiple-triggered trailing stop, and a rolling-window backtest that tracks every closed trade and reports win rate / cumulative R / equity sparkline directly on the chart. Built for traders who care about what happens after the signal fires , not just the signal itself.
Trend signal — HMA + Z-score tension
Two cleanly chosen primitives:
Hull Moving Average (HMA) — a chained-WMA construct that delivers a fast, low-lag trend baseline. The square-root final smoothing step is what makes it noticeably less laggy than EMA at the same length.
Z-score of (close − HMA) — the residual is normalised by its own rolling stdev so the tension reading is dimensionless and comparable across instruments. |Z| above the overextended threshold (default 2.0) tags the move as overextended in the Energy Dashboard.
A new trend signal fires when the configured signal cooldown has elapsed and the directional logic flips. The signal is non-repainting (confirmed on bar close).
ATR-sized stops and targets
Each signal automatically renders:
SL box — a translucent box sized at SL-ATR × multiplier (default 2.0 × ATR-200) from entry, drawn in the bear colour.
TP box — sized at SL distance × Risk:Reward ratio (default 1.0R), drawn in the bull colour.
Trailing-stop line (optional, JOAT enhancement) — when enabled and price moves more than the activation threshold (in R-multiples) in your favour, the stop ratchets behind price by Trail-ATR × multiplier. Configurable bar-by-bar trail step, optional break-even lock at activation.
This is full execution geometry — you can see entry, stop, target, and the trail's path on the chart at all times.
Rolling-window backtest (the headline)
The script tracks the last N closed trades (configurable, default 100) and produces live performance statistics that update tick-by-tick:
Total trades, wins, losses, breakevens.
Win rate, with colour-coded cell — green above the configured "green" threshold, amber between, red below.
Average R per trade, best R, worst R.
Cumulative R since the start of the window.
Profit factor.
Expectancy in R-multiples.
Unicode equity sparkline — a compact in-cell chart of the last N cumulative-R points, drawn directly in the dashboard cells with block-character glyphs.
Trades are evicted FIFO when the history window is exceeded, so the win rate is always a rolling read of recent performance, not lifetime stats — which is the right read for a working trader.
Two dashboards
Energy Dashboard (Bottom-Right by default) — compact 22-row read of current Z-score, trend direction, HMA value, overextension flag, ribbon width, ATR, and signal state.
RR Performance Dashboard (Top-Right by default) — 29-row institutional read of the rolling backtest stats above, plus the equity sparkline.
Both are independently positionable, sizeable, and toggle-able. The split lets you run "engine state" on one corner and "PnL state" on the other without overlap.
Trend ribbon
The HMA is rendered with an ATR-band ribbon (configurable width) whose transparency is dynamically modulated by current Z-score — the ribbon visually breathes with tension. Toggle off if you prefer a clean line.
Alerts
Alert conditions are exposed for new signals, SL hits, TP hits, trailing-stop hits, overextension events, and two win-rate threshold alerts: Win-Rate High (crossover above the configured high level) and Win-Rate Low (crossunder below the configured low level). Win-rate alerts are suppressed until a minimum sample size has been recorded, so you do not get a 100% win-rate alert from a single lucky trade.
How to read it
The script is designed to be used as a closed loop:
Take the trend-start signal as the entry. The HMA + Z-score logic is the signal; the SL/TP boxes are the geometry.
If trailing is enabled, the line will appear once unrealised PnL exceeds the activation threshold and will ratchet from there.
When the trade closes, the rolling backtest updates — watch the win-rate colour and the cumulative-R sparkline.
If win-rate trips the low alert, that is the script telling you the current regime does not suit the current settings.
The cumulative-R sparkline is the most honest single line on the dashboard — if it is climbing, the engine is doing its job; if it is grinding flat or down, it isn't, and you should re-evaluate parameters or stand aside.
Suggested settings
Defaults (HMA 50, Z 50, 2.0 R-stop, 1.0 R-target) are calibrated for 1H–4H on liquid markets. For lower timeframes drop both lengths proportionally and consider a Risk:Reward above 1.0 to offset the higher signal frequency. For daily and above, raise lengths and lower the signal cooldown.
Originality / what's reused
HMA, Z-score, and ATR-sized stops are public-domain primitives, used here as building blocks. The implementation — the Z-normalised tension reading, the R-multiple activation trailing stop with break-even lock, the colour-coded rolling-N backtest, the Unicode equity sparkline rendered inside table cells, the dual-dashboard split, and the sample-gated win-rate alerts — is JOAT-original and tuned together. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. The execution geometry, the rolling-trade tracker, the Z-modulated ribbon, and the sparkline renderer are each isolated so you can adapt any one without reading the whole file. Forks welcome with credit.
Limitations
The rolling backtest is a descriptive read of recent signal performance under the current settings — it is not a predictive metric and changing the parameters resets the read. SL / TP geometry assumes a single position per signal direction; the script is not a position manager. Trailing stop fires on confirmed bars; intra-bar movement past the trail level is registered but the close determines the outcome.
—
-made with passion by jackofalltrades
Indicator

Momentum Vol Composite Pro [JOAT]MOMENTUM VOL COMPOSITE PRO
A four-factor composite oscillator that fuses momentum, volatility, volume-flow, and trend into a single Z-normalised line — then exposes per-factor weights, divergence detection, an ASCII gauge dashboard, and a slope-coloured composite MA. Built on the idea that no single oscillator tells you what the market is doing — but four orthogonal ones, properly normalised and weighted, can.
The four factors
Each factor is Z-normalised (subtract its own rolling mean, divide by its own rolling stdev) before being blended, so they all live on the same scale and a weight of "0.25" actually means "one-quarter share of the composite" regardless of the instrument:
ROC (Rate-of-Change) — the price-velocity factor. Captures pure directional momentum.
ATR (volatility) — the range-expansion factor. Rises when bars are getting larger; useful as a "the market is committing" signal.
Volume Flow — cumulative volume minus its own EMA. A proxy for net accumulation/distribution that is regime-aware (it normalises around its own trend).
EMA Difference — short EMA minus long EMA, the classic MACD-style trend factor.
The four Z-scores are weighted (sliders 0–4 each, default 0.25 each), sum-normalised internally so any positive configuration is valid, and combined into a single composite Z-line. An EMA smoother on top of the composite produces the slope-coloured Composite MA that drives Buy/Sell flips.
This is what "composite" should mean — orthogonal factors, weighted, on a common scale, with the weights exposed so the trader controls the personality.
Why per-factor weights matter
Default 0.25 / 0.25 / 0.25 / 0.25 reproduces the textbook equal-weight composite. But equal weights are an assumption , not a fact. If your instrument is volume-driven, raise VolFlow Weight. If your timeframe is dominated by trend, raise EMA Diff Weight. If you are scalping a noisy intraday environment, drop ROC Weight in favour of VolFlow. The composite reshapes itself live as you slide.
Signal engine
A Buy signal fires when the composite MA slopes up; a Sell fires when it slopes down. The composite line itself crosses the configurable threshold guides (default ±1 Z) to mark "extreme bull" and "extreme bear" states. A separate alert fires when |composite| crosses the Extreme threshold (default 2.0 Z) — the script's strongest read.
Divergence engine (JOAT enhancement)
A slope-comparison divergence runs in parallel: it compares the slope of the composite against the slope of price over a configurable lookback. Both slopes must exceed an epsilon to filter out flat-region noise, and a divergence cooldown spaces them out. Divergence labels can be forced onto the main chart pane via force_overlay so you can see them without flipping to the oscillator pane.
Histogram background
Faint columns plot the raw composite value behind the line — this is useful as a "before the slope flips" early read. You can see exhaustion building in the histogram before the slope-coloured MA actually turns.
ASCII gauge dashboard (JOAT enhancement)
A monospaced dashboard with a unique feature — each per-factor row shows both the numeric Z-value and an ASCII bar gauge ("|||||----" style) that renders the value visually inside the table cell. The gauge maps Z in the range linearly across N glyphs (configurable width), with a separator at the centre. At a glance you can see which factors are dominating without reading the numbers.
Dashboard rows:
Composite Z + bar gauge + status (extreme bull / bull / neutral / bear / extreme bear).
ROC Z + gauge.
ATR Z + gauge.
VolFlow Z + gauge.
EMA Diff Z + gauge.
Composite MA slope (Rising / Falling / Flat).
Last signal direction with bar age.
Divergence status with cooldown remaining.
Visual system
Slope-coloured composite MA (bull / bear by slope sign, configurable width).
Translucent composite line for context (transparency configurable, default matches the v5 source).
Threshold guide lines at ±1, zero line, and faint background histogram for exhaustion-before-flip reads.
Buy / Sell labels can be force-overlaid onto the main chart pane if desired.
A locked Emerald-Night palette (vivid green bull / vivid red bear / sage neutral on a midnight-forest ground) gives the pane a distinct identity.
Alerts
Five alert conditions:
Composite crossover above high threshold (default +1)
Composite crossunder below low threshold (default −1)
|Composite| crosses Extreme |Z| (default 2.0)
Bullish divergence detected
Bearish divergence detected
How to read it
Three reads, in order of conviction:
ASCII gauge agreement — when all four factor gauges point the same way, the composite is a high-conviction read. When they disagree, the composite is a wash.
Composite MA slope — once the smoothed line slope flips and price agrees, you have a clean signal.
Divergence + extreme |Z| — the rarest and strongest read. A divergence at a composite extreme tells you that one of the factors is rolling over while price is not, which is the textbook reversal setup.
The histogram is the leading indicator on the line — when it starts shrinking while price is still extending, the slope is about to flip.
Suggested settings
Defaults (ROC 14, ATR 14, VolFlow 20, ShortEMA 12, LongEMA 26) reproduce the classical configuration. For lower timeframes drop all lengths roughly proportionally. The per-factor weights are where the personality lives: pure trend-following bias → raise EMA Diff to 1.5, drop ATR to 0.1. Pure volatility-of-momentum bias → raise ROC and ATR, drop VolFlow.
Originality / what's reused
The factor primitives (ROC, ATR, EMA difference, cumulative volume flow) are public-domain. The Z-normalisation pipeline that puts them on a common scale, the sum-normalised per-factor weighting, the ASCII bar-gauge dashboard, the histogram-behind-line exhaustion view, the slope-coloured composite MA, and the divergence engine with epsilon filter are all JOAT-original and tuned together as a single oscillator. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. Sectioned source, tooltips on every input, helper functions documented inline. Each factor's Z-normalisation, the weighting pipeline, the gauge renderer, and the divergence detector are isolated modules — adapt any single one without reading the whole file.
Limitations
The composite is statistical in nature — it tells you how stretched the blend is, not which specific factor is driving the read. That is what the per-factor rows are for. The Z-normalisation needs enough history to be meaningful; on a fresh chart with little data the composite warms up to flat. Divergences are non-repainting but carry the natural lag of slope-over-window comparison.
—
-made with passion by jackofalltrades
Indicator

Volume Profile Support & Resistance Matrix [HexaTrades]Most indicators tell you where the price went. This one shows you where the volume traded and then does the hard part for you: it reads that volume map and draws the support and resistance levels that genuinely matter right now.
VRVP Visible Range Support/Resistance Matrix is an all-in-one volume toolkit. It builds a buy/sell Volume Range Visible Profile over the last N candles (or the visible range), locates the heavy high-volume nodes, converts them into ranked support and resistance zones, and surrounds them with everything you need to act: Point of Control, Value Area, Low-Volume-Node levels, optional Fair Value Gaps, a corner dashboard, and breakout/touch/ approach alerts. Everything is configurable, and every level is explained
✨ features
✔️ Buy & Sell Volume Profile
- Volume-by-price histogram built from the chosen window, one row per price bin.
- Buy vs sell split: each candle’s volume is classified as buying (close ≥ open) or selling (close < open) and stacked per row, so you see the order-flow balance at every level.
- Radiant intensity coloring: heavy rows render bright/opaque, light rows fade out, so the significant nodes jump off the chart.
- Right-of-price placement: the profile sits in the gap to the right of the last candle (adjustable), so it never covers your price action, and it pans/zooms with the chart.
- Gap-free distribution: volume is spread across each candle’s full range, so the profile is solid rather than a sparse set of dots.
✔️ Automatic Support & Resistance Zones
- High-volume node detection: the script repeatedly finds the biggest volume peaks and turns them into zones.
- Strength % score: every zone is graded by its volume relative to the Point of Control (e.g. “Support 82%”), and the fill opacity scales with that strength.
- Retest count: counts how many times price has re-entered the zone (e.g. “x4”), so you can tell fresh levels from heavily-tested ones.
- Smart spacing: a minimum distance (in profile rows) and an anti-overlap floor keep zones cleanly separated, never stacked on top of each other.
- Per-side cap: limit how many support and resistance zones show, so the chart stays readable.
- Auto role flip: a level above the last confirmed close is Resistance, below it is Support; zones recolor only when a candle actually closes through them.
- Adjustable thickness: zone band height from ATR or bin size, fully tunable.
Anchor options extend zones from the window start or from the last price touch.
✔️ Point of Control & Value Area
- POC line: the single highest-volume price (the market’s fair-value magnet).
- Value Area (VAH / VAL) : the high/low boundaries that contain your chosen % of total traded volume (default 70%).
- Used both as optional on-chart lines and as the engine behind the dashboard’s trend bias.
✔️ Low Volume Nodes (LVNs)
- Imbalance detection: finds the thin “valleys” in the profile where little volume traded.
- Dashed level lines mark these air pockets: price tends to move quickly through them and react at the thick nodes around them.
✔️ Fair Value Gaps (FVG)
- 3-candle imbalance detection: bullish & bearish gaps where price moved so fast it left an unfilled inefficiency.
-Unfilled-only boxes: only gaps price hasn’t returned to are shown, as small yellow boxes labeled “FVG”. Capped to keep the chart clean. (Off by default.)
✔️ Stat Dashboard
- A compact corner panel showing 📊 POC, 🔼 VAH, 🔽 VAL, 🟥 Nearest Resistance, 🟩 Nearest Support, 🧭 Trend Bias (Bullish / Bearish / Balanced) and 📐 zone counts.
- Dark, high-contrast styling that stays readable on light and dark chart themes; placeable in any of the four corners.
✔️ Alerts
The tool features a comprehensive, built-in alert system that triggers notifications for a variety of critical price movements, such as breakouts above resistance, breakdowns below support, support touches, resistance rejections, and upcoming zone warnings. Traders can also enable an optional volume confirmation filter to help minimize false signals during low-liquidity periods.
✔️ Window & Customization
- Two modes: a fixed candle window (default 360) for consistency, or the visible range so the profile follows whatever you’re looking at.
- Adjustable resolution: set the number of profile rows for coarse or fine detail.
- Full color control: buy/sell profile, support/resistance fills, POC, value area, LVN and FVG colors are all editable.
Find all mentioned features in the chart below.
⚙️ How it works
- Range & rows. It takes the high/low of the last N candles (or the visible range) and slices that range into bins (rows).
- Volume mapping. Each candle spreads its volume across the rows its range covers, then splits it into buy vs sell, giving a solid, gap-free volume-by-price map.
- POC & Value Area. The busiest row is the Point of Control; the script expands outward until it captures your chosen % of total volume → VAH / VAL.
- Zone selection. It picks the biggest volume peaks, keeps them spaced apart so they never overlap, scores each by strength, and counts retests.
- Role & signals. Levels above the last confirmed close are Resistance; below are Support, and breakout/touch / reject / approach events fire from the nearest live zone.
🚀How to use it- step by step
Add the indicator to any symbol that has volume, on any timeframe. The defaults work out of the box. Two decisions set the context:
- Timeframe: use your trading timeframe. Higher timeframes (1H/4H/1D) give fewer, stronger zones; lower timeframes give more, faster-moving ones.
- Window: keep Use Fixed Candle Count on (default 360) for a stable, repeatable profile, or turn it off to let the profile follow the visible range as you scroll.
⭐️ Read the structure with the dashboard
- Trend Bias is your regime filter: Bullish when price is above the Value Area High (favour longs), Bearish below the Value Area Low (favour shorts), Balanced inside the value area (favour fading the edges / mean-reversion).
- 🎯 POC / 🔼 VAH / 🔽 VAL give you the fair-value zone where most business was done.
- 🟥 Nearest Resistance / 🟩 Nearest Support are your immediate targets and invalidation prices
⭐️ Find the zones that actually matter
Not all zones are equal — let the labels rank them for you:
- Strength % : higher = more volume traded there = a stronger level. A “Support 95%” is far more significant than a “Support 48%”. Prioritise the high-% zones.
- Retest count (x N): a low count means a fresh, untested level (often the cleanest reactions); a high count means it’s been hit many times and may be weakening toward a break.
- Profile shape: the long bars are High-Volume Nodes (acceptance/magnets); the thin LVN dashed lines are Low-Volume Nodes (rejection / fast-travel zones).
⭐️ Trade the three core plays
Almost every setup is one of these. Use the zone edges for entries and stops:
Bounce (long at support)
- Price drops into a strong green Support zone with the bias bullish or balanced.
- Wait for a reaction candle (rejection wick/engulfing) inside or at the zone.
- Entry on the reaction; stop just below the zone; first target = POC or the nearest resistance.
Reject (short at resistance)
- Price rallies into a strong red Resistance zone with the bias bearish or balanced.
- Look for a rejection / the “Resistance Reject” marker.
- Entry on the reaction; stop just above the zone; target = POC or nearest support.
Breakout / Breakdown (momentum)
-A decisive close through a zone (ideally with the BUY/SELL signal and volume confirmation on) flips it from resistance to support (or vice-versa).
-Enter on the break or the retest of the flipped zone; target the next zone up/down.
- Breaks through a thin LVN tend to run fast to the next High-Volume Node.
Stack confluence for the best setups
The highest-probability trades are where several things line up:
Zone + POC: a level sitting on the Point of Control is a heavy magnet.
Zone + Value Area edge: VAH/VAL rejections are classic mean-reversion spots.
Zone + Fair Value Gap turn on FVGs: a gap that overlaps a zone is a strong target.
Zone + LVN beyond it: if there’s an air pocket just past a zone, a break can accelerate quickly.
High Strength % + low retest count: fresh, heavy levels react best.
Feel free to explore, learn from, and build upon this indicator. Feedback, suggestions, and ideas for future improvements are always welcome and appreciated.
This indicator is provided for educational and analytical purposes only and does not constitute financial, investment, or trading advice. All signals, levels, and zones are based on historical market data and should be used alongside your own analysis and risk management. Trading involves risk, and past performance or historical price reactions do not guarantee future results.
Indicator

Smart SR Zones [JOAT]SMART SR ZONES
Support / resistance done properly. Most public SR scripts paint a horizontal line at every pivot, which produces wallpaper, not analysis. Smart SR Zones does the opposite — pivots are first detected with a volatility-aware engine, then clustered into zones, then scored by volume and touches, then filtered by spacing and distance. What ends up on the chart is the small handful of levels that actually matter for the current market state.
Pivot detection — preset-driven
A single Strength Preset selects the personality of the pivot engine:
Scalp — 4 left / 2 right, 0.4× ATR clustering tolerance, 4-bar minimum spacing. For 1–5m charts.
Local — 6 / 4, 0.5×, 8-bar. Tight zones from recent structure.
Swing — 15 / 8, 0.9×, 20-bar. The balanced default.
Major — 35 / 15, 1.4×, 50-bar. Wide macro zones.
Custom — every parameter is exposed for manual tuning.
The preset abstraction means you do not need to refit anything across timeframes — pick the read you want and the engine does the rest.
Clustering, not stacking
When two pivots fall within Cluster Tolerance × ATR of each other they are merged into a single zone, with the box span widened to cover both extremes. This is the difference between a "level" and a "zone": a level pretends price is precise, a zone respects the fact that liquidity sits in a band. The cluster tolerance is ATR-relative so the same setting works across symbols.
Touch counting, properly gated
A pivot must contribute to a cluster from a minimum bar spacing (preset-driven). Without this filter a chop within a zone gets counted as ten separate touches and inflates the strength score. With it, a zone earns its touch count from genuinely independent visits.
Volume-weighted strength + star rating
Each cluster accumulates the bar volume at every contributing pivot. The aggregate is converted to a 1–3 star rating relative to the strongest zone currently on the chart, and is shown in the zone label alongside the touch count. Zones can optionally be coloured by volume share so the visually loudest box is the one carrying the most demonstrated activity.
Zone of Interest (ZOI) — the headline filter
A zone earns the ZOI badge when all of these are true at the same time:
It has met the minimum-touches threshold (so it is real structure).
Its volume share is above the ZOI volume threshold (so it is meaningfully active).
It has not been touched recently — at least ZOI Quiet bars since the most-recent touch.
In other words, a ZOI is a high-quality level that the market is conspicuously not testing — and these are usually the next levels that matter. The ZOI gets a bright burlywood border with an optional animated pulse so it visually separates from the rest of the SR stack.
Distance hiding
A "Hide zones farther than %" input drops anything whose centre price is too far from current — so when you scroll into history the chart does not get cluttered with macro zones from another era. Set to 0 to keep everything visible.
Broken zones and dropped zones
Two optional historical layers:
Broken — zones that were physically closed through. Renders in a desaturated palette so you can see where structure failed without confusing it for active level.
Dropped — zones that were removed not by a break but by reorganisation, because newer / stronger pivots reshuffled the cluster set.
Both are off by default so a working chart stays clean.
Optional signal layer
Three small markers (all off by default) for traders who want execution hints rather than just structure:
Successful test — circle on bars that touched an active zone and rejected.
Retest — diamond when price returns to a broken zone from the opposite side, inside a configurable window.
Zone reaction — small diamond on a touch-with-hold, plus a text label on physical break events.
A configurable cooldown prevents back-to-back markers from the same zone.
Dashboard
A compact diagnostic table, positionable to any of nine corners, monospaced. Shows nearest support / resistance with distance, current ZOI status, active zone count per side, and the preset in use. A compact mode hides descriptions for narrow layouts.
Alerts
A single high-signal alert is exposed: Zone of Interest activation — fires on the first bar a zone qualifies as a ZOI. The other layers are visual diagnostics, not alert-grade; this is intentional, because the ZOI rule is the strongest filter in the script and is what you actually want to be notified about.
How to read it
Look at the chart and ignore everything except the ZOI-tagged zones and the stars. The stars tell you which historical levels have the most demonstrated activity; the ZOI badge tells you which of those have been deliberately avoided recently. The intersection — a star-rated ZOI close to price — is the cleanest level read this script can produce. Use the volume score and the touch count as a tiebreaker when multiple ZOIs are in play.
Suggested settings
Default Swing preset works well from 1H through 1D on liquid futures, FX, and crypto. Drop to Local for intraday execution and Scalp for tape-reading on minute charts. Major is for weekly / monthly macro reads. The ZOI volume threshold (70%) is intentionally strict — drop it to 50–60% if you want more frequent ZOI candidates.
Originality / what's reused
The vocabulary (pivot, cluster, touch count, broken zone, retest) is public-domain market-structure language. The implementation — the preset-driven engine, the ATR-clustering, the volume-weighted star rating, the ZOI rule (touches + volume share + quiet-period), the dropped-zone reorganisation logic, and the volume-share intensity colouring — is JOAT-original and tuned together as a single system. No third-party code reused.
Open source
Published open-source under the default Mozilla Public License 2.0. The source is fully documented inline — every helper is sectioned, every input has a tooltip, and the structural layers are separable so you can learn from any specific piece. Forks welcome with credit.
Limitations
SR is structural context, not a signal generator. Smart SR Zones does not print buy / sell labels — it prints zones, ratings, and a single high-quality ZOI alert. On extremely illiquid instruments the volume-share rankings will be noisy and the ZOI rule will fire less often; that is the right behaviour. Zones beyond the Pivot Memory horizon are dropped to stay under PulseWire's 500-object cap.
—
-made with passion by jackofalltrades
Indicator
