Market Structure Shift [JOAT]═══ MARKET STRUCTURE SHIFT ═══
A complete Smart Money Concepts structure engine that reads the market the way institutional flow moves it — mapping every swing and internal shift, tagging each break as BOS (continuation) or CHoCH (reversal), then layering liquidity, premium/discount context, and a structure-anchored risk plan on top. It turns raw price action into a clean, labelled map of who is in control and where the shift happens.
▎ WHAT IT DOES
MSS tracks confirmed pivots and runs them through a two-layer structure state machine. When price closes (or wicks) beyond a protective swing, it draws the break line, labels it BOS or CHoCH, and updates the live trend state. Around that skeleton it adds equal-high/low liquidity marks, a premium/discount/equilibrium range map, an optional structure-anchored SL and Reward:Risk target zone, session VWAP with deviation bands, and a live dashboard summarising the whole picture.
▎ HOW IT WORKS
• Confirmed pivots — swing highs/lows are detected with a symmetric pivot length (bars each side), so a pivot only prints once fully confirmed. A separate, shorter internal pivot length tracks a faster inner structure layer.
• BOS vs CHoCH logic — each layer holds a trend state (bull / bear / range). A bullish break of the last swing high while the state is already bullish is a BOS (continuation); a bullish break while the state was bearish is a CHoCH (change of character / first reversal). The mirror logic applies to bearish breaks.
• Break confirmation — you choose whether a candle must close beyond the level (cleaner) or whether any wick penetration counts.
• Sequence read — every new pivot is classified HH / LH / HL / LL (or EQ) so you can see the higher-high / lower-low rhythm at a glance.
• Liquidity (EQH/EQL) — two consecutive pivots landing within an ATR-scaled tolerance are marked as Equal Highs or Equal Lows — resting liquidity pools where stops cluster.
• Premium / Discount — the active swing range is split into a Premium (upper) zone, a neutral Equilibrium band around the midpoint, and a Discount (lower) zone, so you always know which half of the range price is trading in.
• Structure-anchored risk — on a fresh signal the stop is placed just beyond the swing that would invalidate the shift (plus an ATR buffer), or by a fixed ATR distance. Risk is floored and capped by ATR, and the target is projected at your Reward:Risk multiple.
• VWAP magnet — session-anchored VWAP with inner and outer standard-deviation bands acts as the fair-value reference the structure tends to rotate around.
• ATR normalisation — label spacing, liquidity tolerance and stop distances all scale with ATR, so the tool behaves consistently across assets and timeframes.
▎ HOW TO USE IT
• Read the trend state first: a CHoCH warns the prevailing structure has broken; a following BOS confirms the new leg. Trade with the higher-conviction swing layer and use internal breaks for earlier, finer entries.
• BUY / SELL labels fire on the events you enable (CHoCH, BOS, or both) from your chosen layer — treat them as a structure trigger, not a blind entry.
• Favour longs from the Discount zone and shorts from the Premium zone; the Equilibrium band is neutral / no-man's-land.
• EQH/EQL marks show where liquidity rests — price often sweeps these before a genuine shift, so use them as targets and as traps to avoid.
• When a signal prints, the RISK ZONE (entry→stop, red) and TARGET ZONE (entry→TP, green) boxes project the plan; the SL and TP lines carry exact price and R labels. The zones extend live, then freeze once TP, SL, or the time-out is reached.
• Use VWAP and its bands as confluence — a shift back through VWAP into the opposite σ band is a common rotation target.
▎ KEY SETTINGS
• Structure Engine — swing pivot length, optional internal layer + its length, close/wick break confirmation, ATR length.
• Signals — signal source (Swing / Internal / both) and whether labels fire on CHoCH, BOS, or both.
• Liquidity & Zones — toggle EQH/EQL, equal-level tolerance, premium/discount zones, equilibrium band width, and the floating price-zone tag.
• Risk Model — stop basis (Structure+Buffer or ATR Multiple), buffer/ATR distance, Reward:Risk multiple, min/max risk floors and caps, projection length, max drawn setups.
• VWAP — show VWAP, inner/outer σ multiples, deviation lookback.
• Visuals — swing/internal break display, pivot markers, zone candle colouring, draw limits, and the blue/violet colour scheme.
▎ DASHBOARD
A compact blue/violet panel reports live: overall Trend , the Last Event (Bull/Bear BOS or CHoCH), the current Swing Sequence (e.g. HH · HL), the Internal structure state, the active Price Zone , running BOS and CHoCH counts, Liquidity (EQH/EQL) count, the current Signal , and the symbol/timeframe. Position and text size are adjustable.
▎ ALERTS
Six alertconditions are provided: Bullish BOS, Bearish BOS, Bullish CHoCH, Bearish CHoCH, BUY Signal, and SELL Signal — each with a ready message carrying ticker and interval.
▎ NOTES
• Works on all timeframes and all assets — everything scales with ATR.
• Pivots are confirmed (they need bars to close each side), so structure marks are non-repainting once printed; the price-zone label and dashboard update live on the last bar as expected.
• Every visual layer has a toggle — turn off what you don't need for a clean chart.
• Signals never fire both directions on the same bar; a conflicting wide-range bar is dropped.
For research and education only. This is not financial advice. No indicator can predict the future, and past behaviour does not guarantee future results. Any labels, zones, or counts describe historical price action only. Always do your own analysis and manage your own risk.
Made with passion by JackOfAllTrades ⚡ Indicator

