Quant SMC Pro [JOAT]QUANT SMC PRO
A complete Smart Money Concepts engine rebuilt from first principles — pivots, structure, order blocks, fair value gaps, liquidity, premium/discount, HTF context, and a 0–100 confluence score per zone — wired together so every element actually talks to every other element. This is the SMC toolkit you build when you have read enough versions of "BOS / CHoCH / OB" to know that the difference between a coin-flip and a real signal is the quality of the underlying pivots, the filter on the order-block detection, and the scoring of how much confluence each zone actually carries.
Pivot engine — adaptive, not arbitrary
A clean structure read is impossible if the pivots themselves are noisy. Quant SMC Pro ships two pivot engines and lets you pick:
Adaptive ZigZag (default) — a pivot is confirmed only after price retraces by an ATR-multiple from the candidate extreme. The threshold is volatility-aware, so the engine produces clean swing structure across very different instruments without retuning.
Fixed Window — the classic N-bar look-left, N-bar look-right confirmation. Use it on instruments where you want strict symmetry rather than ATR-relative confirmation.
A separate, lighter minor-pivot window drives the minor structure layer so you can see internal liquidity grabs without polluting the major read.
Market structure
Both major and minor structure are tracked. BOS (break of structure) and CHoCH (change of character) are labelled in the palette colour at the breaking bar. MSS (market structure shift) is only printed when the requireDisp gate is satisfied: the breaking candle must be a real impulse — strong body, range above an ATR multiple. This single filter eliminates the bulk of the "CHoCH on a doji" false positives that plague off-the-shelf SMC scripts.
// Displacement requirement for MSS confirmation (illustrative)
float bodyAbs = math.abs(close - open)
float rangeBar = high - low
bool isImpulse = bodyAbs >= rangeBar * 0.6 and rangeBar >= ta.atr(14) * dispMult
bool isMSS = isCHoCH and isImpulse
Order Blocks — two detection methods
OBs are detected at the structural origin of the move that broke structure, not blindly at the last opposite candle. Two methods are exposed:
Structural Extreme (default, stricter) — scans backward inside the walk-back window and selects the most-extreme qualifying opposite-color candle. This is the cleaner output and the one you want on a working chart.
Last Opposite Candle — the simpler heuristic. Useful for comparison and for replicating the look of older SMC scripts.
Optional above-average-volume filtering, configurable mitigation rule (wick-touch vs close-through), per-side count cap (1–10), and a structural walk-back window let the OBs stay relevant instead of cluttering up old territory.
Fair Value Gaps — ATR-filtered
FVGs use the standard three-candle imbalance definition, but only register when the gap exceeds a configurable ATR multiple. This is the difference between a clean chart and a wallpaper of 1-tick gaps. Hard caps on count per side, optional extension bars, and an optional "keep mitigated FVGs faded" toggle (off by default to prevent accumulation) round out the controls.
JOAT enhancements (new vs every other SMC script)
Three concepts most public SMC scripts skip — implemented here as proper, gated layers:
Inversion FVGs (iFVG) — when an FVG is mitigated and the polarity flips within a configurable bar window, the gap is re-rendered with a multi-stop gradient so you can see the flipped zone. Off by default because it adds visual density; turn it on when you specifically want to read polarity flips.
Breaker Blocks — an OB that gets mitigated and then holds on the opposite side for a configurable bar count is re-tagged as a Breaker Block in its own palette color. This is one of the strongest re-entry concepts in SMC and almost never implemented correctly in public scripts.
Mitigation Block tag — the first OB created after a BOS is tagged "MB" so you can read which block carries the most structural significance.
Liquidity — equal highs / lows and real sweeps
Equal highs / lows are detected with an ATR-relative tolerance over a configurable scan depth. Liquidity sweeps are detected against actual structural pivots (the minor-pivot output, not a rolling ta.highest ) — so a sweep is registered when a wick punctures a recent pivot extreme and the bar closes back inside, which is what the term actually means in the textbook. A cooldown prevents double-prints of the same sweep.
Premium / Discount array
Two equilibrium methods:
AVWAP Equilibrium (default) — equilibrium is anchored to the most recent major structure event, so the PD array drifts with trend rather than re-anchoring on every minor pivot. This is the institutional read.
Range Midpoint — the classic 50% of the most recent major leg.
A toggleable multi-stop gradient render paints premium and discount as shaded regions instead of just lines. Configurable stop count keeps it tunable.
HTF context
Optional previous-day, previous-week, and previous-month H / L overlays in their own per-timeframe colours. Optional midpoint lines. When enabled, the HTF read also contributes to the confluence score — because no zone is really meaningful without HTF agreement.
Confluence Score (0–100)
Every order block carries an aggregate confluence score derived from:
Zone size relative to ATR
Displacement quality of the move that produced it
Volume on the originating bar relative to the rolling average
Overlap with active FVGs
(Optional) HTF level proximity
A "Hide zones below score" input lets you mute lower-quality blocks. A separate alert threshold fires when a zone above your minimum score is created. The score is also rendered into the confluence heatmap dashboard.
Dashboard (confluence heatmap)
A compact, monospaced table positionable to any of nine corners with a per-row vertical alpha gradient. Reads the current bias, nearest premium / discount zone, count of active OBs, count of active FVGs, and the highest confluence score on the chart. Background transparency is user-controlled so it never visually competes with structure.
How to read it
The intended workflow is structure-first, confluence-second. Wait for a BOS or MSS in the direction you want to trade. Look at the OB or breaker block at the origin of the move — its confluence score is your edge proxy. If the zone has an iFVG or active FVG overlap, the score will reflect it. HTF agreement (previous-day midpoint, previous-week high, etc.) is the final filter. Liquidity sweeps before the structural break are a particularly clean confluence — they indicate the move broke because liquidity was taken first.
Originality / what's reused
The SMC vocabulary (BOS, CHoCH, MSS, OB, FVG, premium/discount) is, of course, public-domain market-structure language. The implementations here — the adaptive ATR-confirmed pivot engine, the structural-extreme OB scan, the iFVG gradient render, the breaker block detection, the mitigation block tagging, the AVWAP-anchored PD array, the confluence-score aggregation, and the heatmap dashboard — are written from scratch and tuned together. No third-party code is reused.
Open source
Published open-source under the default Mozilla Public License 2.0. The source is fully readable: every helper function is documented inline, every input has a tooltip, and the file is sectioned with banner headers so you can navigate it like a textbook chapter. If you want to fork it, please keep the credit and please make it materially better — that is what open-source SMC actually needs.
Limitations
SMC is a structural read, not a signal generator — Quant SMC Pro does not print buy/sell labels. It prints zones and structure; you decide the entry. Equal H/L detection and structural sweeps rely on minor-pivot output, so on very illiquid instruments those layers may be sparse. Confluence scoring is heuristic by definition — it ranks zones by features that historically correlated with significance; it does not predict reactions.
—
-made with passion by jackofalltrades
Indicator

[Viprasol] Equilibrium Confluence EngineOverview
The Viprasol Equilibrium Confluence Engine is an original indicator that requires five independent, well-known trading conditions to agree before it prints a signal: an EMA trend filter, Fibonacci premium/discount location, a market-structure shift (CHoCH), a liquidity sweep, and a Fair Value Gap. Each of these concepts answers a different question about a trade — direction, location, structure, intent, and imbalance — and the engine only confirms when all of the enabled conditions line up on the same side within a configurable window. The on-chart panels (HOW IT WORKS legend, a live confluence checklist, and a strategy summary) make the logic self-explanatory directly on the chart.
It is built for traders who want a single, transparent confluence check instead of running five separate indicators and eyeballing whether they agree.
Why These Components Belong Together (Mashup Justification)
Each layer covers a dimension the others cannot, which is the reason they are combined rather than used alone:
- The EMA trend filter answers "which direction?" but says nothing about where to enter.
- Fibonacci equilibrium answers "is price cheap or expensive within the range?" but not whether momentum agrees.
- Market structure (CHoCH) answers "has the prevailing structure actually shifted?" but a shift alone can be a trap.
- The liquidity sweep answers "did price take liquidity before moving?" — the footprint that often precedes a real move — but needs direction and location to be actionable.
- The Fair Value Gap answers "is there an institutional imbalance for price to react to?" but an FVG in the wrong location or against the trend is low quality.
Used together, a signal only appears when momentum, location, structure, intent, and imbalance all point the same way — the combination is the point, not any single piece.
How It Works
1. EMA Trend Filter:
Two EMAs (default 9 and 15). The trend is bullish when the fast EMA is above the slow EMA and bearish when below. BUY confluence requires bullish trend; SELL requires bearish.
2. Fibonacci Equilibrium (dealing range):
The most recent confirmed swing high and swing low (from pivots of the swing length) define a dealing range. The 0.5 level is equilibrium; 0.236 and 0.786 are also drawn. Below 0.5 is the Discount zone (a relatively cheap "buy area"); above 0.5 is the Premium zone ("sell area"). BUY confluence requires price in discount; SELL requires premium. The range, levels, and zones are shaded and labeled with live prices.
3. Market Structure — CHoCH / BOS:
Swing highs and lows are tracked. When price closes through the prior swing high while structure was not already bullish, a bullish Change of Character (CHoCH) is marked; closing through the prior swing low while not already bearish marks a bearish CHoCH. Continuation breaks in the same direction are labeled BOS. BUY confluence requires a bullish CHoCH within the confluence window; SELL requires a bearish one.
4. Liquidity Sweep:
Sell-side liquidity is considered swept when a bar wicks below a prior swing low but closes back above it (stops taken, price rejected) — a bullish footprint. Buy-side liquidity is swept when a bar wicks above a prior swing high and closes back below — a bearish footprint. BUY confluence requires a recent bullish sweep; SELL a bearish one.
5. Fair Value Gap (FVG):
A bullish FVG is a 3-candle imbalance where the current low is above the high two bars back (low > high ); a bearish FVG is where the current high is below the low two bars back (high < low ). The gap is boxed and tracked. BUY confluence requires price inside a bullish FVG or a recent bullish FVG within the window; SELL the bearish equivalent.
Confluence Engine:
Each condition can be individually included or excluded. CHoCH, sweep, and FVG are event-based, so they remain "active" for a configurable Confluence Window (default 15 bars) using barssince, allowing the five conditions to line up even if they did not occur on the exact same bar. A confirmed BUY fires on the first bar all enabled BUY conditions are simultaneously true (and a SELL for the bear side), gated by a cooldown to prevent repeats. The dashboard shows a live BUY/SELL score out of 5, and the checklist panel shows exactly which conditions are met.
Risk Overlay:
On a confirmed signal, the engine projects Entry (signal close), Stop-Loss (beyond the relevant swing extreme plus an ATR buffer), and Take-Profit (Entry ± risk × Risk:Reward), with colored ENTRY/SL/TP price labels. Only the latest signal's projection is kept.
Key Features
- Five-factor confluence: EMA trend, Fib equilibrium, CHoCH structure, liquidity sweep, FVG
- Each factor independently toggleable in/out of the confluence
- Configurable confluence window so event-based factors can align
- Live BUY/SELL confluence score (x/5) and a tick/cross checklist panel
- Auto dealing range with 0 / 0.236 / 0.5 / 0.786 / 1 levels and shaded premium/discount zones
- CHoCH / BOS and liquidity-sweep labels
- FVG zone boxes that track until filled
- Entry/SL/TP risk overlay with price labels
- On-chart HOW IT WORKS legend and STRATEGY SUMMARY footer
- Signal cooldown to prevent clustering
- Seven alert conditions with dynamic {{ticker}}/{{close}}/{{interval}} messages
How to Use
Getting Started:
1. Add to a standard candlestick chart (not Heikin Ashi).
2. Read the HOW IT WORKS panel (left) and the live confluence checklist (right).
3. A BUY/SELL label prints only when every enabled condition is aligned; Entry/SL/TP project from it.
Tuning Confluence:
- For more signals, turn off one or two of the stricter conditions (e.g. FVG) or widen the Confluence Window.
- For higher conviction, keep all five on and shorten the window so conditions must be tightly clustered.
Recommended Starting Points:
- Intraday (5m-15m): Swing Length 10-12, Confluence Window 12-15, Cooldown 8
- Swing (1H-4H): Swing Length 15-20, Confluence Window 20, Cooldown 12
- Looser entries: disable FVG and/or Liquidity, keep Trend + Equilibrium + CHoCH
These are starting points only — every market and timeframe behaves differently. Backtest and adjust before trading live.
Settings
1 EMA Trend Filter: fast EMA, slow EMA, include-in-confluence toggle.
2 Fibonacci Equilibrium: swing pivot length, use discount/premium toggle, show range & levels, shade zones.
3 Market Structure: use CHoCH toggle, show CHoCH/BOS labels.
4 Liquidity Sweep: use sweep toggle, show sweep labels.
5 Fair Value Gap: use FVG toggle, show FVG zones.
Confluence Engine: confluence window (bars), signal cooldown.
Risk Overlay: show Entry/SL/TP, show price labels, ATR period, SL ATR buffer, Risk:Reward.
Visuals: show EMA lines, bull/bear colors.
On-Chart Panels: toggles for HOW IT WORKS, confluence checklist, strategy summary.
Dashboard: live dashboard toggle and position.
Alerts
1. Confirmed BUY — all enabled bullish conditions aligned
2. Confirmed SELL — all enabled bearish conditions aligned
3. Any Signal — either direction confirmed
4. Bullish CHoCH — a bullish change of character occurred
5. Bearish CHoCH — a bearish change of character occurred
6. Bullish Liquidity Sweep — sell-side liquidity was swept
7. Bearish Liquidity Sweep — buy-side liquidity was swept
All alerts include {{ticker}}, {{close}}, and {{interval}} for dynamic notification messages.
Limitations & Disclaimer
- Swing-based features (range, structure, liquidity) depend on confirmed pivots, which lag by the swing length; very recent swings are not yet confirmed.
- The dealing range uses the latest confirmed swing high and low; in strong one-directional moves the range can become stale until a new swing forms.
- CHoCH detection here uses closing breaks of the last swing; it is a practical approximation of the structure concept, not a full multi-leg structure model.
- FVG detection is the standard 3-candle definition and tracks only the most recent gap per direction for confluence.
- The confluence window means conditions need not occur on the same bar; widening it loosens signal quality, narrowing it tightens it — there is no single correct value.
- Entry/SL/TP lines are visual references only and do not place or manage trades.
- Past performance does not guarantee future results. This indicator is for educational and analytical purposes only and is not financial advice. Always use proper risk management and test on historical data before trading live.
Credits & Attribution
This is an original Viprasol indicator. It is built on standard, public-domain trading concepts — exponential moving averages, Fibonacci retracement / premium-discount equilibrium, market-structure Change of Character and Break of Structure, liquidity sweeps, and Fair Value Gaps (widely used ICT / Smart Money concepts) — implemented from scratch and combined into a single multi-factor confluence engine with a scoring system, configurable confluence window, risk overlay, and self-explaining on-chart panels. No third-party source code was reused.
Published open-source per PulseWire House Rules.
Indicator

