Indicator

Rolling VWAP with SignalsRolling VWAP with Signals
Overview
Rolling VWAP with Signals plots a time-window ("rolling") VWAP with standard deviation bands, and generates filtered buy/sell signals on band breakouts. Unlike a session VWAP, which resets at a fixed anchor such as the start of day or week, this VWAP recalculates continuously over a trailing window that you define, for example the last 10 hours or the last 2 minutes of 3-minute bars. This keeps it adapting on any chart, in any session, in any market, including markets that trade around the clock.
This script is an original extension built on the rolling VWAP concept from Rolling VWAP . It adds standard deviation bands, trend-state coloring, crossover based buy/sell signals, an ATR rising filter, and a VWAP trend-alignment filter, none of which are present in the original.
How It Works
The rolling VWAP is computed by summing price times volume and volume over a trailing time window, then dividing, the standard VWAP formula applied to a moving window instead of a fixed session. The calculation runs on an independent timeframe set by the RVWAP Timeframe input, evaluated with request.security().
Standard deviation bands sit above and below the VWAP at a configurable multiple of the rolling standard deviation, computed with the direct weighted squared deviation method rather than the E minus E ^2 shortcut, which avoids precision loss on high-priced instruments.
smoothedATR = ta.swma(ta.atr(atrLength))
atrRising = not useATRFilter or smoothedATR > smoothedATR
Trend state is bullish when the VWAP is higher than it was one higher-timeframe bar ago and price is above the upper band, and bearish under the mirrored condition. The VWAP line is colored accordingly.
Buy and sell signals fire once, on the bar where price crosses a band, not on every bar price remains outside it:
Buy — close crosses over the upper band
Sell — close crosses under the lower band
Two optional filters narrow signals to higher-conviction setups:
Rising ATR — requires an SWMA-smoothed ATR to be higher than the prior bar, filtering out breakouts occurring while volatility is contracting
RVWAP trend alignment — requires the bullish or bearish trend state described above, so buy only fires in an established uptrend and sell only in an established downtrend
Four alert conditions are available: price above the upper band, price below the lower band, a buy signal, and a sell signal.
Inputs
RVWAP Timeframe — Timeframe the rolling VWAP and standard deviation calculation runs on, independent of the chart timeframe. Default: 1 minute.
RVWAP Time Period (Hours / Minutes) — Length of the trailing window used for the rolling calculation. Shorter windows track faster; longer windows behave more like a session VWAP. Default: 0 hours, 1 minute.
Standard Deviation Multiplier — Distance of the bands from the VWAP, in standard deviations. Lower values give tighter bands and more signals; higher values give wider bands and fewer, stronger signals. Default: 1.618.
Show Standard Deviation Bands — Toggles the band plots and disables buy/sell signals when off, since signals require a band cross. Default: on.
Show Fill Between Bands — Toggles the shaded fill between the upper and lower bands. Default: on.
Smooth VWAP/StdDev — Applies additional smoothing to the VWAP and standard deviation lines for a less-lagged appearance when off, or a smoother, laggier line when on. Default: off.
Require Rising ATR for Signals — Gates buy and sell signals on a rising smoothed ATR. Default: on.
Length — ATR length used by the rising-ATR filter. Default: 14.
Require RVWAP Trend Alignment for Signals — Gates buy signals on a bullish RVWAP trend and sell signals on a bearish RVWAP trend. Default: on.
Upper Band, Lower Band, Fill — Colors for the band lines and the fill between them.
Usage Notes
Requires a data feed that provides volume; the script raises a runtime error if none is available.
The rolling calculation needs a minimum of 10 bars within the window to produce a value; very short windows on sparse data may show gaps.
Rising ATR means the current SWMA-smoothed ATR value is strictly greater than the previous bar's value, a one-bar comparison rather than a multi-bar slope.
Values inside the current, still-forming RVWAP Timeframe bar can update intrabar, as with any request.security() call without a fixed historical offset. Confirmed bars do not repaint.
Disable both signal filters to see every raw band-crossing signal, or enable them independently to trade off signal frequency against signal quality.
Credits
Rolling VWAP methodology adapted from the original Rolling VWAP .
Uses the open-source PineCoders ConditionalAverages library for the windowed total calculations.
Disclaimer
This script is provided for educational and informational purposes only and does not constitute financial advice. Past performance is not indicative of future results. Always do your own research and apply proper risk management before trading.
Indicator

Tyson Uppercut Compression Spring Breakout (Viprasol)Tyson Uppercut — Compression Spring Breakout 🥊
(The name is an affectionate combat-sports homage — this is an educational pattern tool, not affiliated with or endorsed by any athlete or organization.)
CONCEPT
A spring loaded by VOLATILITY, not by swings. The tool measures the recent bar-range and requires it to be compressed — noticeably tighter than the window before it (energy coiling). Then the uppercut: one wide-range bar that bursts up out of the compression on the close = the release. Distinct from swing-decay coils; this reads raw range contraction directly from the bars.
HOW IT DETECTS
- Compression is measured on CLOSED bars only: the highest high and lowest low over a window (default 10 bars, offset by one bar).
- That compression range must be tight versus the prior, wider window (default: <= 60% of the range over twice the lookback) AND not larger than a set ATR cap.
- Release: the current bar closes above the compression high, its full bar range is at least a set ATR multiple (default 1.3x ATR), and it closes up (close > open).
- All logic runs on bar close (barstate.isconfirmed). An optional dotted live box previews an active compression before any break.
ENTRY / STOP / TARGET
- Entry: on the confirmed release close (long only).
- Stop: below the compression low, minus an ATR buffer.
- Target: entry + R multiple of risk (default 2R, adjustable).
- Drawn as a solid compression box plus an entry line and filled TP/SL zones that extend right until price touches one; the hit side thickens.
NON-REPAINTING
Compression is read from already-closed bars (a one-bar offset is used), and the release is confirmed on the bar close. A printed signal does not move or disappear afterward. The live dotted preview is informational only and is not a signal.
KEY FEATURES
- Volatility-compression detection from raw range, with an ATR height cap to avoid oversized "boxes".
- Release requires a genuinely wide breakout bar, not just a marginal close.
- Optional live compression preview; option to hide new setups while a trade is active.
- Filled, extend-until-hit TP/SL zones and an on-chart status table (open trades). Alert condition included.
INPUTS OVERVIEW
- The spring: compression window (bars), tightness fraction vs prior window, max compression height (x ATR), release bar range (x ATR), ATR length.
- The knockout: TP as R multiple, SL buffer (x ATR), minimum bars between signals, one-trade-at-a-time, hide-setup-while-in-trade.
- Visuals: compression box / entry / TP / SL colors, label offset, zone transparency, show-live toggle.
HOW TO USE
1. Add to a liquid symbol and timeframe; it is fully overlay-based.
2. Set the compression window and tightness fraction to define how coiled the range must be.
3. Raise the release ATR multiple to demand a stronger breakout bar.
4. Watch the live dotted box to anticipate setups, and study the TP/SL zones on your instrument.
5. Optionally create an alert from the built-in condition.
LIMITATIONS (read this)
- This is a pattern/education tool, not a signal service and not financial advice. It does not predict the future.
- Compression breakouts frequently fail or reverse (false breakouts are common), especially in ranging markets.
- It is long-only by design; it does not trade downside releases.
- Range readings depend on the chosen windows; different settings can materially change what counts as "compressed".
- Results depend heavily on your inputs, instrument, and timeframe. Always use your own risk management and discretion.
CREDITS
ATR uses Wilder's Average True Range. Highest/lowest range measurement uses standard public functions (ta.highest / ta.lowest). The raw-range compression-and-release detection and the trade-zone visualization are original Viprasol design.
Original Viprasol work; no third-party Pine code reused.
Indicator

Ronaldo Bicycle Kick Orbit Break Reversal [ Viprasol ]Ronaldo Bicycle Kick — Orbit Break Reversal (Viprasol)
WHAT IT DOES (the idea)
Most reversal tools watch a single line. This one watches a region. It treats recent price structure as a set of confirmed swing points that "orbit" a structural centre of mass, and it trades the moment price escapes that orbit to the upside. Like a ball coiling around a centre and then leaving orbit — that break is the signal. The name is a sporting homage to a spectacular finish; the tool itself is pure geometry.
HOW IT DETECTS
1. Swings: a lightweight zigzag keeps the last several confirmed pivots. A pivot is only accepted after the required number of bars close to its right, so swings do not move once printed.
2. Orbit geometry: from the last K swings (default 6) it computes the geometric centroid — the mean bar position and mean price. It then measures the average (root-mean-square) distance those swings sit from the centroid price. That distance, scaled by "Orbit radius," becomes the orbit ring. A minimum radius floor (in ATR) filters out flat, meaningless rings.
3. Escape: the setup arms only when the orbit is valid. The signal fires on the first bar that CLOSES above the top of the orbit ring (centroid price + radius) having closed at or below it on the prior bar.
ENTRY / STOP / TARGET
- Entry: the close of the escape bar (long only).
- Stop: the lowest swing price inside the orbit, minus an ATR buffer.
- Target: Entry + R multiple x risk (default 2R), where risk = Entry - Stop.
Each trade draws an entry line plus filled TP and SL zones that extend forward bar by bar until price touches one of them, then freeze.
NON-REPAINTING
Signals are built from confirmed pivots and only evaluated on a confirmed (closed) bar. Nothing is placed on the developing bar, so a printed signal does not disappear or shift on later ticks. The dotted "live orbit" preview is a forward-looking sketch of the current geometry and is not a signal.
KEY FEATURES
- A real orbit ellipse is drawn around the centroid so you can see the ring being broken.
- Extend-until-hit TP/SL zones with a one-trade-at-a-time option.
- Optional hide-new-setup-while-in-trade to reduce clutter.
- Adjustable pivot width, swing count, orbit radius, ATR floor, R multiple, stop buffer, and a minimum-bars-between-signals gap.
INPUTS OVERVIEW
Swing pivot left/right bars; swings used for the orbit; minimum swings for validity; orbit radius multiplier; minimum orbit radius in ATR; ATR length; TP R multiple; SL ATR buffer; signal gap; one-trade toggle; visual colours and label offset.
HOW TO USE
1. Add to any liquid symbol and timeframe; it works on all.
2. Watch for the dotted orbit ring to form around recent structure.
3. Take note when a bar closes above the ring and the GOAL label prints.
4. Use the drawn entry, TP, and SL zones as a visual trade map; adjust the R multiple and stop buffer to your own plan.
5. Raise the pivot width or ATR floor on noisy, low-timeframe charts to demand cleaner structure.
LIMITATIONS (honest)
- This is a pattern and education tool, not a signal service or an autotrading system. It highlights a geometric condition; it does not predict outcomes.
- Long-only by design. It will not flag downside setups.
- In strong one-way trends the orbit ring can be escaped repeatedly; in choppy ranges valid orbits may be sparse. Context and discretion still matter.
- Requiring confirmed pivots means the orbit is defined slightly after a swing forms, which is the cost of non-repainting behaviour.
- Past behaviour of any pattern does not guarantee future results.
CREDITS
Built on public, well-known concepts: Average True Range (J. Welles Wilder) for volatility scaling, and standard pivot/zigzag swing detection. The orbit-centroid geometry and the escape logic are original Viprasol work. The "Bicycle Kick" name is an affectionate sporting homage and does not imply any endorsement or affiliation.
This script is an educational tool and is not financial advice. Trade your own plan and manage risk.
Original Viprasol work; no third-party Pine code reused.
Indicator