Smart Support & Resistance + Session POCSmart Support & Resistance + Session POC
Overview
Smart Support & Resistance + Session POC is a confirmation-based support and resistance indicator designed to identify meaningful price areas instead of plotting a level after every pivot or wick.
The indicator searches for repeated, separate price rejections on a user-selected detection timeframe. A level remains hidden after its first rejection and only becomes a visible zone after it receives the required number of valid rejections.
Each rejection can be filtered by:
Pivot structure
Approach direction
Minimum wick rejection
Minimum displacement away from the level
Time between separate visits
Distance from existing zones
The indicator can also compare confirmed zones with the Point of Control from previous completed volume-profile sessions. Zones with POC confluence are displayed more prominently, allowing traders to quickly identify areas where repeated price rejection and concentrated traded volume overlap.
This indicator is intended for intraday support and resistance analysis on futures, stocks, forex, and other symbols that provide the required volume and footprint data.
Main Features
Multi-Timeframe Zone Detection
Zones can be calculated from a timeframe independent of the chart timeframe.
For example, you can:
Calculate zones from the 1-hour timeframe.
View those same zones on a 15-minute chart.
Drop to the 5-minute or 1-minute chart for execution.
This keeps the important higher-timeframe structure visible while using a lower timeframe for trade entries.
The selected detection timeframe must be equal to or higher than the chart timeframe.
Confirmation-Based Zone Detection
The indicator does not display every pivot high or pivot low.
A level begins as a hidden candidate after its first valid rejection. It only becomes a visible support or resistance zone after receiving the selected minimum number of separate rejections.
The default requirement is:
Regular zone: 2 valid rejections
Strong zone: 3 or more valid rejections
The thresholds are fully adjustable.
Because pivot confirmation requires bars to form on the right side of the pivot, zones appear after confirmation rather than attempting to predict a turning point in advance.
What Counts as a Valid Rejection?
A rejection must pass the enabled quality filters before it can be counted.
Resistance Rejection
A potential resistance rejection is created when:
A confirmed pivot high forms.
Price approached the area from underneath, when the approach filter is enabled.
The pivot candle closes sufficiently below its high.
Price produces the required downward displacement after the rejection.
The rejection is sufficiently separated from the previous visit.
Support Rejection
A potential support rejection is created when:
A confirmed pivot low forms.
Price approached the area from above, when the approach filter is enabled.
The pivot candle closes sufficiently above its low.
Price produces the required upward displacement after the rejection.
The rejection is sufficiently separated from the previous visit.
These filters help prevent ordinary consolidation, repeated candles inside the same range, and weak pivots from being counted as meaningful support or resistance.
Separate-Visit Logic
Several candles reacting around the same level do not automatically count as several independent rejections.
A new rejection must be separated from the previous rejection by the selected number of detection-timeframe bars.
For example, with:
Detection timeframe: 60 minutes
Minimum bars between rejections: 3
The next rejection must occur at least three 1-hour bars after the previous rejection before it can increase the zone’s rejection count.
This prevents a cluster of candles from incorrectly creating an immediate strong zone.
Adjustable Tick-Based Zones
Zone thickness is defined in ticks using the symbol’s minimum tick size.
This allows the same indicator to adjust correctly across different instruments.
For MNQ:
1 tick = 0.25 points
4 ticks = 1 point
20 ticks = 5 points
40 ticks = 10 points
Support zones are constructed upward from the confirmed rejection low.
Resistance zones are constructed downward from the confirmed rejection high.
When a new valid rejection is merged into an existing zone, the zone may adjust to include the newer rejection extreme while maintaining the selected zone thickness.
Zone Merging
Nearby rejections of the same type can be grouped into one zone instead of creating several overlapping boxes.
The Zone merge tolerance setting controls how close two areas can be before they are treated as the same support or resistance zone.
A larger merge tolerance produces fewer, broader structural areas.
A smaller merge tolerance keeps nearby levels separate and creates more zones.
Zone Strength and Appearance
The indicator uses opacity to display zone quality without adding labels, centerlines, or unnecessary chart clutter.
Default appearance:
Regular zone: 50% opacity
Strong zone: 75% opacity
POC-confluence zone: 100% opacity
Support zones are green by default.
Resistance zones are red by default.
All colors, opacity levels, and border widths are customizable.
Visual Priority
POC confluence has the highest appearance priority.
Therefore:
A two-rejection zone without POC confluence appears as a regular zone.
A zone reaching the strong-rejection threshold appears as a strong zone.
Any confirmed zone overlapping a selected POC appears at the POC opacity level.
The chart remains clean because no labels or centerlines are required to identify zone quality.
Completed Session POC Confluence
The indicator can analyze Point of Control levels from previously completed volume profiles.
The Point of Control represents the highest-volume price row within the selected completed profile.
A confirmed zone receives POC confluence when its price range overlaps a POC row within the selected profile lookback.
POC confluence can be calculated from:
Exchange-defined regular sessions
Extended or full sessions
The profile timeframe is also adjustable.
For intraday trading, a common configuration is:
Profile timeframe: 1D
Profile session: Exchange regular
POC lookback: 5 completed profiles
This compares active support and resistance zones with POCs from the previous five completed daily profiles.
Completed Profiles Only
The indicator uses completed profiles rather than a developing current-session POC.
A developing POC can move throughout the session as additional volume trades. Using completed profiles provides a stable reference that does not continue shifting during the current session.
POC Lookback
The POC lookback controls how many completed profiles remain available for confluence.
For example:
A lookback of 1 checks only the most recently completed profile.
A lookback of 5 checks the previous five completed profiles.
A lookback of 10 checks the previous ten completed profiles.
When an old profile leaves the selected lookback, the indicator recalculates confluence. A zone may therefore lose its POC appearance when the POC supporting it is no longer inside the active lookback.
POC functionality requires footprint data to be available for the PulseWire account and selected symbol.
Zone Invalidation
A zone is considered invalid when price closes completely beyond its outside boundary plus the selected break buffer.
Support Invalidation
A support zone is deleted when the selected confirmation candle closes below:
Support zone bottom − break buffer
Resistance Invalidation
A resistance zone is deleted when the selected confirmation candle closes above:
Resistance zone top + break buffer
A wick through the zone does not automatically invalidate it. Price must close beyond the zone and its buffer.
Once broken:
The zone is permanently removed from the chart.
It is not faded.
It is not retained as a historical zone.
It does not automatically convert into a support/resistance flip.
A new zone can form near the same price only after new valid rejections occur.
Break Confirmation Timeframe
There are two break-confirmation choices.
Detection Timeframe
This is the recommended setting.
A zone calculated from the 1-hour timeframe is invalidated only by a confirmed 1-hour close beyond the zone and buffer.
This prevents a small lower-timeframe close from deleting a higher-timeframe zone prematurely.
Chart Timeframe
The zone is invalidated by a confirmed close on the current chart timeframe.
This is more responsive but also more sensitive.
For example, a 1-minute close could invalidate a zone calculated from the 1-hour timeframe.
Zone Freshness
The Zone freshness lookback determines how long a level can remain active without receiving another valid rejection.
Freshness is measured from the zone’s most recent valid rejection.
For example, with a 10-day freshness setting:
A zone whose most recent valid rejection occurred within the last 10 days remains active.
A zone that has not received a valid rejection for more than 10 days is deleted.
A new valid rejection refreshes the zone’s age.
The freshness setting is measured in calendar-day periods.
Zone Length
Two zone-extension modes are available.
Until Broken
The zone continuously extends to the right until:
Price invalidates it.
It becomes stale.
It is removed because of the maximum tracked-level limit.
This is the recommended setting for active support and resistance trading.
Fixed Detection Bars
The zone extends for a selected number of detection-timeframe bars after confirmation.
For example:
Detection timeframe: 60 minutes
Fixed length: 100 bars
The zone remains active for approximately 100 confirmed 1-hour bars unless it is invalidated or becomes stale first.
How to Use the Indicator
Step 1: Choose the Detection Timeframe
Select the timeframe from which support and resistance should be calculated.
Common examples:
Scalping on a 1-minute chart: use 15-minute, 30-minute, or 1-hour zones.
Trading on a 5-minute chart: use 30-minute or 1-hour zones.
Trading on a 15-minute chart: use 1-hour or 4-hour zones.
The detection timeframe cannot be lower than the chart timeframe.
A good starting point for MNQ intraday trading is:
Chart timeframe: 1–5 minutes
Detection timeframe: 60 minutes
Step 2: Set the Minimum Rejections
Start with:
Minimum rejections: 2
Strong-zone rejections: 3
With these settings:
The first rejection creates a hidden candidate.
The second valid rejection confirms and displays the zone.
The third valid rejection upgrades it to a strong zone.
Increasing the required rejections creates fewer but more selective zones.
Step 3: Set the Zone Thickness
Choose a zone thickness that matches the instrument’s normal movement.
Suggested MNQ starting value:
Zone thickness: 20 ticks, or 5 points
A smaller zone is more precise but may be invalidated or missed more easily.
A larger zone captures a broader area but may create less precise entries.
Zone thickness should generally be adjusted according to the instrument’s volatility and the selected detection timeframe.
Step 4: Configure the Rejection Filters
Recommended starting settings:
Require correct approach direction: On
Minimum rejection wick: 4 ticks
Require displacement: On
Displacement mode: Ticks
Minimum displacement: 20 ticks
Displacement window: 3 bars
These settings require price to produce a meaningful reaction after contacting the area.
For instruments or timeframes with changing volatility, ATR displacement can be used instead of a fixed tick amount.
Step 5: Configure the Volume Profile
Recommended intraday starting configuration:
Use completed-profile POC confluence: On
Profile timeframe: 1D
Profile session: Exchange regular
POC lookback: 5
Footprint row size: 4 ticks
POC overlap tolerance: 0–4 ticks
The profile timeframe must be higher than the chart timeframe.
Use Exchange regular when regular-session institutional volume is the main focus.
Use Extended/full when overnight and extended-session volume should be included.
Step 6: Read the Zones
Regular Zone
A regular zone has reached the minimum rejection requirement but has not reached the strong threshold and does not overlap a selected POC.
It is a valid area, but it has the lowest visual priority.
Strong Zone
A strong zone has received at least the selected number of valid rejections.
Repeated rejection suggests that the area has continued to influence price.
POC Zone
A POC zone is a confirmed support or resistance zone that overlaps a POC from the selected completed-profile lookback.
This combines:
Repeated price rejection
Structural support or resistance
High historical traded volume
POC confluence increases visual importance, but it does not guarantee that the zone will hold.
Suggested Trading Workflow
The indicator identifies reaction areas. It does not automatically provide buy or sell entries.
Long Setup
Establish a bullish directional bias.
Wait for price to return to a support zone.
Give greater attention to strong or POC-confluence support.
Look for lower-timeframe confirmation, such as:
A liquidity sweep and close back above the zone
A bullish rejection candle
A higher low
A bullish market-structure shift
Positive volume or delta confirmation
Consider invalidation below the zone and an appropriate buffer.
Use the next resistance zone or another planned level as a potential target.
Short Setup
Establish a bearish directional bias.
Wait for price to return to a resistance zone.
Give greater attention to strong or POC-confluence resistance.
Look for lower-timeframe confirmation, such as:
A liquidity sweep and close back below the zone
A bearish rejection candle
A lower high
A bearish market-structure shift
Negative volume or delta confirmation
Consider invalidation above the zone and an appropriate buffer.
Use the next support zone or another planned level as a potential target.
Zones should be treated as areas where a reaction may occur, not as automatic entry signals.
Settings Guide
1. Zone Detection
Zone Detection Timeframe
Controls the timeframe used to detect pivots and rejections.
It must be equal to or higher than the current chart timeframe.
Pivot Bars Left
Controls how many bars must appear to the left of a pivot.
Higher values produce fewer and more significant pivots.
Pivot Bars Right
Controls how many bars must form after a pivot before it is confirmed.
Higher values provide more selective confirmation but cause zones to appear later.
Minimum Rejections
The number of separate valid rejections required before a zone becomes visible.
Strong-Zone Rejections
The number of valid rejections required to upgrade a confirmed zone to strong status.
The script will never allow the effective strong threshold to be lower than the minimum confirmation threshold.
Minimum Bars Between Rejections
Controls how many detection-timeframe bars must separate two counted rejections.
Minimum Rejection Wick
Defines how far the pivot candle must close away from its high or low.
For resistance, the pivot candle must close below its high by this amount.
For support, the pivot candle must close above its low by this amount.
Set it to zero to disable this filter.
Require Correct Approach Direction
When enabled:
Resistance should be approached from below.
Support should be approached from above.
This helps prevent sideways price action from repeatedly creating levels inside congestion.
Require Displacement After Rejection
Requires price to move a minimum distance away from the rejection before it is accepted.
Displacement Mode
Choose between:
Fixed ticks
ATR-based displacement
Minimum Displacement
The fixed tick distance required when using Ticks mode.
Displacement Window
The number of bars immediately following the pivot that are examined for displacement.
The effective window cannot exceed the number of pivot-right bars because the rejection must remain fully confirmed.
ATR Length and Multiplier
Control the volatility-adjusted displacement requirement when ATR mode is selected.
2. Zone Construction and Life
Zone Thickness
Controls the vertical size of every support and resistance zone in ticks.
Zone Merge Tolerance
Controls how close two same-direction rejection areas can be before they are grouped together.
Zone Freshness Lookback
Deletes levels whose most recent valid rejection is older than the selected number of days.
Zone Length
Choose between continuous extension until invalidation or a fixed number of detection bars.
Fixed Length
Controls how many detection-timeframe bars a fixed-length zone remains active.
Break Confirmation Candle
Selects whether invalidation is confirmed by the detection timeframe or current chart timeframe.
Break Buffer
Adds extra space beyond the outside boundary before a zone is deleted.
For MNQ:
4 ticks = 1 point
8 ticks = 2 points
Maximum Tracked Levels
Limits the total number of zone records stored by the indicator.
This includes both:
Hidden one-rejection candidates
Visible confirmed zones
When the limit is exceeded, the oldest level based on its most recent rejection is removed.
3. Session Volume Profile Confluence
Use Completed-Profile POC Confluence
Turns POC analysis on or off.
Profile Timeframe
Controls the duration of each completed volume profile.
Use 1D for completed daily profiles.
Profile Session
Choose between exchange regular hours or extended/full-session data.
POC Lookback
Controls how many completed POC rows are retained for confluence testing.
Footprint Row Size
Controls the price height of each footprint row in ticks.
Smaller values provide greater price resolution but may create noisier profile results.
Larger values group more prices into each row.
Value Area Percent
Controls the value-area percentage used when constructing the footprint profile.
The current indicator uses the profile’s POC for zone confluence and does not separately draw VAH or VAL.
POC Overlap Tolerance
Adds a tick allowance around each POC row when checking whether it overlaps a zone.
4. Appearance
The following can be customized independently:
Support color
Resistance color
Regular-zone opacity
Strong-zone opacity
POC-zone opacity
Border width
Zones are drawn behind the candles to keep price action readable.
Recommended MNQ Starting Settings
Setting Starting Value
Detection timeframe 60 minutes
Pivot bars left 3
Pivot bars right 3
Minimum rejections 2
Strong-zone rejections 3
Minimum bars between rejections 3
Minimum rejection wick 4 ticks
Correct approach direction On
Displacement filter On
Displacement mode Ticks
Minimum displacement 20 ticks
Displacement window 3 bars
Zone thickness 20 ticks
Merge tolerance 8 ticks
Freshness 10 days
Zone length Until broken
Break confirmation Detection timeframe
Break buffer 4 ticks
Profile timeframe 1D
Profile session Exchange regular
POC lookback 5 profiles
Footprint row size 4 ticks
POC tolerance 0–4 ticks
Regular opacity 50%
Strong opacity 75%
POC opacity 100%
These are starting values, not universal settings. Different instruments and timeframes may require different zone sizes, displacement requirements, and profile-row sizes.
Available Alerts
The indicator includes alert conditions for:
New support zone
New resistance zone
Zone upgraded to strong
Zone gained POC confluence
Support zone broken
Resistance zone broken
To create an alert:
Add the indicator to the chart.
Select Create Alert.
Choose this indicator under the alert condition.
Select the desired event.
Use Once Per Bar Close when close confirmation is required.
Important Notes
This is an indicator, not an automated strategy.
It does not place trades or calculate position size.
A zone is not displayed until the required rejections are fully confirmed.
Higher pivot-right values create slower but more selective confirmation.
Existing zone boundaries can adjust when a new valid rejection is merged into the same area.
POC appearance can change as completed profiles enter or leave the selected lookback.
Footprint and POC results depend on the data available for the symbol.
Support and resistance zones represent areas of interest, not guaranteed reversal points.
Always combine zones with risk management, market context, and entry confirmation.
Smart Support & Resistance + Session POC is designed to reduce chart clutter while highlighting repeatedly defended price areas and the zones that also contain meaningful historical volume concentration. Indicator