Strong Rejection Zones | ProjectSyndicateSTRONG REJECTION ZONES
Strong Rejection Zones marks the prices where the market keeps getting pushed back, and grades every one of them so you can tell at a glance which levels are worth respecting and which are likely to fold. It scans for three independent signatures of rejection — swing pivots, dominant rejection wicks, and volume spikes — folds overlapping hits at the same price into a single zone, and assigns each zone a live 0–10 power score built only from measurable level quality. Heavily-confirmed zones are drawn bold and solid; thin, one-off levels stay faint. An on-chart leaderboard ranks every live zone, so the whole support-and-resistance map is readable in one look.
🎯 0–10 POWER SCORE
Each zone earns a live grade from four weighted, sign-stable factors:
Confluence — how many separate detections stack at the level, with diminishing returns so one isolated touch never scores high on its own.
Diversity — a level confirmed by pivots AND wicks AND volume outranks one confirmed a single way.
Detection strength — volume versus its baseline, wick dominance, and range expansion on the candle that formed the level.
Recency — recently defended levels rank above stale ones, with a configurable decay.
ELITE (9–10) is intentionally hard to reach: in practice it takes all three footprint types lining up on a strong, fresh, well-confirmed level — so the grade reflects real edge, not decoration. All four weights are adjustable.
🏷️ IN-ZONE LABELS
Every graded zone carries a tag above the band — side (BULL / BEAR), tier, the X/10 score, a star rating, the confluence count (×N detections), and live distance from price in both percent and pips. The tag is pinned to the zone's right edge and grows inward, so it never hangs off the box.
🧲 CONFLUENCE MERGING
Same-side detections that land within the cluster tolerance are folded into one zone and raise its grade, instead of littering the chart with a separate line for every swing. One graded level per pool.
🥇 ELITE HIGHLIGHT
The top tier is rendered in a brighter shade of its side colour with a heavy accent border, so the levels that matter jump out before you read a single number. Tier ladder: FAINT → WEAK → MEDIUM → STRONG → ELITE.
🎨 STRENGTH-SHADED FILL
Fill opacity tracks the score — strong zones print solid, weak ones stay faint — so relative importance is visible without reading any text.
📊 RANKED DASHBOARD
A leaderboard sorts active zones by power and shows rank, side, tier, exact price, score with stars, and distance + direction from price (▲ above / ▼ below). Choose any of four corners, four text sizes (Tiny → Large), and how many rows to show. A header line summarises how many ELITE / STRONG / active zones are live.
📍 ORIGIN-ANCHORED ZONES
Each zone is drawn from the bar where its level first formed and extended to the right. It stays anchored to that price — it does not drift or re-center as new detections arrive, so the band always sits on the price action that created it.
🔒 STABLE, LOCK-IN ZONES
Zones are built only on confirmed bars and updated in place. A zone keeps its grade, tier and position once it is drawn; it only changes state when price genuinely breaches it (by close or by wick — your choice), at which point it either clears or stays on as a faded broken level.
🧹 CLEAN-UP FILTERS
Hide any zone under a chosen power score, enforce a minimum separation between same-side zones, and suppress zones forming right on top of current price.
🔔 NATIVE ALERTS
Dedicated alerts for an ELITE cluster forming, a STRONG cluster forming, a zone being breached, fresh bullish and bearish detections, and price approaching a STRONG or an ELITE zone.
🔧 FULLY ADJUSTABLE
Detection toggles and sensitivity (pivot length, wick-dominance ratio, volume-spike multiple, baseline length); clustering tolerance and minimum separation; zone geometry (ATR length, height, max active zones, right-extension); the four score weights plus confluence-for-full-credit, decay length and decay floor; score and distance filters, breach method (close or wick), and keep-or-clear on breach; the full colour theme (bull, bear, broken, accent), fill-opacity range and ELITE border width; label size and which scores get labelled; dashboard position, rows and text size; and alert thresholds.
🚀 Works on gold (XAUUSD), silver, forex, crypto and indices, on any timeframe.
────────────────────────
HOW TO TRADE IT — TWO APPROACHES
The score chooses the playbook. High-grade zones tend to hold and reverse; thin zones tend to give way. So treat them differently.
FADE THE ZONE — reversion (STRONG / ELITE, score ≥ 7)
Use when price is approaching a high-grade zone — the most-confirmed levels, and statistically the most likely to react.
Wait for price to tap the zone (the dashboard distance shows it closing in).
Look for a wick into the band and a close back outside it.
Enter on the rejection back out of the zone.
Stop just past the far edge — a sustained close through it means the level failed.
Target the next zone on the dashboard, then the nearest strong zone on the opposite side.
TRADE THE BREAK — continuation (WEAK / MEDIUM, or once a strong zone breaches)
Use on thin, single-type or stale levels — the ones most likely to break.
Wait for a decisive close through the zone on expanding volume, not a single wick.
The zone switching to a broken state is your confirmation it is a real break, not a stop-hunt.
Enter with the break beyond the zone, or on a retest of the broken level.
Stop back inside the broken zone.
Target the next zone in that direction.
Rule of thumb: high-grade → expect a reaction, fade the tap. Low-grade on volume → expect follow-through, trade the break.
────────────────────────
⚠️ This tool highlights high-probability rejection levels and frames fade-versus-break scenarios. It is NOT a standalone buy/sell signal. Always combine it with your own strategy, price-action analysis and risk management to confirm setups. Past statistical behaviour does not guarantee future results. Indicator

Fair Value Gaps + Inversion FVG [Quantum Algo]Fair Value Gaps + Inversion FVG
█ OVERVIEW
Most FVG indicators stop at drawing boxes. This one tracks the complete lifecycle of every gap — fresh → midline-tested → filled → INVERTED → retested — and automates the part of the model that traders actually trade: the Inversion Fair Value Gap (IFVG).
A Fair Value Gap is a 3-candle imbalance left behind when price moves too fast for two-sided trade to occur. Price frequently returns to these zones. But when price closes through a gap instead of respecting it, the zone does not die — it flips polarity. A violated bullish gap becomes resistance; a violated bearish gap becomes support. The first retest of that inverted zone is one of the cleanest entry models in the Smart Money Concepts framework, and this script detects, restyles, and signals it automatically.
█ FEATURES
Gap detection
— Bullish and bearish FVGs detected on confirmed bars only (non-repainting).
— ATR minimum-size filter removes insignificant micro-gaps.
— Optional displacement filter: the middle candle must be a genuine expansion bar (range greater than a configurable multiple of ATR), keeping only gaps created by aggressive participation.
Volume strength score
Every gap is stamped with a 0–100 score comparing the displacement candle's volume against its 20-bar average. A 90% gap and a 20% gap are not the same zone — now you can see the difference at a glance.
Consequent Encroachment (CE)
Each gap carries its 50% midline. The first touch of the CE is detected, the gap is visually dimmed to separate tested zones from fresh ones, and an alert is available.
Inversion engine (IFVG)
— A close through the gap converts it into an inverted zone with distinct styling.
— The first retest of an inverted zone prints an on-chart signal (long model for inverted bearish gaps, short model for inverted bullish gaps).
— A close back through the far side invalidates and removes the zone.
— Inversion can be disabled, in which case gaps simply fill and are removed or frozen (wick-fill or close-fill modes).
Multi-timeframe mode
Display gaps from one higher timeframe directly on your chart as dashed boxes. HTF gaps are built exclusively from closed higher-timeframe bars, so they do not repaint.
Dashboard
A compact panel shows active bullish gaps, bearish gaps, inverted zones, plus the nearest demand level below price and the nearest supply level above it.
Alerts
Eight alert conditions cover the full lifecycle: new bullish/bearish gap, CE touch, fill, bullish/bearish inversion, and long/short IFVG retest.
█ HOW DETECTION WORKS
A bullish FVG forms when the current bar's low sits entirely above the high from two bars earlier — the zone spans that void. A bearish FVG is the mirror image. Detection runs only on bar close, so a gap that appears never disappears or redraws. Lifecycle state changes (CE touches, fills, inversions, retests) are likewise evaluated on confirmed bars.
█ HOW TO USE IT
1. Classic continuation: in a trend, wait for price to retrace into a fresh high-strength gap aligned with the trend; the CE midline is the standard entry refinement.
2. Inversion reversal: when a gap is closed through, stop looking for the old reaction — wait for the retest of the inverted zone in the new direction. The on-chart IFVG markers identify exactly this moment.
3. Multi-timeframe confluence: enable HTF mode and prioritize chart-timeframe signals that occur inside a higher-timeframe gap.
4. Use the dashboard's nearest demand/supply readout for quick situational awareness of where the next reaction zones sit.
Works on all symbols and timeframes. Crypto and index futures tend to produce the cleanest gaps on 5m–1H; forex gaps are more frequent on 15m and above.
█ SETTINGS
Detection — minimum gap size (× ATR), displacement filter, maximum zones kept on chart.
Mitigation & Inversion — inversion on/off, fill source (close or wick), removal of filled gaps, retest signals.
Multi-Timeframe — HTF on/off and timeframe selection.
Visuals — colors for bullish / bearish / inverted zones, fill transparency, CE line, labels, dimming of tested gaps, dashboard.
█ NOTES
— All state changes occur on closed bars; the developing bar can always change until it closes.
— This is an analysis tool for mapping imbalance and inversion zones, intended as a confluence layer within a complete trading plan. It is not a standalone buy/sell system.
█ DISCLAIMER
This script is provided for educational and informational purposes only and does not constitute financial advice. Trading involves substantial risk of loss. Past behavior does not guarantee future results. Always do your own research and apply sound risk management. Indicator

Indicator

Smart Money Concepts - Regime-Adaptive SMC [Dots3Red]█ SMART MONEY CONCEPTS — REGIME-ADAPTIVE SMC
This indicator attempts to bridge a gap that most SMC traders encounter in practice: the same pattern — an Order Block, a Fair Value Gap, a structure break — behaves differently depending on whether the market is trending or ranging. A bullish Order Block in a trending market is a continuation entry zone. The same pattern near the top of a range is a reversal signal. This script uses a built-in regime classifier to determine the current market character on every bar, then filters and interprets each SMC concept accordingly.
█ HOW THE REGIME CLASSIFIER WORKS
Three measurements are combined into a single trend score on every bar:
ADX (Average Directional Index) measures how strongly price is committed to a direction. It is normalized from its natural 0–60 range to a 0–1 scale by dividing by 60.
Choppiness Index measures directional efficiency — how much of price movement was "wasted" going sideways versus producing net progress. It is inverted so that high choppiness produces a low score. Near 38 (the Fibonacci trend boundary) the normalized value approaches 1.0. Near 100 (pure chop) it approaches 0.0.
The two values are averaged:
trend_score = (adx_normalized + choppiness_inverted_normalized) / 2
A score above 0.6 identifies a trending market. A score below 0.6 identifies a ranging market.
Volatility override: a separate check compares current ATR against its 50-bar SMA. If the ratio exceeds 1.5× the baseline, the regime switches to VOLATILE regardless of the trend score — because during genuine volatility expansion, both trend and reversal signals become unreliable.
Finally, a mode filter examines the last 6 raw regime values and returns the most frequent one. This prevents the regime from flickering on borderline readings.
█ WHAT EACH REGIME SHOWS
TRENDING (cyan bars): Market is moving directionally. Shows BOS labels confirming continuation, Order Blocks created at displacement-qualified BOS bars as continuation entry zones, and Fair Value Gaps as pullback targets in the trend direction. CHoCH signals are hidden — in a trend, CHoCH is usually a deep pullback, not a reversal.
RANGING (magenta bars): Market is oscillating between levels. Shows CHoCH labels flagging potential reversals at range extremes, Order Blocks at CHoCH bars as reversal entry zones, and Fair Value Gaps near range boundaries. BOS signals are hidden — a structure break in a ranging market is usually a liquidity sweep, not a genuine breakout.
VOLATILE (amber bars): ATR has expanded significantly above its baseline — earnings, macro events, sudden liquidations. Order Blocks and FVGs are suppressed because zones created during volatility spikes are historically unreliable. Structure labels (BOS) remain visible for position tracking only.
UNCERTAIN (slate bars): The classifier cannot confidently assign a regime. All signals are displayed so the trader has maximum information. This state occurs during the warmup period and at genuine transition boundaries.
█ ORDER BLOCK DETECTION
Order Blocks require an additional displacement filter before they are created. The body of the candle immediately before the BOS or CHoCH must exceed 0.8× ATR in absolute size. This ensures only candles with institutional-grade momentum qualify — eliminating the low-quality OBs that make most SMC scripts visually cluttered.
Mitigation uses standard ICT methodology: a bullish OB is consumed when price's low touches the top of the zone. A bearish OB is consumed when price's high touches the bottom of the zone. Consumed zones fade visually and stop extending.
█ FAIR VALUE GAP DETECTION
A bullish FVG exists when the high of candle is below the low of candle — a genuine three-candle imbalance where price moved too fast to fill. A minimum size filter of 0.15× ATR removes noise gaps. FVGs extend forward until price enters the gap, at which point they fade and stop tracking.
█ PREMIUM / DISCOUNT ZONES
Two horizontal lines divide the current 25-bar swing range:
• 75% level (red): price is in the upper quartile of the recent range — statistically expensive. In ranging markets this is a sell consideration zone.
• 25% level (green): price is in the lower quartile — statistically cheap. In ranging markets this is a buy consideration zone.
The HUD displays the current percentage position within the range in real time.
█ SMC BIAS MATRIX
The HUD includes a composite directional score built from three components:
• Structural trend (35 points): which direction is the structural_trend state machine currently pointing
• Premium / Discount position (30 points): which side of the range is price on
• Regime alignment (35 points): does the regime confirm the directional bias
In VOLATILE and UNCERTAIN regimes the bias is forced to 50% and displays "STAND ASIDE" or "WAIT FOR REGIME" — because the script suppresses OB and FVG signals in those states, showing a directional bias would contradict its own logic.
█ WHAT YOU SEE ON THE CHART
• Bar colors: every bar is tinted by the current regime — cyan (trending), magenta (ranging), amber (volatile), slate (uncertain). No labels or background fills — just the candles themselves change color, keeping the chart clean.
• BOS / CHoCH labels: small labels appear above swing highs (bullish breaks) or below swing lows (bearish breaks), offset by 1.5× ATR so they never overlap candle bodies.
• Order Block boxes: semi-transparent boxes that extend bar by bar until mitigated, then fade. Maximum 4 per direction.
• FVG boxes: thin semi-transparent boxes extending until filled, then fading. Minimum size filtered.
• Premium/Discount lines: two step-lines showing the 75% and 25% boundaries of the current swing range.
• HUD: regime state, confidence bar, bias matrix, P/D zone, ADX, Choppiness Index, ATR ratio, and live counts of active OBs and FVGs.
█ ALERTS
Seven alert conditions are available: Bull BOS, Bear BOS, Bull CHoCH, Bear CHoCH, Regime → Trending, Regime → Ranging, Regime → Volatile.
█ NOTES ON SETTINGS
• Regime Smoothing Filter: 5–7 for intraday charts, 8–12 for daily/weekly. Lower values react faster but produce more regime transitions.
• Volatile ATR Mult: 1.8–2.0 for stock indices (earnings create genuine 2× spikes), 1.4–1.6 for crypto and forex.
• OB Displacement Mult: 0.5–0.8 for daily charts where candles are naturally larger, 1.0–1.5 for intraday.
• Swing Pivot Length: 5–7 for intraday, 7–10 for daily/weekly.
█ DISCLAIMER
This indicator is a technical analysis tool. It does not constitute financial advice and does not guarantee future results. Past patterns do not predict future price behavior. Use appropriate risk management on all trades. Indicator

Confluence FVG Finder | ProjectSyndicateConfluence FVG Finder automatically identifies and validates high-probability, non-repainting Fair Value Gaps. It filters for structural quality using an ATR-based imbalance filter, normalizes all zone heights for consistency, and embeds a live multi-timeframe confluence engine inside every zone to provide a quantifiable, data-driven edge.
🧠 Live Multi-Timeframe Engine — This is not a single-timeframe tool. Every FVG zone displayed on the chart is the result of a live, proximity-based confluence engine scanning three independent higher timeframes (default H1, H2, H4) simultaneously. Each label shows exactly how many timeframes confirmed the zone, its composite strength rating (0–10), the session it formed in, its age, and its exact pip height, giving you an instant structural edge.
🎯 Imbalance-Validated FVGs — The engine doesn't just mark any three-candle gap. It validates each Fair Value Gap on the higher timeframes by requiring the gap to exceed a user-defined multiple of ATR, filtering out insignificant micro-gaps and focusing only on imbalances that reflect true market-moving intent before they are even considered for merging.
🎨 ATR-Normalized Zones — Eliminates visual noise from inconsistent gap sizes. This feature forces every merged FVG zone to a uniform, ATR-based height (e.g., 0.75x ATR). This provides a clean, consistent chart and allows for a more objective analysis of price interaction with zones of equal visual weight, preventing oversized gaps from distorting the chart.
📊 Proximity-Based Merging — Timeframes rarely align perfectly to the pip. The confluence engine uses an intelligent ATR-based proximity tolerance to detect when Fair Value Gaps from different timeframes are clustered in the same price territory. It then mathematically merges them into a single, high-probability "Confluence Zone," ensuring you don't miss valid setups due to minor price discrepancies across timeframes.
✅ Chart-Timeframe Independent — The engine's credibility comes from its architectural stability. Each timeframe is detected entirely inside its own data context and every zone is anchored to the timestamp it formed on, so — unlike standard MTF indicators that repaint or shift zones depending on the chart you are viewing — the merged zones are mathematically identical whether you view them on a 5-minute, 15-minute, or 1-hour chart.
🔧 Fully Customizable — Control every aspect of the engine, including the 3 target timeframes (default H1 / H2 / H4), the Minimum Timeframe Confluence threshold (e.g., require 3 out of 3 TFs), the Proximity Tolerance multiplier, the Minimum Strength Filter, the per-timeframe strength bonus, the mitigation mode (Touch / Full Fill / 50% Fill), and the colors/visibility of Bullish and Bearish zones.
🔬 Why this algo is unique: Standard FVG indicators are subjective — often just shading every three-candle gap on the current timeframe with no proof of higher-timeframe alignment. The Confluence FVG Engine transforms this into an objective, multi-dimensional instrument. It doesn't just show you a gap; it proves the imbalance is backed by aligned intent across multiple timeframes, merging them into a single, undeniable area of interest on the exact chart you are viewing.
🌐 Apply to Gold (XAUUSD), Indices (US30, NAS100), Forex Majors, and Crypto. With the default H1 / H2 / H4 structure, execute from any timeframe at or below H1 (1m–1h) while the engine tracks the H1, H2, and H4 imbalances. The engine is designed for assets that exhibit clear impulsive moves and respect deep supply/demand dynamics.
🗂️ How to use this? The most critical metrics are the Timeframe Confluence Count and the Strength Rating. A zone confirmed by 3 timeframes with a Strength of 8.0+ indicates a massive structural edge. Consider only taking trades from these high-confluence zones that align with the prevailing higher-timeframe trend. The embedded label also shows the exact "pips away" distance, allowing for precise limit order placement. Note: Timeframe 1 is the anchor — keep your chart at or below it (H1 by default) so zones render exactly; an on-chart warning appears if your chart timeframe is set higher.
⚙️ IMPORTANT NOTICE: This indicator is a professional-grade tool designed to identify structural confluence. It should NOT be used as a standalone signal for entering trades blindly. Always use it in conjunction with your own trading strategy, price action analysis, and strict risk management to confirm trade setups. Indicator

