IREN LTD (RON DAVID SHALOM)COMPOSITE SIGNAL WITH SELF-MEASURED STATISTICS
This indicator combines several classic factors into one buy/sell
signal — and, more importantly, measures its own track record on
whatever symbol and timeframe you load it on.
HOW THE SIGNAL WORKS
Each candle is scored by factors that vote independently: trend
(EMA 9 vs EMA 20), RSI extremes, volume surges, candlestick
patterns, Stochastic crosses in oversold/overbought zones, and
rejection at a confirmed prior pivot high. A signal fires only when
enough factors agree — you set the threshold. Buy stays "active"
until a sell fires and vice versa, so you get one label per turn
instead of a cluster.
WHAT MAKES IT DIFFERENT: THE MEASUREMENT
Every pattern and factor is backtested live across the full history
of the chart. Tables show, for each one: how many times it occurred,
what percentage worked, and average return.
Crucially, there is a BASELINE row measuring what happens after a
random candle. On a stock with strong upward drift, a pattern
scoring 55% may show no edge at all if the baseline is also 55%.
Read every row against the baseline, not against 50%.
WHAT IT MEASURES
- All 11 classic candlestick patterns, with trend context (hammer
vs hanging man are the same shape — the prior trend decides which)
- Trend age and depth: how long and how far the current move has
run, versus what is typical, plus the share of past moves that
continued from this point
- Support/resistance zones tested from both directions
- Intraday floor and ceiling tests: did price pierce a level during
the session and close back, or close through?
- Opening gap versus session move
- Correlation with a reference asset, sector ETFs and the index
SETTINGS
Signal threshold, evaluation horizon, zone boundaries and all
comparison symbols are configurable. Tables can be toggled off.
HONEST LIMITATIONS
- These are historical frequencies, not predictions. A 65% pattern
is still wrong one time in three.
- Small sample sizes are shown deliberately. A percentage built on
5 cases means nothing — always check the count.
- Testing many conditions at once means some will look good by
chance. Treat only large differences on decent samples as real.
- Default zone levels and factor selection were tuned on one
specific stock. On other symbols, check the tables first and
adjust — what works on one stock often fails on another.
Not financial advice. For research and study. Indicator

ICT Pre-market ranges (NY AM)This indicator plots the New York pre-market range — the high-to-low of price action between 07:00 and 09:00 NY time — as a box, with optional internal quarter, eighth, and range-boundary level lines, plus projected fib target lines and shaded target areas.
The two hours before the 09:30 cash open often establish the day's early liquidity and balance. Within ICT (Inner Circle Trader) methodology, the boundaries of this pre-market range and its internal subdivisions act as reference points once the NY AM session begins: price frequently reacts at the range extremes, the 0.5 equilibrium, and the intermediate quarter and eighth levels. Drawing these levels ahead of the open gives a ready-made framework for the session.
What It Plots
Once the 07:00–09:00 NY window closes, the indicator measures the highest high and lowest low of that window (from wicks by default, or candle bodies if you prefer) and draws a box between them. Level lines subdivide the range, and fib target lines project beyond it, so equilibrium, retracement, and extension levels are visible at a glance.
Visual Elements
Peach range box spanning the 07:00–09:00 NY pre-market window
Optional centered box title ("Pre-Market range" plus the weekday and date), with selectable position and font size
Range boundary lines at 0 and 1 (low and high)
Quarter lines at 0.25, 0.5, and 0.75
Eighth lines at 0.125, 0.375, 0.625, and 0.875
Optional extension of level lines toward the trading day end (00:00), tracking the current time
Fib target lines outside the range at ±0.5, ±1.0, ±1.5, ±2.0, and a custom multiple
Optional filled target-area bands per fixed target step — bullish (above the high) and bearish (below the low), each successive band a bit darker
Optional fib labels (0 … 1 and ±targets) beside each line, on the left or right side
How To Use It
Add the indicator to an intraday chart (15m–1H shows the pre-market range and the NY AM session together well).
Watch for reactions at the range high/low, the 0.5 equilibrium, and the quarter/eighth levels during the NY AM session.
Use the ± fib targets and shaded target areas to frame where an expansion out of the range may be heading.
Enable "Extend Levels to Day End" to carry the levels across the whole trading day as reference.
Use "Days to Show" to compare the current pre-market range against previous days.
Settings Overview
General: show/hide box, box title with its position and font size, days to show (1–10), pre-market window time, wicks vs bodies
Level Lines: range lines (0/1), quarter lines (0.25/0.5/0.75), eighth lines, extend to day end, line labels on/off, label side (left/right), label horizontal offset
Fib Target Lines: ±0.5, ±1.0, ±1.5, ±2.0, and a custom multiple; "Fill Target Areas" on/off; bullish and bearish target-band colors
Colors: box fill color, line color, line weight, line style (solid/dashed/dotted), and an optional box border (uses the line color)
Technical Notes
Range detection uses 1-minute intrabar data via request.security_lower_tf(), so the pre-market high and low are captured accurately on any chart timeframe. Boxes and level lines are time-anchored (xloc.bar_time) so past days line up with their real timestamps. The box is fixed to the 07:00–09:00 window; when the day-end extension is enabled, the level lines extend to the current time and are capped at the trading day end (00:00), so they never project past the latest bar. Only weekdays (Monday–Friday) are processed. Indicator

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