Indicator

Indicator

Indicator

ICT MulitTimeFrame FVG Tracker Retest Liquidity LevelsOVERVIEW
This indicator provides a structured multi-timeframe view of Fair Value Gaps, wick-based retracements, liquidity levels, and market sessions.
It is designed for traders who identify Fair Value Gaps on a higher timeframe while executing or monitoring price action on a lower timeframe. For example, a 15-minute FVG can be displayed and tracked directly on a 5-minute or 1-minute chart.
CORE FEATURES
Multi-Timeframe Fair Value Gaps
Select the source timeframe used to detect Fair Value Gaps. Each zone displays its source timeframe, such as M15, H1, or H4, so its origin remains clear on lower-timeframe charts.
Only confirmed source-timeframe FVGs are activated. A developing higher-timeframe gap cannot trigger a historical retest signal before its source candle has closed.
Wick-Based Retracement Tracking
The indicator tracks wick penetration into each active FVG and displays the deepest retracement as a percentage.
0% means the confirmed FVG has not been retraced.
The percentage increases as price moves deeper into the gap.
Both candle bodies and wicks are included.
The remaining unfilled portion is updated visually.
Safety Zone
An adjustable safety zone extends beyond the original FVG boundary. This provides additional tolerance for marginal overshoots, which can be especially useful when monitoring higher-timeframe gaps.
If price crosses the outer safety boundary, the zone is marked as invalidated.
Retest Markers
The first valid retest occurring after FVG confirmation produces a BUY or SELL marker:
Bullish FVG retest: BUY
Bearish FVG retest: SELL
The marker also identifies the source timeframe, for example:
SELL · M15 FVG
These markers identify the first confirmed touch of a zone. They are not independent trade recommendations and do not apply additional market-structure or momentum confirmation.
Liquidity Map
The indicator displays several types of potential liquidity levels:
BSL: confirmed buy-side liquidity
SSL: confirmed sell-side liquidity
PDH: previous day high
PDL: previous day low
Asia session high and low
London session high and low
New York session high and low
BSL and SSL levels are derived from confirmed pivots on the selected FVG timeframe.
Liquidity levels extend until their first sweep. Once swept, they stop extending and change to the selected swept-level color.
Market Sessions
Asia, London, and New York sessions can be highlighted with independent chart overlays.
Default colors are:
Asia: blue
London: brown
New York: red
Every overlay includes independent visibility, color, and transparency controls.
TIMEZONE MANAGEMENT
Select your location through the “Your timezone” setting.
Session calculations use their native geographic timezones:
Asia/Tokyo
Europe/London
America/New_York
The local session clock converts these schedules into the selected user timezone. IANA timezone identifiers are used so daylight-saving changes in London and New York are handled automatically.
HOW TO USE
Select the timeframe used to detect FVGs.
Use the indicator on the same timeframe or a lower chart timeframe.
Select your local timezone.
Adjust the safety-zone percentage.
Configure the FVG, signal, liquidity, session, and overlay colors.
Use the displayed liquidity levels and session extremes as discretionary areas of interest.
IMPORTANT NOTES
This is an indicator, not an automated strategy.
It does not calculate automatic take-profit or stop-loss orders. It provides FVG context, retracement information, retest markers, and visible liquidity references so traders can perform their own target selection and risk management.
A displayed BUY or SELL marker confirms a first post-confirmation FVG touch only. It should not be interpreted as financial advice or as a guarantee of future price movement. Indicator