Liquidity Sweep Tracker | Smart Money Stop HuntsThis strategy identifies where retail stop-losses and breakout orders cluster (swing highs/lows), waits for price to sweep through that liquidity, and enters only after a confirmed rejection back inside the range. No repainting on the wick, no chasing breakouts — just structured, confirmation-based reversal trading built around genuine Smart Money Concepts (SMC) mechanics.
Core Features
Sweep Detection Engine
Tracks swing highs/lows as live liquidity pools, scored by touch count
ATR-scaled sweep buffer filters out noise — only meaningful stop-runs qualify
Configurable confirmation window (N bars) for the rejection close back inside range
7-Factor Confidence Score (0–100)
Every signal is graded on sweep depth, touch count, market structure alignment, ATR volatility regime, post-sweep displacement, volume spike magnitude, and HTF zone proximity — giving you a single, transparent quality metric per trade instead of a black-box signal.
Structure-First Exits
Adaptive stop placement anchored to the actual sweep wick + volatility regime (not a flat ATR multiple)
Targets pull from real market structure: nearest Fair Value Gap (TP1) and opposing liquidity pool (TP2)
Automatic exit on opposing Break of Structure — if the thesis is invalidated, you're out
Optional time-based exit for setups that stall
Fully Modular Filters — Everything Toggleable
Volume spike confirmation
HTF liquidity zone alignment
Engulfing / displacement / break-of-sweep-candle confirmation triggers
Minimum reward-to-risk gate before any entry fires
All filters default OFF or loosely set — tune restrictiveness to your own edge
Clean, Purpose-Built Visuals
Thin liquidity lines at unswept swing levels — opacity/thickness scale with touch count, so "thicker" lines mark heavier resting liquidity
Simple BUY/SELL labels only on confirmed signals (confidence % included, no chart clutter)
Confidence-scaled glow on active stop/target lines
Win-rate table auto-bucketed by confidence tier (Low/Med/High) — see if your high-confidence signals actually outperform
Ideal Usage
Best markets: liquid index futures (ES/NQ), high-volume large-cap equities, major crypto pairs (BTC/ETH), and major FX pairs during session opens — anywhere real stop-hunting order flow exists
Best timeframes: 15m–1H for intraday/swing entries paired with a 4H–Daily HTF filter; scale the ratio proportionally for scalping or position trading
Best conditions: ranging-to-trending transitions around obvious structure (prior session highs/lows, equal highs/lows) — avoid dead, illiquid instruments where "sweeps" are just noise
Recommended workflow: start with filters off to see raw signal frequency, then layer in volume/HTF/R:R gates while watching the win-rate table to find your own confidence threshold sweet spot
Notes
Pivot-based swing/structure detection carries an inherent confirmation lag (no repainting, but structure is confirmed slightly after the fact). This is a strategy script — backtest thoroughly across your target instrument and timeframe before any live use, and treat the confidence score as a filter to calibrate, not a guarantee. Strategy

MACRO HUDMACRO HUD — macro context, on your chart
Most indicators re-arrange the price you're already looking at. Macro HUD does the opposite: it puts the market's macro context on a single on-chart panel, so you're never reading price in isolation. It's a dashboard, not a signal generator.
WHAT IT SHOWS
MACRO ENGINE — the dollar (DXY), US 10Y and 2Y yields, oil, and the VIX, each with its current value and a direction arrow. The VIX also carries a regime band: Calm / Normal / Stressed / Panic.
REGIME — two plain-language reads derived from the engine: a dollar read (bid / offered) and a risk read (risk-on / risk-off / mixed).
WATCHLIST — up to five instruments of your choice, each flagged Bull or Bear versus an EMA, so you can see the state of your whole watchlist at a glance. Defaults to gold, EUR/USD, GBP/USD, USD/JPY and the S&P 500 — change them to whatever you trade.
EVENT — an optional manual countdown. Type in your next few key releases (name plus date/time) and the panel shows whichever is soonest, turning red inside a "stand-down" window you set. Pine can't read the economic calendar, so this part is filled in by hand.
HOW TO USE IT
Add it to any chart. Open the settings and point the symbols at feeds your plan supports, choose your watchlist instruments, and set the read timeframe — Daily by default, which gives the broad regime regardless of your chart timeframe. Everything else is automatic and updates live. Text colour is theme-aware, so it reads on light or dark charts.
WHAT IT DOES NOT DO
It does not generate buy/sell signals, predict direction, or tell you what to do. It assembles context; the read — and the decision — stay yours. There are no performance claims here, by design.
NOTES
Some data symbols (DXY, yields, VIX) depend on your PulseWire data plan. If a row shows "n/a", open the settings and swap that symbol for one your plan supports — the tool handles missing symbols gracefully rather than breaking.
Open-source. Read the code, fork it, adapt it to your own workflow.
MACRO HUD: "Built to support discretion, not replace it" Indicator

Indicator

