Indicator

DivergenceLineLabelOutput_UtilitiesDivergenceLineLabelOutput_Utilities is a shared Pine v6 output library for scripts that already have their own oscillator, pivot, structure, or divergence logic but want a reusable divergence-rendering layer.
It centralizes the parts of the workflow that tend to get rewritten across oscillator scripts:
• HH / LH / HL / LL / EQ structure resolution
• regular / hidden divergence state checks
• same-structure context state checks
• divergence and context color routing
• standardized divergence/context label text
• price-pane and oscillator-pane line helpers
• price-pane and oscillator-pane label helpers
• confirmed-object slot visibility helpers
• live-preview line and label helpers
• native-pane and price-pane pivot context box helpers
On the example chart, the confirmed divergence lines, live preview lines, divergence labels, context labels, and pivot context boxes are all materially driven by this library.
This library is intentionally focused on output and object management. It does not calculate RSI, MACD, VFI, volume flow, pressure, or any other oscillator. It does not confirm pivots or decide which pivots are valid. Calling scripts remain responsible for their own oscillator engine, pivot engine, comparison logic, colors, visibility modes, and signal interpretation.
How to use
Import the library near the top of your script in global scope, alongside any other imports, before you start calling its helpers.
Typical placement:
//@version=6
indicator(...) or strategy(...)
import MYNAMEISBRANDON/DivergenceLineOutput_Utilities/1 as DivUtils
Replace /1 with the latest published version if a newer version is available.
This library expects the calling script to already know the price pivot, oscillator pivot, prior pivot reference, structure state, and output settings it wants to use. The library then handles the reusable line, label, live-preview, slot-budget, and box output layer.
➖Structure + Divergence State Helpers➖
These helpers convert pivot comparisons into structure tags and divergence/context states.
divStructure(curr, prev, isHigh)
Resolves HH, LH, HL, LL, or EQ from a current pivot and previous pivot.
Parameters:
curr (float): Current pivot value
prev (float): Previous pivot value
isHigh (bool): True for high-side comparison, false for low-side comparison
Returns:
Structure string
divState(priceStruct, oscStruct)
Resolves regular and hidden divergence states from price and oscillator structure tags.
Returns:
regularBear, regularBull, hiddenBear, hiddenBull, anyDivergence
divContextState(priceStruct, oscStruct)
Resolves same-structure context states from price and oscillator structure tags.
Returns:
highContinuation, highFade, lowContinuation, lowLift, anyContext
divColor(priceStruct, oscStruct, regularBearColor, regularBullColor, hiddenBearColor, hiddenBullColor, highContinuationColor, lowContinuationColor, highFadeColor, lowLiftColor, fallbackColor)
Routes a divergence or context pair to the matching caller-supplied color.
Returns:
Resolved color
➖Style + Label Helpers➖
These helpers keep divergence output styling consistent across scripts.
divLineStyle(styleIn)
Converts user-facing line-style text into Pine line-style enums.
Parameters:
styleIn (simple string): Solid, Dashed, or Dotted
Returns:
Pine line style
divLabelSize(sizeIn)
Converts user-facing label-size text into Pine label-size enums.
Parameters:
sizeIn (simple string): Tiny, Small, Normal, Large, or Huge
Returns:
Pine label size
divContrastText(bg)
Chooses black or white text based on background brightness.
Parameters:
bg (color): Background color
Returns:
Readable contrast text color
divLabelText(divType, divSide, priceStruct, oscStruct, formatMode)
Builds standardized divergence label text.
Parameters:
divType (simple string): Usually Reg or Hid
divSide (simple string): Usually Bull or Bear
priceStruct (string): Price structure tag
oscStruct (string): Oscillator structure tag
formatMode (simple string): Full, No Prefix, or Type Only
Returns:
Formatted label text
➖Confirmed Line Helpers➖
These helpers create and manage confirmed divergence or context lines.
clearLines(lines, colors)
Deletes all lines in an array and clears the matching color array.
pushOscLine(lines, colors, show, active, x1, y1, x2, y2, lineColor, lineTransp, lineWidth, lineStyle, maxLines)
Pushes a confirmed oscillator-pane line into line/color arrays.
pushPriceLine(lines, colors, show, active, x1, y1, x2, y2, lineColor, lineTransp, lineWidth, lineStyle, maxLines)
Pushes a confirmed price-pane line into line/color arrays using force_overlay=true.
Note:
Price helpers draw on the main chart from overlay=false oscillator scripts. Oscillator helpers draw in the script’s native pane.
➖Confirmed Label Helpers➖
These helpers create and manage confirmed divergence or context labels.
clearLabels(labels, colors)
Deletes all labels in an array and clears the matching color array.
pushOscLabel(labels, colors, show, active, xIndex, y, labelText, styleText, lineColor, labelTextOnly, labelBgTransp, labelSize, maxLabels)
Pushes a confirmed oscillator-pane label into label/color arrays.
pushPriceLabel(labels, colors, show, active, xTime, labelText, ylocText, styleText, lineColor, labelTextOnly, labelBgTransp, labelSize, maxLabels)
Pushes a confirmed price-pane label into label/color arrays using force_overlay=true.
Note:
For price-pane labels, xTime uses bar time and ylocText controls whether the label appears above or below the price bar.
➖Confirmed Slot Visibility Helpers➖
These helpers allow scripts to keep confirmed lines and labels stored while only showing the most recent visible slots.
applyLineSlots(lines, colors, visibleSlots)
Applies a visible slot budget to confirmed line arrays without deleting older objects.
applyLabelSlots(labels, colors, visibleSlots, labelTextOnly, labelBgTransp)
Applies a visible slot budget to confirmed label arrays without deleting older objects.
Example:
• Max Regular Lines = 1
- Live regular active = live regular only
- No live regular = latest confirmed regular only
• Max Regular Lines = 2
- Live regular active = live regular + latest confirmed regular
- No live regular = latest two confirmed regular lines
➖Live Preview Line Helpers➖
These helpers create, update, or delete live divergence preview lines.
syncLiveOscLine(ln, show, x1, y1, x2, y2, lineColor, lineWidth, lineStyle)
Creates, updates, or deletes a live oscillator-pane line.
syncLivePriceLine(ln, show, x1, y1, x2, y2, lineColor, lineWidth, lineStyle)
Creates, updates, or deletes a live price-pane line using force_overlay=true.
➖Live Preview Label Helpers➖
These helpers create, update, or delete live divergence preview labels.
syncLiveOscLabel(lbl, show, xIndex, y, labelText, styleText, lineColor, labelTextOnly, labelBgTransp, labelSize)
Creates, updates, or deletes a live oscillator-pane label.
syncLivePriceLabel(lbl, show, xTime, labelText, ylocText, styleText, lineColor, labelTextOnly, labelBgTransp, labelSize)
Creates, updates, or deletes a live price-pane label using force_overlay=true.
➖Pivot Context Box Helpers➖
These helpers provide lightweight box utilities for scripts that want to frame confirmed pivot zones.
divPivotBoxBounds(pivotValue, innerPct)
Resolves a thin box around a pivot value using an inner percentage.
Returns:
top, bottom, ok
syncNativeBox(bx, show, left, right, top, bottom, fillColor, borderColor, borderStyle, borderWidth)
Creates, updates, or deletes a native-pane pivot context box.
syncPriceBox(bx, show, left, right, top, bottom, fillColor, borderColor, borderStyle, borderWidth)
Creates, updates, or deletes a price-pane pivot context box using force_overlay=true.
➖Divergence Model➖
Regular Bearish Divergence:
Price makes HH while oscillator makes LH.
Regular Bullish Divergence:
Price makes LL while oscillator makes HL.
Hidden Bearish Divergence:
Price makes LH while oscillator makes HH.
Hidden Bullish Divergence:
Price makes HL while oscillator makes LL.
➖Structure Context Model➖
High-side continuation:
Price makes HH while oscillator also makes HH.
High-side fading:
Price makes LH while oscillator also makes LH.
Low-side continuation:
Price makes LL while oscillator also makes LL.
Low-side lifting:
Price makes HL while oscillator also makes HL.
Structure context is not divergence. It shows same-structure agreement between price and oscillator.
➖Important Notes➖
This library is an output utility layer only.
It does not:
• calculate an oscillator
• confirm pivots
• choose pivot anchors
• decide whether a divergence is valid
• decide trade direction
• decide final signal logic
Calling scripts remain responsible for:
• oscillator calculation
• pivot confirmation
• price/oscillator comparison logic
• visibility settings
• color choices
• max-line and max-label budgets
• final visual interpretation
For overlay=false oscillator scripts, Price + Oscillator / Price Only / Oscillator Only / Hide output modes work well.
For overlay=true price-pane scripts, Price Only / Hide output modes usually make the most sense. Library

Indicator

Anchored VWAP ChannelAnchored VWAP Channel — Regime, Confluence & Reversals
What it is
This is a single overlay that builds a complete read of price around one Anchored VWAP. Instead of just drawing a VWAP line, it wraps the VWAP in a volatility channel and then layers the context a discretionary trader normally checks by eye — where price sits versus fair value, whether the move is trending or stretched, where high-volume and Fibonacci levels line up, and where the edges are getting rejected. Everything is derived from the same anchor and measured in the same volatility unit (one standard deviation, σ), so the pieces describe one structure rather than competing with each other.
It runs on any asset class and any timeframe. On instruments that carry real volume (stocks, futures, crypto, etc.) the VWAP, the channel, and the volume profile are fully volume-weighted; on feeds without real volume it falls back gracefully and flags the change in the table (see "Notes and limitations").
Why these components are combined (and how they work together)
This is intentionally a mashup, and the parts are chosen because they answer different questions about the same reference point:
• The Anchored VWAP is the fair-value anchor — the volume-weighted average price since a chosen pivot.
• The channel turns dispersion around that anchor into a measurable unit: the bands are the AVWAP ± k·σ, where σ is the volume-weighted standard deviation of price about the VWAP. This converts "how far is price from fair value" into a number (σ-distance) every other module can reuse.
• The regime read uses that σ-distance together with the VWAP slope and the band behaviour to label continuation vs reversal — so the same channel that draws the bands also tells you whether to trust a band tag or fade it.
• The volume profile (Point of Control + Value Area) is computed over the same anchored window, so the high-volume price and the value range are measured on exactly the data the VWAP is built from — not an arbitrary separate lookback.
• The Fibonacci grid is drawn on the active swing leg and is only emphasised where a level coincides with the VWAP, a band, or the POC. The channel and profile are what make a fib level meaningful here; on their own the fib levels would be just lines.
• The reversal signals fire on outer-band rejections, and the optional confluence filter suppresses them while the regime is strongly trending (when band tags tend to continue) — i.e. one module gates another.
In short: the channel produces a σ-distance, and the regime, profile, fib confluence, reversal logic, divergence and squeeze modules all consume that single shared measurement. That shared plumbing is the reason these are bundled into one script instead of run as six separate indicators.
What it plots
• Anchored VWAP centerline with a glow halo, colored by slope direction.
• Channel bands at ±1σ and ±2σ. The fill can be a "reversion heat" gradient (denser toward the outer band, red above the VWAP, green below) or a neutral glow, or off.
• Volume profile drawn as a translucent Value Area box (VAL→VAH) with a distinct POC line — kept visually and positionally separate from the fib lines so the two are never confused.
• Fibonacci grid (active-leg retracement, plus optional swing-to-swing), with confluence levels marked by a star and a brighter tone.
• Signals: trend-shift triangles on VWAP reclaim/loss; solid reversal labels on band rejections; diamonds and connecting lines for σ-distance divergence; a marker on volatility-squeeze release.
• Status table (single panel): regime, bias, σ-distance, AVWAP, POC, Value Area, squeeze state, divergence, a reversion stop/target/RR template, a data-health row, multi-timeframe regime agreement, and a built-in legend.
• Optional forward projection cone and an optional self-calibration panel that scores how past signals resolved.
Anchor modes
Rolling (fixed bar window), Swing Low, Swing High, or Dual (auto — anchors to the more recent significant pivot). Pivot detection uses bar-count lookbacks (8/13/21/34/55/89), so the entire tool self-scales to any timeframe.
How to use it
1. Read the table first: regime + σ-distance tell you whether price is trending or stretched, and how far from fair value it is.
2. Use the bands as context — near the centerline is fair value; the ±2σ edge is where reversion risk is highest (and the heat fill shades it).
3. Treat reversal labels as fade-the-stretch signals, strongest when the regime is not trending and when a divergence diamond agrees.
4. Use trend-shift triangles (VWAP reclaim/loss) for continuation context.
5. Use fib-confluence stars and the Value Area box / POC as the levels most likely to react.
6. Check multi-timeframe agreement in the table before acting.
7. Optionally turn on the calibration panel to see, on your own symbol and timeframe, how often each signal type has historically followed through.
What makes it original
• A single shared σ framework: bands, regime, divergence, reversals and risk template all read from one volume-weighted standard-deviation measurement around one anchor, rather than bolting unrelated indicators together.
• Reversion-heat channel fill that encodes reversion risk as color density.
• Confluence-filtered reversals — band rejections gated by regime/divergence.
• Volume profile rendered as a separated zone so it never blends into the fib levels.
• A transparent self-calibration panel that scores the script's own signals against a follow-through threshold (descriptive, not a backtest).
Key settings
• Calculation Source — works on any asset/market; default hlc3, switchable to close, hl2, ohlc4, etc.
• Anchor mode and pivot/rolling length.
• Inner/outer band multipliers and fill style.
• Signal sensitivity, session-open filter, reversal-confirmation strictness.
• Table position / text size / legend, and toggles for every module.
Notes and limitations
• Signals are evaluated on closed bars; the σ-distance divergence confirms a few bars after a pivot by design, so it prints late (this is normal for pivot-based divergence and is not repainting of confirmed history).
• Last-bar drawings (profile, fib, projection cone) are redrawn on each new bar and will shift forward — that is expected.
• Asset classes / volume: runs on any market and any timeframe. On instruments that carry real volume (stocks, futures, crypto, etc.) the Anchored VWAP, the volume-weighted σ channel, and the Volume Profile (POC / Value Area) are all fully volume-weighted as intended. On feeds with no real volume (e.g. spot forex, some indices / CFDs) the script still works but degrades gracefully: the VWAP becomes a simple anchored mean, the channel uses an unweighted standard deviation, and the profile becomes a time-at-price distribution. The Data row in the table flags this state as "no-vol / DEGRADED" so you always know which mode you are in.
• The multi-timeframe dashboard uses higher-timeframe requests; you can turn it off to reduce load.
• This is an analysis/visualization tool, not a strategy — it does not place orders and is not optimized or backtested for entries/exits.
Disclaimer
This script is provided for educational and informational purposes only and is not financial, investment, or trading advice. It does not predict future prices. Markets carry risk and you can lose money. Past behaviour of any signal (including the calibration panel) does not guarantee future results. Always do your own research and consider consulting a licensed financial professional before trading. You are solely responsible for your decisions and their outcomes.
Indicator

Adaptive Equilibrium Deviation OscillatorAdaptive Equilibrium Deviation Oscillator (AEDO)
What it is
AEDO is a mean-reversion oscillator. It plots one core reading — the standardized distance between price and its own adaptive equilibrium — and then surrounds that reading with context filters whose only job is to stop the two ways mean-reversion entries usually fail. It is symbol- and timeframe-agnostic: the price source and the optional reference symbols are all selectable in Settings, so it can be applied to any market.
What it plots
The oscillator line: how far price sits from its adaptive equilibrium (an EMA or linear-regression fair value), expressed in standardized units. Zero = at equilibrium; positive = stretched above; negative = stretched below.
Adaptive bands: the threshold beyond which the stretch is treated as "extreme." The bands widen and narrow with volatility, so an extreme reading means the same thing in quiet and busy conditions.
Signal markers: a triangle when the oscillator turns back across a band (a reversion attempt); a small circle for the same event in a less favorable regime.
Divergence lines/labels between the oscillator and price.
A dashboard showing the script name, symbol and timeframe, plus the live equilibrium, volatility state, regime, higher-timeframe bias, confluence grade and a reference fade stop/target.
Why these components are combined (mashup justification)
This is not a collection of independent indicators stacked together. Every part is subordinate to one idea — measure the deviation from equilibrium, and only act on it when the surrounding context supports reversion. Mean-reversion fails in exactly two situations, and each component addresses one of them:
Fading a genuine trend. A stretched oscillator in a strong directional move is a trap, not an opportunity. The ADX regime gate and the higher-timeframe trend filter prevent counter-trend fades, so the oscillator's extremes are only acted on when the market is actually ranging and the bias agrees.
Mistaking a normal pullback for an extreme. A fixed band misreads volatility. The volatility-adaptive bands rescale the "extreme" threshold using either this instrument's own ATR relative to its average, or an optional external volatility index — so the deviation reading keeps a consistent statistical meaning as conditions change. The robust (median/MAD) standardization does the same on the deviation series itself, resisting fat-tailed spikes.
The remaining parts refine confidence in that single reading rather than generating separate signals:
Divergence between price and the oscillator, and a 0–N confluence grade, require independent agreement before a signal is graded as strong.
An optional secondary-symbol spread check (e.g. a future vs. its underlying, or two correlated assets) adds a structural sanity filter; it is off by default and contributes nothing on single-asset charts.
Confirmation filters (confirm-on-close, clearance beyond the band, optional session-open skip) make signals non-repainting and reduce noise.
The calibration tracker logs each signal on past bars and, after a fixed horizon, records whether price actually followed through by a chosen ATR amount — reporting a historical hit-rate with a Wilson 95% confidence interval, binned by confluence grade.
Together they form one decision: price is far from equilibrium → is the context one where reversion is plausible → how much independent agreement is there → how has this exact condition resolved historically. Remove any one piece and the remaining system is measurably more exposed to one of the two failure modes above.
What is original here
The oscillator is built around an adaptive equilibrium with statistically standardized deviation and volatility-scaled bands, rather than a fixed-scale momentum formula.
The confluence grade uses a dynamic denominator, so enabling/disabling the optional spread filter doesn't artificially inflate the grade.
The built-in calibration tracker with Wilson confidence intervals is descriptive transparency: it lets you check, per confluence tier, how the flagged condition resolved on past data before trusting it — a measurement layer most oscillators don't include.
How to use it
Add it to any chart and timeframe. Leave the price source at close to start.
Reversion entries: look for the oscillator turning back across a band (a marker prints). Treat triangles (favorable regime) as higher-quality than circles.
Confluence: the dashboard shows the long/short grade; raise Min confluence to allow signal to filter to only higher-agreement setups.
Volatility: keep "Instrument (self)" for any standalone asset, or switch to "External symbol" and enter a volatility index for your market.
Secondary spread (optional): enable it and enter a related symbol only if a cross-symbol structure check is meaningful for your instrument.
Validate before trusting it: open the Calibration Tracker group, enable Show calibration panel, set Min confluence to 0, and let it accumulate signals. Read the per-tier hit-rates and confidence intervals on your own symbol/timeframe before relying on any signal. A wide or near-50% interval means the condition has no measured reliability on that market.
Settings overview
Price source · equilibrium type & length · standardization mode & window · band levels · volatility source (self/external) & band multipliers · optional secondary-symbol spread · ADX regime & higher-TF trend gate · confirmation filters · confluence & multi-timeframe agreement · divergence · calibration horizon & follow-through · visuals.
Notes / limitations
Mean-reversion logic suits ranging conditions; the gates reduce but do not eliminate trend risk.
Signals confirm on bar close and do not repaint; external-symbol requests use no look-ahead.
After load, the oscillator needs its standardization window (default 200 bars) to warm up; the dashboard "Data" row shows readiness.
Disclaimer
This script is provided for educational and informational purposes only. It is not financial, investment, or trading advice, and it is not a recommendation to buy or sell any instrument. The calibration figures are descriptive statistics of past bars and do not predict future results. Trading involves substantial risk of loss. Test thoroughly and use your own judgment; you are solely responsible for your decisions. Indicator