ORB Opening Range I EonMetrics ORB - Opening Range
ORB marks the opening range — the high and low of the first minutes of a session — and tracks what price does with it for the rest of the day: breakouts by closing price, failed breakouts that snap back inside, and extension levels projected from the range height. The last few days stay on the chart so you can judge at a glance how your instrument actually behaves around its open.
🔶 HOW IT WORKS
From the session open (New York 09:30 by default) the script records the high and low of the first X minutes — 5 to 60, you choose. When the window closes, the range is frozen: a box marks the window, and the high/low lines extend forward until the next session begins. The first candle that CLOSES outside the range tags the breakout; a close back inside within your chosen number of bars tags it as FAILED and re-arms the day.
🔶 WHY THE OPENING RANGE MATTERS
The first minutes of a session concentrate the reactions to everything that accumulated while the market was closed or quiet: overnight news, opening auctions, the first institutional orders of the day. The range those minutes carve out is the day's first agreed-upon value area. That is the reasoning behind the concept, and it is why the tool also tags a move that closes back inside the range rather than only tagging the escape — the two outcomes describe different sessions.
Worth stating plainly: this is the rationale for the concept, not evidence that it works. Whether your instrument respects its opening range is an empirical question about that instrument, and the History setting exists so you can answer it with your own eyes before relying on anything here.
🔶 WHAT IT DOES
Opening range — box over the window (5/15/30/45/60 min), frozen high/low lines extended through the session. Session presets: New York 09:30, London 08:00, Tokyo 09:00, or a fully custom open time with its own timezone (DST handled by the timezone database, not by fixed offsets).
Extension levels — optional lines at ±0.5×, ±1×, ±1.5× and ±2× the range height, projected above the high and below the low. These are reference levels for reading how far a move has traveled relative to the range — the script does not call them targets, because they are not.
Breakout status — evaluated on closing prices only, never on wicks. First close above the high tags ORB ▲, first close below the low tags ORB ▼. A close back inside the range within K bars tags FAIL and re-arms the day, so a later genuine breakout can still be tagged.
History — the last D days of ranges stay on the chart (configurable). Scrolling back through a week of your own instrument is the fastest way to see whether its opening range is worth watching at all.
🔶 ALERTS
Four alert conditions: opening range set, breakout above, breakout below, failed breakout.
🔶 HOW TO USE
1. Pick the session that matches your market — NY 09:30 for US indices and metals, London 08:00 for European hours, or a custom time.
2. Pick the window length. 15 and 30 minutes are the classic choices; shorter = earlier levels, noisier range.
3. Watch the first close outside the range — and read a quick close back inside (the FAIL tag) as a description of that session, not as noise to ignore.
4. Set the four alerts and stop watching the open candle by candle.
🔶 SETTINGS
Session (preset / custom time + timezone, range length) · Levels & Breakout (extension multiples, failed-breakout window, days of history) · Style (colors, box fill).
🔶 HONEST LIMITATIONS
The opening-range concept assumes a session with a real open — indices, metals, forex sessions. On 24/7 crypto a "session open" is a convention: the tool works there mechanically, but the premise behind it is weaker, and you should know that before trading around it. The chart timeframe must be at or below the window length (a 30-minute range cannot be built from hourly bars — the indicator stays empty rather than guessing). This tool draws levels and states facts about closes; it does not generate signals or targets.
Part of the EonMetrics toolset.
Indicator

Indicator

Indicator