ICT Confluence Framework[BullByte]ICT Confluence Framework is a structural price-action engine that monitors the chart for five independent ICT-style behaviors and fires a directional setup only when several of them align inside a short structural window. Designed for intraday traders on 1m–15m charts in crypto, indices, and futures, with an auto-adapter that rescales every meaningful lookback to the chart timeframe.
Most ICT tools draw one element - order blocks, liquidity pools, BOS lines - and leave the trader to combine them mentally. This framework does the combining, scores the result against the current market regime and volatility phase, and prints one clean setup with an Entry, two Reference Levels, and an Invalidation level. The chart stays focused on what is currently relevant - no permanent boxes, no arrows on every candle, no flashing icons.
WHY THIS IS NOT A MASHUP
No public indicator is imported, wrapped, or re-skinned. Every detector is written from first principles against raw OHLCV. The five detectors share four custom layers that no single public indicator provides:
- A common confluence scoring layer with adaptive per-pattern weighting
- A regime classifier based on path efficiency
- A volatility-phase filter based on rolling ATR percentile rank
- A signal lifecycle manager with deterministic outcome resolution
The originality is in how five orthogonal behaviors are unified into one decision - not in the behaviors themselves.
THE FIVE BEHAVIORS MONITORED
1. Liquidity Sweep + Reclaim
Price violates a recent swing extreme - taking out resting stops - then closes back inside the prior range within a short window. The classic stop-hunt-then-reverse footprint.
2. Stopping Volume
A high-volume bar at a local extreme that closes with a strong rejection wick. Marks a level where aggressive flow was absorbed by passive flow.
3. Range Compression to Expansion
A bar that is the narrowest of its recent window is immediately followed by an expansion bar of meaningful size. A bullish expansion contributes to a bullish setup; a bearish expansion to a bearish one.
4. Break of Structure (BOS)
A close beyond the last confirmed pivot high or low. The script uses 3-bar right-confirmed pivots, so BOS prints with structural lag by design - this removes false breaks.
5. Order Block Mitigation
Price returns to the last opposing candle preceding a strong impulse, wicks into it, and closes back outside the zone.
Each behavior is detected independently against raw price and volume.
WHY THESE FIVE
At structural turning points markets do a small number of distinct things: they trap traders (sweep), they absorb flow (stopping volume), they release energy (compression-expansion), they confirm intent (BOS), and they retest origin (order block). When two or more of these align within the same structural window on the same side, the setup quality is materially higher than any one of them in isolation.
WHAT MAKES THIS DIFFERENT
Signals are stable. Detection and signal arming occur only on confirmed bar close. Once a setup prints, it does not move, redraw, or vanish on the next tick.
The script adapts to your chart. Every pattern carries a rolling reliability score calculated from its own follow-through history on the instrument and timeframe you are viewing. Follow-through is measured as maximum favorable excursion in ATR multiples over a configurable evaluation window. Patterns that have been working get more weight; patterns that have been failing get less, bounded by a user-set floor so no pattern is fully silenced.
Market regime is respected. An efficiency ratio (net displacement divided by path length) classifies the market as Trend Up, Trend Down, Range, Volatile, or Neutral. Inside this classification, BOS in a Range is soft-weighted to 0.4x and Expansion in a Volatile regime is soft-weighted to 0.5x. Counter-trend setups inside a strong trend are weighted down to 0.5x but still allowed.
Volatility phase aware. The current ATR's percentile rank classifies the bar as Quiet, Normal, or Active. Active phase tightens the required pattern count by one (capped at five). Quiet and Normal use the user's setting unchanged.
Confluence decay. A residual opposing score decays linearly by 1.0 per bar with no fresh pattern activity, so a stale opposing cluster cannot block a fresh signal indefinitely. The decayed value is also reset to zero on trade closure so the post-cooldown chart starts clean.
The chart stays clean. While no trade is active, the Hunting Layer shows what the script is monitoring. The moment a signal fires, every hunting visual that did not contribute to the signal and is not contextually inside the trade's expected path is erased. Contributors and contextual zones are recolored to the signal's direction and promoted into permanent history.
CHART EXAMPLE
1.ETH/USD 15m: Bullish Alignment: Expansion + BOS. Following a sharp bearish leg into a session low near 08:00, price entered a tight compression range between approximately 10:30 and 12:00. An expansion bar then broke above the last confirmed swing high (the LH pivot at ~11:00), firing the Compression-to-Expansion and Break of Structure detectors simultaneously. The framework printed a Bullish Alignment at 2036.60 with Invalidation at 2022.77. The market has advanced through Reference Level 1 (2050.43) and is approaching Reference Level 2 (2064.27).
2.ETH/USD 15m: Bullish High-Confluence: Sweep + BOS + OB. During a Range regime under Active volatility phase (which tightened the confluence requirement to three patterns), price swept the sellside liquidity at approximately 10:30 below a confirmed swing low. After consolidation, the entry bar at approximately 13:30 mitigated a bullish Order Block and broke above the local pivot. Three patterns aligned at signal close, firing a Bullish High-Confluence setup at 2118.34 with Invalidation at 2097.19. The market is currently advancing toward Reference Level 1 (2139.49) and Reference Level 2 (2160.64
3.ETH/USD 15m: Bearish Alignment: StopVol + BOS. Following a multi-hour consolidation between approximately 10:00 and 13:00 near the 2115–2125 area, price rejected the consolidation high with a high-volume bar at approximately 13:00, then broke below the local pivot. Stopping Volume and Break of Structure aligned on the same bar in a Volatile regime, firing a Bearish Alignment at 2110.89 with Invalidation at 2133.24. The setup is currently in progress, advancing toward Reference Level 1 (2088.54) and Reference Level 2 (2066.18), with a large sellside liquidity pool sitting in the path.
HOW TO READ THE OUTPUT
When a setup fires you will see four horizontal levels with right-side labels:
ENTRY (solid line, signal-direction color)
The closing price of the signal bar.
REFERENCE LEVEL 1 (dashed line, reference color)
Placed at 1R by default. Informational only - the setup does not close here. Useful for partial-exit planning or scaling.
REFERENCE LEVEL 2 (dashed line, reference color)
Placed at 2R by default. Reaching this level closes the setup as a success.
INVALIDATION (dotted line, invalidation color)
Placed at 3 ATR from entry by default. Reaching this level closes the setup as a failure.
Outcome and historical record
The setup closes when either Reference Level 2 or Invalidation is reached intrabar. Outcome is detected on the bar's high/low. When a single bar's range spans both levels, the setup closes on that bar; the script does not assume intrabar order, so the user should treat such ambiguous closures cautiously when reviewing historical results.
When the trade closes, right-side labels and connectors are removed and the four lines freeze at the closure bar. The signal label at the firing bar remains as a permanent record. To keep object counts within PulseWire limits on long histories, the script retains the most recent 400 signal labels and the most recent 400 closed-trade lines; older items are recycled automatically.
COOLDOWN
After any trade closes, the script waits a configurable number of bars before arming the next setup. Prevents back-to-back firing on noisy moves.
THE DASHBOARD
A 9-row status panel reports:
Regime - Trend Up, Trend Down, Range, Volatile, or Neutral.
Phase - Quiet, Normal, or Active.
Pattern rows - for each of the five behaviors: rolling Activity count and a Low / Medium / High Emphasis rating based on recent follow-through reliability on this chart.
Patterns Required - the integer minimum that must align for a signal to fire on the current bar. Equal to your "Minimum Patterns Required" input in Quiet and Normal phases; tightened by one (capped at five) in Active phase.
Status - Ready, Cooldown, or Signal Active.
THE HUNTING LAYER
Drawn while no trade is active and the script is hunting for confluence:
Buyside Liquidity zones - blue boxes above swing highs.
Sellside Liquidity zones - teal boxes below swing lows.
Bullish Order Blocks - teal boxes at the last bearish candle before a strong bullish impulse.
Bearish Order Blocks - red boxes at the last bullish candle before a strong bearish impulse.
Compression bars - amber boxes on narrow-range candles.
Stopping Volume markers - amber triangles at high-volume rejection candles at local extremes.
BOS labels - text labels at confirmed structural breaks, centered on the broken level.
Sweep markers - text labels at the bar where price violated a confirmed pivot extreme, marking where liquidity was taken.
Reclaim labels - text labels at the bar where price closed back inside the prior range, confirming the sweep. Together with the Sweep marker, these tell the complete two-event Sweep+Reclaim story.
HH / HL / LH / LL pivot labels - market structure narration. Pivots are independent of the BOS module switch and are shown whenever the pivot toggle is enabled.
Duplicate BOS, Sweep, and Reclaim markers at the same price level within a recent window are automatically suppressed. Each confirmed pivot can be swept and reclaimed at most once until a new pivot forms.
At signal fire
Each active hunting item is evaluated:
- If its pattern type contributed to the signal, it is recolored to the signal's direction and promoted to history.
- If it is a liquidity zone or order block sitting inside the trade's expected path AND structurally aligned with the trade, it is promoted as context.
- Everything else is erased instantly.
At signal fire, BOS and Reclaim markers are explicitly drawn so every fired setup carries its structural anchor. The Reclaim marker is guaranteed when the Sweep pattern contributed; the BOS marker is drawn when BOS contributed and no recent BOS marker exists at the same level.
TIMEFRAME GUIDANCE
1m and 3m - high-frequency scalping on liquid pairs (BTC/USDT, ETH/USDT, NQ, ES).
5m and 15m - intraday swing entries on the same instruments and other liquid markets.
30m and above - functional but signal frequency drops noticeably; suitable for positional approaches.
The Auto-Calibrate by Timeframe input automatically scales swing lookback, ATR length, volume lookback, sweep window, stopping-volume percentile, and compression lookback. Disable only for full manual control.
HOW TO USE IT
1. Load on a clean chart. Leave Auto-Calibrate enabled.
2. Watch the Hunting Layer to see what the script is monitoring.
3. Wait for a signal label to print at bar close. The label text lists the contributing patterns.
4. The four levels appear automatically.
5. The setup auto-closes when Reference Level 2 or Invalidation is reached. After cooldown, hunting resumes.
INPUTS GUIDE
Auto-Calibrate by Timeframe - master switch that scales all lookbacks to the chart timeframe.
Pattern Modules - enable or disable any of the five detectors individually.
Core Parameters - manual swing, ATR, and volume lookbacks (used when Auto-Calibrate is OFF).
Pattern Tuning - per-pattern sensitivity controls.
Adaptive Learning - evaluation window, follow-through threshold in ATR multiples, learning memory, and minimum emphasis floor.
Regime Filter - toggle regime awareness and set its lookback.
Volatility Phase - toggle phase-based threshold tightening and set its lookback.
Confluence Decay - toggle linear decay of residual opposing scores.
Output - Quiet Mode (only High-Confluence tier fires), minimum patterns required, cooldown bars, RR for Reference Levels 1 and 2, Invalidation distance in ATR multiples, and label offset from the last bar.
Visual - color tones for bullish, bearish, reference, invalidation, and label background.
ICT Hunting Layer - individual toggles and color controls for every visual element and the legend panel.
ALERTS
Six alert conditions cover every tier and direction combination:
- Bullish High-Confluence
- Bearish High-Confluence
- Bullish Alignment
- Bearish Alignment
- Bullish Watch
- Bearish Watch
Add through the standard PulseWire alert dialog.
TECHNICAL NOTES
- All pattern detection and signal arming occur on confirmed bar close. No intrabar fires, no repaint.
- No request.security() calls. No higher-timeframe lookups. No lookahead modifiers. No future leakage.
- Pivots use 3-bar right confirmation - structural lag is intentional and removes false breaks.
- The script uses one active trade slot at a time. New setups can only arm after the current one closes and cooldown expires.
- Same-bar conflict between Reference Level 2 and Invalidation resolves conservatively as invalidation. This is the honest interpretation when intrabar order is unknown.
- Object retention is bounded: 400 signal labels, 400 closed-trade lines, 400 hunting-history items. Adaptive learning memory is configurable up to 1000 bars per pattern.
WHAT THIS SCRIPT IS NOT
- Not a strategy. It does not place trades or compute P&L.
- Not a holy grail. No indicator is.
- Not a black box. Every threshold and lookback is exposed as an input.
- Not predictive. It reacts to confirmed structural events at bar close.
DISCLAIMER
This script is published as an open-source educational and analytical tool. It does not constitute financial advice, a recommendation to buy or sell any instrument, or any guarantee of future performance. Past behavior of any pattern on any chart does not guarantee future results. You are solely responsible for your trading decisions, your risk management, and your testing on a demo environment before any live use. The author and PulseWire accept no liability for losses incurred from use of this script.
CREDITS
Concepts inspired by public ICT (Inner Circle Trader) educational material. All detection logic, scoring, regime classification, adaptive learning, lifecycle management, and visualization is original implementation by the author. Indicator

Market Structure & LiquidityMARKET STRUCTURE & LIQUIDITY — Calibrated Zones, Premium/Discount & Setup Grade
================================================================================
WHAT THIS SCRIPT IS
A single price-action framework that maps the structural read of a chart and
then measures it. It plots market structure (break of structure and change of
character), supply/demand order blocks, fair value gaps, resting liquidity
(equal highs and lows) and the sweeps that take it, premium/discount with an
optimal-entry band, a higher-timeframe bias, and a rolling volume profile. On
top of those objects it does three things most structure tools do not: it
validates every structure break, it scores each zone by confluence and quality,
and it reports — using past data on the current symbol only — how often each
zone type has actually been respected, with statistical confidence intervals.
The levels are the raw material; the framework adds a measured read of which
ones to trust.
WHY THE COMPONENTS ARE COMBINED (how the parts work together)
These are not independent indicators bolted together. They describe one process
— how large participants build positions: rest liquidity, take it, displace
price, and leave an inefficiency behind — and each layer covers a blind spot of
the others, feeding one combined decision:
- Market structure (swing and internal) gives trend context and the moment it
shifts. Because raw break detection is noisy, a break is only counted when it
shows real displacement (range expansion with body, or a volatility
compression followed by a release), closes beyond the level with body rather
than leaving a rejection wick, and breaks a tight, recent (quality) pivot.
This removes most false breaks before anything else is drawn.
- Regime context (efficiency ratio + ADX + volatility clustering + a whipsaw
score) conditions how far to trust a read: continuation breaks are reliable in
a trending regime, reversals are more reliable in a range, and a choppy regime
weights everything down. Structure on its own cannot tell you this.
- Liquidity (equal highs/lows, sweeps, and inducement) marks where stops rest
and the moment they are taken — the trigger that typically precedes a real
move, and the event that validates a nearby zone.
- Order blocks and fair value gaps mark the origin of the displacement and the
inefficiency price tends to revisit. A zone that forms on a sweep, on a
high-volume node, in the correct half of the range scores highest — which is
exactly why liquidity, the volume profile and premium/discount all feed the
zone score rather than living in separate panes.
- Volume profile (point of control, high- and low-volume nodes, and untested
"naked" points of control) tells you whether a zone sits on acceptance (tends
to hold) or on a thin gap (tends to slice), and marks magnet levels price is
drawn back toward.
- Premium/discount and the OTE band frame every zone as expensive or cheap
relative to the current dealing range, so a long in discount and a short in
premium are favoured.
- The confluence engine and setup grade fuse structure direction, a recent
sweep, zone quality, node type, premium/discount alignment, higher-timeframe
bias and a momentum-divergence confirmation into one A/B/C read per zone, so
the chart self-prioritises instead of leaving you to weigh eight things by eye.
- Calibration measures, on past bars only, how often each zone type produced a
meaningful reaction on the current symbol, and reports it with Wilson
confidence intervals — so reliability is earned per instrument, not assumed.
In one sentence: structure says direction, regime says whether to believe it,
liquidity says when, the zones say where, premium/discount says whether it is
worth it, the grade fuses them, and the calibration keeps the whole thing honest.
HOW IT WORKS (mechanics, briefly)
Pivots use the standard left/right confirmation, so structure is non-repainting:
a break is only labelled after the pivot is confirmed and the close validates it.
Order blocks anchor to the last opposing candle before a validated break, are
scored on formation, and are re-scored for confluence on the most recent bar.
Calibration records, the first time a zone is tagged, whether price then travels
a chosen ATR multiple in the zone's direction within a fixed horizon, and
aggregates that into the respect rate shown on the dashboard. All thresholds are
ATR-relative, so nothing is tied to a particular price scale.
HOW TO USE IT
1. Read the dashboard headline: the SETUP grade and the structure bias.
2. Favour higher-grade setups — a validated structure direction, a recent sweep,
a fresh high-quality zone sitting on a volume node, in discount for longs or
premium for shorts, with higher-timeframe agreement.
3. Use the OTE band for entry context and an opposing fair value gap as a
logical target.
4. Check the respect rows. If order blocks or fair value gaps rarely hold on this
symbol, weight the read down accordingly.
5. Treat everything as descriptive context, not a signal to act on.
USE ON ANY MARKET
The High / Low / Close source inputs let you drive structure, liquidity and
premium/discount from any series (standard candles, Heikin-Ashi, or another
source), so the framework applies to stocks, indices, futures, forex and crypto.
A volume-borrow input supplies volume for symbols that report none.
WHAT MAKES IT ORIGINAL
The contribution is the closed loop, not the individual objects, which are
common to price-action analysis. Here, validated structure and liquidity feed a
per-zone confluence and quality score and a single setup grade, and a past-only
calibration tracker reports each zone type's actual respect rate on the current
symbol with confidence intervals. That turns a set of drawing tools into a
measured, self-prioritising read.
SETTINGS WORTH KNOWING
- Break Validation: turn displacement, anti-wick and pivot-quality gates on/off
and tune their strictness to make structure more or less selective.
- Volume Profile / Nodes: bins, window and HVN/LVN percentiles control node
tagging; naked POC tracking is session-based and turns itself off when the
chart is not intraday.
- Confluence & Setup Grade: cluster tolerance controls how close levels must be
to count as confluent.
- Calibration: horizon and minimum reaction define what counts as a "respected"
zone.
- Visuals: theme is auto/dark/light; grade-weighted opacity makes strong zones
bold and weak ones faint; the identity strip shows the script name, symbol and
timeframe.
LIMITATIONS
Pivots confirm after the right-bars lag, so forming structure is not drawn until
confirmed. Volume layers require real or borrowed volume. Calibration describes
past behaviour only — it is not a backtest and not a probability of future
results. Every read is probabilistic context, never a certainty.
DISCLAIMER
This is a study/indicator for chart analysis and education only. It is not a
strategy, not a recommendation, and not financial advice. It places no orders
and guarantees no outcome. Markets carry risk, and the past behaviour of a level
does not assure its future behaviour. Do your own research and manage your own
risk.
Indicator

Session Edge Profiler | Flux ChartsGENERAL OVERVIEW:
The Session Edge Profiler is a statistical dashboard indicator that profiles up to five configurable trading sessions (Asia, London, NY AM, NY Lunch, NY PM by default) across the available completed trading days loaded on the chart. The indicator records each session's range, volume, directional outcome, and smart money structure (Fair Value Gaps, swing breaks, higher highs, lower lows) on every completed day, then surfaces the resulting statistics in a configurable on-chart dashboard with progress bars and best value markers.
For every metric, the indicator filters history by the selected weekdays. Range-based metrics are normalized against the previous daily ATR for cross-volatility comparison, while volume, directional, extreme, and structure metrics are calculated directly from completed session records. The indicator also computes percentile rankings of the current session range against its historical distribution. Session boxes can be plotted for visual reference, and a live label tracks the active session's running range against its historical average and percentile rank in real time. The indicator is statistical, session based, dashboard driven, and includes one alert condition for sessions exceeding the 90th percentile of their historical range distribution.
WHAT IS THE THEORY BEHIND THE INDICATOR?:
Markets do not move uniformly across the day. Each trading session carries different participant types, different volume profiles, and different structural behaviors. The Asia session tends to be range bound and accumulative. The London session frequently sweeps overnight liquidity. NY AM often produces the largest expansions of the day. NY Lunch is typically the lowest volume window. NY PM frequently reverses or extends NY AM moves into the close.
These tendencies are widely cited but rarely measured per instrument. The Session Edge Profiler quantifies them. By recording per session statistics across the historical window available on the chart, and by filtering by selected weekdays, the indicator builds an empirical profile of how each session has actually behaved on a specific symbol rather than relying on generalized assumptions. The result is a session level statistical profile that can be compared against the current session in real time, identifying when a given session is behaving unusually large, unusually quiet, or consistent with its historical edge.
SESSION EDGE PROFILER FEATURES:
◇ Session tracking with customizable times, names, and colors
◇ Statistical dashboard with up to thirteen configurable metrics
◇ ATR normalized range comparison across sessions
◇ Today percentile ranking of the live session range
◇ Daily extremes tracking (HOD %, LOD %)
◇ Directional statistics (Bull %, Continuation %)
◇ Volume profiling (Vol Share %, Avg Vol)
◇ Smart money structure analytics (FVGs, Swing Breaks, FVG Survival, HH, LL)
◇ Active session live label with real time percentile and average comparison
◇ Session range boxes with current and historical display
◇ Weekday filtering applied uniformly across all statistics
◇ Dashboard theming (Dark or Light), nine position options, and five text sizes
◇ High percentile range alert
SESSION TRACKING AND RANGE BOXES:
🔹What is Session Tracking?
Session Tracking is the foundation of the indicator. Five configurable session windows are monitored on every bar. When price enters a session window, the indicator opens an active tracking object that records the session's high, low, open price, total volume, and structural events. When price leaves the session window, the active object is closed and its values are committed to the historical record for that session.
🔹Why is Session Tracking important?
Every statistic computed by the indicator depends on accurately segmenting the trading day into sessions. Without a reliable session lifecycle, range comparisons, HOD/LOD attribution, volume share, and structure counts would be inconsistent. The session lifecycle also defines what gets drawn on the chart: the live range box for the current session and, optionally, persistent boxes for historical sessions.
🔹How is Session Tracking detected and calculated?
Every bar is checked against the configured session time windows in New York time. The moment price enters a session window, a new session opens: the session's high, low, open, and volume start fresh, and the FVG, swing break, HH, and LL counters reset to zero. While the session is active, the high updates to the running maximum, the low updates to the running minimum, and volume accumulates with each new bar. When price leaves the session window, the session is closed: the final high, low, open, close, and volume are committed and the session is marked complete for the day.
A trading day boundary is determined by shifting time forward by 6 hours and comparing the resulting calendar date in New York time. This shift causes a new day to register at 18:00 NY time, aligning the trading day with the start of the Asia session at 19:00 NY. When a new trading day begins, the completed session statistics from the previous day are added to each session's history along with the weekday they were recorded on, the daily fields reset, and a new tracking cycle begins.
🔹Settings: Sessions Group
◇ Enable Toggle: Turns the session on or off. Disabled sessions are excluded from the dashboard, the live label, and all calculations.
◇ Session Name: Custom label used in the dashboard column header, on the session box, and in the active session label. Defaults: Asia, London, NY AM, NY Lunch, NY PM.
◇ Session Time: The session window in NY time using HHMM,HHMM format. Defaults: Asia 1900,0200, London 0200,0830, NY AM 0830,1200, NY Lunch 1200,1330, NY PM 1330,1600.
◇ Session Color: Color applied to the dashboard column header (when active), the session box border and background, and the active session label.
🔹Customization
Display Group
◇ Show Session Ranges: When enabled, plots a translucent box around the current session showing its running high and low, with the session name labeled in the top left corner. Historical session boxes are also retained on the chart for visual reference.
◇ Show Active Session Stats: When enabled, plots a live label next to the most recent bar of the active session displaying the session name, current range, current range as a percentage of historical average, and current percentile rank.
◇ Label Size: Sets the text size of the active session label. Options: Tiny, Small, Normal, Large, Huge.
STATISTICAL DASHBOARD:
🔹What is the Statistical Dashboard?
The Statistical Dashboard is a configurable table that summarizes the historical statistical profile of every enabled session. Rows correspond to metrics. Columns correspond to sessions. Each cell shows the metric value for that session, optionally rendered with a unicode progress bar and a star marker (★) for the session with the highest value on metrics where "highest" is the meaningful target.
🔹Why is the Statistical Dashboard important?
The dashboard is where the indicator's measurements surface. Rather than requiring a trader to scroll through chart history and visually estimate session behavior, the dashboard reduces the entire weekday filtered history of every session to a compact table of directly comparable numbers. The header line shows the active weekday filter and the maximum number of historical days used in any cell, providing immediate context for the statistical sample size.
🔹How is the Statistical Dashboard calculated?
On the most recent bar of the chart, the indicator reviews each enabled session's stored history. For every past session, it checks whether the weekday it was recorded on is included in the selected weekday filter. If yes, the session contributes to the running totals: range sums, volume sums, HOD/LOD counts, bull counts, continuation counts, FVG counts, swing break counts, HH counts, LL counts, and volume share. After the review, totals are converted to averages or percentages and written to the dashboard cells.
Best value markers are computed by tracking the maximum value across all enabled sessions for the metrics where "highest" is the intended target: Avg Range, HOD %, LOD %, Avg FVGs, and FVG Survival %. For metrics where directional bias matters (Bull %, Continuation %) or where higher is not strictly better (Vol Share %, Avg Swing Breaks, Avg HH, Avg LL), no best marker is shown.
[Screenshot: Full dashboard table screenshot in Dark Mode with every metric row enabled. Header line showing the active weekday filter and sample size, column headers in each session's color, progress bars rendered in percentage cells, and the SMART MONEY divider row visible separating the structural metrics from the range and directional metrics above.
🔹Settings: Dashboard Group
◇ Show Dashboard: Master toggle for the entire dashboard. When disabled, no table is rendered.
◇ Theme: Dark Mode or Light Mode. Controls background, row, header, and text colors. The best value highlight cell uses a deeper accent color on the selected theme.
◇ Position: Table placement on the chart. Options cover all nine combinations of vertical (Top, Middle, Bottom) and horizontal (Left, Center, Right) anchoring.
◇ Text Size: Tiny, Small, Normal, Large, Huge. Affects every cell.
◇ Show Progress Bars: When enabled, percentage and percentile cells render an 8 segment unicode bar alongside the numeric value, scaling from 0% to 100%. When disabled, only the numeric value is shown.
🔹Customization
Metric Toggles
Each of the following dashboard rows can be independently shown or hidden:
◇ Avg Range (ATR%)
◇ Vol Share %
◇ Avg Vol
◇ HOD %
◇ LOD %
◇ Bull %
◇ Continuation %
◇ Today Percentile
◇ Avg FVGs
◇ Avg Swing Breaks
◇ FVG Survival %
◇ Avg HH
◇ Avg LL
🔹Signal Colors
◇ High: Color applied to high tier values (Today Percentile at or above 75, FVG Survival at or above 70). Default: green.
◇ Mid: Color applied to mid tier values (Today Percentile between 25 and 75, FVG Survival between 40 and 70). Default: orange.
◇ Low: Color applied to low tier values (Today Percentile at or below 25, FVG Survival below 40). Default: red.
ATR NORMALIZED RANGE STATISTICS:
🔹What is ATR Normalized Range?
The Avg Range (ATR%) metric expresses each session's average range as a percentage of the daily Average True Range. A value of 45% means the session, on average, covered 45% of a full day's ATR.
🔹Why is ATR Normalized Range important?
Raw range values cannot be compared across instruments or across volatility regimes. A 200 point range means very different things in calm versus volatile markets. Normalizing by daily ATR removes that distortion: the resulting percentage is directly comparable between sessions, between symbols, and between months of history.
🔹How is ATR Normalized Range calculated?
For each completed session, the raw range (session high minus session low) is divided by the daily ATR value of the previous completed day. The daily ATR uses a configurable length (default 14) and is always read from the previous daily bar, which means the value is fixed for the entire current trading day and never repaints. The session's normalized range is stored alongside its weekday in the history. When the dashboard renders, the indicator averages all normalized ranges from sessions whose weekday passes the filter, then multiplies by 100 to produce the displayed percentage.
🔹What is Today Percentile?
Today Percentile expresses where the current session's live range sits within the historical distribution of that same session's past ranges. The comparison stays within the session: today's London is compared only against past Londons, today's NY AM only against past NY AMs, and so on, all filtered by the selected weekdays. A value of 80 means the live range is larger than 80% of past occurrences of the same session on those weekdays.
🔹How is Today Percentile calculated?
For each enabled session, the indicator computes the current normalized range (current session range divided by daily ATR). It then walks through that session's own past history, counting how many past sessions have a normalized range less than or equal to the current value, while skipping any past session whose weekday is not enabled in the filter. The percentile is the percentage of qualifying past sessions at or below the current value.
The cell color reflects the tier: at or above 75 uses the High color, at or below 25 uses the Low color, otherwise the Mid color. The numeric value is rendered with an ordinal suffix (1st, 2nd, 3rd, 4th, and so on) for readability, and the progress bar segments scale from 0 to 100.
🔹Settings:Filters Group
◇ ATR Length: Lookback for the daily ATR used in normalization. Range: 5 to 50. Default: 14.
DAILY EXTREMES TRACKING:
🔹What are HOD % and LOD %?
HOD % measures how often a given session contained the day's highest price. LOD % measures how often it contained the day's lowest price. Both are expressed as a percentage of the total weekday filtered days in history.
🔹Why are HOD/LOD statistics important?
Knowing which session historically sets the daily extreme on a given instrument helps frame intraday liquidity expectations. A session with a high HOD % is the session that most frequently posts the day's selling extreme. A session with a high LOD % most frequently posts the day's buying extreme. On many instruments NY AM dominates both, but the ratio shifts by symbol and by weekday, which is why measuring rather than assuming is useful.
🔹How are HOD % and LOD % calculated?
While the trading day is in progress, the indicator continuously tracks the day's running high and running low across all bars, not just within session windows. When a new trading day begins, every completed session from the previous day is checked: if the session's recorded high matches the day's high, that session is tagged as the HOD session; if its low matches the day's low, it is tagged as the LOD session. These tags are stored with the session in history. When the dashboard renders, it counts how many sessions in the weekday filtered history carry each tag and converts those counts to percentages. The session with the highest HOD % across all enabled sessions receives a star marker, and the same applies to LOD %.
DIRECTIONAL STATISTICS:
🔹What are Bull % and Continuation %?
Bull % is the percentage of historical sessions that closed higher than they opened. Continuation % is the percentage of historical sessions whose direction matched the previous occurrence of the same session.
🔹Why are directional statistics important?
Bull % captures the session's directional skew. A session with Bull % consistently above 60% on a particular instrument and weekday set has a measurable upward tendency. Continuation % captures the session's persistence: a high continuation rate means the session frequently extends the previous day's same session direction, while a low rate suggests the session tends to reverse the prior day's bias.
🔹How are Bull % and Continuation % calculated?
For each completed session, Bull is true when the session's close (the chart close at the bar where the session ended) exceeds its open. Continuation is true when the previous occurrence of the same session was bullish in the same direction (both bullish or both bearish). The very first occurrence in history has no previous reference and is excluded from the continuation calculation. The dashboard divides the bullish session count by the total session count for Bull %, and the matched continuation count by the continuation eligible count for Continuation %.
No best value marker is shown for either metric, since "highest" is not inherently better: directional bias and continuation are interpretive measurements rather than competitive ones across sessions.
VOLUME PROFILING:
🔹What is Volume Profiling?
The indicator tracks two volume metrics per session: Vol Share % (the session's average share of total daily volume) and Avg Vol (the session's average absolute volume).
🔹Why is Volume Profiling important?
Volume distribution across the day reveals participant activity. Sessions that historically account for a disproportionate share of daily volume are the sessions where flow is most concentrated. Sessions with low volume share (typically NY Lunch) are statistical low conviction windows where moves are more likely to be lower quality.
🔹How is Volume Profiling calculated?
While each session is active, the indicator accumulates bar volume into the session's running total. When the trading day rolls over, total day volume is computed as the sum of all completed session volumes for that day. Each session's Vol Share is then computed as its session volume divided by total day volume, multiplied by 100, and saved into the session's history alongside the absolute volume. When the dashboard renders, Avg Vol is the simple weekday filtered mean of recorded session volumes, and Vol Share % is averaged across the weekday filtered history.
SMART MONEY STRUCTURE ANALYTICS:
🔹What are the Smart Money metrics?
The Smart Money section of the dashboard surfaces four structural counters per session:
◇ Avg FVGs: average number of Fair Value Gaps formed during the session.
◇ Avg Swing Breaks: average instances where the close pierces a previously confirmed pivot high or pivot low.
◇ FVG Survival %: percentage of FVGs that were not invalidated within the same session in which they formed.
◇ Avg HH and Avg LL: average count of new higher highs and lower lows in pivot structure during the session.
🔹Why are Smart Money metrics important?
These metrics quantify the structural activity of each session. High FVG counts indicate aggressive displacement and gap creation. High Swing Break counts indicate liquidity sweeps and structural inflection. FVG Survival measures how often gaps formed during the session are respected (not immediately filled in the opposite direction), giving a session level reliability score for the FVG concept. HH and LL counts profile each session's tendency to extend structure in one direction versus the other.
🔹How are Smart Money metrics calculated?
A Fair Value Gap is detected as a 3 bar pattern: a bullish FVG forms when the current bar's low sits above the high from two bars ago, and a bearish FVG forms when the current bar's high sits below the low from two bars ago. Whenever an FVG forms during an active session, the session's FVG counter increments and the gap level (the high from two bars ago for a bullish FVG, the low from two bars ago for a bearish FVG) is added to a list of active gaps for that session, along with its direction.
On every later bar within the same session, the indicator checks each active gap. If price closes below a bullish FVG's level, or closes above a bearish FVG's level, the gap is treated as invalidated and removed from the active list, and the session's invalidation counter increments. At the end of the session, FVG Survival % is computed as the count of total FVGs minus invalidated FVGs, divided by total FVGs, expressed as a percentage. The cell is color coded by tier: at or above 70 uses High, at or above 40 uses Mid, otherwise Low.
Swing breaks use a configurable pivot strength (default 5 bars on each side). When a pivot high confirms and price subsequently closes above that pivot level, a bullish swing break fires and the pivot is consumed (cleared from active tracking). The same applies symmetrically for pivot lows. Each break increments the active session's Swing Break counter.
HH and LL counts use the same pivot detection. When a new pivot high confirms with a level greater than the session's previous tracked pivot high, the session's HH counter increments. When a new pivot low confirms with a level less than the session's previous tracked pivot low, the LL counter increments.
🔹Settings: Filters Group
◇ Pivot Strength: Bars on each side required to confirm a pivot high or pivot low for the swing break and HH/LL calculations. Range: 2 to 20. Default: 5. Higher values produce fewer, more significant pivots; lower values produce more frequent, noisier pivots.
ACTIVE SESSION LIVE LABEL:
🔹What is the Active Session Live Label?
A floating label that appears next to the most recent bar of the active session, displaying live statistics for the session currently in progress.
🔹Why is the Active Session Live Label important?
The dashboard summarizes completed historical sessions. The live label answers a different question: how does the session that is currently developing compare to history, right now? It allows a trader to see, mid session, whether the current session is tracking above, near, or below its average range and what percentile it currently occupies, without waiting for the session to close.
🔹How is the Active Session Live Label calculated?
The label content includes the session name, the live range (current session high minus current session low), the ratio of the live normalized range to the historical average normalized range expressed as a percentage, and the current percentile. The percentile is computed by iterating the session's weekday filtered history and counting how many records have a normalized range at or below the live value.
The label position updates every bar to track the right edge of the current session at its current high. When the session ends, the label is deleted.
🔹Settings
◇ Show Active Session Stats: Toggle for the label.
◇ Label Size: Sets text size. Options: Tiny, Small, Normal, Large, Huge.
WEEKDAY FILTERING:
🔹What is Weekday Filtering?
A set of seven toggles (Sunday through Saturday) that determines which weekdays contribute to every statistic on the dashboard, the live label, and the alert condition.
🔹Why is Weekday Filtering important?
Session behavior is not uniform across the week. Monday open behavior differs from midweek behavior. Friday afternoon often shows reduced participation. By filtering history to only the selected weekdays, traders can profile each session under conditions that match the current trading day, rather than averaging in unrelated days.
🔹How is Weekday Filtering applied?
Each session in history is tagged with the weekday it was recorded on. Every calculation in the dashboard, the live label, and the alert checks that weekday against the user's selection and skips any session whose weekday is not enabled. The dashboard header line displays a compact label of the active filter: "All" when every weekday is enabled, "Weekdays" when only Monday through Friday are enabled, or a custom combination such as "M/Tu/W" otherwise. The header also shows the largest number of sessions any column was able to use after filtering, which serves as the sample size indicator.
🔹Settings: Filters Group
◇ Sun, Mon, Tue, Wed, Thu, Fri, Sat: Individual toggles. Defaults: Mon, Tue, Wed, Thu, Fri enabled; Sun and Sat disabled.
ALERTS:
🔹What alerts are available?
A single alert condition is provided:
◇ Range > 90th Percentile: Fires when an active session's current normalized range exceeds the 90th percentile of its weekday filtered historical normalized range distribution.
🔹When does it fire?
On every bar where at least one enabled, active session has a current normalized range above which 90% of its history sits. The alert fires once per qualifying bar, allowing traders to be notified when a session is in the process of becoming statistically large relative to its own history.
IMPORTANT NOTES:
◇ All session times are evaluated in New York time regardless of the chart's display timezone. Adjust session times if profiling instruments where session timing conventions differ from the defaults.
◇ Trading day boundaries are anchored to 18:00 NY time (the 6 hour shift before midnight) so that the Asia session opens at the start of each new trading day. This is the convention used for HOD/LOD attribution and for pushing completed session records to history.
◇ Daily ATR is always read from the previous completed daily bar. This means the value used for normalization is fixed for the current trading day and does not repaint as new bars print, while still giving the live percentile calculations a stable reference.
◇ The session history for each session is built progressively as the chart loads. Sessions on the very first day on the chart cannot contribute to continuation statistics because no earlier occurrence of the same session exists to compare against.
◇ Best value markers (★) are shown only on metrics where "highest" is the meaningful target: Avg Range, HOD %, LOD %, Avg FVGs, and FVG Survival %. Other metrics intentionally omit the marker.
◇ FVG Survival counts gaps that survive to the end of the session in which they formed. A gap that survives the session but is invalidated on a later day is still counted as survived for the session that created it.
UNIQUENESS:
The Session Edge Profiler distinguishes itself from common session indicators in several ways. Most session tools plot boxes and stop there, while this indicator extends session tracking into a full statistical profile with thirteen configurable metrics per session, reducing the entire history of every session to a single, scannable table. Range comparisons use ATR normalization rather than raw point values, making the dashboard meaningful across volatility regimes and instruments without per chart recalibration, and percentile ranking of the live session against history provides a single number answer to a question many traders ask intuitively: is this session unusually large or unusually small for this time and this weekday? FVG and swing break tracking are integrated into the session profile rather than treated as separate indicators, allowing direct comparison of which session produces the most structural activity and how reliable that structure tends to be on a given instrument. FVG Survival % quantifies a concept that is rarely measured anywhere else: how often each session's FVGs actually hold within their own session, converting a qualitative idea into a session level reliability score. Weekday filtering applies uniformly to every statistic on the dashboard, the live label, and the alert, allowing traders to profile sessions only on days that match the current trading day rather than diluting the sample with unrelated weekdays. Best value markers and progress bars make the dashboard scannable at a glance, with the strongest session per metric immediately visible without parsing numbers. Finally, the active session live label provides real time positional context that complements the historical dashboard: the dashboard answers what a session usually does, while the label answers what the session is doing right now, with both views driven by the same underlying statistical model. Indicator

BOS & CHoCHA clean, no-nonsense market structure indicator that automatically detects Break of Structure (BOS) and Change of Character (CHoCH) on any asset and any timeframe.
How it works
The script tracks swing highs and lows using pivot detection. When price breaks the last swing level, it's labeled as:
BOS — break in the direction of the current trend (continuation)
CHoCH — break against the current trend (potential reversal)
Since the logic is fully relative (pivot-based, no fixed values), it behaves identically on crypto, forex, indices, or stocks — from 1-minute charts to weekly.
Features
- BOS & CHoCH detection with clear on-chart labels
- Break confirmation mode: Close (filters fakeouts) or Wick
- Dotted extension of unbroken swing highs/lows — these act as resting liquidity targets
- Optional trend background & bar coloring
- Alerts for all four events (Bullish/Bearish BOS & CHoCH)
- Non-repainting: once printed, labels never change
Settings
Swing Length — higher values = only major structure, lower = more granular
Break Confirmation — Close is recommended to avoid wick fakeouts
Market structure is the foundation of any SMC or orderflow-based approach. Use CHoCH as an early warning for trend shifts and BOS as confirmation of continuation ideally combined with your own confluence (liquidity sweeps, volume, higher timeframe bias). Indicator

ICT ADR Levels - Judas x Daily RangeThis indicator provides a clean and flexible way to monitor Average Daily Range (ADR) with two distinct calculation modes, along with visual levels and a detailed historical table.
Calculation Modes
- Classic Mode: Uses the standard daily candle range (high minus low of regular daily bars). This is the traditional daily range calculation.
- Midnight Mode: Calculates the daily range from midnight to midnight in America/New_York time. This provides a true calendar-day range independent of session opens.
You can switch between the two modes instantly using the dropdown in the settings. All table values, percentages, and 80% ADR levels update dynamically based on the selected mode.
The indicator plots the following levels from a session anchor point:
- Full ADR (above and below)
- 1/3 ADR (Judas levels)
- 80% ADR measured from the current daily high and low (two lines) - user selectable %
All lines are dynamically managed to avoid duplication and update cleanly as new sessions begin. Labels on the right side display price levels and can be toggled on or off.
Historical Table
A customizable table displays the following information for the selected number of days:
- Day or Date (user selectable)
- 5-Day ADR value for each historical day
- 80% of that day's 5-Day ADR
- Actual daily Range
- Percentage of the 5-Day ADR reached that day
The current/live row shows Today's Range compared against the active 5-Day ADR, including the percentage reached and the 80% target level. The table supports multiple sizes and positions.
Key Features
- Toggle between Classic and Midnight ADR calculations
- 80% ADR levels drawn from daily high and low
- Clean, non-duplicating horizontal lines and labels
- Historical data table with day/date, ADR, 80% ADR, Range, and percentage columns
- Adjustable styling, colors, text size, and visibility for all elements
- Option to plot levels from a session anchor or current price
This tool is designed for traders who want precise ADR-based levels with the flexibility to choose between standard daily ranges and strict midnight-to-midnight calculations. Indicator

Indicator

Strong PDH PDL Zones | ProjectSyndicateStrong PDH PDL Zones
Strong PDH PDL Zones power-ranks the daily levels that price keeps reacting to. For every session it plots the prior day's High, Low, and Golden Pocket (the 50–61.8% retracement of the previous day's range) as clean equal-height zones, then scores each High and Low 0–10 from real, measurable level quality — so you instantly know which previous-day level is likely to hold and which is likely to break. It also projects Sweep Trap and Price Breakout lines above PDH and below PDL to frame liquidity grabs and genuine breakouts.
🎯 Power-Ranking System (0–10) — every PDH and PDL earns a live grade from five sign-stable, data-validated factors: prior-day volume vs its baseline, range significance vs ADR, the rejection candle (how far price closed off the extreme), distance from round numbers (levels sitting on round numbers get swept more, so they score lower), and isolation (levels clustered with recent days' extremes break more). The model was prototyped and validated across FX and metals datasets — low-scored levels reacted far less often than high-scored ones, so the number reflects genuine edge, not decoration.
🏷️ In-Zone Strength Labels — each level carries its grade inside the band: stars, the X.X/10 score, and a tier (FORMING → WEAK → MODERATE → STRONG → ELITE). Quality reads instantly without a separate panel.
📐 Previous Day Golden Pocket — the prior session's 50–61.8% fib zone, plotted automatically as the high-probability mean-reversion pocket where intraday pullbacks so often stall.
🚧 Sweep Trap & Price Breakout Lines — two dashed levels above the PDH and two below the PDL. The amber Sweep Trap sits just beyond the level to mark the stop-hunt / liquidity-grab zone; the red Price Breakout sits further out to mark where a move becomes a real breakout rather than a wick. Both are fully offset-adjustable in ATR terms.
⚙️ Uniform ATR Zone Height — every zone (High, Low, Golden Pocket) is normalized to one identical ATR-based thickness, centered on its level, for a clean and consistent look on any instrument or timeframe.
🎨 Strength-Shaded Fill — stronger levels render sharper and more opaque while weak ones stay faint, so the chart shows which levels carry weight before you even read the score.
🧹 Score Filter — hide every level below a score threshold so the chart only carries the levels that earned their place.
🔒 Non-Repainting — each day's levels and scores lock in from the completed prior session and never change intraday. Zones span exactly one session and close cleanly at the day boundary — no bleed into the next session.
🔔 Native Alerts — touch alerts for the PDH zone, PDL zone, and Golden Pocket, plus dedicated alerts for touches of STRONG (≥7/10) PDH and PDL levels, so you never miss a high-quality interaction.
🔧 Fully Customizable — scoring weights and normalizers, zone height, golden-pocket fib bounds, sweep/breakout offsets, colors, transparency, label text and size, and round-number step — all adjustable.
🎯 Why this is different — most "previous day high/low" tools draw three equal-weight lines and leave you to guess which one matters. This one quantifies each level from real prior-day behavior and tells you the probability-weighted answer: a STRONG/ELITE level is one to fade, a WEAK level is one that's likely to give way. The validation work behind the score even informs how you trade each level (see below).
🚀 Apply to Gold (XAUUSD), Silver, Forex, Crypto, and Indices on any intraday timeframe.
🎯 How To Trade It — Two Approaches
The score is the filter that decides which approach fits. In validation, high-scored levels rejected far more often and low-scored levels broke more often — so play them differently.
1) Break → Sweep Trap → Reversal (fade the trap) — use on STRONG / ELITE levels (≥7)
Best when the PDH or PDL is rated STRONG or ELITE — statistically these are the levels most likely to hold.
Wait for price to push through the previous-day level and tag the amber Sweep Trap line beyond it (the liquidity grab that takes stops).
Look for failure to reach or hold the red Price Breakout line — i.e. the move stalls inside the trap band and prints rejection back through the level.
Entry: on the reversal back inside the level (a close back below PDH / above PDL).
Stop: just beyond the Price Breakout line — if price reaches it, the trap thesis is wrong and it's a real breakout.
Targets: the Golden Pocket first, then the opposite previous-day level.
Use the Touch STRONG PDH/PDL alert to get notified the moment a high-grade level is being tested.
2) High-Volume Breakout → Trade With the Move — use on WEAK / MODERATE levels
Best when the level is rated WEAK or MODERATE (or formed on low prior-day volume) — these are the levels most likely to break.
Wait for a decisive break of the PDH or PDL that closes beyond the red Price Breakout line on expanding volume (not a single wick).
The Sweep Trap line being cleared and held is your confirmation that it's a genuine breakout, not a stop-hunt.
Entry: in the direction of the breakout on the close beyond the Price Breakout line (or on a retest of the broken level).
Stop: back inside the level, beyond the Golden Pocket.
Targets: measured-move / next session's range, trailing as the move extends.
A broken PDH flips to support, a broken PDL flips to resistance — the old level often becomes the retest entry.
Rule of thumb: ⭐ STRONG/ELITE → expect a reaction, trade the trap reversal. ⭐ WEAK/MODERATE on volume → expect follow-through, trade the breakout.
⚠️ IMPORTANT NOTICE: This indicator identifies high-probability previous-day levels and frames trap vs breakout scenarios. It should NOT be used as a standalone signal for entering trades. Always combine it with your own strategy, price-action analysis, and risk management to confirm setups. Past statistical behavior does not guarantee future results. Indicator