KOCA Order Blockskoca orrder block is a highly configurable PulseWire indicator designed to identify potential demand, supply, order-block, and pullback zones. It combines two different detection methods and allows the user to control how strict or loose the zone detection should be.
Detection modes
The indicator offers three detection methods:
Base Break
Identifies the last opposite-colored candle as a potential base. A demand zone is created when price breaks above a bearish base candle, while a supply zone is created when price breaks below a bullish base candle.
Candle Streak
Detects bullish or bearish momentum based on a configurable number of consecutive candles moving in the same direction. The zone can be created from either the last opposite candle or the first candle of the impulse.
Hybrid
Requires both conditions at the same time: price must break the base candle and a valid bullish or bearish candle streak must also be present.
Multi-timeframe functionality
The indicator can calculate zones from a separate source timeframe and display them on the current chart.
For example, it can display:
15-minute order blocks on a 5-minute chart
1-hour supply and demand zones on a 15-minute chart
Daily zones on an intraday chart
For correct behavior, the source timeframe should normally be equal to or higher than the chart timeframe. New source-timeframe zones are processed only after the source candle has closed, which helps reduce repainting.
Quality filters
The user can filter weaker setups using several optional conditions:
ATR-based displacement
Confirmed Break of Structure
Volume spike
Average impulse volume
Candle body-to-range ratio
Close location near the candle high or low
Directional confirmation candle
Four strictness presets are available:
Loose: no ATR or BOS requirement
Medium: requires at least 1.5 ATR displacement
Strict: requires at least 2.5 ATR displacement and a confirmed BOS
Custom: allows manual control of ATR and BOS requirements
The BOS logic uses confirmed swing highs and lows and attempts to count each structural break only once.
Zone construction
Zones can be drawn using three different methods:
Full Range: candle high to candle low
Body: candle open to candle close
Refined: open-to-low for demand and high-to-open for supply
An optional 50% midpoint line can be displayed inside every zone.
Zone lifecycle
Each detected zone can move through several states:
Fresh: price has not returned to the zone
Tested: price has touched the zone for the first time
Mitigated: price has entered a configurable percentage of the zone
Invalidated: price has closed or wicked through the opposite boundary
Breaker: an invalidated zone has been converted into a zone with the opposite direction
The first-touch behavior can be configured to:
Ignore the touch
Mark the zone as tested
Stop extending the zone immediately
Mitigation depth is adjustable from 1% to 100%. Invalidation can be based on either candle close or wick penetration.
Invalidated zones can be deleted, retained, recolored, or converted into breaker blocks.
Display controls
The indicator provides separate colors for:
Demand zones
Supply zones
Tested zones
Mitigated zones
Invalidated zones
Bullish breakers
Bearish breakers
The fill color, border color, transparency, border visibility, and border thickness can all be adjusted.
To keep the chart clean, the indicator can display only the nearest active zones above and below the current price while keeping more distant zones stored internally.
Debugging and alerts
The optional debug mode marks rejected candidates and shows why they failed, such as:
Insufficient ATR displacement
Missing BOS
Insufficient volume
Invalid base candle
Poor confirmation-candle quality
Alerts are available for:
New demand zone
New supply zone
First zone test
Zone mitigation
Zone invalidation
Bullish breaker creation
Bearish breaker creation
This indicator does not predict guaranteed reversals. It highlights areas where price previously showed structural or momentum-based displacement and where a future reaction may occur. Indicator

Indicator

Indicator

Heikin Ashi RSI Oscillator with Opposing AlertsHeikin Ashi RSI Indicator
The Heikin Ashi RSI Indicator combines price action with a Heikin Ashi RSI oscillator to highlight potential fake pullbacks within an established trend.
The indicator compares the direction of the normal price candle with the direction of the Heikin Ashi candle inside the RSI oscillator.
When both candles move in the same direction, momentum is aligned. When they oppose one another, the signal is classed as an Imposter.
An diversion appears when:
The price candle closes bearish, but the HARSI candle closes bullish.
The price candle closes bullish, but the HARSI candle closes bearish.
This difference suggests that the visible price move may not reflect the underlying momentum. When it occurs during a clear trend, the opposing price candle can be considered a potential fake pullback, rather than an immediate trend reversal.
The indicator includes chart markers and alert conditions for both types of candles.
Trend rules
signals should only be considered in the direction of the established trend.
Bullish trend
The RSI line is above the Heikin Ashi RSI candles.
In a bullish trend, focus on bearish price candles that close against bullish HARSI candles. These may represent fake bearish pullbacks before the upward trend continues.
Bearish trend
The RSI line is below the Heikin Ashi RSI candles.
In a bearish trend, focus on bullish price candles that close against bearish HARSI candles. These may represent fake bullish pullbacks before the downward trend continues.
Suggested use
The indicator is best suited to the:
30-minute timeframe
1-hour timeframe
For cleaner signals, allow the candle to close before acting and set PulseWire alerts to Once Per Bar Close.
This indicator should be used as a confirmation tool rather than a standalone entry system. Always assess the wider market structure, trend direction, support and resistance, and your own risk-management rules before taking a trade. Indicator

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