PSRC | NYAM 3X Liquidity Sweep V31. Executive Summary
PSRC-LSMSS is a multi-timeframe Pine Script v6 AI Engine that identifies 3 key institutional liquidity raids during the New York AM session and confirms them against a structural market-shift model before generating a tiered, alert-ready signal. It was built following an explicit Quant-First, Code-Second discipline: the edge hypothesis, timeframe stack, and risk model were defined before a single line of entry logic was written, and every stage of the resulting pipeline has been individually stress-tested against three months of live tick data across six markets.
This manual documents what the indicator does, why its architecture reflects institutional development standards, how to configure it correctly, which assets and timeframes it is validated for, and — just as importantly — what it has not yet proven. Section 8 (Validation Status) should be read in full before any live use.
2. Core Methodology
2.1 The Edge Thesis
Institutional order flow requires liquidity to fill size. Retail stop-losses and breakout orders cluster at obvious levels — session highs and lows, the prior day's high/low, and equal highs/lows (double tops/bottoms). Smart money routinely engineers price through these levels to access that resting liquidity before reversing in the intended direction. The New York AM session (approx. 08:30–11:00 EST) is the highest-probability window for this behavior because it carries the volume and volatility to sweep multiple stacked pools — left over from the Asian and London sessions — in a single move, and because it frequently sets the day's true directional bias.
2.2 Market Logic
The core hypothesis is confluence-weighted: the more distinct liquidity pools are swept in the same raid, the larger the implied institutional fill, and the higher the probability that the subsequent reversal is genuine rather than a shallow stop-run that continues in the original direction. The indicator scores this numerically (0–4) rather than relying on a single swept level, and only arms a setup once a configurable minimum score is met.
2.3 The Multi-Timeframe Stack
Every arm decision passes through four independent timeframe roles, each with a distinct job:
• Bias (Daily + H4): Directional filter. A setup is only considered valid when the higher-timeframe structure agrees with the direction of the reversal being traded.
• Confirmation (H1): A secondary bias check, displayed for context and optionally enforced as a hard gate.
• Detection (M5): Where the actual liquidity sweep and Change-of-Character (CHoCH) / Market Structure Shift (MSS) are identified.
• Entry Refinement (M1): Where the retracement into a Fibonacci OTE zone and the final micro-structure confirmation are timed. The indicator must run on the M1 chart for this layer to function correctly.
3. Why This Is Institutional-Grade Engineering
“Institutional-grade” in this document refers to engineering methodology — the discipline and rigor applied to building and validating the system — not a claim about proven returns. Five design properties distinguish this build from a typical retail indicator:
3.1 Non-Repainting Architecture
All higher-timeframe structure is derived from confirmed pivots (a pivot only exists once price has moved a defined number of bars past it), and all cross-timeframe data requests use lookahead-disabled security calls. The Previous Day High/Low reference uses only the prior, fully-closed daily bar. Nothing in the signal path depends on a bar that has not yet closed at the relevant timeframe.
3.2 Liquidity Confluence Scoring
Rather than a binary “price broke a level” trigger, the indicator maintains independent swept/unswept state for four liquidity pool types per session and requires a configurable minimum score before arming. This directly encodes the edge thesis in Section 2.2 rather than trading every isolated sweep.
3.3 Tiered Signal Classification
Entries are not treated as pass/fail. A retracement into the 62–79% Fibonacci zone (“Premium”) sits close to the invalidation line and offers materially better risk/reward than a 50–61% retracement (“Standard”). The indicator labels each fired signal by tier so position sizing and conviction can be adjusted per trade rather than treating every alert identically.
3.4 ATR-Relative Adaptive Logic
Structural pivot tolerances, volatility filtering, and invalidation buffering are all expressed as multiples of Average True Range rather than fixed price distances. This allows the same configuration to operate correctly on a $4,100 gold contract and a 1.14 EUR/USD rate without per-instrument hand-tuning.
3.5 Built-In Diagnostic Transparency
The indicator ships with an optional Signal Funnel panel that records, in real time, exactly how many candidate setups pass each individual gate — session timing, bias resolution, direction match, confluence, volatility filter, zone-tap, and final confirmation — plus an ATR-normalized overshoot distribution for every setup that reaches a zone. This is the same instrumentation used internally during development to diagnose and correct three separate defects before this release. Institutional systems are audited, not trusted blindly; this indicator exposes its own internals so you can audit it too. Indicator