RSI Sequential Exhaustion & Divergence**RSI Sequential Exhaustion & Divergence — Multi-Factor Oscillator**
**What it is**
A single RSI-based reversal oscillator for spotting momentum exhaustion, then filtering and grading those signals so only the better-supported ones stand out. It is one integrated tool, not a pile of separate indicators sharing a pane.
**What it plots**
- The RSI line with a glow/gradient style coloured by momentum side, plus overbought/oversold/midline levels and an optional zone fill.
- Sequential Exhaustion signal arrows (▲/▼) at qualifying turns.
- Regular and hidden price–RSI divergence as lines and small labels, de-cluttered so the pane stays readable.
- A compact 5-row dashboard: Signal (direction · conviction % · age), RSI state, Confluence score, Context (trend/range + volatility state), and a Data-health read.
- An optional calibration panel and a set of hidden data-window outputs (EXP_*) for chaining into other scripts.
**Why these components are combined (and how they work together)**
Each part is here to fix a specific weakness of the part before it, so the result is one filtered, graded signal:
1. A bare RSI overbought/oversold reading whipsaws, and naive divergence over-fires. So the script uses two *structured* exhaustion cues instead: **Sequential Exhaustion** (the RSI makes three consecutive deeper pushes into an extreme zone and the fourth bar turns back out — a defined trigger, not just "RSI is low"), and a **divergence engine** that adds an independent reversal cue and is de-cluttered with a cooldown plus a minimum-gap filter.
2. Both cues are counter-trend by nature, and counter-trend entries fail in two situations: strong directional trends, and volatility cascades. To handle the first, an **HTF trend-bias filter** and an **ADX regime filter** suppress signals when a higher timeframe or strong ADX says the trend is intact. To handle the second, a **volatility-cluster filter** (a self-exciting intensity built from returns) proportionally raises the bar for new signals exactly when clustering makes mean-reversion most dangerous — and because it is price-only, it also works on volume-less symbols.
3. To tell which surviving signals are worth more, a **Confluence grade (0–5)** fuses five reasonably-independent reads of the same bar (HTF bias, ranging regime, a recent divergence, volume, and the RSI momentum turn). **Multi-timeframe agreement (3×/5×/15×)** is deliberately kept *separate* and applied as a conviction *multiplier* rather than blended into the score, because it is the one genuinely independent check — full agreement boosts conviction, contradiction damps it.
4. To stay honest about whether any of this is working on your symbol, a **calibration tracker** logs every signal and, after a fixed horizon, records whether price actually followed through (a move of at least X·ATR in the signal's direction), reporting a measured *past* hit-rate by grade tier with a Wilson 95% confidence interval. A **data-integrity read** (bar range, HTF-feed freshness, volume reliability) surfaces an OK / DEGRADED / CRITICAL status so the tool never silently scores on bad data.
**What is original here**
The individual techniques — RSI, divergence, ADX, ATR, volume reads, self-exciting intensity, Wilson intervals — are publicly documented. The original work is the integration: a structured RSI-exhaustion trigger gated by a proportional volatility-cluster filter, graded by a confluence score that is scaled by independent higher-timeframe agreement, and continuously audited by a built-in self-calibration tracker that reports honest past follow-through by tier. Components were chosen so each covers a distinct weakness; redundant filters were left out to keep one clear signal.
**How to use**
1. Add it to a chart. Defaults suit intraday index/futures; direction works on any symbol, while the volume confluence factor needs real traded volume.
2. Take signals in the direction the context filters allow. Prefer a higher conviction % and stronger higher-timeframe agreement; treat low-grade cues as noise (raise "Min confluence to allow signal" to suppress them).
3. Respect the volatility-cluster warning — it marks regimes where mean-reversion is most likely to fail.
4. Use the optional calibration panel as a sanity check on the tool's own past signals, never as a forward prediction.
5. Spot vs futures: a cash/spot index has no real volume. "Volume Mode" auto-detects this, and you can borrow a traded-volume series from a related futures contract; the "Data" row shows the active mode.
**Notes**
All signals and divergence confirm on closed pivots and do not repaint. Divergence labels appear "Pivot Right" bars after the turn, which is inherent to honest pivot detection.
**Disclaimer**
For education and information only. This is not financial, investment, or trading advice and guarantees no outcome. Signals describe current and past conditions; they do not predict the future. The calibration figures describe past behaviour only — they are not a backtest or a probability of future results. Volume-based readings depend on the data feed and are unreliable on instruments without real volume. Trading carries substantial risk of loss; you are solely responsible for your own decisions and risk management. Consider consulting a licensed professional.
Indicator

SAR/ATR Trend-Extension OscillatorSAR/ATR Trend-Extension Oscillator
WHAT THIS INDICATOR IS
The SAR/ATR Trend-Extension Oscillator measures, in a single line, how far price has stretched away from its Parabolic SAR trailing reference, and it expresses that distance in units of volatility rather than raw price. The output is a signed oscillator: it rises into positive (green) territory as an uptrend extends and falls into negative (red) territory as a downtrend extends. The further the value sits from the zero line, the more stretched the current move is relative to its own recent volatility.
It is built as ONE coherent reading. Parabolic SAR and Average True Range (ATR) are not plotted side by side; they are fused mathematically into the oscillator value. Three further elements - a rolling statistical standardization, an ADX regime filter and a higher-timeframe trend filter - qualify and contextualize that value rather than adding separate indicators to the pane.
WHY THESE COMPONENTS ARE COMBINED (and how they work together)
Each ingredient is included to solve a specific weakness of the one before it.
1) Parabolic SAR provides trend direction and a trailing stop level, but on its own it only tells you which side of the trend you are on. The raw gap between price and SAR is measured in price points, which cannot be compared between a low-priced stock and a high-valued index, or between a quiet and a volatile session. So SAR alone cannot answer "how stretched is this move."
2) ATR answers that. By dividing the SAR-to-price gap by ATR, the distance becomes volatility-relative: "price is X average true ranges beyond its SAR." This SAR-divided-by-ATR step is the core of the indicator and produces information that neither Parabolic SAR nor ATR shows alone - a bounded, cross-market measure of trend extension that reads consistently across symbols and timeframes.
3) Rolling standardization (Z-Score, or robust median/MAD) fixes a subtler problem: even an ATR-normalized value has a distribution that drifts over time, so one fixed threshold means different things in different conditions. Standardizing the value over a lookback window rescales it so the +/-2 and +/-3 reference levels keep a stable statistical meaning. A "Raw" mode (the plain volatility-normalized value, no rescaling) is also available.
4) ADX regime filter. Parabolic SAR is prone to repeated false flips in sideways markets. ADX measures trend strength, so the indicator suppresses buy/sell flags whenever ADX is below a user threshold (a ranging market) and shades the background to show it. ADX is never drawn on the oscillator; it only gates the signals.
5) Higher-timeframe filter. The same SAR direction is read from a higher, confirmed timeframe and used to filter out crossings that fight the dominant trend. It is the identical calculation applied to a larger context, not a different indicator.
6) Divergence. Because the oscillator is a measure of trend extension, a price high paired with a lower oscillator high (or a price low paired with a higher oscillator low) indicates the trend is extending less forcefully. Regular and hidden divergences are detected from confirmed pivots and drawn with connecting lines and labels.
Putting it together, the plotted value is one number: sign(SAR trend) x (SAR-to-price gap / ATR), optionally standardized and clamped to limit single-bar spikes.
A buy or sell flag is raised only when that oscillator crosses the Signal level AND the ADX regime AND the higher-timeframe direction agree. Everything feeds one question: is price extending, in a genuine trend, in line with the larger trend?
WHAT MAKES IT ORIGINAL
This is not Parabolic SAR with an ATR drawn next to it. It transforms the SAR trailing stop into a continuous, signed, volatility-normalized and statistically standardized extension oscillator, then wraps that single value in regime and higher-timeframe gating plus divergence logic. The resulting "how stretched is this trend, on a comparable scale" reading does not exist in either source indicator.
HOW TO USE IT
- Choose a normalization mode: Raw, Z-Score, or Robust (median/MAD, least sensitive to spikes).
- Read color and distance: green = uptrend extension, red = downtrend extension; the further from zero, the more extended. The Signal, Warning and Extreme levels mark progressively stretched zones.
- Treat the triangle markers (a Signal-level cross that agrees with the ADX regime and the higher-timeframe bias) as points to investigate, not as automatic entries.
- Use divergences as early warning that extension is fading, and the on-pane dashboard for trend, regime, higher-timeframe bias and ATR-based stop/target context. The stop and target figures are reference levels only.
- All parameters - SAR step and maximum, ATR period and smoothing type, the standardization window, every threshold, the ADX threshold and the higher timeframe - are adjustable.
REPAINTING
Signals confirm on bar close by default and do not repaint. The higher-timeframe filter reads the previous closed higher-timeframe bar, so it does not look ahead. Divergence labels appear a few bars after the pivot they confirm; that lag is inherent to honest pivot detection and is expected behavior.
ATTRIBUTION
This implementation builds on the original concept of combining Parabolic SAR with ATR. The volatility normalization, statistical standardization, regime and higher-timeframe filtering, divergence detection and alerting described above are part of this independent implementation.
DISCLAIMER
This script is provided for research and educational purposes only. It is not financial advice and makes no guarantee of profitability or accuracy. Indicators describe past and present price behavior; they do not predict future prices, and no indicator works in all conditions. Trading involves substantial risk of loss. Always test on historical and out-of-sample data and make your own independent decisions. The author accepts no liability for any use of this script.
Indicator

Asset Class Correlation MatrixAsset Class Correlation Matrix
█ OVERVIEW
This indicator displays a Pearson correlation matrix for instruments in the asset class of the symbol you are currently viewing. Open a EUR pair and you see the forex matrix. Open gold and you see the metals matrix. Open Bitcoin and you see the crypto matrix. The relevant basket loads automatically, so there is nothing to configure for the common cases.
Each cell shows the rolling correlation between two instruments over a lookback period you control. The goal is to make cross-instrument relationships inside an asset class visible at a glance, rather than checking pairs one at a time, or relying on visual comparison.
█ AUTOMATIC ASSET CLASS DETECTION
The current symbol is matched to a category in three stages:
1. Exact ticker match against the built-in lists below.
2. Name-fragment match for common broker and CFD names. For example XAU and GOLD map to Metals, US500, SP500, NAS100, US100, US30 and DJ30 map to US Indices, DAX, FTSE and NIKKEI map to Global Indices, and WTI, BRENT and NATGAS map to Energy.
3. Asset type fallback using the instrument type, covering crypto, forex, and stocks.
If the current symbol is not already part of a built-in list, it is added as the first row and column of the matrix, so the instrument you are on is always included. If no category can be determined, the table shows a short prompt to use the custom symbol list instead of rendering empty.
█ BUILT-IN CATEGORIES
Forex: 28 majors and crosses across USD, EUR, GBP, JPY, AUD, CAD, CHF and NZD.
US Indices: ES, NQ, YM, EMD, RTY.
Global Indices: DAX, Euro Stoxx 50, Nikkei, FTSE, ASX 200, Hang Seng.
Metals: Gold, Silver, Copper, Platinum, Palladium.
Energy: WTI Crude, Natural Gas, Heating Oil, RBOB Gasoline.
Agricultural: Corn, Soybeans, Wheat, Soybean Oil, Soybean Meal, Cocoa, Coffee, Sugar, Cotton, Orange Juice.
Livestock: Live Cattle, Lean Hogs, Feeder Cattle.
Interest Rates: 2Y, 10Y, 30Y US notes, Euro Bund, Euro Buxl.
Crypto: BTC, ETH, BCH, LTC.
Stocks: SPX, QQQ, AAPL, MSFT, NVDA, AMZN, GOOGL, META, TSLA, AMD.
█ READING THE MATRIX
Pearson correlation ranges from -1 to +1.
Values near +1 mean the two instruments move strongly together. Values near -1 mean they move strongly opposite to each other, which is still a strong relationship, just inverted. Values near 0 mean little to no linear relationship.
The strength of a relationship is the distance from zero, in either direction. A reading of -0.9 is just as tight as +0.9.
█ COLORS
Positive correlation is shown in green, with a stronger shade above the high threshold and a lighter shade above the moderate threshold. Inverse correlation is shown in purple, using the same two strength levels. Everything between the negative and positive moderate threshold is shown as low. All five colors and both thresholds are adjustable in the settings. The thresholds apply symmetrically to positive and inverse values.
█ CUSTOM SYMBOL LIST
You can override the auto-detected basket with your own comma-separated list of symbols. Spaces are ignored. The custom list is applied only when the current chart symbol is one of the symbols in the list, which keeps the chart instrument anchored in the matrix.
You can include an exchange or broker prefix, for example OANDA:EURUSD. A bare ticker such as GBPJPY inherits the current chart prefix. Bare futures contracts such as ES1! resolve on their native exchange.
█ SETTINGS
Period: lookback in bars for the correlation calculation. Shorter reacts faster and is noisier. Longer is more stable and slower to update.
High and Moderate Correlation Thresholds: the cutoffs for the color bands.
Colors: the five correlation colors.
Symbol List: the optional custom basket.
Table Size: text size of the matrix.
█ HOW TO USE IT
Add the indicator to any chart in a supported asset class. Use it to find pairs that move together or opposite each other, to check diversification across a basket, to spot when a normally correlated pair is diverging, or to choose hedges and pairs-trade candidates. The left column shows the full applied symbol for each row, so you can confirm exactly which feed each value comes from.
█ NOTES AND LIMITATIONS
Correlation is period-dependent. For tightly linked instruments, a long lookback pushes most values toward the extremes, while a short lookback spreads them out and reacts faster. Choose the period to match the question you are asking.
Correlation measures linear co-movement of closing prices on the chart timeframe. It does not imply causation and does not capture non-linear relationships.
Broker naming for CFDs varies widely, so some instruments may not auto-detect. When that happens, use the custom symbol list.
A maximum of 28 instruments can be loaded in one matrix. Indicator

Tidal Divergence [JOAT]Tidal Divergence
Tidal Divergence is a composite divergence detector that lives in a sub-pane and projects high-conviction divergence visuals onto the price chart. The composite blends three volume-based oscillators — Money Flow Index, percentile-ranked Cumulative Volume Delta, and z-scored OBV rate-of-change — into a single normalized stream. Both regular and hidden divergences are detected. Persistent zones are drawn at divergence pivots, and zone mitigation is tracked with body / wick / rejection modes.
What makes it different
Single-oscillator divergence indicators give a single perspective. Tidal Divergence's composite triangulates three independent volume-derived oscillators so a divergence in the composite is supported by three volume readings instead of one.
Hidden divergences (continuation pattern: price higher low plus oscillator lower low for bull) are detected separately from regular divergences (reversal pattern), with distinct line styles on the price chart.
Each detected divergence creates a persistent demand or supply zone with optional FVG-confluence gating, dynamic alpha-by-age (zones fade as they age), and explicit mitigation logic (body / wick / two-close rejection variants).
A composite percentile envelope (5th to 95th percentile of the last 200 bars) is drawn behind the oscillator so absolute readings are easy to interpret in context.
How it works
MFI(14), daily-reset CVD then ta.percentrank(cvd, 100), OBV ROC z-score over a 20-bar mean / stdev. Three legs, each normalized to roughly the same scale.
Composite equals 0.40 times the normalized MFI plus 0.35 times the normalized CVD percentile plus 0.25 times the clamped OBV ROC z. Hull-smoothed and scaled to centi-percent.
Pivots are detected on the composite stream. A regular bull divergence requires a price lower low paired with a composite higher low within a 5-to-60-bar window. Hidden bull requires a price higher low plus composite lower low. Bear variants invert the conditions.
At each divergence pivot, two horizontal lines are drawn (edge equals lowest wick / highest wick. base equals lowest body / highest body), with a linefill between them, on the price chart via force_overlay=true.
Zone mitigation: body mode (close beyond edge) or wick mode (high/low beyond edge), optionally with two-close rejection requirement.
Optional FVG confluence requires a recent 3-bar Fair Value Gap before firing the divergence-final alert.
Reading the chart
In-pane : composite line tinted by direction with a smoothed signal line, gradient ribbon between them, breath-modulated zero midline, plus and minus 70 overbought / oversold thresholds, and the percentile envelope as an atmospheric backdrop.
In-pane divergence markers : regular divergences as solid connector plots, hidden divergences as broken (dashed-equivalent) connectors.
Cross-pane : price-to-price divergence connector lines on the price chart (regular solid, hidden dashed). Each line has a small REG BULL DIV 4520.50 or HID BEAR DIV label at the current pivot.
Cross-pane zone fills with age-graded transparency.
Zone edge price labels follow the right edge of each active zone.
Mitigation flash labels print at the bar where a zone is broken.
A cross-pane composite tint paints a soft mint / red background when the composite is clearly above or below plus or minus 30.
Signals
Regular bullish / bearish divergence
Hidden bullish / bearish divergence (continuation)
Bull / bear zone touch
Bull / bear zone mitigated
Bull / bear stack (three or more active zones plus a fresh regular divergence)
Bull / bear streak (composite above / below zero for N consecutive bars)
All gated on barstate.isconfirmed or barstate.ishistory. No future references. No lookahead_on.
Inputs
MFI : MFI length.
Divergence : pivot lookback left / right, detect hidden divergences toggle.
Zones : zone extreme length, max zone age, mitigation mode, allow-rejection toggle.
FVG Confluence : require FVG, FVG lookback bars.
Visual : bullish / bearish colors.
Cross-pane Visuals : divergence lines, divergence labels, zone edge labels, composite tint.
Dashboard : position, size.
How traders use this
Reversal entries : a regular bull divergence with the composite leaving an oversold extreme is a high-quality long setup, especially when accompanied by an FVG below the divergence price.
Continuation entries : a hidden bull divergence during a clearly trending bull regime is a structurally supported add-on entry on a pullback.
Zone trades : after a divergence prints, treat its zone as an active demand or supply level. Reactions to the zone (touch with rejection candles) are tradable. Mitigation invalidates the level.
Composite filter : only trade with the composite in agreement (composite above 0 for longs). The cross-pane tint helps you stay aligned without checking the pane.
Limitations
Divergence detection inherently lags the actual extreme by the right-pivot window.
Composite values are smoothed and need warm-up bars before they stabilize.
Cumulative Volume Delta is a tick-volume proxy, not true level-2 order flow.
A divergence is a probability, not a guarantee. Many divergences fail before completing their implied reversal.
Compatibility
Pine Script v6 open-source indicator (pane plus cross-pane). Any symbol with volume data. Cross-pane elements use force_overlay=true. No request.security calls.
Defaults
14-bar MFI, 14-left / 5-right pivot, body mitigation, FVG confluence off by default, mint / red palette, top-right medium dashboard. Enable FVG confluence to filter for higher-quality setups.
Indicator