Elliott Impulse Engine [WillyAlgoTrader]📊 Elliott Impulse Engine (EIE) is an overlay indicator that counts a full Elliott cycle — impulse 0-1-2-3-4-5 plus correction A-B-C — completely automatically, using a Change-of-Character (CHoCH) trigger to start each count, a strict state machine to accept every wave point, Fibonacci target boxes to show where the next point is expected, a dashed "ghost" projection of the entire remaining path, and a trailing red invalidation line that tells you the exact price where the current count dies.
The core insight: most Elliott Wave tools either repaint their labels endlessly or force you to draw everything by hand. EIE does neither. It treats every count as a hypothesis : a CHoCH break seeds it, each confirmed pivot advances it one wave at a time, and a single hard price level can kill it. When the hypothesis dies, the chart is wiped clean and the engine waits for the next CHoCH — no stale labels, no silent redrawing of history. You always know three things at a glance: what wave the market is in, where price should go next, and where the idea is wrong.
Works on any symbol and any timeframe. Free and open for everyone.
🧩 WHY THESE COMPONENTS WORK TOGETHER
A ZigZag alone gives you swings but no wave logic. A Fibonacci tool alone gives you levels but no structure. A CHoCH detector alone tells you the trend flipped but not what comes next. And a manual Elliott count gives you structure but demands hours of drawing and constant re-labeling.
EIE chains all of these into one pipeline:
Swing structure engine → CHoCH detection → count seeding (point 0 + point 1) → fib grid on leg 0-1 → target boxes for points 2/3/4 → pivot-based point acceptance with soft-marking → ghost projection of the remaining path → trailing invalidation level → reset with a stated reason
The swing engine finds structural highs and lows. A confirmed close through a swing level against the previous trend is a CHoCH — the only event allowed to start a new count, so counts always begin at genuine structure shifts, not random noise. The moment leg 0-1 is confirmed, the engine builds a Fibonacci grid on that leg and projects the whole expected structure forward as a dashed ghost path. Each subsequent wave point is accepted from a separate, faster pivot stream, checked against its expected fib range, and either labeled clean ("2") or soft-marked ("2~") if it landed outside the range. At every state the engine maintains exactly one critical price — the trailing invalidation level — and if price breaks it, the count is declared dead with an explicit reason (BELOW_0, BELOW_W2, W3_SHORTEST, and so on), the markup is wiped, and the engine returns to scanning.
No single public tool does this loop. The combination turns Elliott counting from a subjective drawing exercise into a rule-driven process you can watch unfold bar by bar.
🔍 WHAT MAKES IT ORIGINAL
1️⃣ CHoCH-seeded counting — every count starts at a real structure break.
The engine tracks swing highs and lows using symmetric pivots (default 10 bars left / 10 bars right). A break is registered only on a confirmed bar close through the swing level. If that break goes against the current internal trend, it is a CHoCH — and only then does the engine arm a new count: point 0 is set to the extreme of the run that preceded the break, and the engine waits for a with-trend pivot beyond the CHoCH level to lock point 1.
Anti-noise guards built into the seeding:
— a warm-up gate (no CHoCH before max(3 × swing length, 50) bars of history),
— an optional cooldown (N bars after any count ends before a new CHoCH may seed),
— a level lock: after an invalidation, the same CHoCH level cannot immediately re-seed a new count (compared with half-a-tick tolerance, so floating-point equality can never leak a duplicate seed).
Why this matters: counts started from random pivots produce random labels. Counts started from structure breaks start where trend logic actually changed.
2️⃣ Non-blocking Fibonacci ranges with soft-marking — geometry informs, price decides.
Each wave point has an expected fib range measured on the 0→1 grid (retracement for 2, negative extension beyond point 1 for 3, 5 and B; point 4 uses its own 2→3 grid; C uses 0→1 again):
— Point 2: 0.5 – 0.705 (retracement of 0→1)
— Point 3: −0.5 – −0.618 (extension beyond point 1)
— Point 4: 0.5 – 0.705 (retracement of leg 2→3)
— Point 5: −0.618 – −1.0
— Point B: −0.5 – −0.618
— Point C: 0.0 – 0.236
The fib level of any price p on the 0→1 grid is computed as L = (p1 − p) / (p1 − p0); on the 2→3 grid as F = (p3 − p) / (p3 − p2). A pivot inside its range is labeled clean ("3"); a pivot outside it is still accepted but soft-marked ("3~") — because in real markets a valid wave frequently overshoots textbook levels. Only the hard invalidation rules can reject a point. Every range is a user input (min/max per point), so you can tighten or widen the geometry to your market.
Why this matters: strict-range engines discard perfectly good structure; free-form engines accept garbage. Soft-marking keeps the count honest while telling you visually which points are textbook and which are stretched.
3️⃣ Ghost projection — the whole remaining path drawn before it happens.
As soon as leg 0-1 is confirmed, EIE draws a dashed projection of every remaining point: 2? 3? 4? 5? A? B? C?. Each ghost point is placed inside its fib range at a position you choose (Middle of the range, Near edge, or Far edge), and spaced horizontally at step = round((b1 − b0) × coefficient) bars — i.e., the time geometry of the projection scales with the actual duration of leg 0-1. Ghost point 5? sits at extension −1.0 plus a configurable offset.
The projection is re-anchored from every newly accepted real point : once point 2 locks, the ghost path redraws starting from the real 2; once point 3 locks, from the real 3, and so on. Point 4's ghost is computed on the 2→3 grid using the best available references (real points when confirmed, ghost estimates before that).
Why this matters: you see the expected shape of the entire move — including the A-B-C correction after the impulse — while the impulse is still in wave 2.
4️⃣ Trailing invalidation level — one red line that answers "where am I wrong?".
At every state the engine maintains exactly one critical level, drawn as a dashed red line with an "INVALID + price" label:
— waiting for 1 / wave 2 in progress: point 0
— wave 3 before point 1 is broken: point 0; after the break: point 2
— wave 4: point 2
— wave 5 before point 3 is broken: point 2; after the break: point 4
— correction A/B/C: point 2
A break of this level resets the hypothesis with a named reason. The check runs every bar, before pivot processing , so a violent bar cannot both break the invalidation level and sneak a new wave point into the count on the same bar. Wick-driven pivots that slip past a close-based check are caught by a second, pivot-level guard (a pivot beyond point 2 / point 4 in the protected phases also triggers the reset). Classic Elliott rules are enforced on top: wave 2 may never retrace below point 0, wave 4 may never enter below point 2, and if wave 3 turns out shortest among 1, 3 and 5 at the moment point 5 is proposed, the count is rejected with reason W3_SHORTEST.
Why this matters: an Elliott count without a falsification level is a story, not a hypothesis. EIE makes the falsification price explicit on every bar.
5️⃣ Two-speed pivot system — stable structure, fast confirmation.
Structure and CHoCH run on the main swing length (default 10/10). Wave points 1-5 and A-C are accepted from a separate, shorter pivot stream (default 5/5, always ≤ swing length — validated at load). This decouples two jobs that a single pivot length cannot do well simultaneously: the long pivots keep the structural skeleton stable, the short pivots confirm wave points with roughly half the lag.
A dedicated backfill scan (up to ~480 bars) closes the pivot-lag gap for point 2: when point 1 locks or repositions, the engine re-scans all bars since point 1 for the true retracement extreme, so the best low/high inside the confirmation window is never missed. If price breaks point 1 before any counter-trend pivot confirmed point 2, the tracked extreme itself is accepted as point 2 and wave 3 is activated immediately.
Why this matters: one pivot length forces a trade-off between stability and speed. Two lengths plus a backfill scan give you both.
6️⃣ Repositioning logic — labels refine forward, never silently rewrite history.
Until the next wave locks, the engine allows controlled repositioning: a higher high repositions point 1 (rebuilding the grid and the point-2 box on the new geometry), a deeper pullback repositions point 2 (only until point 1 is broken — after the break, a deeper pivot is an invalidation, not a reposition), point 3 extends while wave 4 forms, point 4 deepens until point 3 is broken, point 5 extends during the correction, A deepens until B appears, B rises until C appears. Every reposition deletes and redraws only the affected segment and label, and the associated target box and its center line are rebuilt on the fresh grid — no stale geometry is left behind.
Why this matters: this is the honest middle ground between "repaints everything" and "freezes wrong labels forever". The rules for what may move, and until when, are fixed and stated.
7️⃣ OTE target boxes for points 2, 3 and 4 — the next objective is always a zone, not a guess.
When point 1 locks, a yellow box covering the point-2 fib range appears with a dashed center line at the range midpoint. When point 2 locks, the point-3 target box (on the extension side) appears. When point 3 locks, the point-4 box appears on the 2→3 grid. Each box extends forward a configurable number of bars (default 20) and its right edge snaps to the bar where the point actually forms. Box fill transparency adapts to the theme (65 dark / 55 light); the border and center line stay fully opaque.
Why this matters: "wave 4 should come" is vague. "Wave 4 is expected inside this drawn box, centered here" is actionable.
8️⃣ Explicit reset reasons + persistent CHoCH history — the chart tells you why.
Every count ends with a machine reason: FALSE_CHOCH (price broke back through point 0 before point 1 formed), BELOW_0, BELOW_W2, BELOW_W4, W3_SHORTEST, DEEP_C (correction retraced beyond point 2), TIMEOUT (optional: state lasted longer than k × leg 0-1 duration), B_ABOVE_5 (the "correction" broke above point 5 — the impulse is closed as done), or DONE (point C accepted, full cycle complete). On invalidation a ✖ marker with the reason in its tooltip is placed on the bar, and the dashboard keeps showing the last reason.
The active markup is wiped on reset — but CHoCH lines and labels live on a separate persistent layer (FIFO history, up to 100, default 50). When price later closes back through a CHoCH level, that line is clipped to the mitigation bar and turns dotted. So your chart accumulates a clean structural map of every trend change while dead counts disappear.
A special same-bar case is handled explicitly: if a reset and a fresh opposite CHoCH land on the same bar (with cooldown off), the engine wipes first, then seeds the new count on that same bar — the new hypothesis is never lost to ordering.
Why this matters: most auto-counters just vanish or redraw without explanation. EIE always states its reason, and the CHoCH map survives as context.
9️⃣ Anti-repaint discipline — confirmed pivots, close-confirmed breaks, honest Wick mode.
Three independent mechanisms:
— All pivot values are consumed only on confirmed bars: a forming real-time bar can make a pivot flicker, so transient pivot values are masked out and can never trigger an irreversible state transition. Historical bars are unaffected (they are all confirmed).
— In the default Close confirmation mode, invalidation breaks and wave-top breaks are evaluated only on the confirmed bar close — an intrabar excursion of the close cannot fire a reset that "un-happens" seconds later.
— The optional Wick mode reacts to any intrabar touch — faster, and by design irreversible within the bar. This is stated openly so you can choose speed vs. strictness.
Zone-entry events (price entering the point-2 OTE zone, the point-4 box, or tagging the −1.0 target) intentionally use wick extremes — a touch is a touch — and are one-way flags.
🔟 Theme-adaptive visual system with auto-contrast labels.
Theme is Auto-detected from the chart background (or forced Dark/Light). By default, long counts use a theme-adaptive green (dark green on light charts, bright green on dark charts) and short counts use red. If you enable custom colors, label text color is derived from the luminance of your chosen background — luma = 0.299R + 0.587G + 0.114B, threshold 140 — so digits stay readable on any shade you pick. The fib grid uses role-based color inputs (red 0.236, teal 0.705 OTE, blue retracement levels, gray round levels), all editable. Label font size is selectable from Tiny to Huge.
⚡ HOW IT WORKS — CALCULATION FLOW
Step 1 — Structure scan: Symmetric pivots (default 10/10) maintain the latest swing high and swing low; the engine also tracks the running extreme since the last swing (the future point 0).
Step 2 — CHoCH: A confirmed close through a swing level against the internal trend flips the trend and — if the engine is idle, cooled down, and the level is not locked — seeds a count: direction, CHoCH level, point 0.
Step 3 — Point 1: The first fast pivot beyond the CHoCH level becomes point 1. The 0→1 fib grid, the point-2 target box, and the full ghost projection are drawn.
Step 4 — Impulse counting: Fast counter-trend pivots propose points 2 and 4; fast with-trend pivots propose 3 and 5. Each is checked against its fib range (clean or "~"), each unlocks the next state, target boxes appear for the next objective, and the ghost path re-anchors from every real point.
Step 5 — Hard rules per bar: Before any pivot is processed, the trailing invalidation level is checked (Close or Wick mode). Wave 2 below point 0, wave 4 below point 2, a broken point 4 in late wave 5, or a shortest wave 3 all kill the count with a named reason.
Step 6 — Impulse complete: Point 5 accepted → the impulse counter increments and the engine rolls into correction tracking.
Step 7 — Correction A-B-C: A forms on a counter-trend pivot, B on a with-trend pivot (a B at or beyond point 5 closes the whole structure as B_ABOVE_5 instead), C completes the cycle → DONE.
Step 8 — Reset: On any ending — invalidation or completion — the active markup is wiped, the cooldown starts, and the engine returns to scanning. CHoCH history stays.
📖 HOW TO USE
🎯 Quick start (works even if you have never counted a wave):
1. Add the indicator to a clean chart. Nothing to configure — defaults are ready to use.
2. Wait for a CHoCH label. That is the engine saying: "the trend character just changed, I am watching for a new impulse here."
3. When labels 0 and 1 appear, the count is live. The dashed gray path with 2? 3? 4? 5? A? B? C? is the expected roadmap of the entire move.
4. Watch the yellow box — that is where the next wave point is expected. The dashed line inside it is the center of the zone.
5. Keep one eye on the red dashed INVALID line at all times. If price breaks it, the count is over — a ✖ appears, the markup clears, and the engine starts hunting for the next CHoCH. Hover the ✖ to read the exact reason.
👁️ Reading the chart:
— 🟢 Green numbered labels (0, 1, 2, 3, 4, 5) = accepted impulse points of a long count; red labels = a short count. Letters A, B, C = the correction.
— A label with ~ (like "2~") = the point is accepted, but it landed outside its textbook fib range — the count continues, treat it with slightly more caution.
— Solid colored path = confirmed structure. Dashed gray path with "?" labels = the ghost projection of what is still expected.
— 🟡 Yellow boxes = target zones for points 2, 3 and 4, each with a dashed center line.
— Dotted horizontal grid = the Fibonacci grid of leg 0-1 (retracements 0.236…1.0 above, extensions −0.5 / −0.618 / −1.0 below), each level labeled with its ratio and price.
— 🔴 Red dashed line + "INVALID price" = the trailing invalidation level of the current count.
— Dashed horizontal CHoCH lines = historical structure breaks; a line that turns dotted has been mitigated (price closed back through it).
— ✖ = the count was invalidated on this bar (reason in the tooltip).
📊 Dashboard fields:
— State: current phase (Scanning / CHoCH · wait 1 / Wave 2…5 / Corr · A-B-C).
— Direction: Long, Short, or — when idle.
— Invalidation: the current critical price.
— Last Reset: why the previous count ended (reason, DONE, or B_ABOVE_5). Resets on chart reload.
— Impulses: completed 5-wave impulses on the loaded history. Resets on chart reload.
— TF: chart timeframe. Version: engine version.
🔧 Tuning guide:
— Counts appear too rarely: lower Swing Detection Length (structure forms faster, more CHoCH seeds) — or the market is simply ranging without character changes.
— Too many counts die instantly (FALSE_CHOCH / BELOW_0): raise Swing Detection Length, or add a Cooldown of 5-20 bars so the engine skips the chop right after a failed count.
— Points confirm too slowly: lower Point Confirmation (min 1); remember it must stay ≤ Swing Detection Length.
— Too many "~" soft marks: widen the fib ranges for those points — your market may simply run hotter than the defaults.
— Old counts hang around in dead phases: set Timeout k > 0 (e.g. 3.0) — any state lasting longer than k × the duration of leg 0-1 resets automatically.
— Chart feels crowded: toggle off the Fib Grid, OTE Boxes, or the Projection independently; reduce Historical CHoCH; shrink label font size.
⚙️ KEY SETTINGS
⚙️ Main Settings:
— Swing Detection Length (default 10): pivot length for structure and CHoCH. Higher = larger structure, fewer seeds.
— Point Confirmation, bars (default 5): the separate short pivot used to accept wave points. Must be ≤ swing length (validated).
— Breaks: Invalidation Mode (default Close): Close = confirmed bar close beyond the level (non-repainting); Wick = any intrabar touch (instant, irreversible within the bar).
📐 Point Ranges (fib): min/max expectation range per point — Point 2 (0.5–0.705), Point 3 (−0.5…−0.618), Point 4 (0.5–0.705 on the 2→3 grid), Point 5 (−0.618…−1.0), Point B (−0.5…−0.618), Point C (0–0.236). All validated at load (2 and 4 must be inside (0,1); 3, 5, B must be negative; C inside [0,1); no zero-width ranges).
👻 Ghost Projection:
— Show Projection (on), Point Inside Range (Middle / Near / Far), Time Step Coef (default 1.0 × leg 0-1 duration), 5?: Offset From −1.0 (default 0.05).
♻️ Reset:
— Cooldown After Reset, bars (default 0 = off) and Timeout, k × leg 0-1 (default 0 = off; in the wait-for-1 phase the timeout scales on swing length instead, since no leg exists yet).
🎨 Visual Settings: Theme (Auto / Dark / Light), Fib Grid toggle, OTE Boxes toggle, CHoCH layer toggle, Path Width (2), Box Length Forward (20), Historical CHoCH max (50), Label Font Size (Tiny…Huge), Watermark toggle.
📏 Grid Levels: individual on/off for 0.236, 0.382, 0.5, 0.618, 0.705, 0.786, 0.886, 1.0, −0.5, −0.618, −1.0.
🎨 Colors: Use Custom Colors switch (off = theme-adaptive defaults), long/short point label backgrounds (text auto-contrasts), target box color, path and ghost colors, bull/bear CHoCH colors, and role-based fib grid colors.
📊 Dashboard: on/off, position (5 anchors), font size (the version row renders one step smaller).
🔔 ALERTS
Ten alert conditions covering the full lifecycle:
— 🟢 1. CHoCH + projection — CHoCH confirmed, movement projection built
— 🟡 2. Price in W2 OTE — price entered the point-2 zone
— 🟢 3. Point 2 accepted
— 🟢 4. Break of point 1 — wave 3 active
— 🟡 5. Price in W4 box
— 🟢 6. Break of point 3 — wave 5 active
— 🎯 7. Target −1.0 reached
— 🟢 8. Impulse complete — point 5 locked
— 🎯 9. Target C — correction complete, full cycle done
— 🔴 10. Invalidation — hypothesis reset
In addition, the engine fires dynamic alert() messages on every reset and on B_ABOVE_5 completion, including the reason text. In Close mode these announce on confirmed bar close; in Wick mode once per bar.
⚠️ IMPORTANT NOTES
— 🚫 No repainting of confirmed structure. Pivots use equal left/right lookback and their values are consumed only on confirmed bars; CHoCH breaks require a confirmed close; in the default Close mode, invalidation and wave-top breaks are evaluated on confirmed closes only. A pivot is, by nature, confirmed N bars after the actual extreme — the indicator draws from the confirmed bar backward to the true swing point. This is delayed confirmation, not repainting of settled values.
— 📐 Controlled repositioning is part of the design. Until the next wave locks, the latest point may legitimately move to a more extreme pivot (e.g., point 1 to a higher high). The rules for what may move, and until when, are fixed and described above. Wick mode reacts intrabar by design and is irreversible within the bar.
— 📊 The Impulses counter and Last Reset field are computed on loaded chart history and reset when the chart reloads.
— ⚖️ EIE counts one impulse degree at a time from the latest CHoCH. It does not label nested sub-waves, diagonals, or complex W-X-Y corrections — it is a focused impulse + zigzag engine, and the fib ranges reflect one practical interpretation of Elliott guidelines, which you can re-tune.
— 🛠️ This is a wave-counting and projection tool, not an automated trading system. It identifies structure, projects expected zones, and shows the invalidation price — trade decisions remain yours.
— 🌐 Works on all markets (crypto, forex, stocks, indices, commodities) and all timeframes. Indicator