Virgin RTH Levels with Alerts# Virgin RTH Levels with Alerts
If you're looking to trade breakouts or breakdowns and/or fake-outs without having to be glued to the screens, or manually drawing the levels every day, then this is the script for you!
## What it does
This indicator automatically marks the Regular Trading Hours (09:30–16:00 New York) High and Low of every prior day — plus the prior day's Halfback (50% of the RTH range), prior week's and prior month's RTH High/Low, and the year-to-date RTH High/Low — and keeps each level on the chart only while it remains **virgin**.
A level is *virgin* if price has never traded back to it during a subsequent RTH session. These untested levels often act as magnets and reaction zones: old session extremes that were never revisited during regular hours tend to get sought out later, and the first touch frequently produces a tradeable reaction.
## The core rule: RTH touches clear, ETH touches alert
The defining feature of this script is how it separates the two sessions:
- **Touch during RTH (09:30–16:00 NY):** the level is considered tested. An alert fires and the level is removed from the chart (or optionally kept as a dotted line).
- **Touch during ETH (overnight/extended hours):** an alert fires so you know price is interacting with the level, but **virgin status is preserved** — only regular-session trade can "spend" a level.
This lets you run alerts around the clock on futures and extended-hours equities while keeping the level logic strictly RTH-based.
## Levels drawn
- **PDH / PDL** — each prior day's RTH High and Low (all of them, as far back as your lookback setting)
- **PD50** — prior day's Halfback: the midpoint of the prior day's RTH range
- **PWH / PWL** — prior weeks' RTH High and Low (thicker line by default)
- **PMH / PML** — prior months' RTH High and Low (thicker still)
- **YTDH / YTDL** — the year's running RTH High and Low (thickest). These update in place as new yearly extremes are made and reset at the new year.
Every line begins at the 09:30 open of the session that created it and extends right until it is touched during RTH. Optional labels show the level name and price.
## Alerts
Create one alert on the indicator and choose either:
- **"Any alert() function call"** — one alert covers everything, with dynamic messages naming the symbol, the exact level (e.g. "virgin PWH 7,554.00"), the session it was touched in, and whether the level was cleared or preserved.
- **A specific condition** — twelve individual conditions are available: any level (any session / RTH only / ETH only), Prior-Day High, Prior-Day Low, Prior-Day Halfback, Prior-Week High/Low, Prior-Month High/Low, and YTD High/Low. Messages are fully editable and support PulseWire placeholders such as {{ticker}} and {{close}}.
Alerts fire in **all** sessions, so overnight tags of untested levels reach you even though they do not clear the level.
## Settings
- **Session** — RTH window and timezone are configurable (defaults 09:30–16:00 America/New_York), so the script works on any instrument and any regular session definition.
- **Lookback** — how far back to keep levels: trading days for daily levels (minimum 1 = prior session only), weeks for weekly, months for monthly.
- **Visuals** — independent color, line width (1–10), and line style (solid/dashed/dotted) for each of the nine level types; label on/off and label size; toggles for weekly, monthly, YTD, and Halfback levels; option to keep touched levels as dotted lines instead of deleting them.
- **Alerts** — RTH and ETH touch alerts can be enabled independently.
## How it works
The script accumulates the High/Low of each RTH session bar-by-bar using the configured session and timezone (it does not rely on higher-timeframe requests, so levels match exactly what printed during regular hours on your chart's symbol). When a session, week, or month completes, its extremes are stored as level objects and drawn from that period's 09:30 anchor. On every bar, each stored level is checked against the bar's range: an RTH touch clears it, an ETH touch only alerts. Weekly levels finalize at the first bar of the new week, so on futures they are already in place for the Sunday evening open.
## Usage notes
- Use an **intraday** chart. For ETH alerts, enable extended hours on the chart; on an RTH-only chart the script still works, but ETH touches obviously cannot fire.
- If long lookbacks distort your price scale, right-click the price scale and enable **"Scale price chart only"** — the chart will fit the candles and ignore the lines.
- Works on futures, stocks, and ETFs; set the session/timezone to match your instrument's regular hours. Indicator

Strategy

ConfluXA multi-factor directional bias indicator that reads five independent market forces and points to a single, honest answer: where is the tape actually pointing right now?
Overview
Most traders stare at four or five indicators, argue with themselves, and take the trade anyway. ConfluX does the arguing for you. It reads trend, momentum, structure, volatility, and flow on the timeframe you're watching and one higher timeframe, aggregates them into a single directional score, and shows you when the tape is aligned — and when it's a coin flip.
The output is a compass needle that swings from -100 (strong bearish confluence) to +100 (strong bullish confluence), plus a background heatmap on the price chart and a confluence badge showing how many of the five components agree.
Use it to:
Filter your existing setups (only trade when the compass agrees)
Time entries against S/R zones (compass flips inside a demand zone = buy trigger)
Avoid chop (needle stuck between -30 and +30 = stand aside)
Confirm higher-timeframe bias without switching charts
The Five Components
Each component outputs a normalized -1 to +1 score and is weighted into the final compass reading.
1. Trend Alignment (weight: 30%)
EMA stack alignment — fast (default 20), medium (50), slow (200). Score is based on:
Whether all three EMAs are stacked in order (fast > medium > slow = full bull, opposite = full bear)
Price position relative to the medium EMA
Slope of the medium EMA
2. Momentum (weight: 25%)
Composite of RSI (default 14) and Squeeze Momentum (LazyBear-style, TTM-style, or your preferred implementation). Score reflects:
Direction: is RSI above/below its centerline and rising/falling?
Squeeze state: momentum expanding or contracting?
Divergence flag (optional): if enabled, negates score on confirmed divergences
3. Market Structure (weight: 20%)
Simple higher-highs/higher-lows (or LH/LL) detection on a swing lookback (default 10 bars). Score:
+1 for confirmed HH+HL sequence
-1 for confirmed LH+LL sequence
0 during range/consolidation
Bonus proximity boost when price is inside a marked S/R zone (optional input)
4. Volatility Regime (weight: 15%)
ATR (default 14) as a % of price, with Bollinger Band width as a cross-check. Score:
Expanding volatility in the direction of the trend = boost
Expanding volatility against trend = penalty (reversal risk)
Contracting volatility = damped signal (chop warning)
5. Flow (weight: 10%)
VWAP position plus volume delta approximation. Score:
Price above/below session VWAP
Volume above 20-bar average = confirmation
Volume divergence = penalty
Higher-Timeframe Confirmation
The compass reads all five components on the current chart timeframe and on one higher timeframe (default: 4× the current, so 15m chart pulls 1H, 1H pulls 4H, 4H pulls Daily). Higher-TF score gets a 40% weight blended into the final reading. This prevents you from scalping longs into a daily downtrend.
Visual Output
Compass needle (top-right panel, resizable): swings from -100 to +100 with color-graded arc (deep red → orange → yellow → light green → deep green)
Chart background tint: subtle green/red wash when confluence is > +50 or < -50
Confluence badge: "3/5 bullish" or "5/5 bearish" — shows how many components agree
Signal dots: optional plot when needle crosses through user-defined thresholds (default ±60)
HTF stripe: thin colored band at the top showing higher-TF bias
Inputs (Panel Groups)
Core
Timeframe multiplier for HTF (default: 4)
Bullish threshold (default: +60)
Bearish threshold (default: -60)
Chop threshold (default: ±30 → no signal)
Trend
Fast EMA (default: 20)
Medium EMA (default: 50)
Slow EMA (default: 200)
Slope lookback (default: 5 bars)
Momentum
RSI length (default: 14)
Squeeze length (default: 20)
Enable divergence penalty (default: on)
Structure
Swing lookback (default: 10)
Use manual S/R zones (default: off)
Volatility
ATR length (default: 14)
BB length / mult (default: 20 / 2.0)
Flow
VWAP anchor (session / week / month, default: session)
Volume MA length (default: 20)
Visuals
Show compass needle (on)
Show background tint (on)
Show signal dots (on)
Show HTF stripe (on)
Compass size (small / medium / large)
Color scheme (default / dark / colorblind)
Recommended Settings by Timeframe
The indicator ships with sensible defaults, but here are the tested presets. Save them as separate profiles inside the indicator's settings if you flip timeframes often.
15-Minute (Scalping / Intraday Execution)
Input Value
HTF multiplier 4 (pulls 1H)
Fast / Med / Slow EMA 9 / 21 / 55
RSI length 9
Squeeze length 14
Swing lookback 5
ATR length 10
Bull / Bear threshold ±50
Chop threshold ±25
VWAP anchor Session
Why: faster lookbacks respond in real time. Lower thresholds because 15m signals are noisier — you want to act on weaker confluence with tight stops. Session VWAP because you're trading the day, not the week.
1-Hour (Intraday Swing)
Input Value
HTF multiplier 4 (pulls 4H)
Fast / Med / Slow EMA 20 / 50 / 200
RSI length 14
Squeeze length 20
Swing lookback 8
ATR length 14
Bull / Bear threshold ±55
Chop threshold ±30
VWAP anchor Session
Why: this is the balanced middle. Defaults work well. Standard EMAs make the compass agree with what most other traders see, which is a feature, not a bug — it reads the crowd.
4-Hour (Swing Trading)
Input Value
HTF multiplier 6 (pulls Daily)
Fast / Med / Slow EMA 20 / 50 / 200
RSI length 14
Squeeze length 20
Swing lookback 10
ATR length 14
Bull / Bear threshold ±60
Chop threshold ±35
VWAP anchor Weekly
Why: higher thresholds because you're taking fewer, bigger trades — false signals cost more. Weekly VWAP because swing traders care where the week is anchored, not the session. HTF multiplier 6 pulls Daily bias directly.
Daily (Position Trading)
Input Value
HTF multiplier 5 (pulls Weekly)
Fast / Med / Slow EMA 21 / 50 / 200
RSI length 14
Squeeze length 20
Swing lookback 20
ATR length 20
Bull / Bear threshold ±65
Chop threshold ±40
VWAP anchor Monthly
Why: everything slower, everything more demanding. You want the compass to be genuinely convinced before you commit position-sized capital. Monthly VWAP captures institutional accumulation/distribution.
How to Trade It
Rule 1 — The Green/Red Light Only take longs when compass > +60 (or your custom threshold). Only take shorts when compass < -60. Between -30 and +30 = no trade, market is chopping.
Rule 2 — HTF Must Agree If HTF stripe disagrees with your compass reading, cut position size in half or skip the trade. HTF alignment is where the edge lives.
Rule 3 — Zones + Compass = Entries Wait for price to reach a marked support (for longs) or resistance (for shorts). Enter only when the compass flips into your direction at the zone. This is the highest-probability setup.
Rule 4 — Exit on Compass Divergence If you're long and the compass rolls under +30 while price is still making highs, take profit or trail your stop. The confluence is fading before price is.
Rule 5 — Chop Filter When needle sits in ±30 for 20+ bars, close directional trades and switch to range strategies (or step away).
Best Use Cases
Intraday scalpers: 15m preset, threshold ±50, tight stops at 15m ATR
Swing traders: 4H preset, wait for zone confluence, position for 3-10 day holds
Position traders: Daily preset, only act when compass hits ±80+, size for weeks-to-months
Multi-TF traders: keep 4H compass on one screen, 15m on another — take intraday trades only when both agree
What It Won't Do
Predict news / event-driven gaps
Work well on illiquid or thinly-traded symbols
Replace stop losses or position sizing
Save you from over-trading if you ignore Rule 5
ConfluX is a filter, not a crystal ball. Its edge is refusing to give you a signal when the market genuinely has no direction — a discipline most indicators (and most traders) lack.
Version Notes
v1.0: Initial release. Five components, HTF confirmation, compass needle visual, four TF presets.
Disclaimer
This indicator is a technical analysis tool and does not constitute financial advice. Past performance does not guarantee future results. Always use with proper risk management. Test on your instrument and timeframe before committing real capital.
Confluence Compass — because the market only rewards conviction when the conviction is earned. Indicator

Test Indicator//@version=6
indicator(“Multi-Indicator Buy Signal”, shorttitle=“MIBS”, overlay=true)
// USER SETTINGS
fastEmaLength = input.int(20, “Fast EMA Length”, minval=1, group=“Trend”)
slowEmaLength = input.int(50, “Slow EMA Length”, minval=2, group=“Trend”)
longEmaLength = input.int(200, “Long-Term EMA Length”, minval=2, group=“Trend”)
useLongFilter = input.bool(true, “Require Price Above Long-Term EMA”, group=“Trend”)
rsiLength = input.int(14, “RSI Length”, minval=2, group=“Momentum”)
rsiMinimum = input.float(50.0, “Minimum RSI”, minval=0, maxval=100, group=“Momentum”)
rsiMaximum = input.float(70.0, “Maximum RSI”, minval=0, maxval=100, group=“Momentum”)
macdFast = input.int(12, “MACD Fast Length”, minval=1, group=“MACD”)
macdSlow = input.int(26, “MACD Slow Length”, minval=2, group=“MACD”)
macdSignal = input.int(9, “MACD Signal Length”, minval=1, group=“MACD”)
volumeLength = input.int(20, “Average Volume Length”, minval=1, group=“Volume”)
volumeMultiplier = input.float(1.10, “Required Volume Multiplier”, minval=0.1, step=0.05, group=“Volume”)
diLength = input.int(14, “DI Length”, minval=1, group=“Trend Strength”)
adxSmoothing = input.int(14, “ADX Smoothing”, minval=1, group=“Trend Strength”)
minimumAdx = input.float(20.0, “Minimum ADX”, minval=0, step=1, group=“Trend Strength”)
minimumScore = input.int(4, “Minimum Score for Buy Signal”, minval=1, maxval=5, group=“Signal”)
cooldownBars = input.int(10, “Bars Between Buy Signals”, minval=0, group=“Signal”)
atrLength = input.int(14, “ATR Length”, minval=1, group=“Risk Levels”)
stopAtrMultiplier = input.float(2.0, “Stop-Loss ATR Multiplier”, minval=0.1, step=0.1, group=“Risk Levels”)
rewardRiskRatio = input.float(2.0, “Reward-to-Risk Ratio”, minval=0.1, step=0.1, group=“Risk Levels”)
showRiskLevels = input.bool(true, “Show Suggested Risk Levels”, group=“Risk Levels”)
// CALCULATIONS
fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)
longEma = ta.ema(close, longEmaLength)
rsiValue = ta.rsi(close, rsiLength)
= ta.macd(close, macdFast, macdSlow, macdSignal)
averageVolume = ta.sma(volume, volumeLength)
= ta.dmi(diLength, adxSmoothing)
atrValue = ta.atr(atrLength)
// BUY CONDITIONS
emaCondition = fastEma > slowEma and close > fastEma
rsiCondition = rsiValue >= rsiMinimum and rsiValue <= rsiMaximum
macdCondition = macdLine > macdSignalLine and macdHistogram > 0
volumeCondition = not na(volume) and not na(averageVolume) and volume > averageVolume * volumeMultiplier
adxCondition = adxValue >= minimumAdx and plusDI > minusDI
longTrendCondition = not useLongFilter or close > longEma
// SCORE
int score = 0
score += emaCondition ? 1 : 0
score += rsiCondition ? 1 : 0
score += macdCondition ? 1 : 0
score += volumeCondition ? 1 : 0
score += adxCondition ? 1 : 0
qualifiedSetup = score >= minimumScore and longTrendCondition
newSetup = qualifiedSetup and not qualifiedSetup
var int lastSignalBar = na
cooldownComplete = na(lastSignalBar) or bar_index - lastSignalBar > cooldownBars
buySignal = newSetup and cooldownComplete and barstate.isconfirmed
if buySignal
lastSignalBar := bar_index
// RISK LEVELS
riskDistance = atrValue * stopAtrMultiplier
suggestedEntry = close
suggestedStop = suggestedEntry - riskDistance
suggestedTarget = suggestedEntry + riskDistance * rewardRiskRatio
var float activeEntry = na
var float activeStop = na
var float activeTarget = na
if buySignal
activeEntry := suggestedEntry
activeStop := suggestedStop
activeTarget := suggestedTarget
tradeStopped = not na(activeStop) and low <= activeStop
tradeTargetHit = not na(activeTarget) and high >= activeTarget
if tradeStopped or tradeTargetHit
activeEntry := na
activeStop := na
activeTarget := na
// CHART DISPLAY
plot(fastEma, “Fast EMA”, color=color.aqua, linewidth=2)
plot(slowEma, “Slow EMA”, color=color.orange, linewidth=2)
plot(useLongFilter ? longEma : na, “Long-Term EMA”, color=color.gray, linewidth=2)
plotshape(buySignal, title=“Potential Buy Signal”, style=shape.labelup, location=location.belowbar, color=color.green, text=“BUY”, textcolor=color.white, size=size.small)
plot(showRiskLevels ? activeEntry : na, “Suggested Entry”, color=color.blue, linewidth=2, style=plot.style_linebr)
plot(showRiskLevels ? activeStop : na, “Suggested Stop”, color=color.red, linewidth=2, style=plot.style_linebr)
plot(showRiskLevels ? activeTarget : na, “Suggested Target”, color=color.green, linewidth=2, style=plot.style_linebr)
bgcolor(qualifiedSetup ? color.new(color.green, 90) : na, title=“Qualified Setup Background”)
plot(score, “Buy Score”, display=display.data_window)
// ALERT
alertcondition(buySignal, title=“Potential Buy Signal”, message=“Potential BUY signal on {{ticker}} at {{close}}. Review the chart and risk levels before trading.”) Indicator