Market Structure (BOS / CHOCH), Advanced & ImprovedMarket Structure (BOS / CHOCH)
A clean, dual-layer market structure tool that labels Break of Structure and Change of Character from a single, internally consistent trend engine, then projects the resting liquidity those swings leave behind.
The core idea
BOS and CHOCH are the same break. What separates them is direction relative to the current trend, so this script tracks one trend state and derives the label from it:
BOS (Break of Structure) : price breaks a swing level in the direction of the trend. Continuation.
CHOCH (Change of Character) : price breaks a swing level against the trend. Reversal, and it flips the trend state.
Because both signals come from one state machine, you never get contradictory labels: a break with the trend is always BOS, a break against it is always CHOCH.
Dual-layer structure
The engine runs twice at the same time:
Swing structure (longer pivot length) : the major skeleton, drawn bold, with trailing watched-level lines and HH / HL / LH / LL swing labels.
Internal structure (shorter pivot length) : the minor continuation breaks inside each swing leg, drawn thin and faded so they read as secondary.
This lets you see a minor bullish BOS unfolding inside a major downtrend, which is the context most single-length tools miss.
Liquidity pools
Every unbroken swing high (buy-side) and swing low (sell-side) is projected to the right as a resting liquidity line, and removed the moment price wicks through it. What stays on screen is only live, untaken liquidity, the levels most likely to be targeted next.
Features
BOS / CHOCH detection with a single coherent trend state
Dual-layer swing and internal structure
Trailing lines marking the exact levels currently being watched
HH / HL / LH / LL swing labels, color coded by structural meaning
Buy-side and sell-side liquidity pools with auto removal on sweep
Top-right trend table showing the swing and internal trend state
Close or Wick break confirmation
Eight alert conditions: swing and internal, BOS and CHOCH, bullish and bearish
Inputs
Swing length and Internal length : pivot lookback for each layer. Lower values catch more structure, higher values show only major moves.
Break confirmation : Close requires a close beyond the level, Wick accepts any wick beyond it.
Toggles for BOS, CHOCH, active levels, swing labels, liquidity, internal layer and the trend table.
How to use
Trade with the swing trend, use internal CHOCH for early reversal warnings and internal BOS for continuation entries.
Watch the liquidity pools as targets, a sweep of one followed by a CHOCH in the opposite direction is a classic reversal setup.
Tune the swing length to your timeframe so the major structure matches the moves you actually trade.
Notes
Swing pivots confirm a fixed number of bars after they print, which is inherent to all structure tools and not repainting. On the live, unclosed bar a break can update until the bar closes, so set alerts to "Once Per Bar Close" for confirmed signals.
This script is a market analysis tool, not financial advice. Always do your own research and manage risk. Indicator