Indicator

GEEN Smart Signal What it does
GEEN Smart Signal is not a single-indicator tool. It combines several classic analysis engines into one weighted Decision Engine that scores every trade candidate from 0 to 100, then only prints signals that pass a minimum confidence threshold. Every signal comes with a full breakdown showing exactly why it was accepted.
How it works
A signal candidate is generated by an ATR trailing-stop flip (with optional Heikin Ashi smoothing of the calculation source). The candidate is then evaluated by 8 engines, each contributing a weighted score:
Market Structure (20 pts) — pivot-based HH/HL/LH/LL classification, BOS and CHoCH detection
Trend (20 pts) — EMA 50/100/200 stack, classified into 5 states from strong bullish to strong bearish
Momentum (15 pts) — RSI position + ADX strength, used as confirmation only
Volume (15 pts) — current volume vs. 20-bar average, rewarding volume spikes
Liquidity (10 pts) — liquidity sweeps of prior swings, price inside a Demand/Supply zone or FVG, and Premium/Discount location vs. equilibrium
Volatility (10 pts) — ATR vs. its average, filtering out dead markets
Multi-Timeframe (10 pts) — 1H/4H/D trend alignment (closed-bar data only)
Risk (10 pts) — estimated reward-to-risk toward the nearest opposing swing
The total is normalized to 100. Below the minimum threshold (default 60) the signal is rejected (WAIT). 60–75 prints as weak, 75–85 as good, above 85 as strong. Clicking any signal arrow shows the per-engine score breakdown, entry, ATR stop, and 1R/2R/3R targets.
Chart elements
Structure labels (HH/HL/LH/LL, BOS, CHoCH), auto Order Blocks with mitigation removal, Fair Value Gaps, Equal Highs/Lows (EQH/EQL), session Kill Zones (Asia/London/New York, with an optional session filter), a main panel (decision, confidence, trend, momentum, risk, entry/SL/TP, RR, 5-timeframe view, active session, SMT check vs. a correlated symbol), and a monthly statistics panel that tracks how many signals reached TP1/TP2/TP3 or hit the stop — so you can measure performance yourself on any symbol and timeframe.
Anti-repaint design
Signals are confirmed on bar close only, higher-timeframe data uses closed bars with lookahead off, and structure breaks are evaluated on confirmed closes.
How to use
Works on any symbol and timeframe. Start with defaults, or raise the minimum confidence and enable the London/New York session filter for intraday trading. Alerts are included for buy/sell and for strong (85+) signals. This tool is for educational purposes and is not financial advice; no indicator guarantees results — always use proper risk management. Indicator

Entry Point X500Entry Point X500 is an overlay envelope built on Nadaraya–Watson kernel regression with a Gaussian kernel. It smooths price into a local estimate of the underlying trend, draws volatility bands around that estimate using mean absolute deviation (MAD), and marks mean-reversion events when price interacts with those bands.
What makes it useful
Standard moving averages weight bars with fixed linear or exponential schemes. This script estimates price with a Gaussian kernel: bars closer to the estimation point receive higher weight, which helps reduce noise while still reacting to genuine structure changes.
Two calculation modes are included:
Fixed mode (default, non-repainting) — endpoint-anchored regression using past bars only. Historical bands and signals stay fixed after a bar closes. Use this mode for chart review, backtesting logic, and alerts.
Live mode (repainting) — full-window Nadaraya–Watson smoothing recalculated on every update of the last bar. The envelope can use a symmetrical neighborhood of bars around each point inside the lookback window. This can look smoother and more “responsive” on the current chart, but historical lines and signals may appear, move, or disappear as new data arrives.
How it works
Smoothing — a Gaussian kernel weight is applied across the lookback window to produce a regression estimate of price.
Bands — an envelope is built around the estimate using the mean absolute deviation of price from that estimate, scaled by the Deviation Multiplier. MAD reacts less aggressively to extreme outliers than a standard-deviation band.
Signals
Fixed mode: ▲ when close crosses under the lower band; ▼ when close crosses over the upper band. These mark breakouts into potential oversold/overbought extremes for mean-reversion context.
Live mode: ▲ when price returns inside the envelope from below the lower band; ▼ when price returns inside from above the upper band. These mark the start of a local move back toward the regression estimate.
A status label shows whether Live or Fixed mode is active.
Inputs
Kernel bandwidth — controls smoothness. Lower values follow price more closely; higher values create a slower, smoother filter.
Deviation multiplier — controls envelope width.
Price source — series used for the regression (default: close).
Live mode (repaints) — switches between Live and Fixed calculation. Default is OFF.
Live alert: last N bars — in Live mode, alerts fire only for newly appeared signals within the last N bars, to reduce noise while history is recalculated.
How to use
Use the envelope as a contextual overbought/oversold framework for mean-reversion analysis:
Price outside the bands = stretched relative to the local kernel estimate.
Signals highlight interactions with the bands; they are not standalone trade instructions.
Prefer Fixed mode when validating behavior historically or attaching alerts.
Treat Live mode as a real-time visual aid only, and always assume past signals can change.
Confirm with market structure, levels, volume, or other independent context. Do not trade the triangles alone.
Limitations (important)
Live mode repaints. Historical envelopes and triangles are redrawn on each last-bar update and must not be judged as stable historical signals.
Fixed and Live modes use different estimation methods and different signal rules; results will not match 1:1.
Like any smoothing tool, the script can lag or produce frequent signals in choppy markets, and fewer/later signals when bandwidth or deviation is high.
Non-standard chart types (Heikin Ashi, Renko, etc.) can distort signal interpretation; use standard candlesticks/bars for signal analysis.
Disclaimer
This script is for educational and analytical purposes only and does not constitute financial advice. Past visual behavior does not guarantee future results. Test settings carefully on historical data in Fixed mode before considering any real-money use. Indicator