Indicator

Indicator

Indicator

PO3 Matrix+ (M1D)PO3 Matrix+ (M1D)
Projects the recent candles of a chosen higher timeframe as a compact candle matrix beside live price, then marks the liquidity events, structure and PD array context that develop on that timeframe — taken swings, structure shifts, fair value gaps, previous-day levels, and cross-market divergence. The intent is to read higher-timeframe conditions without leaving the execution chart, and to keep every drawn element sourced from the same data so nothing drifts out of step.
── HOW IT IS BUILT ──
The selected higher timeframe is pulled once, as a snapshot of its recent candles, and every element is drawn on the last bar from that one source. Dividers, high/low rails, quadrants, sweeps, gaps and structure all read the same array, so they cannot disagree with each other. The forming candle is accumulated from chart bars, so it updates live without repainting its history.
Level lines are origin-anchored: each one begins at the candle that actually printed the extreme, not at the bar where the level happened to be calculated. Derived midlines (equilibrium, the inner quartiles) have no originating candle, so they run from the period open instead.
── WHAT IT DRAWS ──
PO3 CANDLE MATRIX — the selected higher timeframe's recent candles, projected to the right of price with time dividers on the live chart and a per-candle high/low rail. A countdown above the block shows the timeframe in use and the time left on the forming candle. The PD array context is mirrored onto the block at its own horizontal scale, and each event carries a compact direction marker there, so the block reads as a standalone view of what that timeframe is showing.
CANDLE EQUILIBRIUM — the true 50 percent of each completed candle in the block, as a reference the following candle can retrace into.
CURRENT-RANGE QUADRANTS — the forming candle's high, 75 percent, equilibrium, 25 percent and low projected across price as a live premium and discount reference.
LIQUIDITY SWEEPS — only swing liquidity is marked. A level qualifies when it is a swing high or swing low that a later candle raids and then closes back inside: wick beyond, body back within. A candle that simply trades past its neighbour is not a sweep and is not marked.
SMT DIVERGENCE — the correlated market is read on the same higher-timeframe grid, so the two align candle for candle. A SMT is marked when your chart takes a swing but the peer fails to take its matching swing, meaning the move lacked cross-market participation. The peer auto-pairs across equity indices, precious metals and BTC against ETH, in matching contract sizes, and can be overridden with any symbol. It deliberately does not guess a peer for markets where the correlation is too loose for a divergence to mean anything; with no pairing, no SMT is drawn. A SMT is invalidated in real time once price trades back through the extreme that formed it, and is then either faded or removed.
MARKET STRUCTURE SHIFT — a true swing broken by a body close. A swing here means a level price actually turned at: a swing low sits at the change from a down candle to an up candle, a swing high at the change from an up candle to a down one. A low that merely sits under its neighbours while price kept running the same way is not a swing and is never used, which is what separates this from a plain pivot break. The first candle to CLOSE beyond the swing's full wick — body, not wick — marks the shift; later closes past the same level are continuation and are not marked. An optional setting requires a liquidity raid to precede the shift, for the classic sweep-then-shift sequencing: a buyside raid before a bearish shift, a sellside raid before a bullish one.
FAIR VALUE GAPS (BISI+ / SIBI-) — detected on the higher-timeframe snapshot, so they are multi-timeframe by construction. Only fully formed gaps are drawn; a gap still forming on the live candle is ignored until it completes. Each zone moves through four states: live, active, inverted, or spent. A gap closed clean through has inverted — the old support is now resistance, or the reverse — and it stays inverted, flipped and redrawn in the inversion colour, for as long as that break holds. No retest is required, because a retest is where the level gets traded rather than what makes it valid. Closing back through in the original direction takes the gap back; the zone is spent, and fades but stays on the chart as history rather than disappearing.
PREVIOUS-DAY LEVELS — previous high, low and equilibrium, drawn from session start and dimming once taken. Three definitions of the day are offered because they genuinely differ on futures: the symbol's own daily candle, midnight to midnight New York, or the regular-hours session only. Regular hours are taken from the instrument itself rather than a fixed clock, so index futures, metals and everything else each use their own session. The label carries the source date, so a level that is several days old after a weekend reads as intentional.
CONTEXT TABLE — day, AMD phase, forming-candle bias, premium or discount, higher-timeframe direction, last sweep, market structure shift, fair value gap, previous-day status, and a session-close countdown. SMT is drawn on the chart and the block but does not have its own table row.
── SETTINGS WORTH KNOWING ──
The higher timeframe must be above the chart timeframe; the script says so on the chart if it is not.
Session handling is read from the instrument, not hardcoded, so the regular-hours option and the session countdown are correct on index futures, metals and anything else without configuration. Instruments that trade around the clock have no regular session, and the countdown says so rather than inventing one.
Every drawn element can be turned on or off on its own, and the chart labels and the compact markers on the projected block are controlled separately, so the block can be kept clean while the chart stays annotated. Label size, colour, vertical clearance, which side of a line a label sits on, and the marker glyph style are all adjustable.
Fair value gap sensitivity is measured against the average range of the visible higher-timeframe candles, so it scales per instrument rather than being a fixed distance. Raise the minimum height and displacement to keep only the larger gaps.
Market structure shift has an optional displacement requirement, off by default. Turn it on if you want the shifting candle to also expand or leave a gap, which reduces how often it marks.
Sweeps, gaps and structure marks each have a maximum shown, so the chart stays contained rather than accumulating history indefinitely. Gap zones also declutter against each other: two translucent zones stacked on the same prices multiply into a solid block, so a zone overlapping one already drawn beyond an adjustable tolerance is skipped and the most recent gap in that price band is the one kept. The same idea applies to stacking: two same-direction zones separated by only a thin seam read as one inefficiency wearing two boxes, so the older one is removed and the newest kept. Zones facing opposite directions are never removed for sitting close together — they are genuinely different reads.
── NOTES ──
Detection runs on completed higher-timeframe candles. The forming candle updates live, but a gap or a structure mark is only considered once the candles that define it have closed.
SMT is not available in bar replay. Replay rewinds the chart symbol only, so the correlated symbol keeps returning its live data and the two grids no longer line up; the table reports Misaligned and no divergence is drawn. That is the alignment guard working, not a fault. Every other feature reads from the chart symbol and replays normally.
Everything drawn is context. There are no entry or exit instructions, no directional calls, and no performance claims of any kind. It reports what has happened on the higher timeframe.
This is a market-analysis tool, not financial advice. Past market behaviour does not indicate future results. Test any tool thoroughly and trade your own plan.
Indicator