Strong Geometric Patterns Engine | ProjectSyndicateStrong Geometric Patterns Engine automatically detects, validates, and grades nine classic chart patterns using an objective, non-repainting geometry engine. It confirms every signal on a breakout close, projects adaptive measured-move take-profit and structural stop-loss levels scaled to Average Daily Range (ADR), scores each setup 0–10 for quality, and presents a full statistical breakdown on a non-intrusive dashboard to provide a quantifiable edge.
🧠 9-Pattern Geometric Detection — identifies Head & Shoulders, Inverse Head & Shoulders, Double Top, Double Bottom, Ascending / Descending / Symmetrical Triangles, and Rising / Falling Wedges from a non-repainting confirmed-pivot engine, so signals are stable and never redraawn after the fact.
🔒 Breakout-Confirmed, Non-Repainting — a valid shape only sets a pending setup; the signal fires exclusively when price closes through the pattern's trigger level, eliminating the subjective, repainting behaviour of standard ZigZag and pattern tools.
🎯 ADR-Adaptive Measured-Move TP/SL — TP1, TP2, and SL are derived from the pattern's own projected height (a true measured move), bounded by a percentage of the 10-day ADR, so risk and targets adapt automatically to any asset's volatility instead of using fixed points.
⭐ 0–10 Quality Scoring — every setup is graded on symmetry, convergence, and a volume confirmation bump, displayed as a star rating next to each signal so you can instantly gauge setup strength and filter for the best ones.
🎨 Direction-Matched Visuals — clean upward/downward entry markers, green bullish and red bearish labels, and crisp horizontal SL / TP1 / TP2 levels give instant visual confirmation of trade direction with no chart clutter.
📊 Full Performance Dashboard — a complete statistical overview including the real-time ADR10 value, the active/pending setup with its targets, total signals, TP1/TP2 win rates, a per-pattern breakdown across all nine pattern types, and a log of the most recent trade outcomes.
✅ Advanced Quality-Control Filters — user-configurable Pivot Length, equality/slope/convergence tolerances, min & max pattern span, measured-move bounds, and minimum bars between signals eliminate low-quality or oversized patterns and prevent over-signaling.
🔔 Comprehensive Alerts — get alerted the moment a new pattern is detected (pending), when price is approaching the trigger, when a setup confirms on the breakout, or only on strong high-score patterns. Available as a single rich alert() message (symbol, timeframe, trigger, invalidation, entry, SL, TP1, TP2, quality) for automation, plus six individually selectable named alert conditions.
🔧 Fully Customizable — control everything from pivot length and pattern-quality tolerances to colors, level extension, persistent historic levels & labels, adjustable signal label size, and dashboard text size.
🎯 Why this algo is unique: Standard pattern indicators repaint and offer subjective signals with no statistical backing. This is an objective, fully-gated, non-repainting engine that doesn't just draw a pattern — it recognizes nine of them from raw geometry, confirms them on a breakout, builds a complete adaptive risk framework (measured-move, ADR-bounded zones) around each one, grades its quality, and proves its historical performance on the very chart you're trading.
🚀 Apply to Gold (XAUUSD), Forex, Crypto, and Indices on any M5/M10/M15/M30/H1. The ADR-based, self-scaling geometry and extensive quality filters let it adapt to anything from M5 scalping to H4 swing trading.
🎯 How to use this? Use the dashboard to understand how each pattern type has recently performed on the current asset and timeframe. Favour higher-quality (higher-star) setups and those aligned with the higher-timeframe trend. Tune the pattern tolerances and measured-move multipliers to match your own risk tolerance and the asset's character.
⚠️ IMPORTANT NOTICE: This indicator is designed to identify statistically-backed pattern signals. It should NOT be used as a standalone signal for entering trades. Always use it in conjunction with your own trading strategy, price action analysis, and other technical indicators to confirm setups and manage risk. Indicator