Supertrend Twincore [MachineSuiteAI]Supertrend Twincore
🟦 OVERVIEW
A fast Supertrend flips too often; a slow one flips too late. This script runs both at once and only signals when they agree — and then shows you, with win rates and sample sizes, how that agreement has actually performed on the chart you have loaded.
A signal only appears where the fast core (timing) and the slow core (structure) first align, and only if it passes a gate: clustered whipsaw flips always suppress, and every other filter blocks signals only where measurement shows it helps on this chart. Passed signals are graded A/B/C and draw an Entry / SL / TP1-3 ladder whose outcomes are tracked per grade. Suppressed candidates stay as grey ghost chips with the reason, and a five-row multi-timeframe strip shows the consensus state across timeframes from completed bars.
The idea throughout: the chart never claims more than the data supports, and anything the script believes is checkable in the panel.
🟦 WHAT IS A SUPERTREND?
Supertrend is a public-domain trailing-stop indicator: it offsets price by a multiple of the Average True Range and trails that stop behind the trend. Price above the stop means uptrend, below means downtrend; a close across it flips the state. This script computes its cores with the built-in ta.supertrend() — fast 2.0 × ATR(10) and slow 4.0 × ATR(20) by default.
Its known weakness is structural: in ranging markets the stop is repeatedly crossed and the indicator whipsaws. Filters are the usual answer; this script measures whether each one actually helps on the loaded symbol and timeframe, and the marks and the gate act only on that evidence.
🟦 WHY THIS SCRIPT IS ORIGINAL
The base calculation is a built-in, and the ingredients — win-rate panels, ADX gates, higher-timeframe confirmation, multi-timeframe dashboards, take-profit ladders, signal grades — are established ideas. What's different is the standard everything must meet: beyond one fixed whipsaw rule, nothing gets drawn, nothing blocks a signal, and nothing drives the engine unless the measurements on the loaded chart back it up.
- Graded ladder odds with the cost attached. Grades are fixed and published — A means structural confirmation plus volume, B one of the two, C neither; no opaque score. Every passed signal's ladder is tracked to resolution; the panel shows per grade: TP1-before-SL and SL-first rates, the median furthest level, the median heat (largest adverse move, in ATR units) and the median bars to TP1, each with its own sample size.
- An adaptive engine that has to beat the fixed one first. Both fast cores — fixed and adaptive — are measured as separate signal streams on the loaded chart, and the adaptive core only drives signals while it beats the fixed core by a set margin with enough samples. The A/B row shows the running comparison; on defaults it reports the adaptive layer as inert.
- Gates held to the same standard. The ✓ volume mark and ⚠ counter-trend warning only print where their split beats the base win rate by a configurable margin here. The ADX gate only blocks candidates where high-ADX candidates have beaten low-ADX candidates by that margin on this chart.
- Per-condition win-rate splits. The base candidate win rate, then the same measurement split by signal class, higher-timeframe agreement, volume confirmation, multi-timeframe alignment and volatility regime — six statistics, each with its own sample size, greyed below a minimum sample.
- Two kinds of signals, measured separately. A candidate exists only on the first bar the cores align and is classified as a structural confirmation (the slow core just flipped in) or a pullback rejoin (the fast core returned to a standing slow trend); a double flip on one bar is labeled same-bar. They are different trades, measured separately.
- Suppression you can audit. A gated-out candidate still prints — a hollow grey ghost chip with the specific reason — and still counts in every statistic, so the base rate is never inflated by counting only the survivors.
- Visual discipline. The band claims a direction only while both cores agree; its saturation drains as price nears the structural stop, so the exit warning arrives before the flip; NEUTRAL keeps a directional tint, so the last trend stays readable while standing aside. The price scale is held to the same rule — it carries the structural stop and the ladder's Entry, SL and TP1-3, each in its own colour, and nothing else; the band and the fast core draw on the chart but claim no axis label. Every visual property maps to something measured.
🟦 HOW IT WORKS
- Cores: two standard Supertrends — the fast core times entries, the slow core defines structure and is the ladder's trailing stop. Presets: Scalp 1.5×ATR(7)/3.0×ATR(14), Intraday 2.0×ATR(10)/4.0×ATR(20), Swing 3.0×ATR(14)/5.0×ATR(28), or Custom.
- Gate and state model: flip-cluster suppression (2+ fast flips in 10 bars, on by default), the measured ADX gate (default "Where it helps (measured)"), and an optional strict higher-timeframe gate (off by default). The band turns grey NEUTRAL on low ADX (default ADX(14) < 20) or flip clustering.
- Higher-timeframe filter: a third Supertrend one regime up (auto-mapped ≤15m→4H, ≤1H→1D, ≤4H→3D, ≤1D→1W, else 1M; or manual), read from the last completed HTF bar.
- Statistics: on confirmed bars, every candidate — passed and suppressed — resolves N bars later (default 10); a win means the close moved in its direction. Splits grey below the minimum sample (default 20). Chip marks need their split to beat the base rate by ≥3 points (configurable); the ADX gate needs the high-ADX split to beat the low-ADX split by the same margin; volume confirmation is volume above 1.5× its 20-bar average.
- Ladder: at a passed signal's close, Entry is the close, SL is the slow-core stop (or the fast core, or a fixed k×ATR cap), TP1/2/3 default to 1/2/3 × ATR. It trails, marks TP touches ✓, freezes ✕ on an SL break, dims when resolved or consensus is lost, and feeds the per-grade LADDER ODDS rows. A live ladder tracks the right edge of the chart; once its stop is hit it stops there, so it stays a bounded record of that trade — targets it never reached are not credited later just because price eventually passed them, and the frozen right edge makes clear the trade was already over. The stop's ray spans only the stretch where that level was actually in force, because a trailing stop is a staircase rather than one line: on a long it starts below the entry and can ratchet above it, locking in profit, and the amber slow core shows the whole path. Each level prints its exact price on the price scale, so the figure for an order ticket reads straight off the axis while the chart labels stay short. The colours carry the geometry: entry green, the targets in the trade's own direction and the stop in the opposite hue, so the level that ends a trade never reads like the levels that pay it — and the slow core keeps its amber, so the stop stays distinguishable from the line it trails.
- Adaptive engine: a per-volatility-regime fast core A/B-measured against the fixed one, as described above; default factors are inert.
- MTF strip: five rows of full consensus state (UP / DOWN / SPLIT / NEUTRAL, with bars-in-state), each read from that timeframe's last completed bar. Auto mode starts at the chart's own timeframe and climbs — 4H gives 4H/D/W/M/3M. Lower timeframes are omitted by default: their consensus flips many times during a single trade taken here, so it says little about an outcome measured over days. Manual mode accepts any five, defaulting to the classic 15m/1H/4H/D/W.
🟦 HOW TO USE IT
- Read the panel first: consensus state, cores, regime, HTF agreement, then the measured rows. An ↑ means that condition has earned its margin on this chart; its absence means it hasn't.
- Chips carry their evidence: grade letter, live per-grade TP1 odds at sufficient sample, ✓ where volume has helped, ⚠ where fighting the higher timeframe has hurt. Ghost chips mean the script stood aside — the reason is on the chip.
- NEUTRAL and SPLIT mean stand aside. The coach line says this in plain language, and notes that a retouch of the entry after TP1 does not invalidate a live ladder — only the SL does.
- Reversal-only signal mode reserves the headline presentation for slow-core reversals; Discipline display mode strips the chart to the band alone (note: TP/SL alerts only fire while the ladder is drawn).
- Defaults are tuned on liquid crypto from 15-minute to weekly charts; the multipliers and ADX threshold are worth reviewing on other asset classes.
🟦 SETTINGS
Grouped as in the inputs dialog: consensus core (presets or custom multipliers) · higher-timeframe filter · state model & signal gate (ADX, flip-cluster, optional HTF gate, ghost chips) · trade ladder (SL geometry, TP multiples) · grade engine (certified or dynamic wiring) · adaptive engine · MTF strip · visuals and display modes · volume multiple (default 1.5×) · signal stats engine (horizon, minimum sample, gating margin) · JSON webhook alerts.
🟦 ALERTS
Consensus long / short · confirmed reversal long / short · Grade A long / short · TP1 / TP2 / TP3 touched · SL break · NEUTRAL started / ended · volatility regime changed · adaptive engagement changed. Create the classic alert conditions with "Once Per Bar Close" — they evaluate on live bars, and an intrabar state can revert before it counts. Optional JSON alert() events via a single "Any alert() function call" alert: signal events carry grade, entry and levels; TP/SL events identify the touched level; all carry symbol, timeframe, regime and state. The JSON events are close-gated and fire for every passed candidate, including rejoins the Reversal-only display mode demotes.
🟦 REPAINT & DATA NOTES
- All bookkeeping runs on confirmed bars; chips, ladders and statistics commit at bar close. Inside a forming bar the panel's consensus, cores, agreement, volume and coach line update live and are therefore PROVISIONAL — they can revert before the bar shuts. Price can also sit beyond a ladder's stop for the rest of a bar without resolving it: in the core SL modes the stop breaks when that core flips, which needs a confirmed close. The coach line says so when it happens.
- Higher-timeframe and strip values come from each timeframe's last completed bar — no repaint; intrabar changes up there show after that bar closes. The design assumes the HTF sits above the chart's timeframe — with Manual selection, keep it there.
- Ladder TP touches — and the Fixed mode's hard-stop touches — are detected from confirmed bars' highs/lows, starting the bar after entry; a bar touching several levels credits TPs before the stop. In the core SL modes the stop is not touch-based: it resolves only when its core flips, which needs a confirmed close — so a wick through the stop does not end a ladder, and the touch-credited TP rates are structurally friendlier than a hard-stop backtest of the same levels. The Fixed k×ATR mode is the geometry closest to a real hard stop.
- Statistics cover the loaded history and reset when the chart reloads with different history; lower timeframes load fewer bars. Greyed rows just mean the sample is too small to trust.
- Only the most recent 250 chips and ghost chips stay on the chart, so a live ladder's own labels can never be pushed off by PulseWire's drawing limit; deep history keeps its band and cores but not its markers. Ladder odds count each ladder when it resolves, and in the rare case that more than 30 are open at once the oldest is counted at its current state rather than discarded — the sample is never silently trimmed.
- On a live bar the volume ratio is partial; judge it near the close. Volume features require a feed that supplies volume.
🟦 CREDITS
The Supertrend concept is public domain (popularized by Olivier Seban); ATR, ADX and the DMI are J. Welles Wilder's. The fixed cores use PulseWire's built-in ta.supertrend(); the adaptive core re-implements the same algorithm to accept a per-bar factor. The consensus model, candidate classes, statistics engine, gates, grades, measured ladder, ghost chips, strip and band rendering were written from scratch for this script.
🟦 LIMITATIONS
- Supertrend lags by construction, and requiring two cores to agree makes entries later still — fewer, later, more heavily filtered signals is the intended trade-off.
- The NEUTRAL state derives from lagging measures (ADX, flip counts), so the first signals of a new trend can still arrive grey or be suppressed.
- All statistics are direction-only measurements over a fixed horizon; ladder odds are level measurements (TPs credit on a wick touch, core-mode stops resolve only on a confirmed core flip) — no fees, slippage, sizing or equity math. They are not a strategy backtest, they differ per symbol and timeframe, and they do not predict future outcomes.
- Without volume data the volume filter and its split stay inactive, and certified Grade A (confirmation + volume) is out of reach — signals cap at Grade B on volume-less feeds. Sample sizes on higher timeframes are structurally small; expect greyed rows there.
- The same asset on two different venues can show opposite states. A Supertrend flip is a threshold event: when price sits within a fraction of a percent of the band, a normal inter-exchange spread of a few basis points decides whether it crosses, and once one venue flips its stop jumps to the other side of price, so two nearly identical charts diverge sharply. This is inherent to the calculation, not a data error — treat a signal as belonging to the feed it was measured on, and check the panel's sample sizes on the venue you actually trade.
🟦 DISCLAIMER
This is an educational analysis tool, not investment advice. Historical measurements, however carefully computed, do not predict future results. Trading involves substantial risk.
Indicator