Indicator

Liquidity Sweep Reversal [JOAT]═══ LIQUIDITY SWEEP REVERSAL ═══
Liquidity Sweep Reversal hunts the stop-run. Price wicks beyond a prior swing high or low to grab resting liquidity, then snaps back inside — and that reclaim is where the reversal often begins. This tool tracks those levels, validates the sweep, and frames a complete trade with stop, targets and live outcome stats. 🎯
▎ WHAT IT DOES
It maps recent swing highs and swing lows as liquidity pools, watches for a candle to pierce one and then close back on the correct side (the reclaim ), and prints a clean BUY or SELL label. Every valid signal is turned into a structured trade: an ATR-based stop beyond the swept wick and three R-multiple targets, all tracked to resolution on a self-scoring dashboard.
▎ HOW IT WORKS
• Liquidity mapping — Confirmed pivot highs and lows (lookback set by Swing Pivot Lookback ) are stored as active levels per side, capped in count and aged out after a maximum bar age so only relevant pools remain.
• Sweep + reclaim — A bullish setup needs the bar to wick below a tracked swing low, then close back above it (sell-side liquidity grabbed). A bearish setup wicks above a swing high, then closes back below it. The reclaim can complete on the sweep bar or within the Reclaim Window you allow.
• Wick-depth gate — The penetration beyond the level is measured in ATR. Too shallow (noise) or too deep beyond the Max Wick cap (a genuine breakout) is rejected, so only clean stop-hunts qualify.
• Confluence filters — Optional volume-spike confirmation, HTF trend alignment (BUY only above a higher-timeframe EMA, SELL only below), directional restriction, dual-side sweep blocking on wide bars, and a signal cooldown all thin the feed.
• Trade construction — Entry is the reclaim close. The stop sits beyond the swept wick by an ATR buffer, then is clamped between a min-risk floor and max-risk cap. That risk (1R) projects TP1 / TP2 / TP3 at your chosen R multiples.
• Outcome engine — Each trade is followed bar by bar. Same-bar stop-vs-target conflicts resolve by your chosen priority, and trades that never reach TP3 or stop are flattened at a bar timeout — every result feeds the stats.
▎ HOW TO USE IT
• A BUY pill under price marks a bullish reclaim; a SELL pill above price marks a bearish one. The dotted level line and SSL / BSL SWEEP tag show exactly which liquidity pool was raided.
• The green target zone spans entry to TP3; the red risk zone spans entry to stop. Lines and left-side labels print entry, SL and each TP with its R value.
• On close, a result label reports the outcome — TP3 , a protected partial TP , SL , or a TIME exit — with the realised R.
• Treat signals as a structured framework, not a black box: strongest reversals tend to appear at obvious swing extremes, with HTF alignment and a volume spike behind them.
▎ KEY SETTINGS
• Engine — pivot lookback, reclaim window, ATR length, tracked levels per side, level age, and signal direction (Both / Long / Short).
• Filters — min/max wick depth, volume-spike confirmation, HTF timeframe + EMA, dual-side blocking, and cooldown bars.
• Trade Model — stop buffer, min/max risk bounds, TP1/TP2/TP3 in R, same-bar priority, trade timeout, and drawn-trade history depth.
• Visuals — toggles for markers, sweep lines, zones, level labels, result labels, optional signal-candle tint, and a session VWAP ± σ band .
▎ DASHBOARD
A compact panel reports live state — Status (Waiting / Armed / Active), current active trade side, last sweep and its level — alongside performance: sweeps detected, signals taken, closed count, win rate , profit factor , average R , bull vs bear win%, current and max win/loss streak , and an optional TP1/TP2/TP3 vs SL/Timeout breakdown. Position and text size are configurable.
▎ ALERTS
• Bullish Sweep (BUY) and Bearish Sweep (SELL) on confirmed entries.
• TP3 Hit , Partial TP Hit (protected exit), and SL Hit on trade resolution.
▎ NOTES
• Works on all timeframes and all assets — instruments without volume simply pass the volume filter.
• Signals confirm on the reclaim close , so a printed BUY/SELL marker does not move once the bar closes.
• Every visual has a toggle — turn off zones, lines, labels or the dashboard for a minimalist chart.
• The on-chart statistics summarise historical signals only and are illustrative, not a forecast.
For research and education only. This is not financial advice. No indicator can predict the future, and past behaviour does not guarantee future results. Always manage your own risk.
Made with passion by JackOfAllTrades ⚡ Indicator

Indicator

Indicator

Indicator