Delivery Shift CISD [Viprasol]Overview
This indicator is based on an open-source "Change in State of Delivery (CISD)" community script, which detects the ICT concept of a delivery shift — the moment price reverses and closes back through the opening level of the opposing momentum leg that produced it. The original tracks swing-point liquidity, detects bullish and bearish CISD events using a displacement-ratio test, marks the origin level, and flags "strong" CISDs that occur right after opposing liquidity is swept. This version keeps that detection engine intact and adds a Viprasol confluence and execution layer: a 0-4 confluence score with A/B/C grading, optional volume-surge and higher-timeframe bias filters, a signal cooldown, a minimum-score gate, and an ATR-anchored Entry/SL/TP risk overlay drawn on qualified signals.
It is built for ICT/SMC traders who use CISD as a confirmation of intraday delivery direction and want each event graded by confluence, with optional filters and an automatic risk projection.
How It Works
Swing Liquidity (from original):
Pivot highs and lows over the swing period create horizontal liquidity lines that extend forward each bar. A line is mitigated when price trades through it (high >= level for a high, low <= level for a low) on a confirmed bar, and removed; lines older than the expiry threshold stop updating. The most recently mitigated high and low, and how many bars ago they were taken, are retained for the sweep test below.
CISD Detection (from original):
When a candle flips color (a down candle followed by an up candle, or vice versa), its open is stored as a potential CISD origin along with its bar index. On each later bar the script checks whether price has closed back beyond that stored open. If it has, it measures the displacement of the leg as a ratio: for a bearish CISD, (highest close in the leg − origin open) / (top of the bearish run − origin open). If that ratio exceeds the Noise Filter, the event qualifies as a CISD, the origin level is drawn, and the trend state flips. Weaker candidates are discarded and the scan continues to older candidates.
Liquidity-Sweep Confluence (from original):
A CISD is flagged "strong" when it fires within the liquidity-lookback window after the opposing liquidity was swept — a bearish CISD where a swing high was just taken and price closed back below it, or a bullish CISD where a swing low was taken and price closed back above. These print the labeled sweep arrows.
Confluence Score & Grade (new):
Every CISD event is scored 0-4 by summing four independent confluence checks:
score = strongDisplacement? + liquiditySweep? + htfAligned? + volumeSurge?
- strongDisplacement = the measured ratio is at least halfway between the Noise Filter and 1.0 (a decisively strong leg, not a marginal one).
- liquiditySweep = the original sweep confluence is present.
- htfAligned = the CISD direction agrees with the higher-timeframe EMA.
- volumeSurge = volume on the CISD bar exceeds its rolling average × the multiplier.
The score maps to a grade — A (>= 3), B (= 2), C (<= 1) — labeled at the origin level.
Filters & Qualified Signals (new):
Four optional gates can be applied without altering the original CISD drawing: a volume-surge requirement, a higher-timeframe EMA bias (bull only above, bear only below), a per-signal cooldown (minimum bars between qualified signals), and a minimum-confluence-score requirement. A CISD that passes all active gates becomes a "qualified" signal, which is what the risk overlay and the two new qualified alerts use. With every gate at its default (cooldown 0, filters off, min score 0), every CISD qualifies and the original behaviour is unchanged.
Risk Overlay (new):
On a qualified CISD, the script projects three lines: Entry at the CISD origin level, Stop-Loss beyond the CISD swing extreme (the highest/lowest close captured during detection) plus an ATR buffer, and Take-Profit at Entry ± risk × the Risk:Reward ratio, where risk is the Entry-to-SL distance. Colored ENTRY/SL/TP price labels mark the line ends. Only the most recent qualified signal's projection is kept, to avoid clutter.
What Is Original (Viprasol Additions)
1. Confluence score (0-4) and A/B/C grade per CISD, from displacement strength, liquidity sweep, HTF alignment, and volume surge.
2. Minimum-confluence-score gate and the "qualified signal" concept layered on top of raw CISD detection.
3. Optional volume-surge filter (volume above its rolling average × multiplier on the CISD bar).
4. Optional higher-timeframe EMA bias filter (and an always-computed HTF read used for grading).
5. Per-signal cooldown to prevent qualified-signal clustering.
6. ATR-anchored Entry/SL/TP risk overlay with colored price labels, with the stop anchored to the CISD swing extreme.
Key Features
From the Original:
- Swing-point liquidity lines with forward extension, mitigation, and expiry
- Displacement-ratio CISD detection for both directions with a Noise Filter
- Origin-level lines drawn on each CISD
- Trend/delivery-state tracking
- Liquidity-sweep confluence with labeled strong-CISD arrows
- Swing-high / swing-low dots
- Trend-gradient candle coloring
Added in This Version (Viprasol):
- 0-4 confluence score with A/B/C grade label
- Minimum-score gate and qualified-signal logic
- Volume-surge filter, HTF EMA bias filter, and signal cooldown
- ATR-anchored Entry/SL/TP risk overlay with price labels
- Info dashboard (delivery state, last grade, sweep, HTF bias, volume, live liquidity counts)
- Two new alerts for qualified bull/bear signals; all alert messages made dynamic
How to Use
Getting Started:
1. Add to a standard candlestick chart (not Heikin Ashi).
2. With defaults, every CISD is drawn and graded — read the A/B/C label to judge each event's confluence.
3. To trade only stronger setups, raise the Minimum Confluence Score or enable the volume / HTF filters.
Reading the Chart:
- Candles tint green/red with the current delivery state.
- A thick green/red horizontal line marks a CISD origin level; the A/B/C label shows its grade.
- ▲/▼ arrows mark strong CISDs that followed an opposing liquidity sweep.
- On a qualified CISD (with SL/TP enabled), Entry/SL/TP lines and price labels project to the right.
Recommended Starting Points:
- Intraday (1m-15m): Swing Period 10-12, Noise Filter 0.6-0.7, Min Score 0-1
- Swing (1H-4H): Swing Period 15-20, Noise Filter 0.7-0.8, Min Score 2, enable HTF bias
- Higher conviction: Min Score 3 (grade A), or require volume surge + HTF bias
These are starting points only — every market and timeframe behaves differently. Backtest and adjust before trading live.
Settings
Calculations: Noise Filter (displacement ratio threshold), Swing Period, Expiry Bars, Liquidity Lookback.
Signal Filters (Viprasol): signal cooldown, volume-surge requirement (length + multiplier), and HTF EMA bias (resolution + length).
Confluence & Quality (Viprasol): show grade on CISD, minimum confluence score.
Risk Overlay (Viprasol): show SL/TP on qualified CISD, show price labels, ATR period, SL ATR buffer, Risk:Reward.
Appearance: bullish/bearish colors, candle body and wick transparency, hide expired levels, hide mitigated levels.
Dashboard / Display: dashboard toggle and position.
Alerts
1. Swing High Mitigation — a swing-high liquidity line was taken
2. Swing Low Mitigation — a swing-low liquidity line was taken
3. Bearish CISD — a bearish change in state of delivery fired
4. Bullish CISD — a bullish change in state of delivery fired
5. Strong Bearish (Sweep) — bearish CISD following an opposing liquidity sweep
6. Strong Bullish (Sweep) — bullish CISD following an opposing liquidity sweep
7. Qualified Bull — a bullish CISD that passed all active filters and the score gate
8. Qualified Bear — a bearish CISD that passed all active filters and the score gate
All alerts include {{ticker}}, {{close}}, and {{interval}} for dynamic notification messages.
Limitations & Disclaimer
- CISD detection scans backward through stored candidate origins and uses closing relationships; signals are evaluated as bars confirm and the displacement ratio is measured after the move.
- The HTF EMA bias uses request.security with lookahead disabled; HTF values update only as the higher-timeframe bar develops.
- Swing liquidity lines are capped (oldest pruned) and can expire; in fast markets some mitigations may occur off-screen relative to the visible levels.
- The risk overlay's stop is anchored to the captured swing extreme plus an ATR buffer — it is a mechanical projection, not an optimized stop, and the lines are visual references only; they do not place or manage trades.
- Filters and the minimum-score gate reduce the number of qualified signals; in choppy conditions valid CISDs may not qualify, while with all gates off qualified signals equal raw CISDs.
- Past performance does not guarantee future results. This indicator is for educational and analytical purposes only and is not financial advice. Always use proper risk management and test on historical data before trading live.
Credits & Attribution
Based on an open-source "Change in State of Delivery (CISD)" community indicator, which provided the swing-point liquidity lines with extension/mitigation/expiry, the displacement-ratio CISD detection for both directions, the origin-level drawing, the trend/delivery-state tracking, the liquidity-sweep confluence with labeled strong-CISD arrows, the swing dots, and the trend-gradient candle coloring. CISD is an Inner Circle Trader (ICT) concept. Added by Viprasol: the 0-4 confluence score and A/B/C grading, the minimum-score gate and qualified-signal logic, the volume-surge and HTF EMA bias filters, the signal cooldown, the ATR-anchored Entry/SL/TP risk overlay with colored price labels, the info dashboard, and the two additional qualified-signal alerts with dynamic messages.
Published open-source per PulseWire House Rules.
Indicator

Strong Session SD Zones | ProjectSyndicateStrong Session SD Zones
Strong Session SD Zones automatically maps and power-ranks the session-based supply & demand zones that price keeps reacting to. It tracks each zone through its full life — formation, tests, breakout, and invalidation — scores it 0–10 from real interaction, and retains every session's zones for the last N sessions, so you can see exactly which levels each Asia / London / New York session left behind.
🎯 Power-Ranking System (0–10) — every zone earns a live score from four things: the impulse of the move that created it, the volume traded while it formed, the depth of the rejection wicks off it, and its freshness (how unmitigated it still is). An idle-decay lets ignored zones fade while respected ones stay strong, so the score always reflects current relevance.
🕐 Session-Aware Zones — instead of one undifferentiated cluster of levels, zones are batched by trading session and each one is tagged with where it was born (Asia, London, NY, Late). Pick Daily, Asian, London, New York, or a custom session as the boundary that starts each new batch.
🔁 Hold vs Broken States — each zone is shaded by type (supply = red, demand = green) and re-shaded the moment price invalidates it, with a ✗ marker on broken zones. You see at a glance whether a level is still defending or has flipped.
🎨 Strength-Sharpened Fill — strong zones render sharp and opaque while weak ones stay faint, so the chart visually shows which levels carry weight before you even read the score.
🏷️ In-Zone Strength Labels — every zone carries its grade inside it: stars, the X.X/10 score, a tier (FORMING → WEAK → MODERATE → STRONG → ELITE), the live retest count (R:), and its session — quality reads instantly without a separate panel.
🧹 Overlap Suppression — when a new zone would stack on an existing same-session zone, the two are merged into one clean band instead of cluttering the area, so each price region shows a single level.
⭐ Strong-Only Filter — hide everything below a score threshold; weak zones that never earn the score are discarded rather than kept, so the chart only carries proven levels.
🔔 Comprehensive Native Alerts — proximity alerts for supply and demand zones, a dedicated STRONG-zone proximity alert (configurable, e.g. 7/10+), plus new-supply and new-demand formation events, so you never miss a key level interaction.
⚙️ Uniform Zone Height — normalize every zone to one ATR-based thickness for a clean, consistent look, with a minimum-swing filter that ignores insignificant pivots.
🚦 Performance Guards — a sessions-to-display window and a max-zones-kept cap keep load times fast on long histories; retired zones are fully removed, not just hidden.
🔧 Fully Customizable — color palette, transparency, borders, label size, scoring weights, pivot sensitivity, max zones per session, decay settings, and invalidation method (close vs wick) — all adjustable.
🎯 Why this algo is unique — standard pivot tools flood the chart with equal-weight lines. Strong Session SD Zones filters, merges, and ranks them by session, then keeps only the zones that have proven they matter. It doesn't just show where a level was — it quantifies how strong it is from real interaction (impulse, volume, rejection, freshness), giving you a clear read on which zones are holding and which are likely to break.
🚀 Apply to Gold (XAUUSD), Forex, Crypto, and Indices on any timeframe. Pivot sensitivity, zone height, sessions shown, and the strong threshold adapt it from scalping to swing trading.
🎯 How to use this? Focus on zones rated 7/10 or higher — these have the highest probability of producing a significant reaction. Watch the hold-vs-broken state to judge whether a level is defending or has flipped, and use the proximity and strong-zone alerts to prepare entries or exits.
⚠️ IMPORTANT NOTICE: This indicator identifies high-probability supply & demand zones. It should NOT be used as a standalone signal for entering trades. Always use it alongside your own trading strategy, price action analysis, and other technical indicators to confirm setups and manage risk. Indicator

OHLC-OLHC [ARKN] ARKN combines three time-based analysis tools into a single overlay so that session context, higher-timeframe structure, and cross-asset divergence can be read together on one chart, without stacking three separate indicators.
What it does
Killzones — Draws up to four configurable session boxes (defaults: Asia, London, NY AM, NY PM) with optional session high/low pivot lines, midpoints, day-of-week labels, opening-price lines, and an "opening candle" marker. Pivots can extend until mitigated or past mitigation, with optional alerts when a session high or low is broken.
HTF Candles — Renders up to four higher-timeframe candle sets to the right of the live price, each with its own timeframe and display count. Optional Fair Value Gap and Volume Imbalance boxes, a remaining-time countdown, and interval labels are drawn directly on the projected candles.
Sequential SMT (SSMT) — Detects SMT-style divergence between correlated instruments across nested cycles (Micro, 90-minute, Daily, Weekly, Monthly). Triads can be set automatically for common groups (metals, indices, FX, crypto, futures) or defined manually, with an inverse option for negatively-correlated pairs. Both standard (wick-based) and hidden (body/close-based) divergences are supported.
Why these three together
The three modules answer three sequential questions a session-based trader asks in order: when (Killzones frame the active session), what structure (HTF Candles show the higher-timeframe bias forming in real time), and confirmation (SSMT flags when a correlated instrument fails to confirm the move). Combining them removes the need to switch layouts or sync timeframes manually, since all three share the same timezone and session logic.
How to use
Set your timezone under Settings; all sessions and cycles reference it.
Each module has a master ON/OFF toggle at the top of its settings group.
For SSMT, either leave Triad Selection on Auto (it picks correlated assets for the current symbol) or set Manual to define your own triad. Lower timeframes show Micro/90m cycles; higher timeframes show Daily/Weekly/Monthly.
HTF Candle timeframes must be higher than the chart timeframe to display.
Settings overview
Global: drawing limit, timeframe limit, timezone, label size, text color, cutoff time. Per module: session times and colors (Killzones), timeframe and candle count (HTF Candles), cycle visibility, line styles, and correlation triads (SSMT).
Note on originality
This script combines well-established, publicly-discussed ICT community concepts — session Killzones, projected higher-timeframe candles, and SMT/Sequential SMT divergence. These concepts are not original to this script; the contribution here is integrating all three into one configurable overlay with shared session and timezone handling. The script is published open-source so the implementation can be reviewed and reused. Indicator