Multi Pattern Candle Reversal RR System [ChartTechnicalx]A multi-pattern reversal/breakout scanner with automatic risk:reward boxes, forward trade tracking, and a live win-rate table.
This tool scans price action for four distinct setups — small-candle rejections, engulfing reversals, compression breakouts, and pole-and-flag structures — and, when one fires, plots the entry, stop-loss, and take-profit as boxes projected forward on the chart. Every signal is tracked bar-by-bar against its SL/TP so you get an honest, non-repainting record of how each pattern actually performed, summarized in an on-chart results table (win / loss / close-to-cost / win rate).
No repainting: every signal and every trade outcome is calculated only on confirmed (closed) bars.
How it works
The indicator looks for four independent pattern types. Any of them can trigger a long or short signal; you can enable/disable each one separately.
1. Small Candle Pattern
A small-bodied rejection candle at a fresh swing low/high, followed by a small-bodied confirmation candle in the same direction.
Small Body Max (x ATR) – caps how big candle 1 and candle 2's bodies can be, relative to ATR, to still count as "small."
Min Wick / Body Ratio (Candle 1) – how long candle 1's rejection wick must be relative to its own body.
Both candles must occur at a fresh low (longs) or high (shorts) versus the Pivot Lookback Bars.
2. Engulfing Pattern
A classic bullish/bearish engulfing candle occurring at a fresh swing low/high, with three optional confirmation filters:
Require Engulf Size Ratio – candle 2's body must be at least N× candle 1's body.
Require Volume Spike – candle 2's volume must exceed its average by a set multiple.
Require Strong Close – candle 2 must close within the top/bottom X% of its own high-low range (rules out engulfing candles with long opposing wicks/indecisive closes).
3. Compression Breakout Pattern
Catches violent expansion candles breaking out of a tight multi-bar base — the move the other two patterns miss because there's no small candle or engulfing shape involved, just a coil followed by a release.
Base Lookback (bars) – how many bars immediately before the signal candle are checked for a tight base.
Max Base Range (x ATR) – how tight that base's high-low range must be.
Min Breakout Candle Body (x ATR) – how large the signal candle's body must be to count as a genuine expansion rather than noise.
4. Flag Pattern
Pole + flag structures: a sharp impulse candle, a tight consolidation right after it, then a decisive breakout of that consolidation.
Min Pole Candle Body (x ATR) – how large the impulse candle must be.
Pole Search Window (bars before flag) – instead of requiring the pole to sit on one exact bar, the indicator scans this many bars before the flag and uses whichever one has the biggest body. This makes detection far more reliable on real charts, where the impulse candle rarely lands on a perfectly fixed offset.
Flag Consolidation Bars – how many tight bars make up the flag.
Max Flag Range (x ATR) – how tight the consolidation must be.
Min Breakout Candle Body (x ATR) – how decisive the breakout candle must be.
Only Signal Reversal vs Pole – when ON, only fires when the breakout direction is opposite the pole (spike up → tight pullback → breaks down, or vice versa — an exhaustion/blow-off structure). When OFF (default), it also catches same-direction continuation flags.
Show Flag Consolidation Zones (debug) – draws every detected pole+flag setup on the chart, even ones that never break out, so you can visually see why a flag you spotted by eye didn't fire (range too wide, breakout candle too small, etc).
Chop / Range Filter
Reversal and breakout patterns are far less reliable inside dead, sideways chop. This section filters signals by market condition:
Require Trending Market (ADX) – blocks signals unless ADX is above your threshold.
Min ADX to Allow Signal – the ADX floor (20–25 is the common baseline for "trending").
Override: Allow if ADX Rising – ADX is a lagging indicator, so a brand-new trend's first few bars often still show low ADX. If ADX has been climbing over the lookback window, the signal is allowed through anyway.
Override: Allow on Volatility Breakout – if the signal candle's own range is a large expansion versus ATR, that's independent evidence of a trend starting, so the signal is allowed even if the ADX checks fail.
Enable Signal Cooldown – enforces a minimum number of bars between signals, preventing clustered, overlapping signals during choppy stretches.
Require Range Expansion (ATR vs ATR-MA) – optional extra filter that blocks signals when current volatility (ATR) is below its own moving average, i.e., the market is quiet/contracting.
Trade Settings
Reward : Risk Ratio – sets the take-profit distance as a multiple of the stop-loss distance for every signal.
Box Forward Extension (bars) – how far forward the entry/SL/TP boxes are drawn.
Enable CTC (Close-To-Cost) Outcome – if price runs in your favor far enough (see below) before hitting stop-loss, the trade is logged as CTC instead of a full loss, reflecting a realistic breakeven-plus stop management approach rather than assuming you'd sit through a full round-trip back to your original stop.
CTC Threshold (min R reached before SL) – the minimum favorable excursion, in R multiples, required before a stop-out counts as CTC instead of a loss.
Table Settings
Show Trade Results Table – toggles the on-chart performance table.
Max Trades Shown – how many recent trades are listed.
Table Position – corner placement.
The table logs every signal with its pattern type, direction, entry/SL/TP, result (WIN/LOSS/CTC), and the maximum R multiple reached — plus running totals and a win rate that excludes CTC trades from both the win and loss counts (since they're neither).
Suggested starting settings
These are reasonable defaults to start from — always forward-test and adjust for your instrument, timeframe, and volatility profile before trading live:
Setting Suggested value Why
ATR Length 14 Standard volatility baseline
Pivot Lookback Bars 5–8 Confirms a genuine fresh swing point without being too strict
Small Body Max (x ATR) 0.4–0.6 Keep tight so "small" candles stay meaningfully small
Engulf Size Ratio 1.3–1.5x Filters out marginal engulfing candles
Require Volume Spike On, 1.2x+ Volume confirmation reduces false engulfs significantly
Compression Base Range 1.0–1.5x ATR Tighter = higher quality but fewer signals
Flag Pole Body 1.3–1.8x ATR Should clearly stand out from surrounding candles
Flag Range 1.0–1.3x ATR A true flag should be visibly tight vs. the pole
ADX Threshold 20–25 20 is looser/more signals, 25 is stricter/higher quality
Reward:Risk 2:1 to 3:1 Balances win rate against payout; lower R:R needs a higher win rate to be profitable
Signal Cooldown 8–15 bars Prevents signal clustering in choppy conditions
On lower timeframes (1m–5m) and noisy instruments (gold, indices), lean toward tighter compression/flag ranges and a higher ADX floor to cut down on false breakouts. On higher timeframes (1H+), the default settings tend to hold up well as-is.
Notes
This indicator does not repaint: signals and their outcomes are only finalized on confirmed, closed bars.
The trade results table reflects this indicator's rule-based SL/TP simulation, not a full backtest with fees, slippage, or position sizing — treat it as a pattern-quality gauge, not a P&L guarantee.
This is a tool for identifying and evaluating patterns, not financial advice. Always manage your own risk. Indicator

MSnR QM LevelMSnR QM Level
This script detects Quasimodo (QM) levels from the close prices of consecutive candles and draws
them as horizontal support and resistance lines.
A QM Level forms when price creates a turning point, breaks it, builds a second turning point on
the other side, and then breaks that too. What is left behind is the price of the original turning
point, which is where liquidity was trapped and where the market often reacts again.
The result is a structural map of QM levels across the scan window, drawn as horizontal lines that
extend to the right from the candle that set the price.
WHAT MAKES THIS DIFFERENT
1. Strict four step detection.
Most QM tools look for swing highs and swing lows relative to some lookback period. This script
uses a precise four step sequence built entirely from consecutive candle pairs. Every step must
complete before a QM Level is confirmed, which eliminates the vague heuristics that plague swing
based detection.
2. The level price is the CLOSE, not the wick.
Every level sits at the close of the candle that set it. Closes are where the market actually
agreed on a price, which is why a close through a level counts as a break here while a wick through
it does not.
3. Every level is checked for uniqueness.
Duplicate prices within a small tolerance are not drawn twice. If two QM Levels land on the same
price, only one line appears. This keeps the chart clean without losing any information.
4. Detection reads confirmed candles only.
The running candle is never used. Every detection step requires a fully closed candle, and the scan
starts one bar behind the latest bar. Nothing on the chart changes while a candle is still open.
THE TWO QM TYPES
A candle is Green when close is greater than open and Red when close is less than open. A Doji,
where close equals open, is neither and forms no level. Only fully closed candles are read.
Buy QM (support)
Step 1. Find a V Level: a Red candle followed by a Green candle. The V Level price is the close of
the Red candle.
Step 2. Find the earliest Red candle after the V Level that closes below the V Level price. This is
the V Breakdown.
Step 3. Between the V Level and the V Breakdown, find an A Level: a Green candle followed by a Red
candle. Use the one nearest the V Breakdown if several exist. The A Level price is the close of the
Green candle.
Step 4. After the V Breakdown, find any Green candle that closes above the A Level price. The A
Level is now broken upward.
If all four steps confirm, the V Level price becomes the Buy QM Level. The line is drawn at that
price and extends to the right.
Sell QM (resistance)
Step 1. Find an A Level: a Green candle followed by a Red candle. The A Level price is the close of
the Green candle.
Step 2. Find the earliest Green candle after the A Level that closes above the A Level price. This
is the A Breakout.
Step 3. Between the A Level and the A Breakout, find a V Level: a Red candle followed by a Green
candle. Use the one nearest the A Breakout if several exist. The V Level price is the close of the
Red candle.
Step 4. After the A Breakout, find any Red candle that closes below the V Level price. The V Level
is now broken downward.
If all four steps confirm, the A Level price becomes the Sell QM Level. The line is drawn at that
price and extends to the right.
In both cases the QM Level marks the price of the ORIGINAL turning point: the one that was broken,
rebuilt from the other side, and then had its counterpart broken as well. That is the price where
liquidity was trapped, and it is the price the script watches.
READING THE CHART
Color tells you the side:
- Green line and green label: Buy QM. This level sits below price as support.
- Red line and red label: Sell QM. This level sits above price as resistance.
Each line starts at the candle that set its price and extends to the right, so you can see how
price has behaved around it since. The label sits at that same candle, below the line for a Buy QM
and above it for a Sell QM, so it never covers the line itself.
A summary table in the corner counts how many Buy QM and Sell QM levels were found in the current
scan window, including those that are hidden by a toggle. The table always reflects what the market
actually printed rather than what is currently switched on.
SETTINGS
Scan
- Scan Length: how many closed candles are scanned backwards from the latest bar. Every QM Level
inside that window is drawn. The running candle is always excluded.
Level Types
- An individual switch for Buy QM and Sell QM. Hiding one side is useful when you only want to
see levels in one direction.
Style
- Sell QM Color and Buy QM Color.
Labels
- Show Labels, Label Offset in ticks, and Label Size. The offset is measured in ticks, so a value
that looks right on one symbol may need adjusting on another.
Summary Table
- Show, position and size of the corner table.
ALERTS
Two alert conditions are available: Buy QM and Sell QM.
Each message carries the level type, the symbol, the timeframe and the closing price. The same
messages are also sent through the alert function, so the "Any alert() function call" alert type
can deliver both through a single alert.
All alerts are evaluated only after a candle has fully closed.
An alert fires when the four step QM sequence completes on the latest closed candle. Because
completion requires a breakout of the inner level, these alerts do not fire on every bar; they fire
only when price actually confirms a new QM structure.
REPAINTING
This script does not repaint.
- Detection reads confirmed candles only. The scan starts one bar behind the latest bar, so the
candle that is still forming is never part of any calculation.
- Alert signals can only become true once a candle has finished. Price moving inside an open candle
cannot make a signal appear and then disappear.
- Levels are rebuilt on the last bar from confirmed history. A level's price never moves. Once
drawn, nothing shifts backwards.
When you create an alert, PulseWire may show a caution banner saying the indicator can repaint.
That banner appears automatically for any script that uses the built in bar state variables, no
matter how they are used, because the platform cannot check the intent behind them. This script
uses them for the opposite purpose: one of them is what restricts every signal to bar close, and
the other is what redraws the levels efficiently on the final bar. Choosing "Once Per Bar Close"
when creating the alert is still recommended.
NOTES AND LIMITATIONS
- A QM Level requires a specific four step sequence to complete. That makes them less common than
plain A and V Levels, so stretches with few or no QM Levels are normal and expected.
- PulseWire caps drawings at 500 lines and 500 labels. A very long Scan Length will hit that
ceiling and the oldest drawings will be dropped. The default is chosen to stay well inside it.
- The label offset is measured in ticks, and a tick is worth a very different amount on a crypto
pair than on a forex pair. Expect to adjust it when you move between symbols.
- Level prices come from closes, so a level can sit in the middle of a long wick. That is
deliberate, not a bug.
- Duplicate prices within a tolerance of two ticks are drawn only once. If two QM Levels land on
nearly the same price, you see one line instead of two stacked on top of each other.
- Detection is purely structural. It reports where QM Levels are and which side they sit on. It
does not rank them by strength, measure what happened afterwards, or produce entries, targets or
stops.
HOW TO USE IT
A QM Level marks a price where price created a turning point, broke it, built the opposite turning
point, and then broke that too. The original turning point is where one side was trapped, and price
returning to that price often produces a reaction.
Buy QM Levels below price act as support. Sell QM Levels above price act as resistance. When
several levels cluster near the same price, the area is often more significant than any single
level, since separate structures agreeing on one price is what a real zone looks like.
These are reference levels, not entry signals. Use them alongside higher timeframe structure, and
apply your own confirmation and risk management.
DISCLAIMER
This indicator is a level detection tool. It is not financial advice and it makes no claim about
profitability. Trading involves risk. Always apply your own analysis and risk management. Indicator

Prop Key Levels & Order Blocks - Buy Sell Signals with TP/SLA complete intraday trading suite built around one idea: the decision candle.
Instead of guessing where price might turn, the script marks the exact candles
where the market already made a decision, and then tells you what happened when
price came back to them.
Everything is evaluated on closed bars. Printed signals never move.
━━ WHAT IT DRAWS ━━
MAJOR KEY DETECTION
The origin candle of an impulsive displacement leg. Its body becomes a level
that extends to the right. Green for bullish decisions, red for bearish ones.
When price closes clean through a key, the level is greyed out — it failed, and
you can see that it failed. The detection level (1–100) sets how far price must
travel out of a candidate before it is accepted, so you can go from "every small
turn" to "only the moves that really expanded".
MAJOR ORDER BLOCKS
The last opposing candle before a structural break. Drawn as a box that survives
until price closes through it.
TREND DETECTION
A volatility-scaled trailing line under price, green while bullish and red while
bearish. It is the filter one of the two entry engines uses, and a weighted
component of the other.
ORDER POOL
Price levels that were rejected repeatedly and still hold unfilled resting
orders. Each pool is parked as an arrow at the right edge of the chart. You
decide what happens once price trades through one: remove it (the orders are
spent) or keep it dimmed, so you can still trade the reaction after the sweep.
SMART FVGS
Three-candle imbalances, filtered by a minimum size so the chart is not buried
under meaningless micro-gaps.
━━ THE ENTRY ENGINE ━━
Two independent algorithms, selectable in the settings.
PROP MODE — conservative. A signal needs the trend filter, a key level or order
block, and a confirmation candle to agree, and price must not already be
extended. Fewer trades, built for accounts where a handful of clean entries
beats constant activity.
AI-MODE — adaptive. Trend, momentum, key level, order block, pool sweep, fair
value gap and candle quality each contribute a weighted score. The engine fires
when the combined score clears a threshold you control, so it also takes the
reversals the conservative mode filters away.
Every entry comes with three take profits (Minor, Major, Highest) and a stop.
All four are expressed in volatility units — one unit is the ATR at the signal
bar — so the distances breathe with the market instead of being a fixed point
value that is wrong on half the days.
The reward box, the risk box and the projection line are drawn forward from the
entry, so one glance tells you whether the trade is worth taking. Hover any
signal badge to read why it fired and every price it produced.
━━ COOLDOWN ━━
After a signal, the engine mutes itself for a configurable number of bars. This
is what stops it from firing ten entries into the same move — the single
fastest way to run into a daily loss limit.
━━ DASHBOARDS ━━
A trade metrics table in the corner lists the live entry, all three targets, the
stop, the reward-to-risk and the cooldown state — the numbers you copy into your
order ticket.
A cockpit panel shows the live checklist (trend, key level, order block, pool
sweep, candle, cooldown), the running position, and a hit count across the whole
loaded history: how often each target was reached and how often the stop came
first.
━━ ALERTS ━━
Entry, take-profit hit and stop hit, as readable text or as a JSON object
carrying side, entry, all three targets, the stop and the reward-to-risk — the
format execution bridges expect.
━━ SETTINGS ━━
① Engine Control — strategy type, score threshold, cooldown, metrics table
② Trade Config — Minor / Major / Highest TP, SL, volatility unit
③ Insight Matrix — key detection and its level, order blocks, trend
④ Orderflow & Smart FVGs — order pool, touch count, tolerance, fill handling
⑤ Visuals — theme, candle colouring, boxes, price lines, panel, drawing budget
⑥ Alerts — what to fire and in which format
Every input carries a tooltip explaining what it does and what changes when you
move it.
━━ NOTES ━━
Designed for intraday work on index CFDs, gold and FX. The defaults were set up
on 1- to 15-minute charts; on higher timeframes raise the cooldown and the key
detection level.
This is an analysis tool, not financial advice. Past behaviour of any level or
signal says nothing about future results. Test any configuration on your own
instrument and timeframe before trading it. Indicator

Indicator

UPDATED: COMBO - EMA/LRI/SuperTrend/HMA StrategyOverview
The EMA / LRI / SuperTrend / HMA Execution Suite is a streamlined overlay designed for intraday momentum traders, scalpers, and trend followers. It combines dynamic trend baselines, statistical breakout evaluation, and multi-tier moving average filters into a single, highly performant script.
By focusing purely on high-probability trend structure and dynamic fair value, this indicator keeps your chart visually clean and clutter-free for quick execution.
Key Features & Components:
Core Purpose: An advanced multi-indicator technical suite specifically designed for futures and stock trading.
Moving Averages & Momentum: Integrates a customizable Exponential Moving Average (EMA), a versatile Hull Moving Average (HMA) with both single and 3-HMA crossover modes, and a directionally-colored Linear Regression Index (LRI) for momentum tracking.
Breakout Probability Engine: Features a SuperTrend overlay enhanced with a relative volume Gaussian Kernel Density Estimation (KDE) model to calculate breakout strength and display confidence percentage labels.
Visual Adjustments: Includes fully customizable vertical offsets and connecting lines for the probability bubbles to maintain clear chart readability.
Comprehensive Alerts: Built-in alert conditions for trend flips, high-confidence breakouts, and moving average or price crossovers against the LRI.
Indicator

MACD Trend Phase MTF by [Itto Ryu]# MACD Trend Phase MTF by — User Manual (Publication Version)
---
## 1 · Purpose
This indicator answers one question: **"Where are we in the trend lifecycle?"** — not merely "has MACD crossed yet?"
A single MACD can only describe momentum state; it cannot describe trend *phase*, because phase emerges from the relationship between multiple timeframes. This script reads a PPO-normalized MACD across three time layers — a slow timeframe sets the regime, a mid timeframe defines the phase, and the chart timeframe tracks entry timing — then outputs an instantly readable phase name, a multi-timeframe dashboard, and a weighted consensus verdict (MAJOR).
Because everything is normalized to percentages, it works on any market and any symbol: index futures, stocks, crypto, or forex.
## 2 · Methodology
**Engine — PPO (Percentage Price Oscillator):**
```
PPO = (EMA(close,12) − EMA(close,26)) / EMA(close,26) × 100
Signal = EMA(PPO, 9)
Hist = PPO − Signal
```
PPO is used instead of raw MACD so thresholds stay constant across markets and across years (raw MACD is denominated in price units and cannot be compared across symbols).
**Phase state machine (computed on the Phase TF, default 4H):** each timeframe uses only three features:
1. **Regime** — PPO above/below zero
2. **Impulse** — PPO above/below its signal line
3. **Leg-peak memory** — is the latest impulse leg's PPO peak lower than the previous leg's peak? (structural momentum divergence)
Combined with the slow-TF regime, this yields 9 phases:
| Phase | Condition | Meaning |
|---|---|---|
| ESTABLISHED BULL | Slow bull + mid bull + impulse up | Fully aligned uptrend |
| BULL PULLBACK | Mid bull + impulse down + peaks not declining | Correction inside an uptrend — a classic continuation setup |
| WEAKENING BULL | Mid bull + impulse down + lower peaks | Late-stage uptrend — momentum thinning |
| EMERGING BULL | Mid bull but slow TF not yet bull | New trend, not yet confirmed |
| TRANSITION / CHOP | \|PPO\| < chop threshold | No phase — directionless market |
| (4 BEAR phases = mirror) | | BEAR RALLY = the mirror continuation setup |
**Anti-flicker:** the committed phase changes only after the new raw phase persists for N chart bars (default 2) — hysteresis prevents flickering.
**Timing signal:** when the phase is a pullback phase and the chart-TF histogram inflects back in the trend direction (`hist > hist ` after falling, or the mirror), a ▲/▼ triangle prints on the price chart. The idea: the higher timeframe defines *where* momentum entries make conceptual sense; the chart timeframe shows *when* the counter-move is fading.
**MAJOR consensus:** each grid TF scores its phase (Established ±1.0, Pullback ±0.75, Emerging ±0.5, Weakening ±0.25, Chop 0), weighted by timeframe (default 30m×1, 1H×1.5, 4H×2, D×3) → summed into a net % → |net| ≥ 20% = LONG/SHORT lean, ≥ 50% = strong. This is a structured way of reading multi-timeframe agreement at a glance — higher timeframes get louder votes.
## 3 · Defaults (Inputs)
| Input | Default | Rationale |
|---|---|---|
| Regime TF | D | Slowest layer; only its zero-line side is used |
| Phase TF | 240 (4H) | Phase-defining layer — roughly 4–6× the chart TF works well |
| Fast / Slow / Signal | 12 / 26 / 9 | Standard values, identical on every TF — deliberately untuned |
| Chop threshold | 0.10% | \|PPO\| below this = directionless market |
| Phase confirm bars | 2 | Hysteresis against phase flicker |
| Grid TFs | 30m / 1H / 4H / D | Dashboard rows |
| Weights | 1 / 1.5 / 2 / 3 | Higher timeframes get louder votes |
| Major bias / Strong | 20% / 50% | Verdict thresholds |
| Dashboard size | Middle | Tiny / Middle / Large |
All defaults are starting points, not optimized values — adjust them to your market and timeframe structure.
## 4 · Visual Elements
| Element | Meaning |
|---|---|
| Histogram columns (pane) | Chart-TF PPO − Signal; solid color = accelerating, faded = fading |
| Blue / orange lines (pane) | Chart-TF PPO / Signal |
| Pane background color | Current phase (green = bull family, red = bear family, orange = weakening, gray = chop) |
| ▲ / ▼ on the price chart | Timing markers — phase-gated momentum inflections |
| TF grid table | Phase per timeframe + ● dot in the L / S / H column |
| MAJOR row | Weighted consensus verdict + net % |
| Timing row | Timing status ("wait" / "TIMING NOW") |
| ⚠ row | Warns when chart TF ≥ Phase TF (view a lower TF, e.g. 1H) |
## 5 · Who This Is For / NOT For
**For:** traders studying trend-pullback structure who execute manually and use indicators as context filters; anyone who wants a one-glance answer to "is this market trending, correcting, weakening, or going nowhere?"
**NOT for:** scalpers far below the phase TF (higher-TF data updates too slowly to matter); anyone expecting a fully automatic buy/sell system (this is decision support, not a bot); extended sideways markets (it will mostly show CHOP — which is the correct reading: no trend phase exists).
## 6 · How to Use (Study Playbook)
1. Open the chart one or more steps **below the Phase TF** (e.g. 1H chart with a 4H phase TF).
2. Use the background color and phase label as context: trend-following ideas align with ESTABLISHED phases, continuation setups form during PULLBACK / RALLY phases, and WEAKENING or CHOP suggest standing aside.
3. Check the **MAJOR** row — study how often lower and higher timeframes agree before strong moves, and how disagreement resolves.
4. The ▲/▼ triangles mark where a counter-trend swing's momentum fades *while the higher timeframe still points with the trend* — the classic pullback-entry concept. Observe how these behave on your market before acting on any of them.
5. Momentum-inflection signals are, by nature, short-horizon events — they describe the next swing, not the next month. Re-evaluate whenever the phase changes.
6. Alerts: alert dialog → Condition = "MACD Phase" → choose "Phase changed", "Major bias changed", "Long timing" or "Short timing" → recommended trigger **Once per bar close**.
7. WEAKENING is best studied as a position-management state (momentum thinning), not a reversal signal.
## 7 · Common Mistakes
- ❌ Treating ESTABLISHED phases as entry signals — by the time everything is aligned, much of the move has often happened; the pullback phases are where continuation logic actually applies.
- ❌ Taking every triangle in both directions on every market — different markets have different structural drifts; study each side's behavior on your instrument first.
- ❌ Expecting momentum-inflection signals to define long swings — their information decays quickly.
- ❌ Viewing on a chart TF larger than the Phase TF (the ⚠ row will warn you).
- ❌ Reading MAJOR % as a probability — it is a weighted vote score (a structured prior), not a measured probability.
- ❌ Changing several inputs at once — you lose track of what actually changed the behavior.
## 8 · For Educational Purposes Only
This indicator is published **for educational purposes only**. It is a tool for studying how momentum, trend phase, and multi-timeframe structure interact — it is **not** a trading system, does not generate financial advice, and makes **no claim of profitability**. No performance figures are stated or implied; past behavior of any signal, on any market, does not guarantee future results. Before risking real capital on any concept illustrated here, do your own testing on your own market, timeframe, and cost structure, and consult a licensed financial professional where appropriate. You alone are responsible for your trading decisions.
## 9 · Disclosure Block
- **Pine version:** v6
- **Repaint:** NO on closed bars — every HTF value uses only fully closed bars (`security(expr , lookahead_on)` idiom); historical bars are never redrawn. Note: current-bar table values and signals update until the bar closes — use alerts set to "Once per bar close".
- **Chart type:** standard candles only (no Heikin Ashi / Renko / Range — synthetic prices distort PPO).
- **Originality:** fully original code — the phase state machine, leg-peak memory, and weighted MTF consensus were written from scratch, not adapted from any open-source script.
- **This indicator is create for educational purposes only — not investment advice or recommendation or professional advice, you are on your own risk **
---
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

Volume Regression Channel [BOSWaves]Volume Regression Channel - Regression-Anchored Volume Flow Visualization with Inward Pressure Bars, Edge Flares, and Cumulative End Profile
Overview
Volume Regression Channel is a regression-anchored volume flow analysis system that fits a polynomial or linear curve to recent price history and maps buy and sell volume pressure inward from the channel boundaries toward the centerline on every bar, where bar height, coloring, edge flare intensity, and end profile distribution are all driven by actual volume participation and close-position-derived directional weighting rather than fixed histogram positions or arbitrary price levels.
Instead of displaying volume as a separate panel histogram detached from price context, this system integrates volume directly into the regression channel structure. Each bar's volume is split into buy and sell components based on where close sat within the bar's range, and those components are rendered as inward-pointing bars anchored to the upper and lower channel edges, with bar height proportional to normalized volume and coloring distinguishing above-average from below-average participation. The result is a channel where the volume activity on every bar is visible in spatial relationship to the channel boundaries that define the structural context.
This creates a complete price and volume framework within a single overlay. The regression curve defines the trend's expected path. The gradient channel fills communicate the statistical distance from the centerline. The inward volume bars reveal participation intensity and directional split at each bar. The flow-colored centerline segments expose directional pressure evolution across the window. Edge flares highlight exceptional volume events occurring near the channel boundaries. Bound diamond markers identify the first bar of each new boundary touch. And the cumulative end profile extending from the current bar provides a full buy-sell volume distribution summary across the channel's price range for the entire regression window.
Price is therefore evaluated not just for its position within the regression channel but for the volume participation and directional flow composition supporting its location at every bar across the full lookback window.
Conceptual Framework
Volume Regression Channel is founded on the principle that a regression channel becomes significantly more analytically powerful when volume participation is integrated directly into its structure rather than displayed separately, allowing the trader to simultaneously assess where price sits relative to the statistical trend expectation and how much and what type of volume supported each bar's position within that channel.
Standard regression channel tools provide structural price context through the curve and its standard deviation bounds but offer no volume intelligence, leaving traders to consult a separate panel to understand participation dynamics. This framework eliminates that separation by embedding volume directly into the channel geometry, with inward bars, edge flares, centerline flow coloring, and the end profile all deriving from the same volume and price data that defines the channel itself.
Three core principles guide the design:
Volume should be displayed in direct spatial relationship to the channel structure it relates to, with inward bars anchored to the boundaries and sized proportionally to participation intensity so that high-volume bars are immediately identifiable within their structural context.
Buy and sell volume should be separated using close position within the bar range, rendering the directional split of each bar's participation as distinct inward segments that reveal whether volume at each price location was predominantly absorbed by buyers or sellers.
A cumulative end profile should summarize the full window's volume distribution at the current channel position, providing a reference for where participation has been most concentrated across the regression window without requiring a separate profile indicator.
This shifts regression channel analysis from structural price context alone into an integrated price-volume framework where participation intensity, directional flow composition, and cumulative distribution are all visible within the channel geometry itself.
Theoretical Foundation
The indicator combines matrix ordinary least squares regression fitting to HL2 price data, standard deviation channel construction, close-position buy-sell volume splitting, volume SMA normalization for significance classification, three-layer gradient polyline fill construction, inward volume bar rendering with dynamic width scaling, flow-weighted centerline segment coloring, edge flare detection combining volume and boundary proximity conditions, and an overlap-weighted cumulative buy-sell profile with smoothing applied across the channel rows.
The regression is computed using the same OLS matrix approach as conventional polynomial regression, producing a prediction array covering all bars in the lookback window for both linear and quadratic modes. The channel width is scaled by the rolling standard deviation of HL2, ensuring channel boundaries adapt to the instrument's actual price variability. Volume splitting uses close position within the high-low range as the proxy for directional commitment, with bars closing near the high allocating more volume to buying and bars closing near the low allocating more to selling. The end profile smooths each row's accumulated buy and sell volume with a three-point weighted average before normalizing and rendering.
Four internal systems operate in tandem:
Regression Channel Engine : Computes OLS curve fitting in linear or polynomial mode, derives the standard deviation channel width, and constructs all polyline geometry for the gradient fills, glow boundary lines, and centerline using chart.point arrays that follow the regression curve.
Inward Volume Bar System : For each bar in the recent display window, normalizes volume against the window maximum, splits the normalized height into buy and sell components by close position, and renders inward lines from the channel edges with dynamic width scaling and above-average volume coloring.
Edge Flare and Bound Marker System : Monitors each recent bar for the combination of above-threshold volume and boundary zone proximity, rendering bright glowing line segments on the channel edge when qualifying conditions are met, and places diamond markers at the first bar of each new boundary touch.
Centerline Flow and End Profile Engine : Divides the centerline into sixty flow segments and computes volume-weighted directional bias for each, coloring segments by flow direction and strength. Simultaneously accumulates overlap-weighted buy and sell volume into channel rows across the full window, smooths the distribution, and renders horizontal profile bars extending from the current bar edge.
This design ensures volume participation is embedded into every layer of the channel visualization while the end profile provides a complete cumulative distribution summary that updates with each new bar.
How It Works
Volume Regression Channel evaluates price through a sequence of regression-aware and volume-integrated processes:
Regression Curve Fitting : On the last bar, the OLS matrix computation produces a prediction array covering all bars in the configured lookback window using either a linear or polynomial fit to HL2, providing the baseline curve that all channel geometry and volume positioning follows.
Channel Width Calculation : The standard deviation of HL2 over the regression window multiplied by the SD multiplier defines the channel half-width, establishing the upper and lower boundary distances from the curve at each bar position.
Gradient Fill Construction : Three polyline polygon regions are constructed for each of the upper and lower channel halves at proportional fractions of the standard deviation width, filled with progressively increasing opacity from inner to outer to produce a smooth visual gradient across the channel depth.
Boundary Glow Rendering : Triple polylines at the upper and lower channel boundaries create a glow effect using wide low-opacity outer lines and a narrow full-opacity core line, providing visually prominent boundary markers that follow the regression curve.
Volume Normalization and Splitting : For each bar in the volume display window, raw volume is normalized against the window maximum to produce a proportional height score. Close position within the high-low range splits this height into buy and sell components, with the buy portion anchored to the lower boundary and the sell portion anchored to the upper boundary pointing inward.
Inward Bar Rendering : Buy and sell component heights are rendered as inward-pointing lines from the respective channel edges with dynamic width scaling based on relative volume and opacity intensifying for above-average participation bars.
Edge Flare Detection : Each recent bar is tested for the combination of volume exceeding the flare multiplier threshold and price high or low reaching within the configured edge zone percentage of the channel boundary. Qualifying bars receive bright dual-layer line segments on the boundary edge with width scaling by relative volume strength.
Bound Diamond Placement : Each bar is tested for initial channel boundary contact, with a diamond marker placed at the first bar of each new upper or lower boundary touch to mark where price newly reached the statistical extremes.
Centerline Flow Coloring : The centerline is divided into sixty equal segments and each segment's volume-weighted close position bias is computed across its constituent bars. Segments are colored green, red, or neutral based on the directional flow value and intensity with line width scaling to strength.
End Profile Construction : All bars in the regression window contribute their volume to the profile rows based on price overlap between the bar range and each row boundary, with the contribution split into buy and sell portions by close position. The accumulated distribution is smoothed and normalized before rendering as horizontal buy and sell bars extending from the current bar.
Together, these elements form a continuously updating integrated price-volume framework where the regression structure, volume participation, flow direction, and cumulative distribution are all rendered within the same channel geometry on each bar update.
Interpretation
Volume Regression Channel should be interpreted as a regression-anchored structural framework with embedded volume participation intelligence at every level:
Regression Curve : The fitted centerline represents the trend's statistical best-fit path through the lookback window, with the flow-colored segments revealing whether volume-weighted directional bias above or below the curve was predominantly bullish or bearish across each portion of the window.
Channel Boundaries : The upper boundary with its red glow represents the upper standard deviation limit where price is statistically extended above the regression expectation. The lower boundary with its green glow represents the lower limit where price is statistically extended below.
Gradient Fill Depth : The three-layer gradient within each channel half provides visual depth cues, with the innermost near-transparent fill representing mild deviation and the outermost fully opaque fill representing maximum channel boundary proximity.
Inward Buy Bars (Green) : Lines extending upward from the lower channel boundary reflect the buy-attributed volume portion of each bar. Taller bars indicate greater buying participation. Brighter coloring indicates above-average total volume on that bar.
Inward Sell Bars (Red) : Lines extending downward from the upper channel boundary reflect the sell-attributed volume portion of each bar. Taller bars indicate greater selling participation. Brighter coloring indicates above-average total volume.
Neutral Volume Bars (Gray) : Below-average volume bars render in neutral gray regardless of direction, identifying periods of low participation where the directional split carries reduced analytical significance.
Edge Flares : Bright glowing line segments on the channel boundary mark bars where significant volume occurred close to the boundary edge, identifying high-participation boundary interaction events that frequently precede reversals or continuations from the statistical extremes.
Bound Diamonds : Small colored diamonds at boundary touch initiation bars mark where price first reached the channel edge after a period of interior activity, identifying the onset of boundary interaction sequences.
End Profile : The horizontal bar chart extending from the right edge shows the cumulative volume distribution across the channel's price range for the full regression window, with green segments showing buy-attributed volume and red segments showing sell-attributed volume at each price row. The longest bars identify the price levels with the greatest total participation concentration.
Colored Candles : Optional candle coloring reflects whether price is above or below the regression centerline, providing a continuous directional bias reference directly on the price chart.
Boundary proximity, inward bar height and direction, edge flare frequency, centerline flow coloring, and end profile distribution collectively provide more analytical depth than any element in isolation.
Signal Logic & Visual Cues
Volume Regression Channel does not generate discrete buy or sell signals but provides continuous structural and volume participation reference through several interaction cues:
Edge Flare Events : High-volume boundary proximity bars highlighted by bright edge flares identify exceptional participation at the statistical extremes, marking the bars most likely to precede structural reactions from channel boundaries.
Bound Diamond Initiation : Diamond markers at the first bar of new boundary touches identify where price has newly entered channel extreme territory, providing early warning of boundary interaction sequences before their outcome is determined.
Centerline flow segment coloring provides ongoing directional pressure context across the full window, with color and width encoding whether the volume-weighted bias at each point in the regression history was bullish, bearish, or neutral.
Strategy Integration
Volume Regression Channel fits within regression-informed structural and volume-participation-based analytical approaches:
Boundary Interaction Trading : Use channel boundary touches combined with edge flare presence as elevated-significance interaction events. High-volume flares at the boundary suggest meaningful participation at the statistical extreme that frequently precedes a reaction back toward the centerline or a volume-supported continuation beyond it.
End Profile Acceptance Reading : Use the end profile distribution to identify the price rows with the greatest cumulative participation concentration. Price returning to high-volume profile rows encounters levels where the greatest historical participation occurred within the regression window, making them structurally significant references for support, resistance, or reversion.
Inward Bar Volume Divergence : Monitor situations where price is approaching a boundary but inward bar height from the opposing direction is increasing, indicating growing participation against the directional move and potentially signaling that the boundary interaction will result in rejection rather than continuation.
Centerline Flow Direction : Use centerline flow coloring as a mid-channel directional bias indicator. Sustained green flow segments suggest dominant buying pressure within the regression window. Sustained red segments suggest dominant selling. Neutral gray segments indicate a contested equilibrium without clear directional participation weight.
Regression Mode Selection : Use Polynomial mode for markets with visible curvature in their trend structure where the quadratic bend produces a more accurate fit. Use Linear mode for markets trending in a straight consistent direction where the polynomial's additional degree of freedom would overfit noise.
Profile Distribution Skew Analysis : Compare the buy and sell distribution balance in the end profile to assess whether the window's participation was predominantly concentrated above or below the centerline, providing a volume-based directional bias reading that complements the price-based trend assessment.
Technical Implementation Details
Regression Engine : Matrix OLS with design matrix construction, normal equation formation, matrix inversion, and prediction array application for linear or polynomial curve fitting to HL2
Channel Construction : Standard deviation-scaled channel width with three-layer gradient polyline fills and triple-line glow boundaries following the regression curve
Inward Volume System : Window-maximum normalization with close-position buy-sell splitting, dynamic width scaling by relative volume, and above-average volume color intensification
Edge Flare System : Volume multiplier threshold combined with boundary zone percentage proximity testing with dual-layer glow line rendering and width scaling by relative volume
Centerline Flow : Sixty-segment volume-weighted close-position bias computation with directional color and width encoding
End Profile : Overlap-weighted row accumulation across the full regression window with three-point smoothing, normalization, and horizontal buy-sell bar rendering with curved outline polyline
Performance Profile : All rendering triggered on last bar with full object cleanup and rebuild each cycle, configurable regression length capped at 490 bars for object management
Optimal Application Parameters
Timeframe Guidance:
1 - 5 min : Intraday regression flow tracking with shorter length and tighter SD multiplier for fast-adapting channel that captures intraday trend structure with responsive volume distribution
15 - 60 min : Session-level structural volume analysis with balanced regression length and moderate SD multiplier for meaningful channel geometry across typical session directional moves
4H - Daily : Swing-level regression channel profiling with longer lookback and polynomial mode for a curve-following channel spanning multi-session trend structures
Suggested Baseline Configuration:
Regression Length : 236
SD Multiplier : 1.75
Mode : Polynomial
Volume SMA : 15
Bar Height (ATR×) : 2.1
Show Edge Flares : Enabled
Show Bound Diamonds : Enabled
Show Centerline : Enabled
Show End Profile : Enabled
Color Candles : Enabled (requires disabling original chart candles in chart settings)
These suggested parameters should be used as a baseline; their effectiveness depends on the instrument's volatility characteristics, volume behavior, and preferred channel sensitivity, so fine-tuning is expected for optimal performance.
Parameter Calibration Notes
Use the following adjustments to refine behavior without altering the core logic:
Channel too wide or narrow : Adjust SD Multiplier to expand or contract the channel width relative to the instrument's typical deviation from the regression curve, calibrating boundary distance to realistic price excursion ranges.
Curve fits too loosely to recent price : Decrease Regression Length to shorten the lookback window, producing a tighter curve that adapts more quickly to recent structural changes. Switch to Polynomial mode if visible trend curvature is present.
Inward bars too tall or short : Adjust Bar Height (ATR×) to scale the maximum inward bar height, making volume bars more prominent during high-participation sessions or more subtle on instruments with lower volume variance.
Too many or too few edge flares : Increase Flare Volume Multiplier to restrict flares to only exceptional volume events, or adjust Flare Edge Zone % to control how close to the boundary price must be before a flare qualifies.
End profile too wide or compact : Adjust Profile Width to control the maximum horizontal extent of the end profile bars, calibrating the profile size to the available chart space at the current zoom level.
Profile rows too coarse or granular : Adjust Profile Rows to increase or decrease vertical resolution, with higher values providing finer detail across the channel's price range and lower values producing broader, more readable rows.
Too many bound diamonds cluttering the chart : The diamond system marks only first-bar boundary touches. On instruments with frequent boundary contact the marker density may be high. Disable Show Bound Diamonds and rely on edge flares alone for boundary interaction identification.
Adjustments should be incremental and evaluated across multiple session types rather than isolated market conditions.
Performance Characteristics
High Effectiveness:
Trending markets where the regression curve provides an accurate fit to the directional price path and the channel boundaries represent meaningful statistical extremes with genuine participation significance
Liquid instruments with consistent volume where the buy-sell splitting produces reliable directional participation readings and the end profile accumulates a statistically meaningful distribution across the regression window
Boundary interaction strategies where edge flares and bound diamond markers identify high-participation channel extreme events that frequently precede structural reactions
Distribution analysis workflows where the end profile provides a regression-relative volume profile summary that replaces or complements standalone volume profile indicators
Reduced Effectiveness:
Choppy, directionless markets where the regression curve has no clear shape and channel boundaries are penetrated frequently without the sustained trend structure required for meaningful boundary interaction analysis
Low-liquidity instruments where thin volume produces unreliable buy-sell splits and end profile distributions that reflect random participation patterns rather than genuine directional flow
Markets with frequent gaps where the HL2 series used for regression produces curves distorted by discontinuous price events that shift the channel relative to actual price structure
Very short regression windows where insufficient bars per channel row produce end profiles dominated by noise rather than statistically meaningful participation concentration
Consolidation environments where price oscillates near the regression centerline without reaching channel boundaries, reducing the analytical value of edge flares and bound diamonds while producing uniformly short inward bars
Integration Guidelines
Confluence : Combine with BOSWaves momentum tools, order block analysis, or structural indicators to validate channel boundary interactions and edge flare events with broader analytical context
End Profile Reference : Use the end profile distribution as a volume-based reference layer for price levels visited by price within the regression window. High-volume rows in the profile identify price levels with the greatest historical participation concentration, making them structurally significant references for future interaction.
Inward Bar Divergence Monitoring : Monitor inward bar height on opposing sides as price approaches boundaries. Growing opposing-side bars during boundary approach suggest increasing counter-directional participation that may oppose the boundary continuation.
Regression Mode Consistency : Maintain a consistent regression mode when using the channel as an ongoing structural reference. Switching between Linear and Polynomial shifts the curve and redistributes the channel geometry, making successive comparisons of profile distribution and boundary levels unreliable.
Centerline Cross Awareness : Treat price crossing the regression centerline as a potential flow transition event. Combined with a centerline flow segment color change from one direction to the other, centerline crossings with above-average volume suggest genuine directional repositioning within the channel structure.
Disclaimer
Volume Regression Channel is a professional-grade regression-anchored volume flow analysis tool. It uses OLS curve fitting with close-position volume splitting and cumulative profile construction but does not predict future price movements. Results depend on market conditions, instrument volume characteristics, parameter selection, and disciplined execution. BOSWaves recommends deploying this indicator within a broader analytical framework that incorporates momentum context, order flow analysis, and comprehensive risk management. 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