MTF CVD Synchrony | Rainbow MatrixGENERAL OVERVIEW
MTF CVD Synchrony is a multi-timeframe directional flow oscillator that condenses five independent CVD (Cumulative Volume Delta) readings — one per Fibonacci-spaced timeframe — into a single weighted Master Line on a zero-centered 0-100 scale, surrounded by per-TF "ghost lines" that fade visually as they diverge from the consensus. The defining feature: 50 is true neutral. Above 50 means buyers are dominating; below 50 means sellers are dominating. The further from 50, the stronger the directional pressure. When the five timeframes align, the rainbow becomes a solid band; when they diverge, the disagreement becomes a visible density property of the indicator itself.
A background histogram visualizes the Master score's deviation from the neutral 50 line — green columns extend up when buyers dominate, red columns extend down when sellers dominate. A compact 7×9 MTF Legend Table surfaces every dimension simultaneously: per-TF resolutions, score values, trend direction, divergence flags, raw flow magnitude, and named directional State — with an antenna marker flagging the row whose timeframe matches your chart's native resolution.
Designed as the directional member of a three-indicator family. Apply all three side-by-side for a complete read: MTF RSI Synchrony shows where price sits in its momentum range; MTF Volume Delta Bar Synchrony shows whether the move has volume magnitude behind it; MTF CVD Synchrony shows who is actually winning — buyers or sellers. Same visual signature, same canonical Fibonacci ratios, same Legend Table layout — instant cross-indicator readability.
WHAT IS THE THEORY BEHIND THIS INDICATOR
Cumulative Volume Delta attempts to answer a question that price and volume alone cannot: in any given bar, were buyers or sellers more aggressive? Traditional volume tells you HOW MUCH traded, but not the DIRECTION of the pressure. A high-volume bar that closes flat tells a very different story from a high-volume bar that closes at its highs — yet raw volume scores them identically.
CVD approximates directional pressure by weighting each bar's volume by where price closed within its range. This indicator uses the Close Location Value (CLV) for that weighting:
clv = ((close − low) − (high − close)) / (high − low)
CLV ranges from +1 (close exactly at the high — maximum buying pressure) to −1 (close exactly at the low — maximum selling pressure), with 0 at the midpoint. Multiplying CLV by volume produces a signed directional contribution per bar: delta_raw = clv × volume. This is more nuanced than the binary tick rule (close > open = buy) used by most "delta" indicators — CLV captures HOW DECISIVELY price closed in its range, not just the sign.
The per-bar delta is then smoothed by EMA and normalized into a bounded 0-100 zero-centered score:
cvd_smooth = EMA(delta_raw, smoothing_length)
max_abs = highest(|cvd_smooth|, normalization_window)
score = 50 + (cvd_smooth / max_abs) × 50
The genius of the zero-centered approach: 50 always means balance, regardless of the asset's structural bias. A score of 75 means buyers are exerting 50% of the maximum recent pressure to the upside; a score of 25 means sellers are exerting 50% of maximum recent pressure to the downside. This is fundamentally different from a percentile rank (which would anchor 50 at the historical median, skewing with structural trends).
Five such scores — one per timeframe (default 5 / 15 / 60 / 240 / D) — are fused via canonical Fibonacci weights (0.15 / 0.20 / 0.25 / 0.25 / 0.15, peak weight on the macro TF3/TF4 where institutional positioning consolidates) into the weighted Master Line.
FEATURES
🔹 Multi-Timeframe CVD Fusion Engine (zero-centered directional scale)
🔹 CVD Histogram (deviation from neutral 50 — green buy / red sell)
🔹 Adaptive Fibonacci Channel (Z-Breathing → Z-Alert → Z-Exhaustion → Black Swan)
🔹 Hybrid Black Swan Zones (static or dynamic — default dynamic)
🔹 Classic Price↔CVD Divergence Detection (per-TF + Master)
🔹 MTF Legend Table (7 columns × 9 rows, with Raw Flow + State, multilingual)
🔹 Multilingual Interface (EN / PT / ES / RU / ZH)
🔹 Multi-Timeframe CVD Fusion Engine
What It Does
Runs five independent CVD scores on Fibonacci-spaced timeframes and fuses them into a single weighted Master Line, with each per-TF reading plotted as a ghost line that fades by distance to the consensus.
Method
On each timeframe, f_cvd_full() computes CLV × volume per bar, smooths it via EMA, and normalizes against a rolling-max window to produce the zero-centered score. The five scores fuse via Fibonacci weights (0.15 / 0.20 / 0.25 / 0.25 / 0.15). Both smoothing length and normalization window are independently configurable per timeframe.
Per-TF smoothing defaults (Wilder-anchored on TF3+TF4):
◇ TF1 (5m): 7 — scalping
◇ TF2 (15m): 10 — day-trading
◇ TF3 (60m): 14 — Wilder canonical
◇ TF4 (240m): 14 — Wilder canonical
◇ TF5 (D): 21 — swing/position
Per-TF normalization windows (each TF's natural horizon):
◇ TF1: 30 (≈2.5h on 5m)
◇ TF2: 50 (≈12.5h on 15m)
◇ TF3: 80 (≈3.3 days on 1h)
◇ TF4: 100 (≈16 days on 4h)
◇ TF5: 150 (≈5 months on Daily)
All request.security calls use lookahead=barmerge.lookahead_off for anti-repaint integrity.
Why It Matters
A 5-minute buy surge means little if the 4-hour and daily flows are decisively selling. The fusion engine reveals whether directional pressure is aligned across timescales (high conviction) or contradictory (a counter-trend bounce inside a larger trend). The ghost-line rainbow makes that alignment visible at a glance.
🔹 Adaptive Fibonacci Channel
What It Does
Six color-coded bands around the Master Line that adapt to its own recent volatility, using the brand's canonical Fibonacci ratios.
Method
Highest/lowest of the Master over a configurable lookback (default 50) are smoothed by EMA (default 10) to form the channel envelope. Bands sit at canonical Fibonacci proportions: Z-Breathing (1.50/1.85), Z-Alert (1.85σ anchor), Z-Exhaustion (2.75/1.85), Black Swan (3.85/1.85). All six band values are mathematically clamped to before rendering, keeping the rainbow inside the visible pane.
Why It Matters
Static thresholds can't adapt to regime changes. The Fibonacci channel calibrates the warning zones to the asset's current directional-flow volatility, so a "climax" on a calm pair and a "climax" on a volatile one both trigger at appropriate statistical extremes.
🔹 Hybrid Black Swan Zones
What It Does
Flags directional flow climax extremes — either at static 85/15 thresholds (BUY CLIMAX / SELL CLIMAX boundaries) or at the dynamic Fibonacci 3.85σ band.
Method
Dynamic Black Swan Mode is ON by default (Fibonacci 3.85σ proportion of the Master channel). Toggle OFF for static 85/15. Each zone renders as a glow line that brightens as the Master approaches. The static reference lines (15/50/85) are shown by default to anchor the zero-centered scale: 85 = purple (buy climax boundary), 50 = yellow (neutral), 15 = aqua (sell climax boundary).
Why It Matters
Directional flow climaxes mark exhaustion points — a BUY CLIMAX (score ≥ 85) means buyers have pushed to a recent extreme, often preceding a pause or reversal; a SELL CLIMAX (≤ 15) marks capitulation. The dynamic mode self-calibrates per asset and regime.
🔹 Classic Price↔CVD Divergence Detection
What It Does
Detects regular bear divergences (price higher high while CVD makes lower high — rally on weakening buy pressure) and bull divergences (price lower low while CVD makes higher low — selling exhausting). Runs on each timeframe AND on the Master line.
Method
Per-TF divergence runs inside request.security via pivot detection on the per-TF CVD score. Master divergence runs on the chart-TF directly, rendering a connecting line + label between pivots (red bear / green bull) on the pane. Per-TF results surface in the Legend Table's "Div" column.
Why It Matters
Price↔flow divergence is one of the most powerful applications of CVD. When price makes a new high but directional flow doesn't confirm, the rally is running on fading conviction — a classic distribution warning. Detecting this per-TF AND on the Master gives both early granular warnings and high-conviction confirmations.
🔹 MTF Legend Table
What It Does
A compact 7×9 table surfacing every dimension of the analysis at a glance.
Method
Rendered via table.new(force_overlay=false) on the pane. Layout:
◇ Row 0: title (spans all columns)
◇ Row 1: column headers — Indicator / Timeframe / Value / Trend / Div / Raw / State
◇ Rows 2-6: per-TF data
◇ Row 7: Master row ("🌈 Master (~XhYm)" with effective TF)
◇ Row 8: MTF Divergence status row
Per-TF cells show: ● TF label (+ antenna 📡 if chart-native), TF resolution, zero-centered score (zone-colored), trend arrow (±0.5 deadzone), divergence (🔺/🔻/—), Raw Flow (compact K/M/B signed magnitude, green if positive / red if negative), and State (directional name, zone-colored).
Why It Matters
The Raw Flow column complements the Value column: Value answers "how strong is the directional pressure?" (the normalized score), while Raw answers "how much actual volume is behind it?" (the absolute flow). A score of 75 with a small raw magnitude is weaker conviction than 75 with a huge raw magnitude. Together with State, the table tells a complete directional story per timeframe.
🔹 Multilingual Interface
What It Does
Translates all HUD labels, status messages, alert text, Legend Table headers, and directional State names to 5 languages: English, Português, Español, Русский, 中文.
Method
A single language dropdown selects the active language via Pine v6's ternary-chain pattern. Code, comments, and configuration tooltips remain in English by convention.
Why It Matters
The Rainbow Matrix family is built for traders worldwide. Multilingual UI removes friction for non-English-native users.
HOW TO USE
Reading the Pane
◇ Master near 50 with ghost lines tight: balanced flow, no directional edge (absorption / equilibrium).
◇ Master rising above 50: buyers gaining control. Above 62 = BUY PRESSURE; above 71 = STRONG BUY.
◇ Master falling below 50: sellers gaining control. Below 38 = SELL PRESSURE; below 29 = STRONG SELL.
◇ Master touches Black Swan High (≥85, purple glow): BUY CLIMAX — buyers at a recent extreme, watch for exhaustion.
◇ Master touches Black Swan Low (≤15, aqua glow): SELL CLIMAX — capitulation, watch for reversal.
◇ Histogram green/red columns: immediate bar-by-bar directional read around the 50 centerline.
Reading the Legend Table
The antenna marker (📡) flags your chart's native timeframe — start there, then scan up/down to see whether faster/slower TFs confirm or contradict the directional bias. Compare Value (pressure strength), Raw (actual flow magnitude), and State (named classification) for each row. The status row summarizes MTF alignment between TF1 and TF5.
Reading Divergences
Master bear divergence (price up + CVD down) = rally on fading buy conviction, distribution warning. Master bull divergence (price down + CVD up) = selling exhausting, potential bottom. Per-TF divergences in the Div column give early granular warnings.
Tactical Combinations
◇ Master BUY CLIMAX + bear divergence + multiple TFs diverging = strongest reversal-from-high signal.
◇ Master SELL CLIMAX + bull divergence = strongest reversal-from-low signal.
◇ Master near 50 + all TFs near 50 + tight ghosts = absorption / coiling, often precedes a directional break.
◇ Triple confluence (the full family): RSI overbought + Volume EXTREME magnitude + CVD STRONG SELL = distribution at the top. RSI oversold + Volume EXTREME + CVD STRONG BUY = accumulation at the bottom. These three indicators answering momentum + magnitude + direction simultaneously is the strongest read the Rainbow Matrix family offers.
INPUTS EXPLAINED
GLOBAL SETTINGS — System Language (EN/PT/ES/RU/ZH), table/label font sizes.
MULTI-TIMEFRAME — AI Auto-Sync TFs; TF1-TF5 manual resolutions (default 5/15/60/240/D); per-TF CVD Smoothing Length (7/10/14/14/21); per-TF CVD Normalization Window (30/50/80/100/150).
ENGINE — Dynamic Black Swan Mode (default ON); Dynamic Channel Lookback (50) and Smoothing (10); Divergence Pivot Lookback (5).
VISUALIZATION — TF1-TF5 colors + show toggles (all ghost lines OFF by default — only Master visible on install); Ghost Fade Sensitivity (3.5); Show Master Line / Rainbow Fills / Black Swan / Dynamic Channel; Show CVD Histogram; Show MTF Legend Table; Show Divergence Column; Show Raw Flow Column; Show State Column; Show Master Divergence Chart Line; Legend position; Show Divergence Event Markers; Show Static Reference Lines (15/50/85, ON by default).
ALERTS — Black Swan crossings (high/low); Strong MTF Divergence; Z-Exhaustion zone entries; Master Classic Divergence.
IMPORTANT NOTES
🔸 Pine Script v6 — uses request.security with lookahead=barmerge.lookahead_off. 16 total security calls (5 CVD score + 5 per-TF divergence + supporting channel calculations). Chart load may take a moment longer than a single-TF indicator.
🔸 CLV approximation, not order-flow tick data — Directional pressure is approximated via the Close Location Value (where price closed within each bar's range), NOT real bid/ask order flow. Pine Script v6 has no tick-by-tick data access in indicator scripts. CLV is a more nuanced approximation than the binary tick rule used by most free-tier "delta" indicators, but it remains an approximation. For true order-flow delta, use dedicated footprint/order-flow tools.
🔸 Zero-centered scale — Unlike the percentile-rank siblings (RSI, Volume Delta Bar), this indicator's 50 is a TRUE neutral (zero net directional flow), not a historical median. This is intentional — direction is inherently signed, so a fixed zero-point is more meaningful than a regime-relative median.
🔸 Normalization warmup — During the first normalization_window bars on each TF, the rolling-max anchor (max_abs) is built from a small sample, so early bars may show exaggerated swings until the window fills. Normal warmup behavior for any rolling-window indicator.
🔸 Repaint behavior — Historical bars use confirmed close data; the current real-time bar updates as ticks arrive. Pivot-based divergence requires confirmation bars before triggering (standard pivot divergence behavior).
🔸 Fibonacci ratios are canonical — The channel proportions (1.50/1.85/2.75/3.85) and fusion weights (0.15/0.20/0.25/0.25/0.15) match the Rainbow Matrix brand standard across all sibling indicators, preserving cross-indicator visual consistency.
🔸 License: MPL 2.0 — open source. Free to fork, modify, and republish under the same license terms.
UNIQUENESS
Three pillars differentiate this from other CVD indicators on PulseWire:
1. Multi-timeframe CVD fusion with synchrony as a visual property. Most CVD tools run on a single timeframe. This indicator runs five, fuses them via Fibonacci weights, and expresses directional alignment as a rainbow density — solid when timeframes agree on direction, spread when they disagree. The cross-TF directional consensus becomes immediately readable.
2. True zero-centered scale with CLV weighting. The 50 midpoint is a mathematically meaningful neutral (zero net flow), not a regime-skewed median. And the directional weighting uses Close Location Value — capturing how decisively price closed within each bar's range — rather than the cruder binary tick rule. This combination produces a directional read that stays honest across structural trends.
3. Three complementary readings in one Legend Table, designed as a family. Value (pressure strength), Raw Flow (actual magnitude), and State (named classification) disambiguate a single timeframe's directional picture. And as the directional member of the Rainbow Matrix trio (alongside RSI for momentum and Volume Delta Bar for magnitude), it completes a three-dimensional read of any market: where price is, how big the move is, and who's winning.
Rainbow Matrix AI | Multi-timeframe institutional analysis tools for traders.
🌐 rainbowmatrix.ai
✉️ Contact: [email protected]
Indicator

CandelaCharts - Breadth Divergence📝 Overview
The CandelaCharts - Breadth Divergence indicator identifies structural divergences between the primary chart's price action and a secondary breadth or macroeconomic symbol (such as VALUG (Value Line Geometric Index), USI:ADD (Advance-Decline Issues), or US10Y (Treasury Yields)).
Because you can plug any custom ticker into the indicator, it functions perfectly as an inter-market or macro divergence tool. By analyzing pivot highs and lows, it detects when the underlying market breadth or macro environment fails to confirm the price movement, signaling potential market reversals.
Bearish Divergence: Occurs when the main chart makes a Higher High while the breadth/macro symbol makes a Lower High.
Bullish Divergence: Occurs when the main chart makes a Lower Low while the breadth/macro symbol makes a Higher Low.
📦 Features
Automated Divergence Detection: Accurately maps regular bullish and bearish divergences using customizable pivot points.
Customizable Breadth Symbol: Set any symbol to act as the breadth index to measure internal market strength.
Visual Clarity: Highlights divergence zones with clean lines connecting the pivots and shaded background boxes for easy identification.
Flexible Lookbacks: Complete control over pivot lookback lengths to adapt the sensitivity to any timeframe or volatility condition.
📈 Supported Assets & Timeframes
This indicator is universally compatible with any asset class (Equities, Crypto, Forex, Commodities, Indices) and any timeframe . To adapt the indicator to a different market, you only need to change a single input: the Breadth Symbol . For example:
S&P 500 ( SPY , ES1! ): Set the Breadth Symbol to USI:ADD (Advance-Decline), USI:VOLD (Up/Down Volume), RSP (Equal Weight), or VALUG (Value Line).
Nasdaq 100 ( QQQ , NQ1! ): Set the Breadth Symbol to USI:ADDQ (Nasdaq Advance-Decline), USI:VOLDQ , QQQE (Equal Weight), or VXN (Nasdaq Volatility).
Forex / Currencies (e.g. EURUSD , GBPUSD ): Set the Breadth Symbol to DXY (US Dollar Index) or US10Y (US 10-Year Treasury Yield).
Crypto ( BTCUSD ): Set the Breadth Symbol to TOTAL3 (Altcoin Market Cap) or BTC.D (Bitcoin Dominance).
⚙️ Settings
Breadth Symbol: The ticker used to compare against the main chart (Default: VALUG - Value Line Geometric Index).
Pivot Left / Right: The number of bars required to the left and right to confirm a pivot high or low.
Bullish / Bearish Colors: Customize the color of the divergence lines and background boxes. The backgrounds automatically apply a 90% opacity to the chosen colors.
⚡️ Showcase
S&P 500 ( ES1! ) vs. VALUG : Show a bullish divergence where ES makes a lower low but the Value Line Geometric Index makes a higher low.
Nasdaq 100 ( NQ1! ) vs. ADDQ : Highlight a scenario where the cap-weighted NQ pushes higher but the Nasdaq Advance-Decline diverges, signaling weakness in the broader tech sector.
Ethereum ( ETHUSD ) vs. TOTAL3 : Show a bearish divergence where Ethereum makes a higher high, but the broader Altcoin market cap fails to follow suit.
Euro ( EURUSD ) vs. DXY : Display an inverse divergence setup using the US Dollar Index.
🚨 Alerts
This indicator features built-in alerts using the `alert()` function. You can create an alert on the indicator to be notified whenever a Bullish or Bearish Breadth Divergence is detected.
⚠️ Disclaimer
Trading involves significant risk, and many participants may incur losses. The content on this site is not intended as financial advice and should not be interpreted as such. Decisions to buy, sell, hold, or trade securities, commodities, or other financial instruments carry inherent risks and are best made with guidance from qualified financial professionals. Past performance is not indicative of future results.
Indicator

MTF Volume Delta Bar Synchrony | Rainbow MatrixGENERAL OVERVIEW
MTF Volume Delta Bar Synchrony is a multi-timeframe volume percentile fusion oscillator that condenses five independent volume readings — one per Fibonacci-spaced timeframe — into a single weighted Master Line, surrounded by per-TF "ghost lines" that fade visually as they diverge from the consensus. When the five timeframes align, the rainbow becomes a solid band; when they spread apart, the disagreement becomes a visible density property of the indicator itself. A compact 7×9 MTF Legend Table surfaces every dimension simultaneously: per-TF volume percentile values, trend direction, divergence flags, Pulse magnitude ratio, and named State classification — with an antenna marker flagging the row whose timeframe matches your chart's native resolution.
Optional Delta Twin Bars project per-candle directional overlays directly onto the price chart via force_overlay=true, combining the oscillator pane and an order-flow approximation in a single indicator. A hybrid Black Swan zone detects volume climax (surge) and squeeze (drought) extremes — either as static 80/20 thresholds (classic) or as a dynamic Fibonacci-scaled channel that adapts to recent volatility. A classic price↔volume divergence engine detects Wyckoff-style "no demand" rallies and selling-climax bottoms on every timeframe and on the Master line.
Designed as a sibling to the MTF RSI Synchrony indicator. Apply both side-by-side for the complete momentum + volume picture: RSI shows where price sits in its momentum range; Volume Synchrony shows whether the move has institutional backing. Same visual signature, same canonical color zones, same Legend Table layout — instant cross-indicator readability.
WHAT IS THE THEORY BEHIND THIS INDICATOR
Most volume indicators on PulseWire operate on a single timeframe — volume bars, OBV, CVD approximations — and report raw, unbounded volume values that vary wildly across timescales. A 5-minute volume bar of 50,000 contracts is meaningless without context: is that "high" for 5-minute bars on this asset, or "low"? Compared to what window? A trader watching a 5-minute chart cannot intuitively cross-reference whether that surge corresponds to anything notable on the 4-hour view.
This indicator solves the cross-timescale comparison problem by bounding every volume reading to a 0-100 percentile rank: the same scale, regardless of timeframe, regardless of asset. The percentile answers a single question: "where does this bar's volume sit in the distribution of recent volume on this timeframe?" — a number anyone can read at a glance.
Five percentile readings are then fused via canonical Fibonacci weights (0.15 / 0.20 / 0.25 / 0.25 / 0.15 — peak weight on the macro TF3/TF4 where institutional consolidation tends to occur) into a single weighted Master Line. The Master adapts to a self-calibrating Fibonacci channel built from its own highest/lowest values over a configurable lookback, smoothed by EMA. Channel boundaries use the brand's canonical ratios: Z-Breathing (1.50σ), Z-Alert (1.85σ anchor), Z-Exhaustion (2.75σ), Black Swan (3.85σ) — same proportions as the RSI sibling for cross-indicator consistency.
The result is a volume picture that updates in real time, accounts for five timescales simultaneously, encodes "synchrony" itself as a visible rainbow density property, and triggers as an alertable signal when extremes converge.
FEATURES
🔹 Multi-Timeframe Volume Percentile Fusion Engine
🔹 Adaptive Fibonacci Channel (Z-Breathing → Z-Alert → Z-Exhaustion → Black Swan)
🔹 Hybrid Black Swan Zones (static 80/20 or dynamic Fibonacci-scaled)
🔹 Classic Price↔Volume Divergence Detection (per-TF + Master)
🔹 MTF Legend Table (7 columns × 9 rows, multilingual)
🔹 Volume Profile Reading (Pulse magnitude + State classification — 7-tier vocabulary)
🔹 Delta Twin Bars (per-candle chart overlay with 4 display modes + live intra-bar updates)
🔹 Multilingual Interface (EN / PT / ES / RU / ZH)
🔹 Multi-Timeframe Volume Percentile Fusion Engine
What It Does
Aggregates five independent volume percentile readings — one per Fibonacci-spaced timeframe — into a single weighted Master Line. Each per-TF reading is plotted as a "ghost" line that fades by distance to the Master, so the rainbow becomes a visual representation of multi-timeframe consensus.
Method
Default timeframes are 5 / 15 / 60 / 240 / D (Trigger / Intraday / Macro 1 / Macro 2 / Base). On each timeframe, ta.percentrank(volume, length) produces a 0-100 percentile rank with lookahead=barmerge.lookahead_off for anti-repaint integrity. The five percentiles are fused via canonical Fibonacci weights (0.15 / 0.20 / 0.25 / 0.25 / 0.15 — peak weight on TF3 and TF4 where institutional volume tends to consolidate). The Master itself is then clamped to for pane containment.
Per-TF length defaults are tuned to each timeframe's natural look-back window:
◇ TF1 (5m): 30 bars = 2.5 hours
◇ TF2 (15m): 50 bars = 12.5 hours
◇ TF3 (60m): 80 bars = 3.3 days
◇ TF4 (240m): 100 bars = 16 days
◇ TF5 (D): 150 bars = ~5 months
Set any per-TF override to 0 to inherit the global default (50). One-size-fits-all 50 bars across timeframes either lags on TF1 (16 hours of stale 5-minute history) or feels too reactive on TF5; the per-TF defaults match each horizon's natural cadence.
Why It Matters
Volume distribution is regime-dependent and timeframe-dependent. A single timeframe view can miss whether a 5-minute volume surge is the leading edge of a broader institutional move (visible on TF3/TF4) or a one-off scalper spike. The fusion engine surfaces alignment and disagreement instantly.
🔹 Adaptive Fibonacci Channel
What It Does
Renders six color-coded bands around the Master Line that adapt to its own recent volatility, using the brand's canonical Fibonacci ratios.
Method
Highest/lowest of the Master over lookback_dyn bars (default 50) are smoothed by EMA (default 10) to form dyn_up and dyn_dn. Channel bands are placed at canonical Fibonacci proportions:
◇ Z-Breathing: 1.50/1.85 ≈ 0.811 of half-channel
◇ Z-Alert: anchor at 1.85σ (the channel boundary itself)
◇ Z-Exhaustion: 2.75/1.85 ≈ 1.486
◇ Black Swan: 3.85/1.85 ≈ 2.081
All six band values are mathematically clamped to before rendering, so the rainbow stays inside the visible pane in volatile regimes (no auto-scale stretching). The algorithm itself is preserved bit-exact; only the rendered values are bounded.
Why It Matters
Static thresholds (e.g., 80/20) cannot adapt to regime changes. During a low-volatility consolidation, "70" might be a meaningful surge; during a news-driven trend, "70" might be the new baseline. The Fibonacci channel calibrates the warning levels to the asset's current regime, so the alerts stay informative regardless of market state.
🔹 Hybrid Black Swan Zones
What It Does
Flags volume climax (surge) and squeeze (drought) extremes either at static 80/20 thresholds (top 20% / bottom 20% historically) or at the dynamic Fibonacci 3.85σ band, depending on the operator's preference. Each zone is rendered as a glow line that brightens proportionally as the Master approaches.
Method
By default, Dynamic Black Swan Mode is ON for this indicator (matching the volume distribution's wider range vs canonical RSI). The Black Swan high/low values become osc_up4 / osc_dn4 — the Fibonacci 3.85σ proportion of the Master's channel. Toggle the mode OFF to revert to static 80/20 (top/bottom 20% volume thresholds — classic).
The proximity glow uses the canonical f_calc_glow pattern: transparency = 95 - (1 - dist/range) × 75, where range is the half-channel width. At zero distance, transparency = 20 (solid); at full range distance, transparency = 95 (invisible).
Why It Matters
Black Swan events on volume mark institutional climax moments — news breakouts, capitulation, distribution. The dynamic mode lets the indicator self-calibrate per asset and per regime, so a "climax" on a calm Forex pair and a "climax" on a meme stock both trigger at the appropriate statistical extremes rather than at an arbitrary 80% line.
🔹 Classic Price↔Volume Divergence Detection
What It Does
Detects regular bear divergences (price makes higher high while volume percentile pivot makes lower high — Wyckoff "no demand" rally) and regular bull divergences (price makes lower low while volume percentile pivot makes higher low — selling climax / capitulation). Runs on every individual timeframe AND on the Master line directly.
Method
For each TF, f_classic_divergence_vol(length, lookback) runs inside request.security: it detects pivot highs/lows on the per-TF volume percentile via ta.pivothigh / ta.pivotlow, captures pivot values using ta.valuewhen, and compares the current pivot vs the previous pivot. Default pivot lookback is 5 bars (matches the community standard).
Master divergence runs on the chart-TF directly (no request.security), so it always reflects the current chart resolution's pivot structure. When detected, it renders a connecting line + label between the two pivots on the indicator pane (red for bear, green for bull) and triggers the alert_divergence_native alert if enabled.
Per-TF divergence surfaces in the Legend Table's "Div" column: 🔻 for bear, 🔺 for bull, — for none. Multiple timeframes showing the same divergence direction = stronger conviction signal.
Why It Matters
Divergences between price and volume have been a cornerstone of Wyckoff/Volume Spread Analysis for decades. Most PulseWire divergence indicators run on a single timeframe — by detecting per-TF AND Master simultaneously, this indicator surfaces both fast warnings (TF1 divergence) and high-conviction confirmations (Master + multiple TFs aligning).
🔹 MTF Legend Table
What It Does
Compact 7×9 table positioned in a configurable chart corner. Surfaces every dimension of the analysis at a single glance: per-TF resolutions, volume percentile values, trend direction, divergence status, Pulse magnitude, named State classification, plus a Master row and a status row.
Method
The table is rendered via table.new(force_overlay=false) on the indicator pane (kept off the price chart for mobile readability). Per-TF cells use:
◇ Col 0: ● TF label (matches ghost line color) + 📡 antenna marker if this TF == chart's native resolution
◇ Col 1: TF resolution string ("5", "15", "60", "240", "D"...)
◇ Col 2: Volume percentile value (color-coded by zone via the thermal matrix)
◇ Col 3: Trend arrow ▲ rising / ▼ falling / ▬ flat (±0.5 percentile point deadzone to avoid flicker)
◇ Col 4: Div indicator 🔺 bull / 🔻 bear / — none
◇ Col 5: Pulse magnitude ratio (color-coded by intensity tier)
◇ Col 6: State name (multilingual EXTREME / HIGH / ELEVATED / NORMAL / LOW / COMPRESSED / SQUEEZE)
The Master row (row 7) merges cols 0-1 into "🌈 Master (~XhYm)" — the "~XhYm" suffix is the geometric weighted mean of the 5 TF resolutions (same weights as the Master volume fusion), giving you the "effective timeframe" the Master is reading. The status row (row 8) merges cols 0-6 and shows the MTF Divergence summary: Aligned / Strong Top / Strong Bottom / Moderate Top / Moderate Bottom — with background color matching the severity.
All header strings, status messages, and state names support 5 languages via the System Language input (English / Português / Español / Русский / 中文).
Why It Matters
The Legend Table compresses what would otherwise require 5 separate chart panels into a single ~150-pixel-wide compact widget. The antenna marker is especially useful on mobile: it tells you instantly which row is "your" timeframe, so you can scan up/down to see whether faster/slower TFs confirm or contradict.
🔹 Volume Profile Reading — Pulse Magnitude + State Classification
What It Does
Two complementary readings that answer different questions about volume — both surfaced as dedicated columns in the Legend Table.
Method — Pulse Column
Pulse is the ratio volume / SMA(volume, length) per TF. 1.0× = volume at the baseline; below = drought; above = elevated. Color-coded by intensity tier:
◇ < 0.5× → aqua (drought extreme)
◇ 0.5-0.8× → teal (below baseline)
◇ 0.8-1.3× → gray (typical)
◇ 1.3-2.0× → yellow (elevated)
◇ 2.0-3.5× → orange (high activity)
◇ 3.5-6.0× → red (surge)
◇ ≥ 6.0× → purple (climax extreme)
Pulse values cap display at "9.9x+" to avoid overflow in narrow cells.
Method — State Column
State classifies the percentile rank into 7 named tiers using a multilingual dictionary:
◇ ≥ 85 → EXTREME (purple zone — top 15% historically)
◇ 71-85 → HIGH (red — top 30%)
◇ 62-71 → ELEVATED (orange)
◇ 38-62 → NORMAL (yellow / green — middle 24%)
◇ 29-38 → LOW (teal)
◇ 15-29 → COMPRESSED (blue)
◇ ≤ 15 → SQUEEZE (aqua — bottom 15%)
Why It Matters
Pulse and State answer different questions about the same volume reading:
◇ Value (percentile column 2): "Where in the historical distribution?" — a ranking answer.
◇ Pulse (column 5): "How intense vs recent baseline?" — a magnitude answer.
◇ State (column 6): "What's the human-readable label?" — a vocabulary answer.
These three columns together tell a complete story. A bar can be at Percentile 60 (NORMAL state) with Pulse = 3.5x (red surge) — meaning: "this bar's volume isn't historically rare, but it's a massive jump versus what's been happening recently." That's a different signal than Percentile 95 / Pulse = 1.0x (EXTREME state but typical magnitude) — meaning: "this is a rare historical bar, but the magnitude is normal relative to recent activity." The columns disambiguate.
🔹 Delta Twin Bars (Chart Overlay)
What It Does
Renders per-candle directional bars on the price chart (via force_overlay=true) whose dimensions encode the selected volume score and whose color encodes buy/sell pressure approximation. Bridges the gap between this script's oscillator pane and the price action itself.
Method
For each candle, the bar size = candle_range × (score / 100) × user_multiplier. The score source is configurable (Master or any TF1-TF5; default TF1 Trigger for the most responsive read).
Four display modes:
◇ Fixed High: bar always projects above the candle high (regardless of direction)
◇ Fixed Low: bar always projects below the candle low
◇ Dynamic: buy candles get bar above high, sell candles get bar below low (intuitive directional reading)
◇ Dynamic Inverted (default): buy candles get bar BELOW low, sell candles get bar ABOVE high — an order book metaphor where buy pressure builds support and sell pressure presses resistance
Bar color follows the user-configured buy/sell colors (green / red by default — matching the OHLC tick rule: close > open = buy bias, close < open = sell bias). An optional toggle ("Use Master Line Color") overrides this with the Master zone color via the thermal matrix — giving rainbow-colored bars that match the pane oscillator.
Bar width is pixel-controlled (1-8, default 8) via line.new with the user-selected linewidth — visually independent of chart zoom, distinguishable from candle wicks at any chart density.
Two update modes:
◇ Live (default): the current bar's twin bar updates on every tick — score, direction, and color reflect real-time data. When the bar closes, the live line is "frozen" into the confirmed pool. One additional persistent line is used (zero pool overhead).
◇ Confirmed-only: twin bar appears only when the candle closes (useful for backtesting comparisons where intra-bar flicker is unwanted).
The last 500 bars are rendered (Pine v6 line pool limit) with rolling FIFO management — older candles fall out of the pool and lose their twin bar, but the most recent 500 stay live.
🚨 Honest tick-rule disclosure
The buy/sell direction encoding uses the OHLC tick rule — close > open = buy bias, close < open = sell bias. This is NOT order-flow tick-data delta. Pine Script v6 has no tick-by-tick data access in indicator scripts on the free tier. The OHLC approximation is what virtually every "delta" indicator on PulseWire free uses; this script discloses it transparently rather than claiming real order flow.
For most use cases (visual confirmation, trend bias, magnitude readings) the OHLC approximation captures the essential information. Traders who need true bid/ask delta should look at paid Order Flow tools or Sierra Chart / Bookmap.
Why It Matters
The Delta Twin Bars combine two analytical layers in a single indicator: the oscillator pane (Master fusion + ghost lines + Legend Table) and the chart overlay (per-candle directional reference). Most PulseWire indicators force users to choose between oscillator-only or overlay-only paradigms; this script delivers both via force_overlay=true on selectively-rendered lines, preserving full pane functionality while adding a quick visual reference directly on the price candles.
🔹 Multilingual Interface
What It Does
Translates all HUD labels, status messages, alert text, state classifications, and Legend Table headers to 5 languages: English (default), Português, Español, Русский, 中文 (Chinese). 33 multilingual keys are maintained across all 5 languages.
Method
A single language dropdown input (in the GLOBAL SETTINGS group) selects the active language. The script uses Pine v6's _l == "PT" ? ... : _l == "ES" ? ... ternary chain pattern for each translated string, evaluated once at startup. Configuration tooltips, variable names, and code comments remain in English by convention — this script is designed to be readable to developers globally.
Why It Matters
Trading is a global activity. The Rainbow Matrix product family is designed for traders worldwide; multilingual UI removes a friction point for non-English-native users without adding development overhead.
HOW TO USE
Reading the Rainbow (Pane Oscillator)
◇ Master between 30 and 70 with all 5 ghost lines solid: typical volume profile, no anomaly to flag.
◇ Master entering Z-Alert (orange / teal bands): notable volume deviation — watch for follow-through confirmation across timeframes.
◇ Master in Z-Exhaustion (red high / blue low): elevated probability of climax or drought completing.
◇ Master touches Black Swan High (purple glow): volume climax event — statistically rare top-of-distribution moment, often coincides with news catalysts, breakouts, or capitulation.
◇ Master touches Black Swan Low (aqua glow): volume drought / squeeze — extreme compression, often precedes breakouts when paired with price consolidation.
Reading the Legend Table
The antenna marker (📡) flags your chart's native timeframe. Start your read there, then scan up/down the table to see whether faster/slower TFs confirm or contradict the current volume bias. Look at the relationship between Value (where in distribution), Pulse (how intense vs baseline), and State (named tier) for each row — divergences between these three readings within a single TF are early warnings.
The status row at the bottom summarizes MTF divergence: Aligned (TFs in agreement, default), Strong Top (TF1 ≥ 70 vs TF5 ≤ 30 — fast surge with slow drought), Strong Bottom (TF1 ≤ 30 vs TF5 ≥ 70 — fast quiet with slow surge), or Moderate variants of either.
Reading the Delta Twin Bars (Chart Overlay)
Tall bars = high volume score for that candle's TF source. With Dynamic Inverted mode (default), bars projecting BELOW buy candles signal "support building"; bars projecting ABOVE sell candles signal "resistance pressing" — an order book metaphor. Switch to Dynamic mode for a more intuitive directional read (buy bars project up, sell bars hang down). Use Fixed High/Low for cleaner price action when delta-only context is needed.
Reading Divergences
Master divergence (red line + 🔻 label on the pane) = price made a higher high while Master volume percentile made a lower high — Wyckoff "no demand" rally, often precedes reversal. Master bull divergence (green + 🔺) = price made a lower low while Master volume made a higher low — selling climax, often precedes bottom.
Per-TF divergences in the Legend Table's Div column give early granular warning: a TF1 divergence might fire 5-10 candles before the Master confirms. Multiple TFs aligning on the same divergence direction = high-conviction signal.
Tactical Combinations
◇ Master Black Swan High + Strong Top divergence + Bear Master divergence simultaneously = strongest reversal signal from highs.
◇ Master Black Swan Low + Strong Bottom divergence + Bull Master divergence = strongest reversal signal from lows.
◇ Master SQUEEZE state + multiple TFs SQUEEZE state + Pulse < 0.5x = pre-breakout compression — often precedes expansion events.
◇ Pulse spikes (red / purple tier) preceding percentile shifts = often mark turning points before the percentile catches up.
◇ Pair with MTF RSI Synchrony: Aligned RSI + Aligned Volume = high-conviction setup. Bear RSI div + Bear Volume div on Master simultaneously = strongest reversal signal.
INPUTS EXPLAINED
GLOBAL SETTINGS
◇ System Language (EN / PT / ES / RU / ZH) — affects HUD and alerts only; code stays in English.
◇ Table / Labels Font Size — Tiny / Small (default) / Normal / Large.
MULTI-TIMEFRAME
◇ AI Auto-Sync TFs — when ON, auto-adjusts the 5 TFs based on chart resolution.
◇ TF1-TF5 — manual TF override (defaults: 5/15/60/240/D).
◇ Default Volume Percentile Length — global default (default 50).
◇ TF1-TF5 Length Overrides — per-TF overrides; defaults 30/50/80/100/150; set to 0 to inherit global.
ENGINE
◇ Dynamic Black Swan Mode — ON by default (Fibonacci 3.85σ adaptive). OFF = static 80/20.
◇ Dynamic Channel Lookback (default 50) and Smoothing (default 10).
◇ Divergence Pivot Lookback — default 5 (community standard).
VISUALIZATION
◇ TF1-TF5 Color + Show toggles — TF1 and TF5 visible by default; TF2/3/4 hidden (opt-in).
◇ Ghost Fade Sensitivity — default 3.5 (lines invisible at ~20 percentile points from Master).
◇ Show Master Line / Show Rainbow Fills / Show Black Swan / Show Dynamic Channel — all default ON.
◇ Show MTF Legend Table — default ON.
◇ Show Divergence Column / Pulse Column — both default ON.
◇ Show Master Divergence Chart Line — default ON.
◇ Legend Table Position — Top/Bottom × Left/Right (default Bottom Right).
◇ Show Divergence Event Markers — default OFF (reduces clutter; toggle ON to display triangles).
◇ Show Static Reference Lines — default OFF (cleaner pane on install; toggle ON for 20 / 50 / 80 guides).
ALERTS
◇ Alert on Black Swan crossings (high / low) — default ON.
◇ Alert on Strong MTF Divergence — default ON.
◇ Alert on Z-Exhaustion zone entries — default OFF (opt-in).
◇ Alert on Master Classic Divergence — default ON.
DELTA TWIN BARS
◇ Show Delta Twin Bars — default ON.
◇ Score Source — Master / TF1 (default) / TF2 / TF3 / TF4 / TF5.
◇ Display Mode — Fixed High / Fixed Low / Dynamic / Dynamic Inverted (default).
◇ Buy / Sell Colors + Transparency + Size Multiplier — fully customizable.
◇ Use Master Line Color (override) — default OFF; toggle ON for rainbow-colored bars.
◇ Bar Width (pixels) — 1-8, default 8 (bold, high-visibility).
◇ Lookback (bars) — default 500 (Pine v6 pool maximum).
◇ Live Bar (intra-bar update) — default ON; toggle OFF for confirmed-only rendering.
IMPORTANT NOTES
🔸 Pine Script v6 — uses request.security with lookahead=barmerge.lookahead_off for anti-repaint integrity. The 5 per-TF volume fetches + 5 per-TF Pulse fetches + 5 per-TF divergence fetches + 6 other security calls = 21 total request.security calls; within PulseWire's free-tier limits but noteworthy if combining with other heavy multi-TF indicators on the same chart.
🔸 Repaint behavior — historical bars use confirmed close data; the current real-time bar updates as ticks arrive (especially with Live Delta Bars enabled). The pivot-based divergence detection requires div_lookback confirmed bars before triggering — so divergence labels appear on the pivot bar in retrospect, not as live signals. This is standard pivot divergence behavior across all PulseWire divergence indicators.
🔸 Tick rule approximation — Delta Twin Bars use the OHLC tick rule (close > open = buy bias) as a direction encoder. This is NOT real order-flow tick data. Pine Script v6 has no tick data access in indicator scripts. Same approximation is used by virtually every "delta" indicator on the PulseWire free tier; this script discloses it transparently. For real bid/ask delta, use paid order flow tools.
🔸 Pine v6 line pool limit — Delta Twin Bars are bounded to 500 lines (Pine v6 hard limit). Older candles fall out of the rolling FIFO and lose their twin bar — this is a Pine engine constraint, not a bug. The current bar's live line uses ONE persistent slot reused across bars (no additional pool consumption).
🔸 Fibonacci ratios are canonical — the channel proportions (1.50 / 1.85 / 2.75 / 3.85) match the Rainbow Matrix brand standard across all sibling indicators. They are derived from the brand's design system and are not user-configurable — preserving cross-indicator visual consistency.
🔸 Master effective TF — the "~XhYm" label in the Master row is the geometric weighted mean of the 5 TF resolutions (same weights as the Master fusion: 0.15/0.20/0.25/0.25/0.15). With defaults 5/15/60/240/D, the effective TF is approximately 71 minutes (~1h11m). This tells you the "average horizon" the Master is reading.
🔸 License: MPL 2.0 (Mozilla Public License 2.0) — open source. Free to fork, modify, and republish under the same license terms.
UNIQUENESS
Three pillars differentiate this from the dozens of volume indicators already on PulseWire:
1. Multi-timeframe percentile fusion with synchrony as a visual property. Most volume tools operate on a single timeframe with raw unbounded readings. This indicator bounds every reading to a 0-100 percentile scale, fuses five timeframes via Fibonacci-proportioned weights, and expresses synchrony itself as a "rainbow density" — solid when aligned, spread-out when diverging. The disagreement between fast and slow timeframes becomes immediately readable.
2. Three complementary volume readings in one Legend Table. Value (percentile rank), Pulse (magnitude ratio), and State (named tier) answer three different questions about the same volume reading. Most indicators give you one number; this one disambiguates "rare historical event" from "extreme recent magnitude" from "elevated relative position." The combination catches signals that single-metric views miss.
3. Combined oscillator + chart overlay in a single script. Delta Twin Bars project the per-candle volume score and tick-rule direction directly onto the price chart via force_overlay=true, while the full pane oscillator (Master fusion, ghost lines, Legend Table, divergence engine, dynamic channel) continues to operate independently. Most PulseWire indicators force you to choose between oscillator-only or overlay-only paradigms; this script gives you both, with honest disclosure about the OHLC tick rule approximation.
Rainbow Matrix AI | Multi-timeframe institutional analysis tools for traders.
🌐 rainbowmatrix.ai
✉️ Contact: [email protected] Indicator

CVD Reversal Divergence (Exhaustion)Overview
The CVD Reversal Divergence (Exhaustion) indicator is designed to identify potential market reversals by analyzing the divergence between price action and Cumulative Volume Delta (CVD).
Hypothesis
This indicator is built on the "Order Flow Exhaustion" hypothesis. In efficient markets, price trends should be supported by volume. When price hits a new high but CVD fails to follow (or vice versa), it indicates that the current momentum is exhausted, often signaling a pending reversal.
Key Features
Buying Exhaustion (Red Triangle): Signals a potential downward reversal when price structure diverges from buying pressure.
Selling Exhaustion (Green Triangle): Signals a potential upward reversal when price structure diverges from selling pressure.
Pivot-Based Detection: Uses structural pivot points to filter out intraday market noise, ensuring high-quality signals.
Understanding "Pivot Lookback (Bars)"
The Pivot Lookback parameter is the most critical setting for this indicator:
What it does: It defines the number of bars required on each side of a pivot point to confirm it as a local high or low.
How to tune it:
Lower Values (e.g., 3-5): Increases sensitivity, allowing the indicator to detect smaller, localized reversals. Best for scalping.
Higher Values (e.g., 10-20): Increases filtering, ignoring minor pullbacks and focusing on major structural shifts. Best for trend trading.
How to use
This indicator works best on liquid assets like Futures (ES, NQ, Gold) and high-volume stocks.
Use it as a confirmation tool rather than a standalone entry signal. Combine it with Support/Resistance levels or Volume Profile POCs for the best results. Indicator

Artemis Adaptive RSI🟦 Artemis Adaptive RSI is a Pine v6 self-tuning RSI workbench. Instead of shipping with a fixed period and fixed thresholds — and forcing the trader to babysit the inputs across regimes (14 / 70 / 30 on stocks, 7 / 80 / 20 on crypto, 21 / 60 / 40 in trends) — a 60-candidate optimisation grid scores Supersmoother-filtered RSI variants against their own forward-return performance on a rolling window, then picks the variant whose threshold trips deliver the cleanest mean-reversion edge on the current market. The active period, smoothing, and OB / OS thresholds update online, and a five-state regime label tells you why the optimiser chose what it chose.
The indicator integrates seven analytical layers — Supersmoother-filtered RSI core, online candidate optimiser, hysteresis-locked regime classifier, Stochastic-Extreme-style multi-band zone visual, pivot-based Regular + Hidden divergence detection with a Smart AI Filter, adaptive trigger markers, theme-adaptive bar painter, and a PRO 8-row dashboard — each operating independently and rendered on a single, clean oscillator panel.
🟦 CREDITS & ATTRIBUTION
The adaptive optimisation CORE — Supersmoother-filtered RSI fleet, rolling-window incremental scorer, champion selection with hysteresis, and the five-state regime classifier — is derived from the open-source work of **GoodBadBitcoin** and published under the same MPL-2.0 license. Full respect to the original author for the design and the open release; this project would not exist without that groundwork.
- Source script — [Adaptive Modern RSI ]()
- Original author — (www.pulsewire.com)
Everything else — the Stochastic-Extreme-style multi-band zone UI, the twelve-theme palette system, the pivot-based divergence engine, the Smart AI Filter, the PRO dashboard, the hover-tooltipped regime badge, the theme-aware bar painter, and the curated nine-channel alert pack — is original work added on top.
🟦 HOW THE CORE ENGINE WORKS
**Supersmoother**
Each bar, the per-bar close change is split into two streams — positive (gains) and negative (losses) — and each stream is fed through an Ehlers two-pole Butterworth low-pass filter. The Supersmoother removes high-frequency noise without piling on the phase lag that naive EMA / RMA pre-smoothing chains accumulate. The filtered gain / loss streams then feed the classical Wilder RSI ratio:
rsi = 100 − 100 / (1 + smoothedGains / smoothedLosses)
**Candidate Fleet**
15 RSI variants are precomputed in parallel — every combination of:
| Axis | Values |
|---|---|
| RSI length | 7 / 10 / 14 / 21 / 28 |
| Supersmoother smoothing | 6 / 10 / 16 |
Combined with 4 threshold tiers (15-85 / 20-80 / 25-75 / 30-70), this gives the 60-slot fleet the optimiser grades against.
**Online Optimiser (Rolling-Edge Scorer)**
Every bar, each of the 60 slots is evaluated:
1. **Trigger detection** — for the slot's threshold pair, did the bar produce an OS-entry (RSI crossed down through OS) or an OB-exit (RSI crossed back down through OB)?
2. **Forward-return scoring** — if a trigger fired, score it by `close / close − 1` (signed by trigger direction).
3. **Rolling bookkeeping** — each slot maintains its own running mean over a sliding `scoreWindow`-bar window. Returns enter on add, exit on subtract, mean recomputed in O(1) per slot per bar — no rescans, no naive sum-of-products drift.
After every bar's update, the slot with the highest mean return wins — subject to two gates:
- **Min Triggers per Candidate** — under-sampled slots are disqualified
- **Switch Margin (%)** — a new champion must beat the current incumbent by this hysteresis margin before it actually takes over
This protects against bar-by-bar leadership flapping when two candidates trade marginal scores.
**Regime Classifier**
The crowned champion's shape (length-index, smoothing-index, level-index, mean-return) is read each bar and the market is tagged as one of five phases:
| Glyph | Phase | Meaning |
|---|---|---|
| ◐ | Adapting | Cold start — optimiser not yet armed (default RSI in use) |
| ✸ | Noisy | Score collapsed, no exploitable edge — sit out |
| ➜ | Trending | Long period + relaxed thresholds — trend dominates, avoid OB/OS reversals |
| ▣ | Range | Short period + strict thresholds — RSI's sweet spot, triggers reliable |
| ⊠ | Calm | Middling parameters — mild swings, use as light confluence |
The raw tag stream is then locked through a two-stage hysteresis machine: the displayed phase only updates after the underlying classification holds for `Regime Confirmation Bars` in a row. This keeps the floating badge from twitching on every minor optimiser jitter.
🟦 MULTI-BAND ZONE UI
A Stochastic-Extreme-style six-band visual at 100 / 80 / 70 / 50 / 30 / 20 / 0. The active OB / OS thresholds overlay as steplines that move as the optimiser updates. Zone fills key off the *adaptive* thresholds so the visual escalation tracks the actual signal logic, not a fixed 70 / 30 line.
The fills are tiered — when the RSI line plus the live champion's mean-return both confirm a zone state, the fill intensifies; otherwise the band shows a lighter tint. The 40 / 60 reference dotted lines and the 50 zero line are decorative — they are NOT the triggers.
**RSI line colour**
| Zone | Colour |
|---|---|
| Above 60 | theme-bull (price-strength bias) |
| Between 40 and 60 | neutral |
| Below 40 | theme-bear (price-weakness bias) |
These 40 / 60 bands are FIXED — they are NOT the adaptive OS / OB. The adaptive thresholds drive the triggers; the 40 / 60 bands just colour the RSI line for at-a-glance bias reading.
🟦 TRIGGER MARKERS
Triangle markers fire at the bar of OS entry / OB exit on the *adaptive* thresholds — the events the optimiser is actually scoring:
- ▲ **OS Entry Trigger** — RSI just crossed down through the adaptive OS threshold (mean-reversion long opportunity)
- ▼ **OB Exit Trigger** — RSI just crossed back down through the adaptive OB threshold from above (rejection / short opportunity)
Markers use `location.absolute` with fixed Y coordinates (10 / 90) so they stay glued to the same visual spot every bar — no drift between candles, no shift when zone fills update. Each visible triangle is paired with an invisible `label.style_circle` carrying a hover tooltip with live RSI value, active threshold, active period, and active smoothing — `plotshape()` does not support tooltips natively, so the dual-track rendering is required for hover content.
🟦 DIVERGENCE DETECTION
Pivot-based detection for the four classical divergence flavours:
| Type | Price | RSI | Signal |
|---|---|---|---|
| Regular Bull (D▲) | Lower Low | Higher Low | Potential reversal up |
| Regular Bear (D▼) | Higher High | Lower High | Potential reversal down |
| Hidden Bull (H▲) | Higher Low | Lower Low | Uptrend continuation |
| Hidden Bear (H▼) | Lower High | Higher High | Downtrend continuation |
Pivots are sampled on raw price (high / low) using `Pivot Arm` bars on each side (symmetric). Each pivot bar's RSI value is read **dynamically from the current active RSI series** via bar-index lookup — so when the optimiser switches champions between pivots, the comparison stays internally consistent (both endpoints come from the SAME series). This is a subtle but critical fix vs. naive divergence ports.
Regular Divergence labels (D▲ / D▼) use bracketed glyphs with solid styling — these are the reversal signals.
Hidden Divergence labels (H▲ / H▼) use the same bracket scheme — these are the continuation signals.
Each label hovers a tooltip with the price change, RSI change, and the pivot bar distance.
**Smart AI Filter**
An optional pre-filter that rejects low-quality divergences before they render. Three independent gates:
1. **Min RSI Swing** — minimum RSI difference between the two pivots (default: 5 points). Drops noise-level differences where RSI barely moved between pivots.
2. **Min Price Swing (%)** — minimum price swing between pivots as a percentage of the recent (80 bars) price range (default: 0.3%). Drops divergences where price barely moved relative to recent volatility.
3. **Zone Confirmation** — RSI at the current pivot must sit in the matching adaptive reversion half:
- Bullish divergence → RSI ≤ midpoint(liveOs, 50) (moderate-to-deep oversold)
- Bearish divergence → RSI ≥ midpoint(50, liveOb) (moderate-to-deep overbought)
The zone gate is adaptive — it tightens or loosens as the optimiser updates the live OS / OB thresholds. This encodes the classical "best divergences form at extremes" rule using the live adaptive thresholds, not a fixed 30 / 70.
When the master toggle is OFF (default), all detected divergences render. When ON, only divergences that clear all three gates survive. The filter applies identically to both chart rendering and alert conditions — no mismatch between visual and alert signals.
🟦 REGIME BADGE
A floating label pinned to the LATEST bar, extending rightward into the chart's right-margin / future area. The `label.style_label_left` style places the arrow tip on the LEFT of the box so it visually "points back" to the active RSI data without overlapping the oscillator line.
The badge shows:
- **Glyph + phase name** (e.g. `▣ Range`)
- **Bars stable** (how long the current phase has held)
- **Action note** (e.g. "RSI's sweet spot — triggers work well")
The background colour pulls from the theme palette — Range = theme-bull tint, Trending = theme-bear tint, Adapting / Noisy = theme-neutral tint, Calm = theme-signal tint — so the badge meaning is reinforced by the palette consistency.
**Hover tooltip**
Hovering the badge surfaces a comprehensive phase legend explaining all five glyphs, what each means, what action to take in each, and how to read the "bars stable" counter.
**Position**
User-selectable: Top (y = 80, upper third), Middle (y = 50, centre, default), Bottom (y = 20, lower third). The Y resolver maps the dropdown onto fixed pane-fraction coordinates so the badge stays parked at the same visual spot regardless of RSI value.
🟦 BAR COLORING
Two mutually exclusive modes apply a state-driven colour to every price bar on the chart:
| Mode | Behavior |
|---|---|
| None | Leave bars untouched (default) |
| RSI Zone | Theme-bear when RSI in OB zone, theme-bull when in OS zone, theme-neutral otherwise |
Uses the *adaptive* OB / OS thresholds, not fixed 30 / 70. The bar painter pulls directly from the active threshold state — when the optimiser switches candidates, the bar colour rule updates accordingly with no lag.
🟦 DASHBOARD
A compact 2-column, 8-row PRO data panel renders on the last bar when enabled. Every value derives from variables already computed upstream, so the dashboard adds zero overhead until the final bar.
| Row | Left | Right |
|---|---|---|
| Header | Artemis A-RSI | ▲ OB / ▼ OS / ■ Neutral (current bias) |
| Phase | Phase | ◐ ✸ ➜ ▣ ⊠ glyph + name (current regime) |
| Period | Period | Active RSI length (e.g. 14) |
| Smooth | Smooth | Active Supersmoother smoothing (e.g. 10) |
| OS Level | OS | Active adaptive OS threshold (e.g. 20) |
| OB Level | OB | Active adaptive OB threshold (e.g. 80) |
| Score | Score | Champion's mean forward return (in %) |
| Last Div | Last Div | Most recent divergence within last 50 bars (D▲ / D▼ / H▲ / H▼ / —) |
**Theme-Adaptive Chrome**
The dashboard auto-inverts its layout based on the active theme:
- **Dark themes** (Tropic, Amber, Pastel, Cyber, Helios, Electric, Candy, Bloomberg, Solar, Royal): header and footer use a faint `thBull` tint, middle rows stay solid dark, text uses full-saturation `thBull`. Border uses `thBull` at 20% transparency for strong theme presence.
- **Light themes** (Midnight, Graphite): backgrounds flip to white, text stays `thBull` (which is itself dark on these themes), border uses `thBull` at 40% transparency.
This guarantees text legibility against every palette without per-theme manual tuning.
**Position & Size**
Six anchor slots (Top / Middle / Bottom × Left / Right) and four text sizes (Tiny / Small / Normal / Large).
🟦 COLOR THEMES
Twelve cohesive palettes, each resolving to four axis colors. The whole script reads through these four variables — nothing below the theme resolver references a raw hex literal, so a single dropdown selection drives every plot, fill, stepline, divergence line, dashboard cell and badge.
| Theme | Character | Bull | Bear |
|---|---|---|---|
| Tropic | Cyan steel + deep orange | #00bcd4 | #ff6d00 |
| Amber | Warm amber + indigo blue | #ff9800 | #e53935 |
| Pastel | Sky blue + soft lavender | #4fc3f7 | #9575cd |
| Cyber | Neon lime + hot crimson | #00e676 | #ff1744 |
| Helios | Bright gold + scarlet | #ffd600 | #ef5350 |
| Electric | Electric aqua + magenta | #00e5ff | #e040fb |
| Candy | Neon green + hot pink | #69F0AE | #FF4081 |
| Bloomberg | Terminal orange + cyan | #ff8c00 | #00b0ff |
| Solar | Solarized olive + crimson | #859900 | #dc322f |
| Royal | Imperial gold + deep purple | #ffd700 | #6a0dad |
| Midnight | Deep navy + dark crimson | #0d47a1 | #b71c1c |
| Graphite | Near-black + silver grey | #1a1a1a | #757575 |
🟦 ALERT SYSTEM
Seven user toggles drive nine alert messages, all using `alert.freq_once_per_bar_close`:
| Toggle | Alert(s) | Condition |
|---|---|---|
| OS Entry Trigger | OS Entry | RSI crossed down through adaptive OS |
| OB Exit Trigger | OB Exit | RSI crossed back down through adaptive OB |
| Regime Change | Phase Flip | Locked regime label updates (post-hysteresis) |
| Regular Divergence | D▲ + D▼ | Reversal divergences detected (respects Smart AI Filter) |
| Hidden Divergence | H▲ + H▼ | Continuation divergences detected (respects Smart AI Filter) |
| RSI Mid Cross Up | Mid ↑ | RSI crossed above 50 |
| RSI Mid Cross Down | Mid ↓ | RSI crossed below 50 |
Each alert fires through `alert()` so the message body carries live context — current RSI value, the active adaptive threshold that triggered, active period and smoothing, and (for Regime Change) the previous phase's hold duration. Divergence alerts respect the Smart AI Filter — if the filter is ON and a divergence is rejected visually, the alert will also not fire.
🟦 SETTINGS REFERENCE
**Visual**
- Theme — 12 palette options. Default: Tropic
**Adaptation Core**
- Optimization Lookback (bars) — 100–1000. Default: 300
- Forward-Return Eval Horizon — 2–20. Default: 5
- Min Triggers per Candidate — ≥ 2. Default: 5
- Switch Margin (%) — 0–50, step 2.5. Default: 10
**Regime Label**
- Show Regime Label — Toggle. Default: ON
- Regime Label Size — Tiny / Small / Normal / Large / Huge. Default: Normal
- Regime Confirmation Bars — 1–100. Default: 10
- Regime Label Position — Top / Middle / Bottom. Default: Middle
**Zones & Levels**
- Show Adaptive Levels — Toggle. Default: ON
- Show Zone Fills — Toggle. Default: ON
- Show Trigger Signals — Toggle. Default: ON
**Divergence**
- Regular Divergence — Toggle. Default: ON
- Regular Opacity — 0–100. Default: 80
- Hidden Divergence — Toggle. Default: ON
- Hidden Opacity — 0–100. Default: 80
- Pivot Arm — 2–50. Default: 5
- Label Size — Tiny / Small / Normal / Large. Default: Tiny
- Smart AI Filter — Master toggle. Default: OFF
- Min RSI Swing — 1.0–50.0. Default: 5.0
- Min Price Swing (%) — 0.1–5.0. Default: 0.3
- Require Zone Confirmation — Toggle. Default: ON
**Bar Coloring**
- Bar Color Mode — None / RSI Zone. Default: None
**Dashboard**
- Show Dashboard — Toggle. Default: ON
- Panel Position — 6 anchor slots. Default: Middle Right
- Panel Text Size — Tiny / Small / Normal / Large. Default: Small
**Alerts**
- OS Entry Trigger — Default: ON
- OB Exit Trigger — Default: ON
- Regime Change — Default: ON
- Regular Divergence — Default: ON
- Hidden Divergence — Default: OFF
- RSI Mid Cross Up — Default: OFF
- RSI Mid Cross Down — Default: OFF
🟦 COMPATIBILITY
Works on all asset classes and all timeframes in PulseWire Pine Script v6.
- Crypto: Spot, futures, perpetual contracts
- Forex: All pairs
- Equities: Stocks, ETFs, indices
- Commodities: Metals, energy, agriculture
- Timeframes: 1m through Monthly
Because the engine self-tunes its RSI period, smoothing, and OB / OS thresholds online, the same default settings work on a 5-second BTC chart and a weekly index chart without retuning. The optimiser sees the asset's actual reversion behaviour and adapts — no per-asset preset library needed.
🟦 TECHNICAL NOTES
- Pine Script v6
- `max_lines_count = 500`, `max_labels_count = 500`, `max_bars_back = 1000`
- No repainting — all values calculated on bar close. Pivot-based divergence results appear `Pivot Arm` bars late by design (standard Pine pivot confirmation behaviour)
- The adaptive RSI line is internally consistent across optimiser switches — divergence pivots read RSI dynamically via `activeRsi `, so both endpoints come from the SAME (current) RSI series even when the champion changes between pivots
- The Supersmoother filter relies on `var float lpY = 0.0` private state per call-site — Pine v6 issues one independent state slot per call-site, so the 15 fleet entries below produce 30 (15 × 2 streams) independent filter histories with zero cross-talk
- Champion switch is hysteresis-gated by `Switch Margin (%)` and an eligibility floor (`Min Triggers per Candidate`) — protects against bar-by-bar flapping when two candidates trade marginal scores
- Regime tag is doubly hysteresis-gated — first the candidate must hold, then the displayed phase only flips after `Regime Confirmation Bars` of stable tagging
- Trigger markers use `location.absolute` with fixed Y coordinates (10 / 90) for visual stability — no slide on zoom or candle-spacing changes
- Trigger marker tooltips piggy-back on invisible `label.style_circle` parallel renders — `plotshape()` does not natively support the `tooltip` argument
🟦 DISCLAIMER
This indicator is provided for educational and informational purposes only. It does not constitute financial advice. Past performance does not guarantee future results. Always conduct your own analysis and apply proper risk management. Indicator

Artemis Squeeze Momentum🟦 Artemis Squeeze Momentum collapses an entire momentum-and-volatility workflow into a single oscillator pane. Eight analytical layers — Squeeze Momentum core, Directional Flux, three-tier compression detection with a release tracker, dual confluence gauges, dual anchor Regular + Hidden divergence with a Smart AI Filter, a composite Trend Strength Score (0–100), a four-timeframe MTF Confluence panel with alignment / divergence detection, and a theme-adaptive PRO dashboard — operate as one integrated system, all driven by a single theme dropdown across 12 cohesive palettes.
Most squeeze indicators ship as a strip of black-and-red dots with a lone momentum histogram, then require a separate ADX, a separate divergence tool and a separate confluence gauge to complete the read. Artemis Squeeze Momentum closes that gap: every compression tier, every directional cross, every divergence, every higher-timeframe bias reads from the same pane in the same colour language — no inline colour pickers, no palette drift, no pane-hopping. The result is a complete momentum workbench where compressions, breakouts, regime flips, divergences and multi-TF bias are all readable at a glance.
🟦 HOW THE CORE ENGINE WORKS
**Squeeze Momentum Engine**
Each bar, the engine builds three anchors over the Momentum Length window:
1. **Channel midpoint** — `(highest(high, len) + lowest(low, len)) / 2`
2. **Smoothed midline** — `SMA(HL2, len)`
3. **Channel ATR** — channel range plus the gap-to-prior-close component (matches Pine v5 `tr(true)` on the synthetic channel bar)
The raw momentum is then computed as:
mom_raw = (close − avg(channelMid, smaMid)) / channelATR × 100
This produces a channel-aware, ATR-normalized residual scaled to roughly the ±100 range. The result is then passed through `ta.linreg(mom_raw, len, 0)` to produce the visible momentum line — a linear-regression smoothing that gives the curve its characteristic forward-leaning shape. An SMA of length Signal Length builds the trigger line. Crossovers between momentum and signal mark momentum regime changes — the same convention used by classical MACD.
**Directional Flux**
A custom ADX-style oscillator running in parallel. Each bar, the engine measures positive high-changes vs. negative low-changes, each RMA-smoothed and ATR-normalized:
up = RMA(max(change(high), 0), len) / ATR(len)
dn = RMA(max(−change(low), 0), len) / ATR(len)
ratio = (up − dn) / (up + dn)
flux = RMA(ratio, len / 2) × 100
The result is a directional bias oscillator bounded to ±100. An overflow branch (values past ±25 — where the directional pressure becomes structurally significant) renders as a separate, brighter fill so traders read both raw direction and acceleration in one glance.
**Heiken Ashi Bias (Optional)**
When `Use Heiken Ashi Bias` is enabled, the Flux engine reads from a Heiken Ashi bar stream instead of raw OHLC. HA bars smooth body / wick noise and emphasise trend continuation — useful on lower timeframes where raw OHLC is noisy.
🟦 SQUEEZE DETECTION
A three-tier Bollinger-vs-ATR compression detector running on the same Length as the Momentum Core (so compression and momentum stay perfectly aligned):
| Tier | Condition | Visual |
|---|---|---|
| Tight | stdev < ATR × 0.5 | Deepest, most saturated theme tone |
| Mid | stdev < ATR × 0.75 | Middle-intensity theme tone |
| Loose | stdev < ATR × 1.0 | Lightest tier — broadest detection |
Tiers nest — tight implies mid implies loose. The bottom-of-pane squeeze column lights up whenever any tier is active and the colour escalates as compression tightens, using a theme-native ramp drawn from each palette's own colour family (so the column reads as part of the theme rather than an imported generic warning).
The standard deviation is computed via a single-pass Welford algorithm — numerically stable on long histories where naive sum-of-squares accumulators drift.
**♦ Squeeze Release Marker**
The signature feature of the engine. The bar after the loosest active tier (stdev < ATR × 1.0) finally drops off, a tiny ♦ diamond paints at the midline in the theme's vivid release accent — one step brighter and more saturated than the tight tier so the climax moment reads as the most luminous point in the squeeze cycle.
This is the canonical "spring uncoiled" moment: compression has fully ended, volatility expansion begins, breakout direction is about to reveal itself. Historically the highest-conviction breakout setup the squeeze model produces. Hovering on the marker surfaces:
- Current bar state (compression ended this bar)
- Meaning (volatility expansion incoming)
- Next steps (watch the next 1–5 bars, confirm with Momentum slope, cross-check Flux, prioritise MTF-aligned setups)
🟦 CONFLUENCE GAUGES
Two horizontal strips render at the top (Bull side, +70 to +75) and bottom (Bear side, −70 to −75) of the pane. Each strip lights up when momentum and flux agree on direction, with brightness reflecting the confluence tier:
| State | Condition | Opacity |
|---|---|---|
| Strong Bull | mom > 0 AND flux > 0 | Full |
| Weak Bull | mom > 0 OR flux > 0 | Half |
| Strong Bear | mom < 0 AND flux < 0 | Full |
| Weak Bear | mom < 0 OR flux < 0 | Half |
| Neutral | Neither side dominates | Transparent |
The display mode (Both / Bull / Bear / None) lets traders mute one half if they only trade one direction.
**Confluence Buy / Sell Triangles**
A separate signal layer rides outside the gauges. The detector fires only when momentum crosses its signal line WHILE in the opposite zone past the Signal Threshold AND with flux in the opposite direction (classic mean-reversion logic):
- **Buy ▲** (below bear gauge at −90) — `xMomUp AND momVal < −threshold AND fluxVal < 0`
- **Sell ▼** (above bull gauge at +85) — `xMomDn AND momVal > +threshold AND fluxVal > 0`
Each triangle pairs with an invisible label carrying a tooltip that lists current mom, signal, flux, the active threshold, and a one-line interpretation of the trigger. The Signal Threshold (default 40) is independent of the Divergence Sensitivity setting — the two engines need different thresholds (divergence wants permissive at 25 for pivot detection, confluence wants strict at 40 for deep mean-reversion triggers).
🟦 DIVERGENCE DETECTION
A cross-confirmed, dual-anchor detector that fires on signal-line crossovers (NOT on Pine pivots). Regular divergences signal exhaustion reversals, Hidden divergences signal trend continuation.
**Four divergence types:**
| Type | Price | Momentum | Signal |
|---|---|---|---|
| Regular Bull (D▲) | Lower Low | Higher Low | Potential reversal up |
| Regular Bear (D▼) | Higher High | Lower High | Potential reversal down |
| Hidden Bull (H▲) | Higher Low | Lower Low | Uptrend continuation |
| Hidden Bear (H▼) | Lower High | Higher High | Downtrend continuation |
Regular divergence uses solid lines; Hidden uses dashed lines — visually quieter to match the continuation signal's lower conviction tier. Labels (D▲ / D▼ / H▲ / H▼) each carry a tooltip-rich hover with price + momentum + meaning context.
**Dual-Anchor Logic**
The key engineering choice. Regular and Hidden divergences each maintain their own separate anchor pair:
- **Regular anchors** — stored only at extreme-zone crosses (|mom| > Sensitivity). Catches classical exhaustion reversals at deep extremes.
- **Hidden anchors** — stored at ANY signal-line cross, regardless of zone. Shallow pullbacks inside an established trend rarely push momentum past ±Sensitivity, so the Hidden detector must accept every cross to capture the classical "price HL + mom LL" / "price LH + mom HH" continuation pattern.
A detected divergence consumes its anchor (resets to na) so the next setup starts fresh.
**Smart Divergence Filter (AI)**
Optional pre-filter that rejects low-quality divergences before they render. Three independent gates:
1. **Min Momentum Swing** — minimum |momentum| difference between the two pivot momentum values (default: 10 units). Drops noise-level differences.
2. **Min Price Swing (%)** — minimum price swing between pivots as a percentage of the recent `Momentum Length × 4` high-low range (default: 0.3%). Drops divergences where price barely moved relative to recent volatility.
3. **Require Flux Confirmation** — Flux must agree with the divergence direction at the moment of detection (Bull div needs Flux > 0, Bear div needs Flux < 0). Filters out divergences that fire counter to the broader directional bias.
When the master toggle is OFF (default), all detected divergences render. When ON, only divergences that clear all three gates survive. The filter applies identically to chart rendering and alert conditions — no mismatch between visual and alert signals.
🟦 COMPOSITE TS SCORE (0–100)
A weighted blend of every analytical layer into a single RSI-style 0–100 reading. 50 is neutral, > 50 leans bull, < 50 leans bear.
| Component | Weight | Mapping |
|---|---|---|
| Momentum | 30% | mom value mapped from −100..+100 → 0..100 |
| Flux | 30% | flux value mapped the same way |
| Mom × Signal | 15% | 70 if mom > sig, else 30 (slope direction confirmation) |
| Confluence | 25% | 90 strong-bull / 65 weak-bull / 50 neutral / 35 weak-bear / 10 strong-bear |
The score is rounded to the nearest integer and labelled into five tiers in the dashboard: STRONG BULL (≥75) / BULL (≥60) / NEUTRAL (40–59) / BEAR (≥25) / STRONG BEAR (<25), each prefixed with a directional glyph (▲ ▼ ■). The tier label gives traders an executive summary at a glance — one row in the dashboard tells you what every other row collectively says.
🟦 MULTI-TIMEFRAME CONFLUENCE
A separate PRO panel that runs the full Momentum + Flux + Confluence stack on four higher timeframes simultaneously via `request.security()` and surfaces the overall alignment state. All MTF calls use `lookahead = barmerge.lookahead_off` — fully repaint-safe on every closed bar.
**Six Presets**
Pre-tuned four-timeframe packs matched to common trader profiles:
| Preset | TF 1 | TF 2 | TF 3 | TF 4 | Use case |
|---|---|---|---|---|---|
| Scalp | 1m | 5m | 15m | 1h | Fast scalper |
| Intraday | 5m | 15m | 1h | 4h | Day trader |
| Swing | 15m | 1h | 4h | 1D | Default — swing trader |
| Position | 1h | 4h | 1D | 1W | Position trader |
| Crypto | 5m | 15m | 1h | 4h | 24/7 markets |
| Forex | 15m | 1h | 4h | 1D | Session-based markets |
**Alignment Detection**
Each TF returns a bias tag (▲ STRONG / ▲ WEAK / ▼ STRONG / ▼ WEAK / ◈ NEUTRAL) and a direction code (+1 / 0 / −1). The header rolls up the four codes into one of three states:
- **▲▲▲▲ ALIGNED** — all four TFs bullish (highest-conviction long setup)
- **▼▼▼▼ ALIGNED** — all four TFs bearish (highest-conviction short setup)
- **◈ MIXED** — TFs disagree (no clean direction)
**Divergence Detection**
When the current chart's bias contradicts ≥ 3 of the 4 HTF biases (e.g., chart bullish but 3+ HTFs bearish), an MTF Divergence flag fires — a contrarian / counter-trend warning. Treat as a "current move may be a bull / bear trap" signal.
**Panel Style**
Direction is conveyed purely by the ▲ / ▼ glyphs in each row's tag — never by cell colour. Every cell uses a uniform `thBull` text colour matching the main Dashboard, so the two panels feel like one product across all twelve themes, light and dark alike.
🟦 BAR COLORING
Five mutually exclusive modes apply an oscillator-driven colour to every price bar on the chart:
| Mode | Behavior |
|---|---|
| None | Leave bars untouched (default) |
| Momentum | Bull when mom > 0, bear when mom < 0 |
| Flux | Bull when flux > 0, bear when flux < 0 |
| Squeeze | Theme-native ramp when compressed, neutral otherwise |
| Confluence | Strong / Weak / Neutral tiers via mom + flux agreement |
| Slope | Bull when mom > signal, bear when mom < signal |
Colours are pulled from the active theme — no per-mode color picker needed.
🟦 DASHBOARD
A compact 2-column, 8-row data panel renders on the last bar when enabled. Every value derives from variables already computed upstream, so the dashboard adds zero overhead until the final bar.
| Row | Left | Right |
|---|---|---|
| Header | Artemis Squeeze | ▲ STRONG BULL / ▲ WEAK BULL / ■ NEUTRAL / ▼ WEAK BEAR / ▼ STRONG BEAR |
| TS Score | TS Score | 0–100 composite + tier label (STRONG BULL / BULL / NEUTRAL / BEAR / STRONG BEAR) |
| Momentum | Momentum | Current value + trend arrow (▲ ▼ ■) |
| Flux | Flux | Current value + trend arrow (▲ ▼ ■) |
| Squeeze | Squeeze | TIGHT / MID / LOOSE / — |
| Confluence | Confluence | STRONG BULL / WEAK BULL / NONE / WEAK BEAR / STRONG BEAR |
| Div | Div | Most recent divergence within last 50 bars (▲ REG / ▼ REG / ▲ HID / ▼ HID / —) |
| Slope | Slope | ▲ UP / ▼ DOWN / ■ FLAT |
**Theme-Adaptive Chrome**
The dashboard auto-inverts its layout based on the active theme:
- **Dark themes** (Tropic, Amber, Pastel, Cyber, Helios, Electric, Candy, Bloomberg, Solar, Royal): header and footer use a faint `thBull` tint, middle rows stay solid dark, text uses full-saturation `thBull`. Border uses `thBull` at 20% transparency for strong theme presence.
- **Light themes** (Midnight, Graphite): backgrounds flip to white, text stays `thBull` (which is itself dark on these themes), border uses `thBull` at 40% transparency.
This guarantees text legibility against every palette without per-theme manual tuning. The MTF Confluence panel uses identical chrome rules so the two panels feel like one product.
**Position & Size**
Six anchor slots (Top / Middle / Bottom × Left / Right) and four text sizes (Tiny / Small / Normal / Large). The Dashboard defaults to Bottom Right and the MTF panel to Top Right — vertically opposite so the two never overlap.
🟦 COLOR THEMES
Twelve cohesive palettes, each resolving to four axis colours plus a four-step squeeze ramp:
| Theme | Character | Bull | Bear |
|---|---|---|---|
| Tropic | Cyan steel + deep orange | #00bcd4 | #ff6d00 |
| Amber | Warm amber + ember red | #ff9800 | #e53935 |
| Pastel | Sky blue + soft lavender | #4fc3f7 | #9575cd |
| Cyber | Neon lime + hot crimson | #00e676 | #ff1744 |
| Helios | Bright gold + scarlet | #ffd600 | #ef5350 |
| Electric | Electric aqua + magenta | #00e5ff | #e040fb |
| Candy | Neon green + hot pink | #69F0AE | #FF4081 |
| Bloomberg | Terminal orange + cyan | #ff8c00 | #00b0ff |
| Solar | Solarized olive + crimson | #859900 | #dc322f |
| Royal | Imperial gold + deep purple | #ffd700 | #6a0dad |
| Midnight | Deep navy + dark crimson | #0d47a1 | #b71c1c |
| Graphite | Near-black + silver grey | #1a1a1a | #757575 |
Beyond the four axis colours (bull / bear / neutral / signal), each theme also defines its own four-step squeeze ramp (tight / mid / loose / release) drawn from its own colour family — so the squeeze column and the ♦ release marker harmonise with the active theme rather than imposing a generic warning hue. Nothing below the theme resolver block references a raw hex literal, so a single dropdown selection drives every plot, fill, gauge, divergence line, dashboard cell, MTF panel and bar colour.
🟦 ALERT SYSTEM
Twenty-two alert conditions, all using `alert.freq_once_per_bar_close`. Each alert is gated by its own toggle in the Alerts group — hiding a feature on the chart silences its alerts automatically.
| Alert | Condition |
|---|---|
| Confluence Buy | Mom crossed UP through signal while below −Threshold AND Flux bearish |
| Confluence Sell | Mom crossed DOWN through signal while above +Threshold AND Flux bullish |
| Momentum Cross Up | Mom crossed above zero |
| Momentum Cross Down | Mom crossed below zero |
| Flux Cross Up | Flux crossed above zero |
| Flux Cross Down | Flux crossed below zero |
| Bullish Swing | Mom × signal upward cross (any zone) |
| Bearish Swing | Mom × signal downward cross (any zone) |
| Strong Bull Confluence | Mom AND flux both turned bullish |
| Strong Bear Confluence | Mom AND flux both turned bearish |
| Weak Bull Confluence | Mom OR flux turned bullish |
| Weak Bear Confluence | Mom OR flux turned bearish |
| Tight Squeeze | stdev < ATR × 0.5 |
| Mid Squeeze | stdev < ATR × 0.75 |
| Loose Squeeze | stdev < ATR × 1.0 |
| Regular Divergence | D▲ or D▼ detected (respects Smart Filter) |
| Hidden Divergence | H▲ or H▼ detected (respects Smart Filter) |
| Squeeze Release ♦ | stdev re-expanded above ATR × 1.0 |
| MTF Aligned | All four MTF timeframes agree on direction |
| MTF Divergence | Current chart bias contradicts ≥ 3 of 4 HTF biases |
Each alert fires through `alert()` so the message body carries live context — direction, current values, the trigger condition, and a one-line interpretation. Divergence alerts respect the Smart Filter — if the filter is ON and a divergence is rejected visually, the alert will also not fire.
🟦 SETTINGS REFERENCE
**Visual**
- Theme — 12 cohesive palettes. Default: Tropic
**Bar Coloring**
- Bar Color Mode — None / Momentum / Flux / Squeeze / Confluence / Slope. Default: None
**Momentum Core**
- Length — Lookback for both the Momentum engine and the Squeeze window. Range 7–50. Default: 20
- Signal Length — SMA smoothing for the signal line. Range 2–7. Default: 3
- Show Momentum — Toggle. Default: ON
**Directional Flux**
- Length — Lookback for the Flux engine. Range 7–50. Default: 30
- Use Heiken Ashi Bias — Toggle. Default: OFF
- Show Flux — Toggle. Default: ON
**Squeeze Engine**
- Show Squeeze — Toggle. Default: ON
- Show Squeeze Release — Toggle for the ♦ marker. Default: ON
**Confluence Gauges**
- Display Mode — Both / Bull / Bear / None. Default: Both
- Signal Threshold — |momentum| floor for Buy ▲ / Sell ▼ arrows. Range 10–80. Default: 40
**Divergence**
- Sensitivity — |momentum| floor for Regular div detection. Range 10–50. Default: 25
- Regular Divergence — Toggle. Default: ON
- Hidden Divergence — Toggle. Default: ON
- Show Divergence Lines — Toggle. Default: ON
- Show Divergence Labels — Toggle. Default: ON
- Label Size — Tiny / Small / Normal / Large. Default: Tiny
- Smart Divergence Filter (AI) — Master toggle. Default: OFF
- Min Momentum Swing — Default: 10.0
- Min Price Swing (%) — Default: 0.3%
- Require Flux Confirmation — Default: ON
**Multi-Timeframe**
- Show MTF Panel — Toggle. Default: ON
- Timeframe Preset — Scalp / Intraday / Swing / Position / Crypto / Forex. Default: Swing
- Panel Position — 6 anchor slots. Default: Top Right
- Panel Text Size — Tiny / Small / Normal / Large. Default: Small
**Dashboard**
- Show Dashboard — Toggle. Default: ON
- Panel Position — 6 anchor slots. Default: Bottom Right
- Panel Text Size — Tiny / Small / Normal / Large. Default: Small
**Alerts**
- 20 toggles covering all 22 alert conditions (Regular and Hidden divergence each drive two alerts — bull + bear — from one toggle).
- Defaults ON: Confluence Buy/Sell, Mom Cross Up/Dn, Flux Cross Up/Dn, Strong Bull/Bear Confluence, Tight Squeeze, Regular Divergence, Squeeze Release, MTF Aligned.
- Defaults OFF: Swings, Weak Confluences, Mid/Loose Squeeze, Hidden Divergence, MTF Divergence.
🟦 COMPATIBILITY
Works on all asset classes and all timeframes in PulseWire Pine Script v6.
- Crypto: Spot, futures, perpetual contracts
- Forex: All pairs
- Equities: Stocks, ETFs, indices
- Commodities: Metals, energy, agriculture
- Timeframes: 1m through Monthly
The channel-aware ATR normalization in the Momentum engine, the ATR-normalized Flux ratio, and the stdev / ATR squeeze tests make every layer volatility-agnostic. The same default settings work on a 1m BTC chart and a weekly index chart without retuning. The MTF presets cover the common scalp / intraday / swing / position profiles plus dedicated Crypto and Forex packs.
🟦 DISCLAIMER
This indicator is provided for educational and informational purposes only. It does not constitute financial advice. Past performance does not guarantee future results. Always conduct your own analysis and apply proper risk management. Indicator

Iridescent Helix [JOAT]Iridescent Helix
Iridescent Helix is a composite momentum oscillator that lives in a sub-pane and projects cross-pane visuals onto the price chart. The composite blends three orthogonal momentum legs into a single normalized score in the range -100 to +100. Above the math, it adds a layered iridescent ribbon, a breath-opacity histogram, gradient overbought / oversold zones, cross-pane iridescent candle recoloring, and an in-pane pivot divergence engine.
What makes it different
The composite blends three independent momentum lenses: a volume-weighted-median price distance, a Connors-style triple RSI, and a clamped volume Z-score. Smoothed with a Hull Moving Average to reduce phase lag while preserving sensitivity.
The visual stack uses seven plot layers per direction, hue-rotated through the bull or bear accent gradient, each layer at a different transparency and linewidth, producing a depth effect that single-color ribbons cannot match.
A breath-opacity histogram fades columns when momentum is decelerating and brightens them when momentum is accelerating, giving an at-a-glance read of momentum derivative.
An in-pane pivot divergence engine detects regular and hidden divergences and projects both as in-pane markers and as price-to-price connector lines on the price chart.
How it works
Volume-weighted median over a rolling window. Sort close prices ascending, accumulate volumes in that order. The price at which cumulative volume crosses half of total volume is the weighted median.
Composite equals 0.50 times the normalized distance from the volume-weighted median, plus 0.35 times the normalized Connors RSI, plus 0.15 times the clamped volume Z.
Hull-smoothed and scaled to centi-percent, clamped to the range -100 to +100. EMA(21) signal line drawn alongside.
Pivot divergence detection compares price pivots against composite pivots, gated to a 5-to-60-bar window between successive pivots.
Right-edge labels in the pane (composite, signal, volume Z) and on the price chart (cross-pane regime status).
Reading the chart
In-pane : seven-layer iridescent ribbon, breath-opacity histogram, volume-modulated zero line, overbought / oversold guide lines with gradient fills when the composite breaches them, composite-to-signal ribbon fill.
Cross-pane : iridescent candle recolor on price, divergence connector lines between price pivots, subtle reversal dots at extreme reversal closes, soft regime tint background when the composite is clearly above or below zero.
Right-edge label cluster : the pane shows current composite (with percentile rank), signal line, and volume Z. The price chart shows a single IRH summary label with composite value, percentile, and regime tag.
A right-edge state block lists current regime, zone (overbought, oversold, neutral), and bars since the last zero cross.
Signals
Bull / bear zero cross (composite re-crosses zero)
Overbought / oversold reversal (composite crosses back from an extreme)
Volume surge (volume Z above two)
Momentum acceleration / deceleration above a user-tunable threshold
Regular and hidden divergence detection (bull / bear pairs)
All gated on barstate.isconfirmed or barstate.ishistory. No future references. No lookahead_on.
Inputs
Composite : VW median length, volume Z length, overbought / oversold levels, divergence lookback, percentile envelope length.
Visual : bullish / bearish / accent / magenta colors, toggles for ribbon, histogram, iridescent candles, cross-pane reversal dots, divergence dots, percentile envelope, cross-pane regime tint.
Labels : pane right-edge cluster, pane state block, cross-pane IRH label, divergence lines, divergence labels, OB/OS event labels, zero-cross events, acceleration events.
Dashboard : position, size.
Alerts : acceleration magnitude threshold.
How traders use this
Trend continuation : open positions in the direction of the composite when it crosses zero from the appropriate side and the volume Z confirms.
Reversion plays : take fades when the composite reaches an extreme zone and momentum begins decelerating (histogram fades), particularly when supported by a regular divergence connector on the price chart.
Hidden divergence : in a clear trend, a hidden divergence is a continuation signal and can be used to add to existing positions on a pullback.
Cross-system confirmation : feed the composite into other JOAT scripts (for example Position Architect) as a signal source by connecting plots in the chart UI.
Limitations
The composite is a normalized smoothed reading, not a leading indicator. It quantifies present momentum strength and direction rather than predicting future direction.
Connors RSI and volume Z need warm-up bars before they stabilize.
Pivot divergence detection inherits the right-bar delay of pivot identification (the pivot is only confirmed several bars after the actual extreme).
HMA smoothing introduces a few bars of warm-up where the composite is unavailable.
Compatibility
Pine Script v6 open-source indicator (pane). Any symbol, any timeframe. Cross-pane elements use force_overlay=true. No request.security calls. Non-repainting (divergence pivots are confirmed-bar gated).
Defaults
Mint and red defaults, plus cyan (bull accent) and magenta (bear accent) hue-rotation targets. Top-right medium dashboard. All visualizations on. For fast intraday work, shorten the VW median length and the divergence lookback.
Indicator

MTF RSI Synchrony | Rainbow MatrixGENERAL OVERVIEW
The MTF RSI Synchrony is a multi-timeframe RSI fusion oscillator that aggregates five independent RSI readings — one per Fibonacci-spaced timeframe — into a single weighted Master Line. Each per-timeframe RSI is also plotted as a "ghost line" that fades by distance to the Master: when the five timeframes align, the rainbow renders solid; when they diverge, the ghost lines spread visibly across the pane, making synchrony itself a visible density property rather than a number to compute.
The main goal of this indicator is to give traders a single integrated read of RSI across multiple horizons — without flipping between charts, mentally averaging values, or guessing which timeframe's RSI matters at the current decision point. Every line, color, and divergence event on the pane was derived from real RSI calculations on each native timeframe, not approximated from the current chart's resolution.
It computes the Master Line from five timeframes via Fibonacci-proportioned weights (peak weight on the macro middle TFs), classifies the result through an adaptive Fibonacci channel that builds Z-Breathing / Z-Alert / Z-Exhaustion / Black Swan zones around the Master, and runs a classic price↔RSI divergence engine on each of the 5 TFs plus the Master line independently. A 5-column MTF Legend Table surfaces every TF's state at a glance, with an antenna marker (📡) flagging the row whose timeframe matches the chart's native resolution.
This indicator was developed for traders who already understand RSI and divergence concepts and want to see them across multiple timeframes in a single visual, with automatic synchrony detection and an integrated classic divergence layer.
WHAT IS THE THEORY BEHIND THIS INDICATOR?
Most RSI implementations on PulseWire operate on a single timeframe. They show you a value between 0 and 100 for the current chart and leave the multi-timeframe assessment to manual work — flipping between charts, sketching trendlines, or stacking multiple instances of the indicator on different intervals. This treats each timeframe as an isolated decision space.
The problem: institutional momentum is not isolated to one timeframe. The participants operating on the daily horizon see different RSI conditions than those operating on the weekly or 4-hour horizon. When the 15-minute RSI flips above 70 but the daily RSI is still neutral, the overbought signal is local — likely a counter-trend bounce. When the 15-minute RSI flips above 70 and the daily RSI also approaches the upper zone, the overbought signal is structurally agreed across horizons — far more likely to mark a multi-horizon exhaustion.
This indicator addresses that by extracting RSI from five user-configured timeframes simultaneously via request.security, fusing them via canonical Fibonacci weights (peak weight on the macro middle TFs), and rendering both the integrated Master signal and each contributing TF's individual reading on the same pane. The math of the per-TF extraction is standard RSI on the native bars — what makes it useful is doing it across five timeframes at once, weighting them by structural significance, and surfacing both the alignment and the per-TF divergences in a single visual.
The classic divergence layer addresses a parallel problem: textbook regular divergence (price↔RSI on the same timeframe) is a well-known reversal cue, but traders typically watch it on one timeframe at a time. By running pivot-based divergence detection independently on each of the 5 TFs and on the Master line, the indicator surfaces local divergences (on fast TFs — often noise) versus structural divergences (on slow TFs — often precede major reversals) in the same table view, with the Master line acting as the integrated read drawn directly on the chart.
MTF RSI SYNCHRONY FEATURES
The indicator includes 7 main features:
◇ Multi-Timeframe RSI Fusion Engine
◇ Adaptive Fibonacci Channel (Master Volatility Envelope)
◇ Hybrid Black Swan Zone (static or dynamic)
◇ Classic Divergence Detection Engine (per-TF + Master)
◇ MTF Legend Table with antenna marker
◇ Per-Timeframe RSI Length Customization
◇ Multilingual interface (5 languages) and full visual customization
MULTI-TIMEFRAME RSI FUSION ENGINE
🔹 What It Does
The core of the indicator. For each of the five configured timeframes, an independent RSI reading is extracted at its native resolution. The five readings are then fused into a single Master Line via canonical Fibonacci-proportioned weights.
🔹 Method
The extraction runs via request.security with lookahead=barmerge.lookahead_off to prevent repainting. Per-timeframe RSI uses Wilder's standard formulation. The Master is computed as a weighted average with the following Fibonacci weights:
◇ TF1 (Trigger, default 5m): 0.15
◇ TF2 (Intraday, default 15m): 0.20
◇ TF3 (Macro 1, default 60m): 0.25 (peak weight)
◇ TF4 (Macro 2, default 240m): 0.25 (peak weight)
◇ TF5 (Base, default Daily): 0.15
The peak weight sits on the macro middle TFs (TF3 + TF4), where institutional decisions consolidate. The Master is clamped to the 0–100 RSI range.
🔹 Ghost Line Rendering
Each per-timeframe RSI is plotted as a ghost line with transparency inversely proportional to its absolute distance from the Master. The fade sensitivity is configurable (default 3.5): at distance 0 the line is solid (transparency 20), at ~20 RSI points away it becomes effectively invisible. Synchrony emerges as a visible density property — when the five lines collapse toward the Master, the rainbow is solid; when they spread, the pane fills with translucent ghosts.
ADAPTIVE FIBONACCI CHANNEL
🔹 What It Does
The Master Line is wrapped in an adaptive volatility channel built from its own highest/lowest over a configurable lookback (default 50), EMA-smoothed (default 10). From the channel envelope, four Fibonacci-proportioned zones are derived above and below the channel midpoint:
◇ Z-Breathing (1.50σ proportion) — yellow (high) / green (low)
◇ Z-Alert (1.85σ anchor) — orange (high) / teal (low)
◇ Z-Exhaustion (2.75σ proportion) — red (high) / blue (low)
◇ Black Swan (3.85σ proportion) — purple (high) / aqua (low)
🔹 Why It Matters
The 30/50/70 lines of classic RSI are static — they don't adapt to the volatility regime of the current instrument or timeframe. The Fibonacci channel does. In a low-volatility regime, the Z-Exhaustion zone tightens and the script flags exhaustion at lower thresholds; in a high-volatility regime, the channel widens and only genuine outliers reach the extreme zones. The Master's position within the channel — color-coded continuously — is a regime-aware read on momentum saturation that the fixed 30/70 lines cannot provide.
HYBRID BLACK SWAN ZONE
🔹 What It Does
The Black Swan threshold operates in hybrid mode:
◇ OFF (default): classic 80/20 RSI extremes — the conventional Wilder oversold/overbought boundaries.
◇ ON: dynamic Fibonacci 3.85σ proportion of the Master channel — adapts to current volatility.
🔹 Method
When dynamic mode is enabled, the Black Swan High becomes osc_up4 = dyn_mid + (dist_up × 3.85/1.85), and the Low becomes dyn_mid − (dist_dn × 3.85/1.85). Both are clamped to . The threshold breathes with the channel — wider in volatile regimes, tighter in calm ones.
🔹 Visual Design
Black Swan zones render as a line + proximity-based glow only — NO fill is drawn underneath, by design. This is a hard rule of the indicator's visual grammar: every other zone (Breathing, Alert, Exhaustion) has a fill; Black Swan is line + glow only, making the extreme zone visually distinct from the gradient zones below it.
CLASSIC DIVERGENCE DETECTION ENGINE
🔹 What It Does
Regular divergence (price↔RSI on the same timeframe) is detected independently on each of the 5 timeframes and on the Master line:
◇ Bear divergence (top): price made higher high + RSI made lower high — momentum failing to confirm the new price peak; exhaustion warning.
◇ Bull divergence (bottom): price made lower low + RSI made higher low — momentum failing to confirm the new price trough; accumulation signal.
🔹 Method
Pivot detection runs via ta.pivothigh and ta.pivotlow with a configurable lookback (default 5 bars before and after). For each timeframe, the previous pivot and current pivot are compared on both price and RSI. A divergence is flagged when price and RSI move in opposite directions across the two pivots, gated by na guards to handle cold-start conditions.
🔹 Two Layers of Output
The detection produces two complementary outputs:
◇ Per-TF divergence flags are rendered in the Legend Table 'Div' column (🔺 bull / 🔻 bear / — none, color-coded). This gives granular per-horizon insight: which exact timeframe is showing divergence right now.
◇ Master divergence — the integrated MTF signal — is additionally drawn on the indicator pane as a line connecting the two pivots, with a "🔺 Bull Div Master" or "🔻 Bear Div Master" label at the second pivot. An alert is available (toggleable, ON by default).
🔹 Why Two Layers
Per-TF divergences answer "where is the divergence forming?" — fast TFs (TF1, TF2) often catch local noise; slow TFs (TF4, TF5) catch structurally significant turns. Master divergence answers "is the integrated MTF view showing exhaustion?" — Master fuses all five TFs into one signal weighted by significance, so its divergence is the consolidated read. The strongest setups occur when both layers agree: Master divergence drawn on the chart + multiple Legend Table 'Div' cells lighting up in the same direction.
MTF LEGEND TABLE
🔹 What It Shows
A compact 5-column table renders inside the indicator pane (force_overlay=false for mobile readability), with 8 rows:
◇ Row 0: title header (multilingual)
◇ Rows 1–5: per-timeframe data — color-coded RSI value, timeframe resolution, trend arrow (▲ rising / ▼ falling / ▬ flat with ±0.5 RSI point deadzone to avoid flicker), and classic divergence cell (🔺/🔻/—)
◇ Row 6: Master row — displays "🌈 Master (~XhYm)" where XhYm is the geometric weighted mean of the 5 active timeframes (e.g. ~1h11m for the default 5/15/60/240/D set), with the Master's RSI value, trend arrow, and divergence state
◇ Row 7: MTF Divergence status row — tracks RSI alignment between TF1 and TF5
🔹 Antenna Marker
An antenna marker (📡) appears at the end of the timeframe label on the row whose timeframe matches the chart's native resolution. Start the read at the antenna row — that's your chart's RSI — then scan up to faster TFs and down to slower TFs to see whether they confirm or contradict the current read.
🔹 MTF Divergence Status Row (TF1 ↔ TF5)
Separate from the classic per-TF divergence: the status row at the bottom tracks RSI alignment between the fastest and slowest configured timeframes:
◇ Aligned (TF1 and TF5 in the same zone): trend continuation, no MTF divergence.
◇ Strong Divergence (TF1 ≥ 70 vs TF5 ≤ 30, or mirrored): fast and slow timeframes telling completely opposite stories. Common at major turning points.
◇ Moderate Divergence (TF1 ≥ 65 vs TF5 ≤ 40, or mirrored): partial misalignment between fast and slow.
PER-TIMEFRAME RSI LENGTH CUSTOMIZATION
🔹 What It Does
RSI period defaults to 14 globally — Wilder's canonical setting. Each of the 5 timeframes has an optional length override: zero means inherit the global default, any positive integer means use that period for that timeframe only.
🔹 Why It Helps
Real-world strategies often want different RSI sensitivities at different horizons. Scalpers use 7-9 on the trigger TF for fast signals while keeping 14 on slower TFs for stability. Swing traders use 14-21 on intraday TFs and 21+ on the daily for smoother reads. Connors-style strategies use 2 on the trigger for mean-reversion. The hybrid pattern keeps the settings panel clean for casual users (one input controls all) while letting power users specialize per TF when needed.
MULTILINGUAL INTERFACE
The indicator supports five languages for the HUD display, Legend Table headers, and alert messages: English (default), Português, Español, Русский, and 中文 (Chinese). Code, comments, and configuration tooltips remain in English regardless of the selected language. Tech abbreviations (RSI, MTF, HTF, TF) stay Latin in all language contexts — they are universally recognized in trading and translation would add noise.
For reference, the multilingual coverage includes:
◇ HUD title and all row labels
◇ Trend arrows (universal: ▲▼▬)
◇ Divergence cells (universal: 🔺🔻—)
◇ MTF Divergence status row (Aligned / Strong / Moderate, with Top/Bottom directional labeling)
◇ All alert messages including the new classic divergence alerts
HOW TO USE
This indicator is not a signal generator. It is a structural map: it tells you where RSI sits across multiple horizons, how aligned (or divergent) those horizons are, and where classic price↔RSI divergence is forming.
🔹 Reading the Rainbow
◇ Solid rainbow + Master near equilibrium (30–70 zone): no clear signal. Trending behavior absent.
◇ Solid rainbow + Master in Z-Alert (orange/teal): trend in motion across all horizons. Look for follow-through confirmation.
◇ Solid rainbow + Master in Z-Exhaustion (red/blue): elevated probability of mean reversion. Multiple horizons agreeing on saturation.
◇ Master touches Black Swan (purple/aqua glow): statistically rare overshoot. High-probability reversal setup, especially when the MTF Divergence row also fires Strong.
◇ Ghost lines visibly spread far from Master: synchrony breakdown. Wait for re-convergence before high-conviction entries.
🔹 Reading the Legend Table
◇ Antenna row (📡): your chart's native TF. Start there.
◇ Scan above the antenna: faster TFs. If they're in extremes opposite to the antenna, the local signal is conflicted.
◇ Scan below the antenna: slower TFs. If they're aligned with the antenna, the structural bias confirms.
◇ Master row: the integrated read. The "~XhYm" label tells you where Master sits in the TF spectrum.
🔹 Reading the Classic Divergence Layer
◇ Single TF lit up (e.g. only TF2 shows 🔻): local divergence. Often noise on fast TFs.
◇ Multiple TFs lit up in the same direction: structurally significant. Confluence of divergence across horizons.
◇ Master divergence drawn on chart + 2 or more TFs in same direction: high-conviction reversal setup. The strongest signal this indicator produces.
◇ Divergence appearing on slow TFs (TF4 / TF5) while fast TFs are quiet: often precedes major reversals — slow-horizon participants are pulling away before fast-horizon ones notice.
🔹 Tactical Reading
◇ Master in Z-Alert + MTF status Aligned: with-trend continuation setup.
◇ Master in Z-Exhaustion + Bear Div drawn on chart + 2 TFs 🔻: short setup with multi-horizon confirmation.
◇ Master at Black Swan Low + Bull Div drawn on chart + Strong MTF Divergence (TF1 ≤ 30 vs TF5 ≥ 70 mirrored): rare confluence of multiple exhaustion signals.
INPUTS EXPLAINED
🔹 System Language
Display language for the HUD and alert messages. Options: English (default), Português, Español, Русский, 中文 (Chinese).
🔹 Multi-Timeframe (TF1 to TF5)
Configure each of the five timeframes to scan. Defaults: 5m / 15m / 60m / 240m / Daily. Plus AI Auto-Sync option that adjusts the 5 TFs based on chart resolution.
🔹 Default RSI Length + 5 Per-TF Overrides
Default 14 applied globally; per-TF override is 0 by default (inherit). Set override > 0 to specialize per TF.
🔹 Dynamic Black Swan Mode
OFF (default): static 80/20 thresholds. ON: dynamic Fibonacci 3.85σ proportion of the Master channel.
🔹 Dynamic Channel Lookback + Smoothing
Lookback for highest/lowest of Master (default 50). EMA smoothing applied to the channel envelope (default 10).
🔹 Divergence Pivot Lookback
Lookback (bars before/after) for the classic divergence pivot detection. Default 5 — matches most community divergence indicators.
🔹 TF Colors + Show/Hide Toggles
Color and visibility for each of the 5 ghost lines. Hiding a TF does NOT remove it from the Master fusion — the calculation continues; visibility is purely visual.
🔹 Ghost Fade Sensitivity
Higher = ghost lines fade more aggressively as they diverge from the Master. Default 3.5 (invisible at ~20 RSI points apart).
🔹 Show Master Line / Fills / Black Swan / Channel / Legend Table / Static Levels / Div Column / Div Chart Line
Independent toggles for each visual layer.
🔹 Legend Table Position + Font Sizes
Position of the table (four corners) and separate font sizes for data rows and label rows.
🔹 Alert Toggles
Master crosses Black Swan High / Low — fires when Master crosses the threshold.
Strong MTF Divergence — fires when TF1 vs TF5 enter opposite extremes.
Master enters Z-Exhaustion — fires when Master enters the red/blue zone (OFF by default to avoid overlap with Black Swan alerts).
Master Classic Divergence — fires when classic bear or bull divergence is detected on the Master line (ON by default).
IMPORTANT NOTES
The MTF RSI Synchrony works on any timeframe. The default radar configuration (5m/15m/60m/240m/D) is calibrated for intraday and swing trading on liquid instruments. For position trading or scalping, the radar timeframes can be reconfigured to scan longer or shorter horizons respectively, or AI Auto-Sync can be enabled to let the engine pick automatically.
The script makes 10 request.security calls in total (5 for the RSI extraction + 5 for the per-TF divergence detection). On low-volatility chart resolutions or weaker hardware, chart load may take a moment longer than for a single-TF RSI; this is expected and normal.
Alerts fire once per confirmed bar (alert.freq_once_per_bar + barstate.isconfirmed gating). Historical bars never repaint after they close. The live bar updates intra-bar as expected for a real-time indicator.
The Fibonacci channel calibration (ratios 1.50 / 1.85 / 2.75 / 3.85) is the canonical Rainbow Matrix ratio set, also used in other portfolio scripts for consistency.
Pine Script v6. Open-source under Mozilla Public License 2.0.
UNIQUENESS
The MTF RSI Synchrony is unique in three ways. First, it performs RSI extraction across five timeframes simultaneously via request.security with Fibonacci-proportioned weights — the integrated Master Line is not a smoothed version of one TF but a true weighted fusion of five independent RSIs, with peak weight on the macro middle TFs where institutional decisions consolidate. Second, the per-timeframe RSIs are rendered as fade-by-distance ghost lines around the Master, transforming synchrony itself into a visible density property — when the timeframes align the rainbow is solid, when they diverge the ghost lines spread visibly across the pane, without requiring the trader to read numbers. Third, the classic divergence detection runs in parallel on each of the 5 timeframes plus the Master line, producing two complementary outputs: a per-TF Legend Table column for granular per-horizon insight and a Master-line chart visual (line connecting pivots + label) for the integrated MTF signal. The combination of weighted multi-timeframe fusion, density-based synchrony visualization, and two-layer divergence detection produces a structural map of RSI behavior that single-timeframe RSI indicators cannot provide — particularly at decision points where multiple horizons converge or where slow-horizon divergences emerge before they reach fast-horizon attention. Indicator

Crypto Ultimate Indicator v2═══════════════════════════════════════════════
CRYPTO ULTIMATE INDICATOR (CUI)
═══════════════════════════════════════════════
A multi-layer confluence system for crypto traders. Stacks 12+ independent technical layers — trend, momentum, volume, regime, multi-timeframe bias, and Smart Money Concepts — and fires Buy/Sell signals only when enough of them agree. Every signal comes with a confidence score, three take-profit levels, position size recommendation, and live outcome tracking.
Built for 4H and Daily crypto charts. No proprietary "secret sauce" — every component is documented and every input is exposed.
━━━━━━━ WHY THIS EXISTS ━━━━━━━
Most multi-indicator scripts stack correlated trend filters (more EMAs, more oscillators) and call it "confluence." That just adds the illusion of agreement without adding independent information.
CUI's filter stack is built from genuinely different signal sources, so when they align, that alignment carries real weight:
• Trend regime — HMA + Supertrend + EMA Ribbon
• Momentum — RSI with proper pivot-to-pivot divergence
• Volume flow — body-weighted Volume Delta + CVD divergence
• Volatility state — Bollinger squeeze + squeeze-release timing
• Market structure — composite of ADX, Choppiness Index, BB-width percentile
• Multi-timeframe — weighted Daily / Weekly / Custom HTF (all offset, no repaint)
• Liquidity & gaps — Fair Value Gaps + Liquidity Sweep detection
• External context — optional BTC trend filter for alt trading
A Buy or Sell only fires when the relevant subset of these align. A built-in "Why-Not" diagnostic table shows you exactly which filter is blocking a near-signal at any moment — turning the indicator into a tunable system rather than a black box.
━━━━━━━ CORE FEATURES ━━━━━━━
TREND & MOMENTUM
▸ Hull Moving Average (configurable length)
▸ Supertrend with ATR factor
▸ 5-EMA Ribbon (8/13/21/34/55) with stacking score
▸ RSI with consecutive-pivot divergence detection
▸ MACD and Stochastic RSI (data window)
VOLUME
▸ Body-weighted Volume Delta (not naive close-position)
▸ Cumulative Volume Delta (CVD)
▸ CVD divergence at confirmed pivots
VOLATILITY & REGIME
▸ Bollinger Bands with squeeze detection and release timing
▸ Composite regime classifier (ADX × CHOP × BB-width)
▸ Background tint for trending vs ranging states
▸ Regime transition labels
SMART MONEY CONCEPTS
▸ Fair Value Gap zones (bullish and bearish)
▸ Liquidity Sweep detection
MULTI-TIMEFRAME
▸ Daily / Weekly / User-defined custom HTF
▸ Weighted confluence score (D 1.0x + W 1.5x + Custom 0.75x)
▸ Optional HTF pivot-based S/R lines
BTC CONTEXT (for alt traders)
▸ Optional BTC trend filter
▸ Relative strength vs BTC
SIGNAL ENGINE
▸ 0-100 confidence score
▸ Configurable minimum confidence threshold
▸ Auto-tune presets (Aggressive / Balanced / Conservative / Custom)
▸ Confirmation bar requirement
▸ Minimum spacing between signals
TRADE MANAGEMENT
▸ Three take-profit levels (TP1/TP2/TP3) with configurable ATR multipliers
▸ Custom % allocation per target
▸ Adaptive SL/TP — different distances in trending vs ranging conditions
▸ Break-even stop activation after TP1
▸ Chandelier ATR trailing stop on runner portion
▸ Position size calculator (account size × risk % × confidence multiplier)
LIVE TRACKING & DIAGNOSTICS
▸ Main dashboard with all current state
▸ Signal log table — last N trades with live TP/SL outcomes
▸ Why-Not diagnostic — which filter is currently blocking each direction
▸ Regime stats — win rate broken down by trending vs ranging
ALERTS
▸ 15+ classic alertcondition triggers
▸ Optional JSON webhook payload for bot integration
━━━━━━━ HOW A BUY SIGNAL FIRES ━━━━━━━
All of the following must be true on the signal bar:
1. HMA trending up
2. RSI above 50
3. Volume delta positive
4. EMA Ribbon score ≥ +3 (at least 4 of 5 aligned bullish)
5. Supertrend bullish
6. HTF confluence score ≥ +1.5
7. Confidence score ≥ user minimum
8. BTC trend bullish (if BTC filter enabled)
9. Price not inside opposing FVG zone (if FVG filter enabled)
10. Market not in strong ranging mode
11. Price more than 0.5 ATR from upper resistance zone
12. Candle body > 50% of range
13. Minimum bars elapsed since last signal
14. Confirmation bar (if enabled)
A Sell signal requires the inverse. On 4H BTC expect roughly 1-3 signals per week in normal conditions. If you see fewer, drop the confidence floor or switch to the Aggressive preset.
━━━━━━━ RECOMMENDED USE ━━━━━━━
▸ Primary: 4H on BTC/USDT, ETH/USDT, and majors
▸ Also works: Daily, 12H, 8H
▸ Use caution below 1H — noise increases, news spikes can trigger wicks
▸ Low-liquidity alts: bump ATR period to 21
WORKFLOW
1. Start on the Balanced preset
2. Watch the dashboard and Why-Not panel for a few sessions
3. Adjust the confidence floor based on signal frequency
4. Enable Regime Stats after chart history accumulates
5. For bots: enable JSON webhook alerts, route via "Any alert() function call"
━━━━━━━ REPAINT DISCLOSURE ━━━━━━━
Full transparency on what does and doesn't repaint:
▸ HMA, Supertrend, EMA Ribbon: repaint on the developing current bar (use bar-close confirmation for live trading)
▸ HTF confluence (D/W/Custom): all use offset — fetch last closed HTF bar only — NO intra-period repaint, NO lookahead
▸ RSI and CVD divergence labels: plotted at confirmed pivot bar (5 bars after the actual pivot). Do NOT appear and disappear.
▸ FVG zones: drawn on confirmation bar of the 3-bar gap pattern. Do not repaint once drawn.
▸ Liquidity sweeps: detected on bar close
▸ Trade outcomes (signal log): evaluated on each closing bar
▸ Regime transition labels: confirmed on bar close
━━━━━━━ HONEST LIMITATIONS ━━━━━━━
▸ This is a decision-support tool, not a complete trading system. Risk management, position discipline, and execution matter more than any indicator.
▸ Signal outcomes in the Regime Stats table are based on bar-close evaluation. Real-fill slippage is not modeled.
▸ Volume Delta is approximated from candle structure, not true tick-level bid/ask (PulseWire doesn't expose that without premium feeds).
▸ FVG and liquidity sweep are simplified interpretations of those concepts — pure SMC purists may prefer dedicated tools.
▸ The regime classifier is a heuristic composite. It works well on liquid crypto pairs but can lag at sharp inflection points.
▸ Past performance does not predict future results.
━━━━━━━ SETTINGS OVERVIEW ━━━━━━━
The script has many inputs, grouped by function. For first-time users, the most important groups are:
▸ Preset & Theme → pick Balanced to start
▸ UI Sizing → table text and label sizes
▸ Signal Engine → set Minimum Confidence Score
▸ Tiered Exits → TP/SL multipliers and % allocation
▸ Position Sizing → account size and risk per trade
▸ Alerts & Webhooks → enable JSON for bot trading
Default state shows a clean chart: HMA, Supertrend, BB, regime tint, signal labels, plus three tables (dashboard, signal log, HTF panel). Everything else is one toggle away — EMA Ribbon, FVG boxes, ATR zones, HTF S/R lines, CVD divergence labels, sweep markers, Why-Not diagnostic, Regime Stats.
━━━━━━━ WHAT'S NOT INCLUDED ━━━━━━━
▸ Full strategy() backtest — this is an indicator(). A companion strategy script may be released separately.
▸ Funding rate / open interest overlays — require specific tickers not universally available
▸ Chart pattern recognition (H&S, wedges, etc.)
━━━━━━━ CREDITS ━━━━━━━
Built on Pine Script v6. Uses PulseWire built-ins: ta.supertrend, ta.dmi, ta.bb, ta.macd, ta.rsi, ta.pivothigh, ta.pivotlow, ta.valuewhen. Choppiness Index, CVD, FVG detection, liquidity sweep logic, regime classifier, confidence scoring, trade tracking, and confluence weighting are custom implementations.
═══════════════════════════════════════════════
Indicator

TRIX Chart DivergenceTRIX Chart Divergence is based on one of my favorite oscillators.
The main feature of this indicator is that TRIX divergences are drawn not only in the oscillator pane, but also directly on the price chart.
This makes divergence much easier to read, especially for intraday trading and scalping. Instead of looking back and forth between price and the oscillator, you can immediately see where price made a new high or low and where TRIX failed to confirm that move.
For me, this is the most useful way to work with TRIX.
A bullish divergence appears when price makes a lower low, but TRIX does not confirm that move and forms a higher low. A bearish divergence appears when price makes a higher high, but TRIX does not confirm it and forms a lower high.
This type of divergence can warn about a possible correction or trend reversal. I especially like watching TRIX divergences on higher timeframes, because they can mark important exhaustion points. The indicator includes alerts for bullish and bearish divergences, so you can monitor multiple instruments and timeframes without watching every chart all the time.
I also use TRIX on the 1-minute gold chart for intraday trading. On lower timeframes, I use it together with my own setups, price action, levels and other confirmation tools.
TRIX is simple and clean. When the TRIX line crosses the signal line in the lower area, it can show a possible bullish momentum shift. When the cross appears in the upper area, it can show a possible bearish momentum shift. In this indicator, bullish and bearish TRIX crosses are marked with small green and red dots.
TRIX does not have fixed overbought and oversold levels like RSI or Stochastic. That is why I added adaptive range levels. These levels show where TRIX is trading compared to its recent range. When TRIX moves outside this adaptive range, it can highlight stronger momentum extremes.
The adaptive range levels are optional. You can use the indicator in the classic way without them, or keep them on as an additional visual guide.
Main features:
- TRIX and signal line
- Histogram
- Small green and red dots on TRIX crossovers
- Bullish and bearish TRIX divergences
- Divergence lines in the oscillator pane
- Optional divergence lines directly on the price chart
- Optional adaptive TRIX range levels
- Alerts for TRIX crosses and divergences
Settings:
TRIX Length / Signal Length
Controls the basic TRIX calculation and signal line. Lower values make the oscillator more sensitive. Higher values make it smoother.
Adaptive Range Levels
Optional dynamic levels that show where TRIX is trading compared to its recent range. They can help identify stronger momentum extremes. You can turn them off if you prefer the classic TRIX view.
Range Lookback Bars
Defines how many previous bars are used to calculate the adaptive range. A larger value makes the range smoother and more stable. A smaller value makes it react faster.
Range Smoothing
Smooths the adaptive range levels.
TRIX Pivot Sensitivity
Controls how sensitive divergence detection is. Lower values find more divergences. Higher values show fewer but cleaner divergences.
Price Search Radius
Allows the script to search around the TRIX pivot and find the closest price high or low for drawing the divergence line.
Max Bars Between Points
Defines the maximum distance between two TRIX pivot points used for divergence detection.
Draw divergence line on TRIX
Shows the divergence line in the oscillator pane.
Draw divergence line on price chart
Shows the same divergence directly on the price chart.
Important:
This indicator is not a standalone trading system.
TRIX crosses and divergences are designed to help identify momentum shifts, exhaustion points and possible correction zones.
For best results, use it together with price action, support and resistance, trend structure, higher timeframe context and your own confirmation setup.
A divergence can warn about a possible correction or reversal, but it does not mean that price must reverse immediately. Indicator

Artemis Wave Oscillator🟦 Artemis Wave Oscillator is a Pine v6 reimagination of the classical WaveTrend family, built on a Welford running-stdev channel and EMA-smoothed normalization. Unlike fixed-band WaveTrend variants that ship with hard-coded levels, the engine continuously rescales itself against its own dispersion — producing a momentum curve that stays perfectly bounded between visually consistent reversion bands on every asset and every timeframe, with no manual recalibration.
The indicator integrates six analytical layers — WaveTrend core, dynamic reversion bands, histogram momentum gauge, extremity reversion dots, regular + hidden divergence detection with a Smart AI Filter, and a theme-adaptive PRO dashboard — each operating independently and rendered on a single, clean oscillator panel.
🟦 HOW THE CORE ENGINE WORKS
**WaveTrend Channel**
Each bar, the engine builds an EMA-smoothed midline from the selected price aggregate over the Channel Length window. In parallel, a Welford single-pass running standard deviation measures the channel width — a numerically stable O(N) algorithm that updates the running mean and squared deviation simultaneously, preserving precision on long histories where naive sum-of-squares accumulators drift.
The raw wave is then computed as:
wave_raw = (src − chanMid) / chanDev × 100
This produces a z-score-like signal scaled to the ±100 range. Dividing by the running standard deviation normalizes the output regardless of asset volatility — BTC, EURUSD, SPY, and a small-cap stock all swing through the same band structure without parameter changes.
**EMA Smoothing**
The raw wave is then passed through an EMA of length Average Length to produce the visible `wave` line. This is the dominant responsiveness control — larger values produce a calmer curve with fewer reversion-zone touches.
**Signal Line**
An SMA of the wave (Signal Length) builds the trigger line. Crossovers between the wave and signal line mark momentum regime changes — the same convention used by classical MACD and Stochastic.
**Histogram**
The wave − signal delta is rendered as a filled area. Two opacity tiers distinguish rising momentum (brighter) from fading momentum (dimmer), so the eye picks up acceleration vs. deceleration at a glance.
**Source Selector**
Nine price aggregates are available:
| Source | Formula | Use case |
|---|---|---|
| Open | open | Open-of-bar bias |
| High | high | Top-of-range tracking |
| Low | low | Bottom-of-range tracking |
| Close | close | Standard, fastest reaction |
| OC2 | (open + close) / 2 | Body midpoint |
| HL2 | (high + low) / 2 | Body-independent midpoint |
| HLC3 | (high + low + close) / 3 | Typical mean — default |
| OHLC4 | (open + high + low + close) / 4 | Smoothest |
| HLCC4 | (high + low + 2×close) / 4 | Close-weighted |
🟦 REVERSION BANDS
The user picks a single Reversion Threshold (T) — the distance from zero (in normalized wave units) beyond which the wave is considered overbought (positive side) or oversold (negative side). Three proportional tiers render automatically:
| Tier | Level | Visual |
|---|---|---|
| Inner | ±T | Outer ring of the gradient fill |
| Middle | ±T × 1.25 | Boundary between outer ring and inner extreme |
| Outer | ±T × 1.5 | Hard outer boundary of the gradient fill |
Because the bands are derived from T, they always wrap the threshold no matter how the user tunes it. A trader scaling T from 80 (volatile assets) to 150 (trending assets) keeps the visual context intact without retuning the band levels.
The Reversion Threshold itself drives three downstream features:
- Extremity Dot triggers
- The "Extremities" bar-coloring mode
- The Dashboard Zone tag (OB / MID / OS)
🟦 EXTREMITY DOTS
OB / OS reversion markers — small dual-layer dots that fire when the wave crosses the signal line beyond the Reversion Threshold:
- **OS dot** (bull theme color) → wave crossed UP past −T
- **OB dot** (bear theme color) → wave crossed DOWN past +T
These are the highest-conviction mean-reversion triggers in the script. The dots use a two-track rendering — a pixel-perfect glow + core visual via `plot.style_circles`, paired with an invisible `label.style_circle` carrying a rich tooltip. Hovering on a dot surfaces:
- Direction (Crossed UP / DOWN through Signal)
- Active zone (Below −T / Above +T)
- Current wave value
- Current signal value
- Trading interpretation (mean-reversion long / short opportunity)
🟦 DIVERGENCE DETECTION
Pivots are calculated using `ta.pivothigh` and `ta.pivotlow` with an arm of `Channel Length / 2`. All divergence results appear `Channel Length / 2` bars late — this is standard Pine Script pivot behavior, not a bug.
**Four divergence types:**
| Type | Price | Wave | Signal |
|---|---|---|---|
| Regular Bull (D▲) | Lower Low | Higher Low | Potential reversal up |
| Regular Bear (D▼) | Higher High | Lower High | Potential reversal down |
| Hidden Bull (H▲) | Higher Low | Lower Low | Uptrend continuation |
| Hidden Bear (H▼) | Lower High | Higher High | Downtrend continuation |
Regular divergence uses solid lines (width 2). Hidden divergence uses dashed lines (width 1) — the thinner, dashed style makes the continuation signal visually quieter than the reversal signal, matching their respective conviction tiers. Labels use bracketed symbols (D▲ / D▼ / H▲ / H▼) and each carries a tooltip-rich hover with price + wave context.
**Smart Divergence Filter (AI)**
An optional pre-filter that rejects low-quality divergences before they render. Three independent gates:
1. **Min Wave Swing** — minimum oscillator swing between the two pivots (default: 5 units). Drops noise-level differences where the wave barely moved between pivots.
2. **Min Price Swing (%)** — minimum price swing between pivots as a percentage of the recent `Channel Length × 4` high-low range (default: 0.3%). Drops divergences where price barely moved relative to recent volatility.
3. **Zone Confirmation** — the wave at the current pivot must sit in the matching reversion half:
- Bullish divergence → wave at LL pivot ≤ −T × 0.5 (oversold half)
- Bearish divergence → wave at HH pivot ≥ +T × 0.5 (overbought half)
This encodes the classical "best divergences form at extremes" rule using the wave value itself as the gate — no MFI or volume input required.
When the master toggle is OFF (default), all detected divergences render. When ON, only divergences that clear all three gates survive. The filter applies identically to both chart rendering and alert conditions — no mismatch between visual and alert signals.
🟦 HISTOGRAM
The wave − signal histogram is rendered as a filled area between the histogram value and the zero line. Two opacity tiers per side:
| State | Color | Opacity |
|---|---|---|
| Bull, rising | thBull | Rising Opacity (default 60) |
| Bull, fading | thBull | Fading Opacity (default 40) |
| Bear, rising | thBear | Rising Opacity (default 60) |
| Bear, fading | thBear | Fading Opacity (default 40) |
Rising bars are the most actionable visual cue — they mark momentum that is accelerating in the active direction. Fading bars indicate momentum stalling.
🟦 BAR COLORING
Five mutually exclusive modes apply a wave-driven color to every price bar on the chart:
| Mode | Behavior |
|---|---|
| None | Leave bars untouched (default) |
| Midline Cross | Bull above zero, bear below zero |
| Extremities | Bull beyond +T, bear beyond −T, neutral elsewhere |
| Reversions | Bull on OS dot trigger, bear on OB dot trigger |
| Slope | Bull when wave > signal, bear when wave < signal |
Colors are pulled from the active theme — no per-mode color picker needed.
🟦 DASHBOARD
A compact 2-column, 7-row data panel renders on the last bar when enabled. Every value derives from variables already computed upstream, so the dashboard adds zero overhead until the final bar.
| Row | Left | Right |
|---|---|---|
| Header | Artemis Wave | ▲ BULL / ▼ BEAR / ■ NEUTRAL |
| Wave | Wave | Current value + trend arrow (▲ ▼ ■) |
| Signal | Signal | Current SMA trigger value |
| Strength | Strength | 10-block monospace bar gauge |
| Zone | Zone | OB / MID / OS tag |
| Div | Div | Most recent divergence within last 50 bars (▲ REG / ▼ REG / ▲ HID / ▼ HID / —) |
| Slope | Slope | ▲ UP / ▼ DOWN / ■ FLAT |
The strength gauge normalizes `|wave − signal|` against 50 (typical mid-amplitude swing) and buckets the result into 10 monospace blocks (`█` filled, `░` empty), giving an at-a-glance read of crossover conviction.
**Theme-Adaptive Chrome**
The dashboard auto-inverts its layout based on the active theme:
- **Dark themes** (Tropic, Amber, Pastel, Cyber, Helios, Electric, Candy, Bloomberg, Solar, Royal): header and footer use a faint `thBull` tint, middle rows stay solid dark, text uses full-saturation `thBull`. Border uses `thBull` at 20% transparency for strong theme presence.
- **Light themes** (Midnight, Graphite): backgrounds flip to white, text stays `thBull` (which is itself dark on these themes), border uses `thBull` at 40% transparency.
This guarantees text legibility against every palette without per-theme manual tuning.
**Position & Size**
Six anchor slots (Top/Middle/Bottom × Left/Right) and four text sizes (Tiny / Small / Normal / Large).
🟦 COLOR THEMES
Twelve cohesive palettes, each resolving to four axis colors:
| Theme | Character | Bull | Bear |
|---|---|---|---|
| Tropic | Cyan steel + deep orange | #00bcd4 | #ff6d00 |
| Amber | Warm amber + indigo blue | #ff9800 | #e53935 |
| Pastel | Sky blue + soft lavender | #4fc3f7 | #9575cd |
| Cyber | Neon lime + hot crimson | #00e676 | #ff1744 |
| Helios | Bright gold + scarlet | #ffd600 | #ef5350 |
| Electric | Electric aqua + magenta | #00e5ff | #e040fb |
| Candy | Neon green + hot pink | #69F0AE | #FF4081 |
| Bloomberg | Terminal orange + cyan | #ff8c00 | #00b0ff |
| Solar | Solarized olive + crimson | #859900 | #dc322f |
| Royal | Imperial gold + deep purple | #ffd700 | #6a0dad |
| Midnight | Deep navy + dark crimson | #0d47a1 | #b71c1c |
| Graphite | Near-black + silver grey | #1a1a1a | #757575 |
All four color roles (bull / bear / neutral / signal) change simultaneously when the theme changes. The whole script reads through these four variables — nothing below the resolver references a raw hex literal, so a single dropdown selection drives every plot, fill, dot, divergence line, dashboard cell and border.
🟦 ALERT SYSTEM
Ten alert conditions, all using `alert.freq_once_per_bar_close`:
| Alert | Condition |
|---|---|
| OS Reversion | Wave crossed UP through signal while wave < −T |
| OB Reversion | Wave crossed DOWN through signal while wave > +T |
| Regular Divergence | D▲ or D▼ detected (respects Smart Filter) |
| Hidden Divergence | H▲ or H▼ detected (respects Smart Filter) |
| Bullish Trend | Wave crossed above the midline (zero) |
| Bearish Trend | Wave crossed below the midline (zero) |
| Bullish Swing | Wave × signal upward cross, regardless of zone |
| Bearish Swing | Wave × signal downward cross, regardless of zone |
Each alert fires through `alert()` so the message body carries live context — direction, current wave value, and the threshold that triggered. Divergence alerts respect the Smart Divergence Filter — if the filter is ON and a divergence is rejected visually, the alert will also not fire.
🟦 SETTINGS REFERENCE
**WaveTrend Core**
- Source — 9 price aggregates. Default: HLC3
- Channel Length — EMA midline + Welford stdev lookback. Default: 10
- Average Length — EMA smoothing of the normalized wave. Default: 21
- Signal Length — SMA smoothing of the wave to build the trigger. Default: 4
**Reversion Bands**
- Reversion Threshold — 50–200, step 5. Default: 100
- Show Band Fills — Toggle. Default: ON
- Band Opacity — 0–100. Default: 30
**Histogram**
- Show Histogram — Toggle. Default: ON
- Rising Opacity — Default: 60
- Fading Opacity — Default: 40
**Extremity Dots**
- Show Extremity Dots — Toggle. Default: ON
**Divergence**
- Regular Divergence — Toggle. Default: ON
- Regular Opacity — Default: 80
- Hidden Divergence — Toggle. Default: ON
- Hidden Opacity — Default: 80
- Label Size — Tiny / Small / Normal / Large. Default: Tiny
- Smart Divergence Filter (AI) — Master toggle. Default: OFF
- Min Wave Swing — Default: 5.0
- Min Price Swing (%) — Default: 0.3%
- Require Zone Confirmation — Default: ON
**Bar Coloring**
- Bar Color Mode — None / Midline Cross / Extremities / Reversions / Slope. Default: None
**Dashboard**
- Show Dashboard — Toggle. Default: ON
- Panel Position — 6 anchor slots. Default: Middle Right
- Panel Text Size — Tiny / Small / Normal / Large. Default: Small
**Alerts**
- OS Reversion — Default: ON
- OB Reversion — Default: ON
- Regular Divergence — Default: ON
- Hidden Divergence — Default: OFF
- Bullish Trend — Default: ON
- Bearish Trend — Default: ON
- Bullish Swing — Default: OFF
- Bearish Swing — Default: OFF
🟦 COMPATIBILITY
Works on all asset classes and all timeframes in PulseWire Pine Script v6.
- Crypto: Spot, futures, perpetual contracts
- Forex: All pairs
- Equities: Stocks, ETFs, indices
- Commodities: Metals, energy, agriculture
- Timeframes: 1m through Monthly
The Welford running standard deviation normalizes the wave against its own dispersion, making the engine fully volatility-agnostic. The same default settings work on a 5-second BTC chart and a weekly index chart without retuning.
🟦 TECHNICAL NOTES
- Pine Script v6
- `max_lines_count = 500`, `max_labels_count = 500` (divergence drawings + extremity dot hover labels)
- No repainting — all values calculated on bar close. Pivot-based divergence results appear `Channel Length / 2` bars late by design
- WaveTrend engine intentionally mirrors EliCobra's original Enhanced WaveTrend formulation — the value added by Artemis Wave is in the Pine v6 idioms, the dynamic band scaling, the divergence engine, the Smart Filter, the theme system, and the dashboard, not in altering the well-tested core curve
- UDT fields declared without defaults to comply with Pine v6's compile-time-literal requirement; objects constructed via `Bar.new(...)` and `WaveReading.new(...)`
- `var int x = int(na)` pattern used for safe persistent integer state (pivot bar indices)
- Reversion-band anchors rendered as hidden `plot()`s rather than `hline()`s — `hline()` only accepts compile-time constants, but the band levels are series values driven by the user-tunable Reversion Threshold
- Extremity Dots use a dual-track rendering: `plot.style_circles` for the pixel-perfect visual, plus a parallel invisible `label.style_circle` carrying the hover tooltip (since `plot()` does not support the `tooltip` argument)
🟦 DISCLAIMER
This indicator is provided for educational and informational purposes only. It does not constitute financial advice. Past performance does not guarantee future results. Always conduct your own analysis and apply proper risk management. Indicator

Indicator

Nocturne Auction Atlas [JOAT]Nocturne Auction Atlas
Introduction
Nocturne Auction Atlas is an open-source auction-mapping indicator that studies session VWAP, developing volume distribution, value areas, imbalance shelves, estimated CVD, divergence, and auction quality. It is designed to show where price is accepting value, rejecting value, or interacting with unfinished auction references.
Core Concepts
1. Session Auction Framework
The script resets during a new session and tracks session high, low, VWAP, and developing volume distribution.
2. Developing Volume Profile
Price is divided into rows. Each row accumulates estimated volume to identify the point of control, value area high, and value area low.
3. Estimated CVD
CVD is estimated from candle body position, close location, and volume. This is not exchange-level bid/ask data, but it provides a consistent pressure proxy.
4. Divergence Detection
Pivot-confirmed price swings are compared against estimated CVD swings to identify bullish or bearish divergence.
5. Imbalance Shelves
Rows with strong buy or sell imbalance are marked as auction shelves. These shelves can help identify areas where pressure was concentrated.
Features
Session VWAP and bands: Tracks intraday auction center and deviations
Developing profile: Builds POC and value area from recent session data
Imbalance shelves: Highlights rows with strong bid or ask imbalance
Estimated CVD: Uses candle-derived volume pressure
Divergence logic: Pivot-confirmed CVD divergence events
Naked POC memory: Tracks unfinished prior auction references
Dashboard: Shows auction state, quality, delta, POC, value area, and shelf state
Input Parameters
Session Bars Used controls how many bars feed the profile
Profile Rows controls profile granularity
Value Area controls the percentage of volume included in value
Quality Gate controls signal sensitivity
Shelf Gate controls imbalance shelf detection
How to Use This Indicator
Step 1: Read auction location
Use VWAP, POC, VAH, and VAL to understand whether price is trading near value or outside value.
Step 2: Watch shelves
Imbalance shelves identify price rows where estimated pressure was concentrated.
Step 3: Interpret divergences carefully
Divergence requires confirmed pivots and is naturally delayed. It is context, not a prediction.
Indicator Limitations
Profile calculations are approximations based on chart bars
CVD is estimated from candles and volume, not true bid/ask transactions
Pivot divergence confirms after pivot bars have passed
High row counts and long sessions can increase script workload
Originality Statement
Nocturne Auction Atlas combines session VWAP, developing profile rows, imbalance shelves, estimated CVD, divergence, and unfinished auction references into one chart framework. The components are designed to explain auction state rather than simply plot volume levels.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Auction references can fail, and volume approximations can differ from real order-flow data.
-Made with passion by jackofalltrades
Indicator

Smart StochRSI Divergence Oscillator with GAPS & HEAT [Zofesu]Smart StochRSI Divergence Oscillator with GAPS & HEAT is a momentum oscillator built on Stochastic RSI extended with three original signal layers not present in standard StochRSI implementations: a classical divergence engine with institutional volume confirmation, a gap return detection system, and a Heat signal that identifies parabolic price extensions from oscillator extremes.
Each layer operates independently and addresses a different market condition — divergence captures momentum exhaustion at extremes, gap return tracks liquidity rebalancing, and Heat identifies the continuation phase of parabolic moves. Seven alert conditions cover all signal types individually and as a combined trigger.
─────────────────────────────────────
01 — What is WatchDog?
─────────────────────────────────────
WatchDog monitors the Stochastic RSI oscillator across three behavioral states and generates signals only when precise conditions align — oscillator position, K/D crossover direction, price confirmation, and volume participation.
The base oscillator uses a long lookback period (default 700 bars for both RSI and Stochastic) to produce a stable, low-noise read of momentum across the full market cycle. This is intentional — short lookbacks produce too many false extremes. At 700 bars the oscillator reaches its upper and lower extremes only during genuine momentum events.
─────────────────────────────────────
02 — Classical Divergence Signals
─────────────────────────────────────
The classical signal engine uses a state machine with three phases:
Phase 1 — Extreme entry
K rises above the upper extreme (default 98) → mode set to BEAR watch. Price at that moment is stored as the reference level.
K falls below the lower extreme (default 2) → mode set to BULL watch. Price stored.
Phase 2 — Return through midpoint
K must cross back through the midpoint (default 50) before a signal can fire. This prevents premature signals while the oscillator is still deep in the extreme zone.
Phase 3 — Signal confirmation
Bear signal: K crosses under D while between upper extreme and midpoint, AND current price is higher than the stored reference price (price divergence) AND volume is above the selected percentile.
Bull signal: K crosses over D while between lower extreme and midpoint, AND current price is lower than the stored reference price AND volume is above the selected percentile.
This three-phase structure ensures classical signals represent genuine momentum divergence — price making a higher high while K crosses down from an extreme is the textbook definition of bearish hidden divergence with volume confirmation.
─────────────────────────────────────
03 — Institutional Volume Filter
─────────────────────────────────────
Classical signals require volume to exceed a minimum percentile rank (default 25th percentile over 500 bars). This means current volume must be in the top 75% of recent volume — filtering out low-conviction crossovers that occur on thin trading days.
When the filter is disabled, all K/D crossovers meeting the price and oscillator conditions will signal regardless of volume.
─────────────────────────────────────
04 — Gap Return Signals
─────────────────────────────────────
Price gaps represent unfilled liquidity — areas where no trading occurred and orders were left unmatched. Institutional algorithms often return to fill these gaps before continuing the move.
WatchDog detects gaps by comparing the current candle's range to the 14-bar average range. A gap is registered when the distance between the previous candle's high and current candle's low (bull gap) or previous candle's low and current candle's high (bear gap) exceeds the average range by the configured minimum deviation percentage (default 30%).
Once a gap is registered, the indicator monitors for price returning to the gap boundary:
Bull Gap Return (green square) — price returned to fill a bullish gap below. Potential support reaction zone.
Bear Gap Return (red square) — price returned to fill a bearish gap above. Potential resistance reaction zone.
The gap level is cleared after being filled — each gap is tracked once.
─────────────────────────────────────
05 — Heat Signals
─────────────────────────────────────
In equities and high-momentum assets, significant percentage moves from a prior extreme often attract additional momentum capital — amplifying the move further before exhaustion sets in. Strong price action tends to generate more strong price action in the short term as trend-followers and algorithms pile in.
The Heat signal is designed to detect this pattern. While K is at or above the upper extreme, the indicator tracks the price level at each new extreme touch. If price subsequently moves more than the configured percentage (default 15%) above that reference level while K remains in the extreme zone, a Heat Bearish signal fires — marking a potential parabolic overheating condition.
Heat Bullish fires symmetrically when K is at the lower extreme and price drops more than 15% below the reference level.
Heat Bearish (purple label down) — price has moved significantly higher while oscillator stays overbought. Parabolic extension, potential exhaustion ahead.
Heat Bullish (purple label up) — price has dropped significantly while oscillator stays oversold. Panic extension, potential exhaustion ahead.
Purple background highlights Heat signal bars for immediate visibility.
─────────────────────────────────────
06 — Settings
─────────────────────────────────────
Calculation
Stochastic Length — lookback for StochRSI. Default: 700.
RSI Length — lookback for base RSI. Default: 700.
K Smoothing — SMA period for K line. Default: 5.
D Smoothing — SMA period for D line. Default: 3.
Volume Settings
Use Institutional Volume Filter — enable/disable volume gate for classical signals.
Target Volume Percentile — minimum volume rank required. Default: 25.
Volume Lookback Period — bars for percentile calculation. Default: 500.
Gap Settings
Gap Minimal Deviation % — minimum gap size as % of 14-bar average range. Default: 30%.
Heat Signal Settings
Heat Signal Distance % — minimum % move from last extreme to trigger Heat. Default: 15%.
Show Heat Breakout Signals — enable/disable Heat signals.
Levels
Upper Extreme Level — overbought threshold. Default: 98.
Mid Level — midpoint reference. Default: 50.
Lower Extreme Level — oversold threshold. Default: 2.
─────────────────────────────────────
07 — How To Use
─────────────────────────────────────
Step 1 — Watch for K to reach an extreme
Upper extreme (98) = overbought state entered. Lower extreme (2) = oversold state entered. The oscillator must reach these levels for any classical or Heat signal to become possible.
Step 2 — Wait for the classical signal
Red label = bearish divergence confirmed with volume. K crossed under D returning from overbought, price made a higher high. Enter short on next bar, SL above recent swing high.
Green label = bullish divergence confirmed with volume. K crossed over D returning from oversold, price made a lower low. Enter long on next bar, SL below recent swing low.
Step 3 — Monitor Heat signals
Purple label = parabolic extension detected. On equities this can mark either a continuation entry for momentum traders or an exhaustion warning for counter-trend traders. Context matters — use with higher timeframe bias.
Step 4 — Use Gap Return squares as context
Green square = liquidity below was rebalanced. Watch for support reaction.
Red square = liquidity above was rebalanced. Watch for resistance reaction.
Step 5 — Alerts
Seven alert conditions are pre-configured:
Bearish Divergence / Bullish Divergence
Extreme HEAT Bearish / Extreme HEAT Bullish
Gap Fill Bullish / Gap Fill Bearish
Any Zofesu Signal — combined trigger for all events
Works on all asset classes: Indices, Forex, Gold, Oil, Crypto, Stocks.
Best timeframes: H4, D1, W1 Indicator