ICT PD Arrays [LunqFX] FVG, Displacement & Smart Money ZonesICT PD Arrays is a complete Smart Money Concepts toolkit built on the Inner
Circle Trader (ICT) methodology. It maps the full Price Delivery Array —
7 interconnected modules working together to identify where institutions
accumulate and distribute positions across any liquid market.
█ WHAT IT DOES
Most ICT indicators cover one concept in isolation — a Fair Value Gap, or
just Premium/Discount zones. This script combines all core PD Array
components into one cohesive system and ties them together with an ISD
state machine and a live HUD dashboard that shows full market context
at a glance.
Seven modules run simultaneously on every bar:
Fair Value Gaps (FVG) + Inversion FVG + Balanced Price Range (BPR)
Premium / Discount Zones + OTE Fibonacci Zones + Equilibrium Line
Displacement Detection with ATR and Volume confirmation
Inducement (IDM) — false breakout / liquidity trap detection
ISD Sequence state machine (Inducement → Sweep → Displacement)
Killzones — London, New York, Asian, Silver Bullet sessions
Live HUD Dashboard — all signals aggregated in real time
█ HOW IT DOES IT
FAIR VALUE GAPS
A Fair Value Gap is a 3-candle price imbalance where the gap between
candle 1's extreme and candle 3's extreme was never traded. Institutions
use these gaps as re-entry points — price gravitates back to fill them.
Detection uses a confirmed 3-candle structure with a bar offset so
the current live bar never creates a new FVG. No repainting.
An ATR(14)-based minimum size filter removes micro-gaps that carry no
significance. Raise the multiplier to see only strong imbalances.
Mitigation is tracked in real time. Once price crosses the CE midpoint
(Consequent Encroachment — the 50% level of the gap), the box fades.
When price fully passes through a gap it automatically converts to an
Inversion FVG (IFVG) — former support becomes resistance, box recolors.
Balanced Price Range (BPR) detects spatial overlap between the most
recent bullish FVG and bearish FVG. The overlap zone is where both
buyer and seller imbalances exist at the same price — the strongest
equilibrium area on the chart.
PREMIUM / DISCOUNT ZONES + OTE
ICT divides any dealing range into two halves: Premium (above 50%) where
institutions sell, and Discount (below 50%) where institutions buy.
Swing highs and lows are detected via pivot logic with a configurable
lookback. The range between the last confirmed pivot high and pivot low
becomes the active dealing range.
Two OTE zones are drawn using Fibonacci retracement logic:
OTE Buy zone — 21.4% to 38.2% from the low
= 61.8%–78.6% retracement FROM the swing high
= deepest discount, highest-probability long area
OTE Sell zone — 61.8% to 78.6% from the low
= deepest premium, highest-probability short area
Math:
OTE Buy Top = SwingLow + Range x 0.382
OTE Buy Bot = SwingLow + Range x 0.214
OTE Sell Top = SwingLow + Range x 0.786
OTE Sell Bot = SwingLow + Range x 0.618
Zones update automatically when new pivots are confirmed.
DISPLACEMENT
Displacement is not simply a large candle. In ICT theory it marks a
genuine shift of institutional order flow — it must show conviction.
Three conditions must all be satisfied simultaneously:
Body >= ATR(14) x multiplier (default 2.0)
Filters out average volatility, keeps only significant momentum.
Wick-to-range ratio below threshold (default 30%)
A large wick relative to range signals indecision, not displacement.
Formula: (High - Close) / Range for bulls,
(Close - Low) / Range for bears.
Optional volume filter: Volume > SMA(20) x 1.5
Confirms institutional participation behind the move.
Disable for spot Forex where tick volume is unreliable.
Displacement candles are the primary FVG trigger — the gap left behind
a displacement candle is the highest-quality FVG to trade.
INDUCEMENT (IDM)
Inducement is how institutions engineer a false breakout to grab
retail stop-loss liquidity before reversing price the other way.
Detected when price temporarily sweeps beyond a recent swing high or
low and then closes back inside the range. An ATR-based wick filter
ensures only meaningful sweeps qualify — micro-breakouts are excluded.
Bear Trap: price sweeps below a recent low and closes above it.
Bull Trap: price sweeps above a recent high and closes below it.
A 25-bar cooldown prevents label flooding in trending conditions.
The signal still feeds the ISD state machine on every bar regardless.
ISD SEQUENCE STATE MACHINE
ISD stands for Inducement, Sweep, Displacement. This is the complete
3-step institutional setup that ICT traders look for before entering.
The module runs as a persistent state machine tracking progress
across bars in real time:
Score 1/3 — IDM confirmed. Liquidity has been grabbed.
Score 2/3 — A structural sweep of a 5-bar high or low confirmed.
Score 3/3 — A Displacement candle fires in the same direction.
Label appears on chart. State resets automatically.
A 50-bar timeout resets the sequence if no follow-through occurs,
preventing stale signals from contaminating new setups.
ISD 3/3 is the single highest-confidence signal in this indicator.
All three institutional steps have completed in the correct order.
Dashboard shows live progress: Score 0 to 3 with block indicators.
KILLZONES
ICT defines specific time windows where institutional order flow
is at its highest. The script highlights four of them:
London Open 02:00 - 05:00 New York time
New York Open 08:30 - 11:00 New York time
Asian Session 20:00 - 00:00 New York time
Silver Bullet 10:00 - 11:00 New York time
The Silver Bullet is a specific 1-hour ICT window occurring inside
the New York session — considered one of the highest-probability
entry windows in the entire ICT model.
Killzones are automatically hidden on timeframes 4H and above.
LIVE HUD DASHBOARD
A real-time panel in the bottom-left corner aggregates all modules:
Zone current price position (PREMIUM / DISCOUNT / EQ)
with gradient background that shifts green to red
EQ Level exact equilibrium price of the current dealing range
Bull FVG count of active non-inverted bullish gaps
Bear FVG count of active non-inverted bearish gaps
BPR whether a Balanced Price Range is currently active
Displace direction of the most recent displacement candle
IDM most recent trap type — Bear Trap / Bull Trap / None
ISD Score live block progress from 0/3 to 3/3
ATR (14) current ATR value
Timeframe active chart timeframe
█ HOW TO USE
Recommended workflow for intraday setups on 1m to 1H timeframes.
Step 1
Check the dashboard Zone. If PREMIUM, look for short setups only.
If DISCOUNT, look for long setups only. Never trade against the zone.
Step 2
Wait for an IDM label. This confirms retail stop-loss liquidity has
been swept in the direction you are looking to trade.
Step 3
Watch the ISD score reach 2/3 — a structural sweep is confirmed in
the same direction as the IDM.
Step 4
When a Displacement candle fires and ISD reaches 3/3, the complete
institutional sequence is confirmed. This is the entry trigger.
Step 5
Enter on a retest of the FVG left by the displacement candle.
For the highest-precision entry, wait for price to reach the OTE
zone within the FVG (61.8%–78.6% retracement level).
Step 6
Use Killzones to time entries. Highest-probability window is the
Silver Bullet (10:00–11:00 NY). London and NY Open are second.
For higher timeframe analysis on 4H and Daily: use Premium/Discount
zones and swing structure only. Ignore Killzones and FVG entries.
█ SETTINGS GUIDE
Fair Value Gaps
Min FVG Size (ATR mult) raise to filter weak gaps, 0 shows all
Max FVGs to Show limits drawn gaps, default 5
Show CE Midline shows the 50% Consequent Encroachment level
Show Inverted FVG recolors box when price passes through fully
Show BPR draws overlap zone between bull and bear FVGs
PD Arrays
Swing Detection Length longer lookback gives bigger dealing ranges
Show OTE Zones draws the Fibonacci entry zones
Show Equilibrium Line draws the 50% midpoint with price label
Displacement
Body Size (x ATR) momentum threshold, raise for stronger signals
Max Wick/Range Ratio lower value requires cleaner committed candles
Volume Filter disable for Forex, enable for stocks/futures
Inducement
IDM Lookback Bars how far back to find the reference high/low
Min Wick Size (x ATR) raise to filter micro false-breakouts
ISD Sequence
Min Score to Show Label set to 3 to see only complete 3/3 setups
Killzones
Each session can be toggled independently.
█ ALERTS
Bullish FVG Formed
Bearish FVG Formed
Bullish Displacement — check for FVG entry
Bearish Displacement — check for FVG entry
Full ISD Sequence (3/3) — high-probability setup complete
Bullish Inducement (IDM) — Bear Trap detected
Bearish Inducement (IDM) — Bull Trap detected
█ TECHNICAL NOTES
All ta.* function calls — ATR, SMA, pivot highs/lows, highest, lowest —
are executed unconditionally at the top script level in compliance with
the Pine Script v6 execution model. Never inside conditionals or
functions called conditionally.
FVG detection is locked to barstate.isconfirmed with a bar offset.
The current live bar never creates a new FVG box. No repainting.
The ISD state machine uses persistent var variables with inline
assignment in the main execution body. Pine v6 does not allow global
variable reassignment inside functions, so the state machine runs
directly in the main script scope with a 50-bar timeout guard.
█ DISCLAIMER
This indicator is provided for educational and informational purposes
only. It does not constitute financial advice or a recommendation to
buy or sell any financial instrument. Past performance of any trading
concept or signal is not indicative of future results. All trading
involves risk. You are solely responsible for your own trading decisions.
Always use proper risk management.
© LunqFX Indicator

Peak Decoder v1.0Kurzbeschreibung:
Ein hochentwickelter, strukturbasierter Oszillator, der die relative Position des Preises innerhalb seiner aktuellen Handelsspanne entschlüsselt.
Das Tool identifiziert vollautomatisch die mathematischen und visuellen Scheitelpunkte (Peaks & Troughs) in den Extremzonen und filtert kurzfristiges Marktrauschen sowie Fehlausbrüche effektiv heraus.
Hauptfunktionen & Funktionsweise:Drei integrierte Sensitivitäts-Modi:
Über das Einstellungsmenü kann die Reaktivität des Algorithmus fliegend gewechselt werden:
Aggressiv: Extrem schnell, optimiert für das Scalping in kleinsten Zeiteinheiten.
Normal: Die ausgewogene Standard-Einstellung für das klassische Daytrading.
Passiv: Filtert starkes Rauschen heraus, ideal für die übergeordnete Trendbestimmung (HTF).
Intelligenter Bounce- & Wellenfilter: Der Indikator speichert Ausbrüche in den Extremzonen im Zwischenspeicher. Er wartet geduldig, bis eine Bewegung endgültig abgeschlossen ist. Entstehen tiefere Täler oder höhere Hochs innerhalb derselben Phase, wandert das Signal automatisch mit.
Striktes Wechselsystem: Die Logik erzwingt ein sauberes, alternierendes Signalmuster (Top ➔ Bottom ➔ Top). Dadurch werden mehrfache Fehlsignale auf derselben Seite in volatilen Seitwärtsphasen komplett eliminiert.
Präzise visuelle Signale: Bestätigte Wendepunkte werden mit dezenten Kreisen direkt auf der Wellenspitze markiert. Zur besseren Übersicht wird ein fetter Richtungspfeil horizontal (auf 3 Uhr) daneben platziert.
Anwendung im Trading:Der Oszillator dient als hervorragender Filter zur Bestimmung von Premium- (Überkauft) und Discount-Zonen (Überverkauft) im Rahmen von Smart Money Concepts (SMC) oder klassischen Marktstruktur-Strategien.
Rot (Oben): Potenzielle Erschöpfung der Käufer, Vorbereitung für Short-Setups.
Grün (Unten): Potenzielle Erschöpfung der Verkäufer, Vorbereitung für Long-Setups.
Enthält eine voll integrierte Alarm-Schnittstelle (alert()), die pro Bar-Close einmalig auslöst, sobald ein Peak final bestätigt wurde. Indicator

Market Structure Target Tracker [MarkitTick]💡 An advanced, multi-faceted analytical suite designed for traders who rely on price action and logical trend progressions. By systematically identifying structural pivots in the market, this tool automatically maps out Break of Structure (BOS) and Change of Character (CHoCH) events. Rather than simply plotting support and resistance, it integrates a sophisticated risk-management framework directly onto the chart, calculating dynamic Entry, Stop Loss (SL), and multiple Take Profit (TP) levels based on market volatility.
Price action trading requires constant vigilance to identify local maxima and minima. This script relieves the trader of manual chart marking by perpetually analyzing rolling windows of price data. When an established swing high or low is breached, the indicator locks in the structural shift, evaluates higher timeframe momentum to filter out false breakouts, and establishes a forward-looking target zone.
✨ Originality and Utility
Most market structure indicators limit their functionality to placing historical labels on the chart. The originality of this script lies in its forward-looking, state-aware tracking mechanism. It operates not just as an indicator, but as a simulated trade management dashboard.
Once a structural break occurs, the indicator shifts into an active tracking state. It dynamically projects Entry and SL/TP bands anchored to the breakout, using Average True Range (ATR) to adapt to the asset's current volatility. Furthermore, it continuously evaluates the life-cycle of the structural break, monitoring price action to determine if the target is successfully hit or if the setup is invalidated by an opposing swing breach. This level of state persistence provides traders with an objective, real-time assessment of trade feasibility, risk-to-reward ratios, and trend duration.
🔬 Methodology and Concepts
The script is built upon four foundational technical concepts, woven together into a unified logic sequence:
• Pivot Detection
The core engine scans for Pivot Highs and Pivot Lows. A Pivot High is confirmed when a specific bar's high is strictly greater than the highs of a defined number of bars both preceding and following it. This creates a fractal representation of market turning points.
• Break of Structure (BOS)
A bullish structure break occurs when the closing price of a confirmed bar exceeds the most recent Pivot High. Conversely, a bearish break occurs when the close drops below the most recent Pivot Low. The script categorizes the first break in a new direction as a CHoCH, and subsequent continuous breaks as BOS.
• Higher Timeframe (HTF) Alignment
To prevent trading against the dominant macroeconomic trend, the script optionally queries the Relative Strength Index (RSI) from a higher timeframe. If this filter is engaged, bullish breakouts are ignored unless the HTF RSI indicates bullish momentum, adding a crucial layer of directional confirmation.
• Volatility-Adjusted Target Mapping
Upon a valid breakout, the script captures the current ATR. It then maps out a predefined trade setup. The Entry is plotted slightly past the breakout line, the Stop Loss is placed at a multiple of the ATR away from the entry, and up to three Take Profit levels are projected using independent ATR multipliers.
🔍 Deconstruction of the Underlying Scientific and Academic Framework
The indicator translates discretionary price action theory into a strict, rule-based algorithmic framework grounded in discrete mathematics and statistical dispersion.
• Local Extrema in Discrete Time Series
The pivot detection relies on the mathematical definition of local extrema within a bounded domain. For a given time series of high prices $H_t$, a local maximum is identified at time $t$ if $H_t \ge H_{t \pm k}$ for a defined neighborhood $k$ (the Swing Length). By anchoring structural logic to these extrema, the script removes the subjectivity of trendline drawing, relying strictly on empirical data points that define the boundaries of recent market equilibrium.
• Measurement of Dispersion via True Range
The risk management module utilizes the Average True Range. The True Range ( NYSE:TR $) is defined as the greatest of the following: the current high minus the current low, the absolute value of the current high minus the previous close, or the absolute value of the current low minus the previous close. The ATR is a smoothed moving average of this NYSE:TR $. In academic finance, variance and standard deviation are common measures of risk; however, ATR is particularly robust for trading applications as it accounts for overnight gaps and limits, providing a highly adaptive measurement of kinetic market energy to appropriately size stop-loss thresholds.
• Relative Momentum Standardization
The Higher Timeframe filter utilizes the Relative Strength Index. The RSI standardizes the velocity of price movement onto a 0-100 scale by comparing the exponential moving average of recent gains to recent losses. By enforcing a rule where NYSE:RSI > 50$ is required for bullish structural breaks, the algorithm mathematically demands that the higher-degree derivative of price (momentum) aligns with the lower-degree breakout, statistically reducing the probability of mean-reverting false breakouts.
🎨 Visual Guide
The script provides a rich, non-intrusive visual overlay to keep the trader informed of all active states and historical context.
• Structure Break Lines
Dashed Green Lines: Indicate historical and active Bullish breakouts.
Dashed Red Lines: Indicate historical and active Bearish breakouts.
Trend Labels: Triangles and markers (▲ BOS / ▼ CHoCH) appear at the midpoint of the break line to clearly annotate the structural shift.
• Trade Projection Lines
When a break is active, a cluster of dashed lines projects to the right of the current price action:
Blue Line (►): Proposed Entry level.
Red Line (✕): Stop Loss level based on ATR.
Green Lines (●, ★, ◆): Three tiered Take Profit targets based on escalating ATR multiples.
• The Heads-Up Dashboard
Located in the top right corner, this table is the operational nerve center. It displays:
Asset Ticker and Current Trend status.
HTF Direction and a visual block-bar representation of the HTF RSI.
Active BOS Level and Target Status (⏳ Pending or ✓ Hit).
Exact price coordinates for Entry, SL, and all TPs.
The active Risk-to-Reward (R:R) ratio for the first target.
Statistical tracking of Total BOS counts and the duration (in bars) of the active setup.
📖 How to Use
Traders can utilize this script as a complete ruleset for navigating trend continuations and reversals.
When observing the chart, wait for the script to print a new BOS or CHoCH label. This signifies that a confirmed candle has closed beyond a significant structural pivot. If the HTF filter is enabled, this break already has the backing of higher timeframe momentum.
Once the break prints, look to the dashed projection lines and the dashboard. The dashboard will display exact coordinates for a theoretical trade setup. You can use the blue Entry line to plan limit orders or market execution upon pullbacks. Set your structural stop-loss according to the red SL line, and place limit orders to secure profits at the green TP lines.
Monitor the Dashboard's "Tgt Status". If price action reverses heavily and crosses the opposing pivot point before reaching the target, the script will trigger its auto-invalidation sequence, clearing the active lines and returning to a neutral scanning state. This helps in dynamically cutting risk when a setup structurally fails.
⚙️ Inputs and Settings
The indicator is highly customizable, allowing adaptation to any asset or timeframe.
• BOS Group
Swing Length: Determines the lookback and lookforward period for pivot detection. Lower values react faster but produce more noise; higher values identify major macro swings.
• Visibility Group
Show BOS Line / Labels: Toggles the historical structural break drawings.
Auto-Invalidate: When enabled, the script will cancel an active setup if the opposing structural extreme is breached.
Color settings: Fully customize the hues for Bullish breaks, Bearish breaks, and Targets.
• SL/TP Group
Show Entry/SL/TP: Toggles the projection lines on the chart.
ATR Length: The lookback period for calculating market volatility.
Multipliers: Adjust the SL ATR Multiplier and the individual TP1, TP2, and TP3 multipliers to define your specific risk-to-reward parameters.
• HTF Group
HTF: Select the resolution for the higher timeframe filter (e.g., 240 for 4-hour, D for Daily).
HTF Filter: Toggle the momentum alignment requirement on or off.
HTF RSI Len: The period for the higher timeframe momentum oscillator.
• Alerts Group
The script features built-in webhook-ready JSON alerts that can notify external services the moment a BOS occurs or a target is successfully hit.
⚠️ 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. I 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