Liquidity Stress Exhaustion [MarkitTick]💡 A market-microstructure stress detector that flags moments of seller or buyer exhaustion by combining an Amihud-style illiquidity z-score with trend regime, a regression-based fair-value channel, and automated ATR trade levels. Rather than reacting to price alone, this script measures how much price is moving relative to the volume behind it, then cross-references that stress reading against trend direction and candle behavior to identify points where aggressive selling or buying is likely running out of steam.
✨ Originality and Utility
Most exhaustion-based tools on PulseWire rely on oscillator extremes (RSI, Stochastic) or candlestick pattern recognition in isolation. This script takes a different route: it borrows a concept from academic market-microstructure literature — price impact per unit of volume, i.e., illiquidity — and turns it into a real-time, standardized stress signal. Instead of asking "is price overextended?", it asks "is price moving too much for the volume that's actually trading?" A large true-range on abnormally low volume is treated as a sign of thin, stressed liquidity, and it is this stress, combined with a counter-trend candle, that defines exhaustion here — not price level alone.
This is not a simple mashup of unrelated indicators bolted together for the sake of a new publication. The illiquidity stress engine, the trend filter, the regression channel, and the correlation/ADX filters are all working toward a single, coherent question: is the current directional move statistically and structurally likely to reverse or stall? The z-scored stress reading identifies unusual conditions, the EMA trend filter and candle-close direction confirm which side is under pressure, and the optional Pearson-R and ADX filters exist specifically to suppress signals when the broader price action lacks the statistical structure (trending correlation, directional strength) needed to make the exhaustion reading meaningful. Each component narrows the false-positive rate of the others; removing any one of them would meaningfully change what the tool measures.
The script goes further than a plain signal generator by translating each exhaustion event into a fully computed trade plan — an ATR-derived stop, a dynamically computed R (risk unit), and three R-multiple take-profit targets — visualized directly on the chart and exposed through a structured alert payload designed for automation.
🔬 Methodology and Concepts
• Illiquidity Stress Engine
The core of the script computes a proxy for market illiquidity on every bar: true range divided by volume (with a safe fallback when volume is zero or unavailable), then compressed with a natural-log transform to tame outliers. This raw illiquidity series is then standardized into a z-score using a rolling mean and standard deviation over the "Stats Lookback" period. A z-score above your chosen "Stress Threshold (σ)" marks the bar as being in a state of high stress — meaning price moved an unusually large amount for the volume that supported it, a hallmark of thin liquidity and potential exhaustion of the prevailing move.
• Trend Regime Filter
Direction is established by comparing price (optionally pre-smoothed by an adaptive filter, see below) against an EMA of configurable length. Price below the EMA defines a downtrend; price above defines an uptrend. Exhaustion signals are only valid when they occur against the backdrop of an established trend in the opposite direction — a seller exhaustion signal requires the prior bar to have closed in a downtrend on a red candle, while buyer exhaustion requires an uptrend and a green candle.
• Adaptive Price Filters (Optional)
Two optional smoothing methods can replace raw closing price throughout the trend calculation:
Kalman Filter: a lightweight recursive estimator that continuously balances trust between the incoming price and its own prior estimate, adapting its responsiveness based on a fixed process/measurement noise ratio derived from your chosen length.
LLAMA (Linear-Lag Adjusted Moving Average): a hybrid that takes a simple moving average and adjusts it by half the recent linear slope, aiming to reduce the lag inherent in plain moving averages.
These exist to give the trend filter a smoother, less noise-reactive input than raw closing price when desired.
• Regression Fair-Value Channel
On the most recent bar, the script performs a least-squares linear regression over a lookback window (either a fixed length, or a dynamic length measured from the most recent qualifying pivot, capped by "Max Lookback Cap") using hlc3 as the source. From this it derives the regression line itself, its standard deviation, and the Pearson correlation coefficient (R), which measures how well price actually fits a straight line over that window. Inner and outer channel bands are plotted at user-defined standard-deviation multiples above and below the regression line, giving a visual statistical envelope for the recent price trend.
• Correlation and ADX Filters
Two independent filters can suppress exhaustion signals when the broader trend lacks structural conviction:
Pearson R Filter: when the absolute value of the regression's correlation coefficient falls below your threshold, the trend is considered statistically weak/directionless, and the channel is recolored neutral to flag this — though note this filter affects only the visual channel coloring, not signal firing.
ADX Filter: when enabled, exhaustion signals are only permitted when ADX is at or above your threshold, filtering out exhaustion calls during periods of weak directional movement.
• Pivot Detection
Standard confirmed pivot highs and lows (requiring the specified number of bars on each side) are tracked internally to support the optional Dynamic Pivot Mode, which — when enabled — sizes the regression lookback to the distance since the most recent confirmed pivot rather than using a fixed length.
• ATR Trade Level Construction
When a qualifying exhaustion signal fires and is confirmed, the script computes a full trade plan: the entry is the closing price of the confirmed exhaustion bar, the stop-loss is placed one ATR-multiple away (your "ATR SL Multiplier" times ATR over "ATR Length"), and the resulting stop distance defines one Risk unit ("R"). Three take-profit levels are then placed at your chosen R-multiples (default 1R, 2R, 3R) from entry. This entire trade plan updates and redraws only when a new, unlocked exhaustion signal fires.
• Lock Signal
Enabling "Lock Signal" freezes the currently displayed trade plan on the chart, preventing new exhaustion events from overwriting the active levels — useful for manually tracking a single trade through to its conclusion without the visual being replaced mid-trade.
🎨 Visual Guide
● Exhaustion Labels
"SE" label below a bar (bullish color by default) marks a confirmed Seller Exhaustion event — sellers pushed price down under stress conditions, and the setup favors a potential upside reaction.
"BE" label above a bar (bearish color by default) marks a confirmed Buyer Exhaustion event — buyers pushed price up under stress conditions, and the setup favors a potential downside reaction.
● Regression Channel
The dashed center line is the linear regression fair-value line over the active lookback window.
The two dotted inner lines mark the "Inner Deviation" band (default 1.0σ).
The two solid outer lines mark the "Outer Deviation" band (default 2.0σ).
The shaded fill between the inner bands is colored by trend direction — bullish or bearish color when the trend is statistically valid, neutral gray when the Pearson R Filter flags the trend as too weak/uncorrelated to trust.
An optional floating "STATS" label above the current bar displays the regression length, Pearson R value, and current stress z-score (σ) numerically, when "Show Metrics Label" is enabled.
● Trade Level Lines
Plotted only after a qualifying exhaustion event, extending toward the current bar:
Red solid line and "✕ SL" label: the calculated stop-loss.
Blue dashed line and "▶ Entry" label: the entry price (signal bar's close).
Three teal dashed lines of increasing opacity/solidity, with "◆ TP1", "✦ TP2", "◆ TP3" labels: the three R-multiple take-profit targets.
A red-tinted fill between the stop and entry lines visualizes the risk zone.
A teal-tinted fill between the entry and TP3 lines visualizes the reward zone.
● Dashboard (Table)
A compact panel, positioned per your "Dashboard Position" setting, reporting in real time: Lock status, current Trend Regime (Bullish/Bearish), Seller Status and Buyer Status (Exhausted/Normal), a visual Channel Width bar-meter (color-graded green/amber/red by relative width), a visual Pearson R bar-meter (same color grading by correlation strength), and — when an exhaustion signal is currently active — the live Entry, Stop Loss, and TP1 price levels. ADX value and Adaptive Filter type are appended as additional rows only when those features are enabled in the inputs.
📖 How to Use
Watch for an "SE" (Seller Exhaustion) label — this suggests a downtrend that produced an unusually large price move for its volume, on a down candle, potentially signaling sellers are running out of conviction and a bounce could follow.
Watch for a "BE" (Buyer Exhaustion) label — the mirror case in an uptrend, potentially signaling an approaching pullback or reversal.
Use the dashboard's Pearson R and Channel Width meters as a quick sanity check on trend quality before acting on a signal — a low R reading (channel shown in neutral gray) suggests the recent price action lacks a clean directional structure.
If ADX filtering is enabled, only signals occurring during sufficiently strong directional movement (per your threshold) will fire, which can help avoid exhaustion calls inside choppy, low-ADX conditions.
Once a signal fires, the plotted SL/Entry/TP1-3 lines and the dashboard's live level readout offer a pre-built framework for position sizing and target-setting — always cross-check these levels against your own risk tolerance before acting on them.
Enable "Lock Signal" if you want to study a single active trade plan without it being replaced by a new signal appearing on a later bar.
All signals, dashboard values, and trade levels are calculated strictly on confirmed, closed bar data — nothing on this chart is repainted or recalculated retroactively into the past.
⚙️ Inputs and Settings
● Core Settings
Trend Length: EMA period used for the directional trend filter. Longer values smooth out the trend classification; shorter values make it more reactive.
Stats Lookback: rolling window for the illiquidity mean/standard deviation used to compute the stress z-score.
Stress Threshold (σ): the z-score level that must be exceeded for a bar to be classified as "high stress." Raising this makes exhaustion signals rarer but more extreme.
Dynamic Pivot Mode: when enabled, the regression channel's lookback length is derived from the distance to the most recent confirmed pivot instead of a fixed value.
Fixed Length: the regression lookback used when Dynamic Pivot Mode is off.
Pivot Left / Pivot Right: bars required on each side to confirm a swing high/low for Dynamic Pivot Mode.
Max Lookback Cap: hard ceiling on the regression window length, regardless of pivot distance, to control computation and keep the channel visually relevant.
Inner/Outer Deviation: standard-deviation multiples defining the two channel bands around the regression line.
● Filters
Filter Weak Correlations / Pearson R Threshold: controls the channel's neutral-color flagging when regression fit quality is below this threshold.
Use ADX Filter / ADX Threshold / ADX Length: optional directional-strength gate that must be satisfied for exhaustion signals to fire.
Adaptive Filter (None / Kalman Filter / LLAMA) and its Length: optional pre-smoothing applied to price before the trend/EMA calculation.
● Trade Tools
Lock Signal: freezes the current trade plan against being overwritten by new signals.
ATR SL Multiplier / ATR Length: controls stop-loss distance as a multiple of ATR.
TP1/TP2/TP3 (R Multiple): sets each take-profit target as a multiple of the initial risk (R).
● Visuals
Show Metrics Label: toggles the floating STATS label showing regression length, R, and z-score.
High/Low Volatility Width %: reference thresholds used to color-grade the dashboard's Channel Width meter.
Line Extension: controls whether regression channel lines extend left, right, both, or not at all.
● Dashboard
Dashboard Position: places the summary table in any of the four chart corners.
● Alerts
Six customizable action-tag fields (Seller/Buyer Exhaustion, TP1/TP2/TP3 Hit, SL Hit) let you rename the "action" field inside each alert's JSON payload to match your own automation or webhook naming scheme.
● Colors
Full palette control over bullish/bearish/neutral coloring, text and background colors, dashboard styling, and all trade-level line/fill colors.
🔍 Deconstruction of the Underlying Scientific and Academic Framework
● Illiquidity as a Price-Impact Proxy
The stress engine's core calculation — true range divided by volume — is a simplified, bar-by-bar adaptation of the price-impact style illiquidity measures used in market microstructure research, most notably the Amihud illiquidity ratio, which relates absolute returns to trading volume as a proxy for how much a given amount of volume "costs" in terms of price movement. The underlying academic intuition is that in illiquid or stressed conditions, smaller volumes produce disproportionately larger price swings; the log transform compresses the resulting distribution to reduce the influence of extreme outlier bars before standardization.
● Z-Score Standardization and Statistical Anomaly Detection
Converting the raw illiquidity reading into a z-score against its own rolling mean and standard deviation is a direct application of statistical process control / anomaly-detection theory: rather than using a fixed, market-agnostic threshold, the script defines "abnormal" relative to each instrument's and timeframe's own recent behavior. This adaptive standardization is a common approach in quantitative finance for regime and outlier detection, since raw price-impact values are not comparable across instruments, timeframes, or volatility regimes without normalization.
● Ordinary Least Squares Regression and Goodness-of-Fit
The fair-value channel is constructed using closed-form ordinary least-squares (OLS) regression formulas computed directly from the summary statistics of the price series (sums of x, y, x², xy, y²) rather than an iterative solver — a standard, numerically efficient approach for simple linear regression. The accompanying Pearson correlation coefficient is the classical goodness-of-fit statistic for this regression: it quantifies how well a straight line explains the price action over the lookback window, providing a principled, quantitative basis (rather than visual judgment) for deciding whether "trend" is a statistically meaningful description of recent price behavior.
● Recursive State Estimation (Kalman Filtering)
The optional Kalman Filter smoothing option is a simplified, single-dimension implementation of the classical Kalman filter from control theory and signal processing — a recursive Bayesian estimator that maintains a running estimate of a system's true state (here, price) and continuously updates it by weighting new observations against the model's own uncertainty. This provides a theoretically grounded alternative to fixed-window moving averages for noise reduction.
● Trend-Following Directional Strength (ADX/DMI)
The optional ADX filter draws on Welles Wilder's Directional Movement System, a long-established technical framework for separating trend strength from trend direction. Using it as a gate rather than a signal generator reflects its intended academic role: ADX does not indicate direction, only the strength of whatever directional move is present, making it a natural confluence filter for suppressing signals during structurally weak, low-conviction price action.
⚠️ Disclaimer
All provided scripts and indicators are strictly for educational exploration and must not be interpreted as financial advice or a recommendation to execute trades. We expressly disclaim all liability for any financial losses or damages that may result, directly or indirectly, from the reliance on or application of these tools. Market participation carries inherent risk where past performance never guarantees future returns, leaving all investment decisions and due diligence solely at your own discretion. Indicator

Market Internals Status: TICK / ADD / VOLDThis indicator displays a real-time status table for three classic NYSE/Nasdaq
market-breadth internals: USI:TICK , USI:ADD (advance/decline issues, Nasdaq variant
by default) and USI:VOLD (up/down volume difference). It is designed for index
futures and index CFD traders (ES, MES, SPX, NQ, etc.) who use market
internals to confirm directional bias before entering a trade.
METHODOLOGY
Each internal is classified using a fixed absolute-level threshold you control
from the settings: a reading above the "bullish" threshold is tagged BULLISH,
below the "bearish" threshold is tagged BEARISH, and anything in between is
NEUTRAL. This is a simple level-based read, not a moving average, oscillator,
or percentile rank — the goal is to mirror how discretionary traders read raw
internals on a dedicated internals chart, but with an objective, repeatable
rule instead of a visual guess.
A CONSENSUS row aggregates the three readings: it shows "aligned bullish" or
"aligned bearish" only when at least two of the three internals agree in the
same direction past their threshold; otherwise it shows "mixed/flat",
flagging a session where internals do not confirm a clean directional bias.
DATA VALIDATION
Market-internal data feeds occasionally emit corrupted or placeholder values
when the underlying index has no valid tick (e.g., outside NYSE/Nasdaq
cash-session hours). The script validates every reading against a
configurable sanity ceiling per internal. A reading outside that realistic
range is treated as invalid and shown as N/A instead of being misclassified
as bullish or bearish, and it is excluded from the consensus calculation.
SESSION AWARENESS
USI:TICK , USI:ADD and USI:VOLD are breadth measures of the NYSE/Nasdaq cash equity
market and therefore only update during the 09:30–16:00 America/New_York
session. A SESSION row tells you at a glance whether the reading is live or
frozen from the prior session close — important context if you trade an
instrument (like index futures) that keeps trading outside cash-market hours.
HOW TO USE IT
Add the indicator to any chart — it does not need to be an internals chart
itself, it fetches its own data via request.security(). Open the settings to:
(1) pick the exact ticker for each internal your data plan provides, since
exchange-composite symbol naming can vary; (2) set your own bullish/bearish
thresholds; (3) adjust the sanity ceilings if you trade an internal with an
unusually wide typical range. Use the resulting table as a breadth
confirmation filter alongside your own price/volume-based setup — it is not
a standalone entry signal. Indicator

Compression Breakout & Follow-Through Scoring [SlatinaTrades]🌀 Compression Breakout & Follow-Through Scoring — grades the coil, then checks its own homework.
Most squeeze/compression tools flag a tight range and stop there. This one also tracks what happens after the break — and separates completed setups by quartile to show whether the coil's tightness or the breakout candle's quality actually predicted the outcome, instead of assuming either one does.
THE MECHANICS
🧊 Compression detection — three conditions have to hold together: box range ≤ a multiple of base-ATR (C1), Bollinger Band width inside a squeeze percentile (C2), and a minimum dwell in confirmed bars (C3). All three gate the coil; none of them alone is enough.
🔒 State machine — COILING → PRIMED → BREAKOUT (up/down) → HELD or FAILED, with EXPIRED for coils that age out unbroken. The box freezes on arm (tighten-only re-lock while PRIMED — it can tighten further, never widen), so what you see is a committed level, not a moving target.
📊 Tightness score (0–100) — weighted blend of C1 margin, C2 depth, and dwell length. Grades how genuine the compression is, not just whether it cleared a threshold.
🎯 Break-quality score (0–100) — weighted blend of close location, body ratio, range expansion vs ATR14, and where volatility sits inside a regime band (mid-band scores highest; dead or chaotic extremes score low).
📈 Follow-through score (0–100) — tracks maximum favorable excursion beyond the broken edge over a fixed window, capped at a set ATR multiple. A break that reclaims the level before the window closes is scored FAILED instead.
SEPARATION HARNESS — the honesty check
A stats table bins every completed setup (HELD or FAILED) into quartiles two ways: by tightness score and by break-quality score. Each quartile reports mean follow-through in ATR units and reclaim rate. If a score's Q4 looks like its Q1, that score isn't doing the work it claims to — the table shows you that plainly instead of asking you to trust a single headline number.
NON-REPAINT
Every state transition and every follow-through update runs on barstate.isconfirmed. The box freezes the moment a coil arms. The optional HTF alignment read uses a closed-bar offset (lookahead_on + gaps_off on ) and is a flag only — it never gates the state machine.
WHAT IT IS NOT
Not a strategy. No entries, no stops, no targets, no risk sizing anywhere in this script. Bidirectional context only — it tells you a coil compressed and how the break resolved, not what to do about it. Settings are starting points, not recommendations; tune box length, dwell, and weights to what you're trading and validate before risking anything on it.
ALERTS
New Coil Primed · Bull Breakout · Bear Breakout · Follow-Through Confirmed · Reclaim. All gated to confirmed bars, all carry numeric state/score payloads for automation.
Still useful after it's been on your chart a while — every read maps to a concrete decision about whether this coil is worth watching. Indicator

Asian Session XAUUSD by CapitanzorThis indicator highlights the Asian trading session (default 01:00–03:00, Europe/London time) on the chart — a period typically characterized by lower volatility and tighter price ranges in Gold (XAUUSD), before the London session opens.
The session's time range and timezone are fully configurable via the indicator's settings (input.session and input.string), allowing each trader to adapt it to their own local time and preferred session window, without needing to edit the code.
How it works:
- The script uses time() combined with input.session() to detect whether the current bar falls within the selected time range, converted to the chosen timezone.
- When the condition is true, the background is shaded in a light yellow color for easy visual identification.
- Useful for spotting pre-breakout consolidation zones ahead of higher-volatility sessions (e.g. London or New York open).
—
Este indicador resalta la sesión asiática (por defecto 01:00–03:00, hora de Londres) en el gráfico — un periodo típicamente caracterizado por baja volatilidad y rangos de precio más estrechos en el oro (XAUUSD), antes de la apertura de la sesión de Londres.
El rango horario y la zona horaria son totalmente configurables desde las opciones del indicador, permitiendo a cada trader adaptarlo a su hora local sin necesidad de tocar el código.
Cómo funciona:
- El script usa time() junto con input.session() para detectar si la vela actual cae dentro del rango horario seleccionado, convertido a la zona horaria elegida.
- Cuando la condición se cumple, el fondo se sombrea en amarillo claro para facilitar su identificación visual.
- Útil para detectar zonas de consolidación previas a sesiones de mayor volatilidad (ej. apertura de Londres o Nueva York). Indicator

Strategy

Indicator

Adaptive Flow Channel Adaptive Flow Channel is a trend structure indicator that builds independent adaptive upper and lower flow boundaries instead of relying on a traditional centerline with symmetrical volatility bands.
Unlike conventional channels that simply offset a moving average by a fixed volatility measure, Adaptive Flow Channel models the upper and lower sides of the market independently. Each ribbon responds only to the price behavior relevant to its own side, allowing the channel to expand, contract and reshape asymmetrically as market conditions evolve.
Rather than assuming that bullish and bearish pressure affect the market equally, the indicator continuously evaluates both sides separately. This produces a channel capable of adapting naturally to directional imbalance while maintaining a smooth representation of the underlying market structure.
━━━━━━━━━━━━━━━━━━
🧠 Design Philosophy
━━━━━━━━━━━━━━━━━━
Most volatility channels assume that market structure evolves symmetrically around a central reference line.
Adaptive Flow Channel removes this assumption.
Instead of forcing both channel boundaries to react identically, the algorithm allows each side to evolve independently according to its own directional behavior.
The objective is not to predict price, but to visualize how market structure expands, contracts and transitions over time.
━━━━━━━━━━━━━━━━━━
⚙️ What Makes It Different
━━━━━━━━━━━━━━━━━━
Traditional adaptive channels generally follow concepts such as:
• Moving Average ± ATR
• Moving Average ± Standard Deviation
• Moving Average ± Fixed Offset
In all of these approaches, both boundaries remain mathematically linked.
Adaptive Flow Channel follows a different architecture.
✅ Upper boundary is built from recent Highs
✅ Lower boundary is built from recent Lows
✅ Each side is calculated independently before forming the final channel
✅ The channel naturally deforms whenever directional pressure becomes unbalanced
━━━━━━━━━━━━━━━━━━
🏗 Algorithm Architecture
━━━━━━━━━━━━━━━━━━
① Independent Price Flow
Instead of one central reference, the indicator creates two independent flow models.
• Upper Flow → derived from recent Highs
• Lower Flow → derived from recent Lows
These become the structural foundation of the adaptive channel.
② Volatility Adaptation
Current volatility is measured using ATR.
Instead of acting as a fixed offset, volatility becomes a dynamic scaling component that continuously adjusts ribbon spacing.
As volatility increases, the structure naturally widens.
As volatility decreases, it contracts.
③ Directional Pressure
Directional movement is evaluated separately on each side of the market.
⬆ Positive pressure is estimated from advancing highs.
⬇ Negative pressure is estimated from declining lows.
Both values are normalized by current volatility, allowing consistent behavior across different markets.
④ Independent Ribbon Expansion
This is the defining feature of the algorithm.
Each ribbon expands only according to its own calculated pressure.
Possible structural states include:
🟢 Expanding upper ribbon
🔴 Expanding lower ribbon
🟡 Simultaneous expansion
⚪ Simultaneous contraction
Unlike mirrored channels, neither boundary is constrained by the other.
⑤ Adaptive Smoothing
Both flow models are smoothed independently before rendering.
This reduces short-term market noise while preserving meaningful structural changes.
━━━━━━━━━━━━━━━━━━
🌈 Layered Ribbon Visualization
━━━━━━━━━━━━━━━━━━
Each ribbon consists of multiple adaptive layers surrounding its primary flow boundary.
Ribbon width is calculated dynamically using:
• Current volatility
• Measured directional pressure
As directional activity increases, ribbons gradually widen.
As activity decreases, they naturally contract.
The layered rendering improves structural readability without affecting the underlying calculations.
━━━━━━━━━━━━━━━━━━
📍 Signal Logic
━━━━━━━━━━━━━━━━━━
Signal markers are not generated by ribbon touches or simple crossovers.
Instead, the indicator maintains an internal directional tracking engine.
A signal appears only after:
✅ The internal flow state changes direction
✅ The directional transition is confirmed
This helps reduce repeated signals during sustained trends while highlighting meaningful structural transitions.
━━━━━━━━━━━━━━━━━━
⚙️ Inputs
━━━━━━━━━━━━━━━━━━
Flow Engine
Response Length
Controls the sensitivity of the internal directional engine.
Response Factor
Higher values require stronger directional movement before a state transition occurs.
Confirm Signals On Bar Close
Displays signals only after candle confirmation.
Adaptive Channel
Flow Length
Controls how quickly both flow models respond to price.
Flow Smoothness
Additional smoothing applied to both adaptive boundaries.
Volatility Length
ATR period used for volatility adaptation.
Channel Distance
Defines the base spacing between price and the adaptive ribbons.
Flow Reaction
Controls how strongly directional pressure influences ribbon positioning.
Ribbon Thickness
Adjusts the visual thickness of the adaptive ribbons.
Signals
Show Signal Tags
Enable or disable signal markers.
Signal Distance
Adjust the marker position relative to the ribbon.
Color Candles
Optionally color candles according to the current flow direction.
Visual Style
Customize:
🎨 Ribbon colors
✨ Ribbon glow
🌫 Layered shading
📈 Optional flow guide
━━━━━━━━━━━━━━━━━━
📊 Practical Interpretation
━━━━━━━━━━━━━━━━━━
Typical observations include:
📈 Expanding upper ribbon → strengthening upward pressure
📉 Expanding lower ribbon → strengthening downward pressure
📍 Contracting ribbons → decreasing directional activity
⚖ Asymmetrical ribbon expansion → directional imbalance
🔄 Confirmed flow transition → potential structural change
Adaptive Flow Channel is designed as a market structure visualization tool and is intended to complement price action analysis rather than function as a standalone trading system. Indicator

Indicator

Strategy

NATR (Normalized ATR) Oscillator🍀Overview
NATR (Normalized ATR) Oscillator converts Normalized Average True Range into a rolling 0–100 oscillator, making it easier to evaluate current volatility relative to recent market conditions.
NATR is calculated as ATR divided by the current closing price and expressed as a percentage. The indicator then compares that value with the highest and lowest NATR readings over the selected lookback period.
🍀Features
Displays normalized volatility on a 0–100 scale.
Highlights low- and high-volatility conditions with configurable threshold levels.
Includes a 50 midline to identify neutral relative-volatility conditions.
Uses gradient fills to visually emphasize elevated volatility above the midline and subdued volatility below it.
Works across markets and price ranges because ATR is normalized by price.
🍀Inputs
ATR Length — Number of bars used to calculate Average True Range. Default: 14.
NATR Min-Max Lookback — Number of bars used to normalize NATR into the rolling 0–100 oscillator range. Default: 14.
High Volatility Level — Upper threshold used to identify relatively high volatility. Default: 80.
Low Volatility Level — Lower threshold used to identify relatively low volatility. Default: 20.
🍀Usage
Readings above the High Volatility Level indicate that normalized volatility is near the upper end of its recent range. This may occur during breakouts, rapid price moves, or volatile market conditions.
Readings below the Low Volatility Level indicate that normalized volatility is near the lower end of its recent range. This may occur during consolidation, compression, or quieter trading conditions.
Readings near 50 suggest that volatility is relatively neutral compared with the selected lookback period.
Use the oscillator to adapt trade selection, position sizing, stop placement, or strategy expectations to the current volatility regime.
Combine it with trend, momentum, volume, and price-action tools for context. The oscillator measures volatility only; it does not determine market direction.
🍀Disclaimer
This indicator is provided for informational and educational purposes only. It is not financial advice, investment advice, or a recommendation to buy or sell any asset.
The oscillator measures relative volatility within the selected rolling lookback window. A high or low reading reflects recent context and does not guarantee future price movement, trend direction, or trading performance. Always use independent analysis and appropriate risk management before making trading decisions.
Indicator

UTM Synesthesia ESP - 4 Market Phases IndicatorDescription:
Overview
The "UTM Synesthesia ESP" is a highly intuitive trend-following indicator designed to identify the current market phase by utilizing two core dynamic base lines: the Pami (Shifted Mid-Channel) and the Nomi (Volatility-based Trailing Stop). By evaluating the price action relative to these two levels, the indicator divides the market into four distinct phases, projecting them via clear background colors.
Key Components
Pami (Mid-Channel, Blue Line): A price channel calculated based on historical closing prices, shifted horizontally. It serves as the primary gauge for the macro-trend direction.
Nomi (Volatility Trailing Line, Yellow Line): A responsive trailing stop level calculated using a combination of the Average True Range (ATR) and Weighted Moving Average (WMA). It acts as a dynamic support/resistance for short-term momentum.
4 Market Phases (Background Colors)
The indicator paints the chart background to help traders instantly recognize the current market condition:
🟢 Strong Bull (Bright Green): Price > Pami AND Price > Nomi. Indicates strong upward momentum. Ideal for trend-following long positions.
⚫ Weak Bull / Pullback (Dark Green): Price > Pami BUT Price < Nomi. The macro trend remains bullish, but the market is experiencing short-term consolidation or a pullback.
🔴 Strong Bear (Bright Red): Price < Pami AND Price < Nomi. Indicates strong downward momentum. Ideal for trend-following short positions.
⚫ Weak Bear / Pullback (Dark Red): Price < Pami BUT Price > Nomi. The macro trend remains bearish, but a short-term bounce or sideways consolidation is occurring.
How to Use
Trend Riding: Focus on capitalizing on the Bright Green and Bright Red zones where both macro and micro trends align.
Pullback Entries: Use the Dark Green and Dark Red zones to identify potential "buy the dip" or "sell the rally" opportunities, or to take profits and manage risk during consolidations.
Customizability: All inputs—including channel lookback, shift periods, and volatility multipliers—are fully customizable to suit your trading style, asset class, and timeframe. Indicator