Meridian Flow [WillyAlgoTrader]🧭 Meridian Flow is an overlay Smart-Money toolkit that reads market structure the way an institutional trader does — detecting confirmed swing points, classifying every break as a BOS (trend continuation) or a CHoCH (trend reversal), drawing the order block each break leaves behind, and then turning that signal into a complete trade plan with ATR-based stop-loss, three take-profits, automatic break-even, and a live performance dashboard — all on one chart, with zero manual drawing.
The core idea: most "SMC" tools just paint boxes and labels and leave you to figure out the rest. Meridian Flow closes the loop. It does not stop at "here is a break" — it answers where to enter, where the stop goes, where the targets are, when to move to break-even, and how the setup has performed . Structure detection, order-block tracking, a higher-timeframe bias filter, a full risk engine, a structure-anchored trend line, and a sectioned dashboard are wired into a single pipeline so each part feeds the next.
It works on any market and any timeframe — forex, crypto, stocks, indices, futures — because every component is built from price action and ATR, not from instrument-specific assumptions.
🧩 WHY THESE COMPONENTS WORK TOGETHER
A raw BOS/CHoCH labeler tells you structure broke, but not whether to trust the break, where the institutional zone is, or how to manage risk once you're in. An order-block tool draws zones but has no concept of trade management. A risk calculator needs an entry it can't generate on its own. Used separately, you're constantly stitching three or four tools together by hand.
Meridian Flow fuses them into one chain:
Confirmed swing detection → HH/HL/LH/LL classification → BOS / CHoCH break engine → HTF bias filter → Order-block creation + mitigation tracking → ATR risk model (SL / TP1-3 / break-even) → Structure-anchored ATR trend line → Live stats & form dashboard → Alerts
The swing engine finds confirmed pivots. Classification tells you whether each new swing extends or contradicts the prior one. The break engine reads the running structure state to decide BOS vs CHoCH — the same state then sets the direction of the trailing trend line, so the line and the labels never disagree. Each qualifying break spawns the order block that produced the move and tracks it until price mitigates it. The HTF filter vetoes breaks that fight the higher timeframe. The risk engine takes the surviving signal and immediately builds entry, stop, and three targets sized in ATR and R-multiples. The dashboard records the outcome and feeds it back to you as a win rate and a recent-form strip.
Without structure classification you can't separate continuations from reversals. Without the running-state logic, BOS and CHoCH blur together. Without order blocks you lose the institutional zone. Without the HTF filter you take every counter-trend poke. Without the risk model a signal is just an arrow. The combination is what turns "structure broke" into a managed, reviewable trade.
🔍 WHAT MAKES IT ORIGINAL
1️⃣ Confirmed swing engine with automatic HH / HL / LH / LL labeling.
Swings are found with symmetric pivots — equal left/right lookback (default Swing Length 13 ) — so a pivot is only confirmed once enough bars have closed on both sides. Each new high is labeled:
— isHH = (no previous high) OR (pivotHigh >= previousHigh)
— otherwise it is an LH
Each new low is labeled:
— isLL = (no previous low) OR (pivotLow <= previousLow)
— otherwise it is an HL
This gives you an objective, repeatable map of structure instead of subjective lines.
2️⃣ BOS vs CHoCH disambiguation via a running structure-state machine.
The indicator keeps an internal trend state (structTrend = +1 bull, −1 bear, 0 neutral). When a swing high breaks, it reads that state:
— bull break while structTrend >= 0 → BOS ▲ (continuation)
— bull break while structTrend < 0 → CHoCH ▲ (reversal up)
The mirror logic applies to bear breaks. This is why the same break can be a BOS in one context and a CHoCH in another — the label reflects the trend you were already in, not just the candle that broke.
3️⃣ Conflict suppression + warmup guard.
If a bull break and a bear break would register on the very same bar, the bar is flagged a conflict and both are suppressed — no contradictory signals. On top of that, no signal fires until the chart has warmed up:
— WARMUP_BARS = max(Swing Length × 2, 50)
Early-history noise, where pivots aren't yet reliable, is filtered out before a single arrow prints.
4️⃣ Order blocks tied to the break, with displacement detection and an arm→mitigate lifecycle.
When a break creates an OB, the engine scans back up to OB Lookback (default 30) bars for the last opposite candle (for a bullish OB: the last down candle, close < open) and prefers one that was followed by a displacement move out of its range. If no displacement is found, it falls back to the nearest opposite candle.
Every box then runs a lifecycle:
— Armed : price first closes beyond the zone (confirming the OB worked)
— Mitigated : price later returns into the zone (by wick or close, your choice), committed on bar close
Mitigated blocks fade to grey and freeze, or can be removed entirely. The box cap ( Max Order Blocks, default 8 ) always drops mitigated zones first, so live zones stay on the chart longest.
5️⃣ Non-repainting higher-timeframe bias filter.
An EMA (default 50 ) is computed on a higher timeframe (default 60-minute ) and read with a one-bar offset on confirmed values:
— Bullish bias when close >= HTF EMA
— Bearish bias when close <= HTF EMA
When the filter is on, longs are only allowed in a bullish HTF regime and shorts only in a bearish one. Because the HTF value is taken from the already-closed higher-timeframe bar, it does not repaint.
6️⃣ Preset-driven ATR risk model — entry, stop, and three targets in one shot.
Stop distance is volatility-scaled, and targets are placed as multiples of that risk (R):
— slDistance = ATR(SL length, default 13) × SL multiplier
— SL = entry ∓ slDistance
— TP1/TP2/TP3 = entry ± slDistance × (TP1/TP2/TP3 multiplier)
One click selects a full profile (SL ×ATR / TP1 / TP2 / TP3 in R):
— Conservative : 2.5 / 1R / 2R / 4R
— Balanced : 1.5 / 1R / 2R / 3R
— Aggressive : 1.0 / 1.5R / 2.5R / 4R
— Scalping : 0.8 / 0.8R / 1.5R / 2R
— Custom : set every multiplier by hand
Only one position at a time is tracked — no pyramiding, no overlapping clutter.
7️⃣ Break-even-after-TP1 with WIN-on-TP1 accounting.
When TP1 is first touched and break-even is enabled, the stop is moved to the entry price. From the next bar, any wick back to entry closes the trade at break-even — locking out the give-back loss. Crucially, a trade counts as a WIN the moment TP1 is touched , even if it later comes back to the break-even stop. This keeps the win-rate honest about partial profit-taking.
8️⃣ Structure-anchored ATR trend line (SuperTrend-style, but it flips on CHoCH).
A smoothed ATR band trails price, but its direction is not decided by its own crossover logic — it is slaved to the structure state:
— band = hl2 ∓ (ATR Trend Multiplier, default 5) × EMA(ATR(length 10), smoothing 5)
— Bull regime: line trails as max(previous line, lower band)
— Bear regime: line trails as min(previous line, upper band)
— The line flips only when structure flips (a CHoCH), marked with a circle
So your trailing line and your BOS/CHoCH labels always tell the same story.
9️⃣ Session stats engine — win rate gauge + recent-form strip.
The dashboard tallies closed trades, wins, losses, and win rate, rendered with a Unicode block gauge (▰▱). A separate Form strip shows the last 10 outcomes (▰ = win, ▱ = loss, newest on the right), so you can see whether the current settings are in or out of sync with the market at a glance.
🧠 HOW IT WORKS — bar by bar
Step 1 — Detect swings: symmetric pivots confirm a swing high or low and label it HH/HL/LH/LL.
Step 2 — Watch for a break: price closing (or wicking, your choice) beyond the last swing flags a raw break; same-bar conflicts are suppressed.
Step 3 — Classify the break: the running structure state turns the raw break into a BOS or a CHoCH and flips the trend state.
Step 4 — Filter by bias: if the HTF filter is on, the break must agree with the higher-timeframe EMA regime to qualify.
Step 5 — Spawn the order block: the engine finds the originating candle (preferring displacement) and draws the OB zone.
Step 6 — Open the trade: while flat, a qualifying break sets entry, ATR stop, and TP1/TP2/TP3 from the active preset.
Step 7 — Manage it: each bar checks for TP touches and stop hits; TP1 triggers break-even; SL or TP3 closes the trade and books the result.
Step 8 — Track zones: every open OB arms and then mitigates as price interacts with it.
Step 9 — Report: the dashboard updates trend, signal, levels, R:R, win rate, and recent form; alerts fire on close.
📖 HOW TO USE (beginner-friendly)
🎯 Quick start — get running in 5 steps:
1. Add Meridian Flow to any chart, any timeframe. Defaults already work.
2. Look at the dashboard (top-right). The colored header tells you the current trend: green = bullish, red = bearish, blue = neutral.
3. Wait for a Long ▲ or Short ▼ marker to print under/over a candle. That is a new trade signal.
4. Read the colored lines that appear: the dotted line is your entry, the solid red line is your stop-loss, the three dashed lines are TP1, TP2, TP3.
5. Use those exact levels in your broker. The dashboard shows the same numbers in text so you can copy them.
That is the whole loop: signal prints → take the levels → manage to the targets. Everything else below just helps you read and fine-tune it.
👁️ Reading the chart (what every element means):
— 🟢 Long ▲ / 🔴 Short ▼ markers = a trade just opened in that direction.
— BOS ▲/▼ = trend is continuing in the same direction.
— CHoCH ▲/▼ = trend may be reversing — the first sign of a turn.
— HH / HL = higher high / higher low (healthy uptrend). LL / LH = lower low / lower high (healthy downtrend).
— Colored boxes = order blocks (institutional zones). Bright = still active; faded grey = already mitigated (price came back to it).
— Dotted line = entry · solid red = stop-loss · dashed lines = TP1/TP2/TP3. A target turns solid teal with a ✓ once price reaches it.
— Trailing ATR line = quick visual trend; it flips (with a small circle) when structure reverses.
📊 Dashboard fields:
— Trend : current structure direction (Bullish / Bearish / Neutral).
— Signal : LONG, SHORT, or Wait (a new trade only opens when you're flat).
— Last event : the most recent BOS or CHoCH.
— Timeframe : the chart timeframe.
— SL / TP1 / TP2 / TP3 : live levels of the open trade (✓ marks targets already hit; "BE @" means the stop moved to break-even).
— R:R (TP1) : reward-to-risk to the first target.
— SL Dist % : how far the stop sits from entry as a percentage.
— Trades / W-L / Win rate : this-session performance with a gauge.
— Form : last 10 results, ▰ win · ▱ loss, newest on the right.
🔧 Tuning guide (fix common issues):
— Too many small/noisy signals: raise Swing Length (try 20-30) and set Break Confirmation to "Close".
— Signals feel late: lower Swing Length (5-10) and/or switch Break Confirmation to "Wick".
— Too many counter-trend trades: turn on the HTF Trend Filter.
— Stops too tight / too wide: change the Risk Preset, or use Custom and adjust SL ×ATR.
— Chart too busy: turn off OB labels and the mean line, reduce Max Order Blocks, or enable "Remove OB After Mitigation".
💡 Trading ideas:
— Reversal hunting: set Signal Mode to "CHoCH only" to trade structure turns; pair with an order-block retest for confirmation.
— Trend riding: set Signal Mode to "BOS only" with the HTF filter on to stack with the higher-timeframe direction.
— Zone entries: wait for a fresh OB, then enter on the mitigation tap back into the zone rather than chasing the break.
— Scalping: use the Scalping preset on low timeframes for tight stops and quick 1:1 to 1:2 targets.
— Risk-free runners: keep Break-Even After TP1 on so winners can't turn into losers.
⚙️ KEY SETTINGS REFERENCE
🏗️ Structure:
— Swing Length (default 13): pivot lookback. Lower = more, smaller swings; higher = cleaner.
— Break Confirmation (default Close): Close = fewer fakeouts; Wick = earlier, riskier.
— Signal Mode (default BOS + CHoCH): which events fire trades — CHoCH only / BOS only / both.
— Show HH/HL/LH/LL (default on) · Show BOS / CHoCH (default on).
📦 Order Blocks:
— Show Order Blocks (default on) · Create OB On (default BOS + CHoCH).
— Mitigation Trigger (default Wick): Wick = earlier; Close = stricter.
— Remove OB After Mitigation (default off) · OB Lookback (default 30) · Max Order Blocks (default 8).
— OB Box Transparency (default 85) · Show 50% Mean Line (default off) · Show OB Labels (default off).
🔍 Filters:
— HTF Trend Filter (default off) · HTF Timeframe (default 60) · HTF EMA Length (default 50).
🛡️ Risk Management:
— Risk Preset (default Balanced): Conservative / Balanced / Aggressive / Scalping / Custom.
— ATR Length (SL) (default 13) · SL ×ATR / TP1 / TP2 / TP3 multipliers (Custom mode).
— Show SL/TP Lines (default on) · Show SL/TP Labels (default on) · Show % Distance (default on).
— Break-Even After TP1 (default on) · Entry / SL / TP Line Style .
🎨 Visual:
— Theme (default Auto) · Show Buy/Sell Signals (default on) · Label Font Size (default Small).
— Show ATR Trend Line (default on) · ATR Trend Length (default 10) · Multiplier (default 5.0) · Smoothing (default 5).
— Show Watermark (default on).
📊 Dashboard:
— Show Dashboard (default on) · Position (default Top Right) · toggles for Market / Trade / Stats sections.
🔔 Alerts:
— Webhook JSON Format (default off) · Alert on SL Hit (default on) · Alert on TP / Break-Even (default off) · Alert on OB Mitigation (default off).
🔔 ALERTS
— 🟢 LONG / 🔴 SHORT — entry with ticker, timeframe, price, SL, TP1/TP2/TP3 and R:R.
— 🛑 SL HIT / 🛡️ BE STOP-OUT — stop or break-even stop-out, with entry and stop price.
— 🛡️ BREAK-EVEN — stop moved to entry after TP1.
— 🎯 TP1 / TP2 / TP3 HIT — each target as it is touched.
— 📦 OB MITIGATION — price returns into a bull or bear order block.
All alerts support plain text and JSON webhook output, and fire on bar close (once per bar close).
⚠️ IMPORTANT NOTES
— 🚫 No repainting. Swings use symmetric (equal left/right) pivots, so a pivot is confirmed only after the lookback bars close — the actual swing sits in the past by the Swing Length; the indicator draws forward from that confirmed bar. Breaks, hits, and OB mitigation all commit on bar close (barstate.isconfirmed), the HTF bias reads the already-closed higher-timeframe bar, and alerts fire once per bar close. This is delayed confirmation, not repainting of future values.
— 📐 Confirmation delay is inherent: signals appear after the bar that triggers them closes. This is the cost of avoiding fakeouts.
— ⚖️ Stats are session-based: win rate and the form strip reset when the script reloads or any input changes. They reflect the visible history with current settings, not a guaranteed forward result.
— 📊 "SL Dist %" is the stop distance as a percentage of entry — it is not a position-sizing or account-risk figure. Size your positions with your own risk rules.
— 🛠️ This is a market-structure analysis and trade-planning tool, not an automated trading bot. It detects structure, draws zones, builds stop/target levels, and tracks outcomes — trade decisions remain yours.
— 🌐 Works on all markets and all timeframes. Past performance does not guarantee future results.
— 🆓 Meridian Flow is free to use. Feedback and suggestions are welcome in the comments. Indicator
