EMA + RSI + Stochastic SignalEMA + RSI + Stochastic Signal (Graded Confluence)
Overview
This indicator combines a multi-EMA trend framework, RSI momentum, and a Stochastic crossover trigger into a single, graded signal system. Instead of just firing a triangle, every signal is scored A / B / C based on how much confluence lines up behind it — and a hover tooltip shows you exactly which conditions passed or failed. Optional Heikin-Ashi smoothing helps filter noise.
How signals are generated
A BUY requires all three core conditions:
Price breaks above the EMA High band
RSI > 50 (bullish momentum)
Stochastic %K crosses up (and is not yet overbought)
A SELL is the mirror image:
Price breaks below the EMA Low band
RSI < 50 (bearish momentum)
Stochastic %K crosses down (and is not yet oversold)
Confluence grading
Once a core signal fires, three extra factors are checked to grade signal quality:
EMA trend stack (EMA1 > EMA2 > EMA3 for longs, inverse for shorts)
Volume surge vs its moving average
2nd-candle confirmation in the signal's direction
Grade: A = all 3 confirmed (full confluence), B = 2 (partial), C = 1 or fewer (weak). Hover any signal label to see the full ✓/✗ checklist.
On-chart tools
Graded BUY/SELL labels with detailed hover tooltips
Live info table (RSI, %K, %D, Stoch cross status, current signal) — position selectable
Signal background highlighting
Optional Heikin-Ashi candle overlay
Alerts
Dynamic alert() calls deliver the full breakdown — ticker, price, timeframe, grade, and the pass/fail checklist — straight to your pop-up/webhook. Classic alertcondition() BUY/SELL alerts are also included. To use the detailed version, create an alert and choose "Any alert() function call."
Settings
EMA lengths & colors (trend + High/Low bands)
RSI length and source
Stochastic %K/%D/smoothing and OB/OS levels
Heikin-Ashi toggle & display
Volume MA length and surge multiplier
Table location
Notes
This is an analysis/education tool, not financial advice. Signals repaint intra-bar; wait for bar close for confirmation, and always combine with your own risk management. Best used with trend and higher-timeframe context. Indicator

Indicator

Indicator

FVG ChannelThis script is a modified and expanded derivative of “FVG Channel ” by LuxAlgo. The original FVG detection, active-level aggregation, close-based mitigation, smoothed channel concept, and internal channel-level framework were adapted from that work. This version adds confirmed-bar processing, capped FVG storage, normalized and double-smoothed boundaries, recovery-based signal logic, configurable overextension requirements, signal cooldowns, optional volume confirmation, separate standard and Super classifications, alerts, and simplified historical target/stop measurements. The original work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International licence, and this modified version is distributed under the same licence. It is intended for noncommercial use, and changes from the original implementation have been clearly identified.
### Overview
FVG Channel converts active Fair Value Gap reference levels into a smoothed adaptive price channel.
The script identifies confirmed bullish and bearish FVG structures, stores one reference level from each active gap, removes levels after close-based mitigation, and averages the remaining bullish and bearish references.
These averages are smoothed twice to create the channel boundaries. The channel also includes three configurable internal levels, confirmed recovery signals, optional volume confirmation, standard and Super signal classifications, alerts, target and stop reference lines, and simplified historical outcome tables.
The indicator is designed to help users examine:
* areas where multiple unmitigated FVG references are concentrated;
* price overextension beyond the adaptive channel;
* confirmed recovery back inside the channel;
* stronger wick-extension conditions;
* historical target and stop outcomes under user-selected settings.
The script is intended for standard candlestick or bar charts. It does not predict future prices and does not provide automatic trade instructions.
## Fair Value Gap detection
A bullish FVG is identified when:
* the current low is above the high from two bars earlier;
* the middle candle closes above that earlier high;
* the current chart bar is confirmed.
For each bullish FVG, the script stores the high from two bars earlier as its reference level.
A bearish FVG is identified when:
* the current high is below the low from two bars earlier;
* the middle candle closes below that earlier low;
* the current chart bar is confirmed.
For each bearish FVG, the script stores the low from two bars earlier as its reference level.
The script stores one reference level from each detected FVG. It does not draw or store the complete upper and lower boundaries of every gap zone.
## FVG mitigation
Bullish and bearish FVG references remain active until they are mitigated by a confirmed close.
A bullish FVG reference is removed when price closes below its stored level.
A bearish FVG reference is removed when price closes above its stored level.
Wick contact alone does not remove an FVG reference.
This close-based method is intended to reduce the effect of temporary wick penetration, but it can also keep a level active after price has partially traded through the original gap area.
## Maximum stored FVG levels
The Maximum Stored FVG Levels setting limits the number of bullish and bearish references stored by the script.
When the selected limit is exceeded, the oldest stored reference is removed.
This prevents the arrays from expanding indefinitely on long chart histories.
A larger limit allows more historical FVG references to contribute to the channel but may increase processing requirements.
## Adaptive channel calculation
The active bullish FVG references are averaged.
The active bearish FVG references are averaged separately.
Each average then passes through two consecutive simple moving-average smoothing calculations.
The final channel boundaries are normalized so that:
* the higher smoothed reference becomes the upper boundary;
* the lower smoothed reference becomes the lower boundary.
This prevents the channel boundaries from becoming visually reversed.
When no active bullish or bearish FVG reference is available, the script temporarily substitutes a simple moving average of price for that side of the calculation.
The resulting channel is therefore influenced by active FVG structure when available and by smoothed price when no active reference exists.
## Smoothing Length
The Smoothing Length controls both smoothing passes applied to the FVG reference averages.
A shorter length:
* reacts more quickly to changes in the active FVG structure;
* produces a more responsive channel;
* may create more frequent recovery conditions;
* can be more sensitive to short-term movement.
A longer length:
* creates smoother boundaries;
* reacts more slowly;
* emphasizes broader FVG concentration;
* may produce fewer signals.
The same length is used for both smoothing passes.
## Upper and lower boundaries
The red upper boundary represents the higher of the two smoothed FVG reference calculations.
The green lower boundary represents the lower of the two smoothed calculations.
The boundaries are not traditional support and resistance lines and should not be treated as guaranteed reversal levels.
They represent smoothed averages derived from active FVG references and the price-SMA fallback logic.
## Internal channel levels
The script calculates three configurable levels between the lower and upper boundaries.
The default values are:
* Internal Level 1: 0.236;
* Internal Level 2: 0.500;
* Internal Level 3: 0.786.
Each value represents a proportional position within the current channel range.
For example, Internal Level 2 at 0.500 represents the midpoint between the lower and upper boundaries.
The levels must satisfy:
* Level 1 is below Level 2;
* Level 2 is below Level 3.
All internal-level settings are limited to values between 0 and 1.
The script produces an error when the levels are entered in an invalid order.
## Confirmed recovery signals
The signal system looks for price to remain outside the channel and then recover back inside it.
Signals are confirmed only after the chart bar closes.
### Bullish recovery
A bullish recovery condition requires:
* price to close below the lower boundary for the selected minimum number of consecutive bars;
* price to subsequently cross and close back above the lower boundary;
* the bullish signal cooldown to have expired;
* the optional volume condition to pass.
A green BULL label marks a standard bullish recovery.
This condition indicates that price remained below the adaptive channel and then recovered above its lower boundary.
It does not guarantee that price will continue higher.
### Bearish recovery
A bearish recovery condition requires:
* price to close above the upper boundary for the selected minimum number of consecutive bars;
* price to subsequently cross and close back below the upper boundary;
* the bearish signal cooldown to have expired;
* the optional volume condition to pass.
A red BEAR label marks a standard bearish recovery.
This condition indicates that price remained above the adaptive channel and then recovered below its upper boundary.
It does not guarantee that price will continue lower.
## Minimum Closes Outside Channel
This setting controls how many consecutive confirmed closes must occur beyond a channel boundary before a recovery signal becomes eligible.
For a bullish condition, the required closes must occur below the lower boundary.
For a bearish condition, the required closes must occur above the upper boundary.
A smaller value:
* allows faster recovery signals;
* produces more frequent conditions;
* may include shallower overextensions.
A larger value:
* requires price to remain outside the channel longer;
* produces fewer conditions;
* focuses on more persistent overextensions.
## Standard and Super signals
Each recovery is classified as either a standard signal or a Super signal.
The classifications are mutually exclusive. A Super signal does not also produce a standard label or standard alert.
### Super Bull recovery
A bullish recovery becomes a Super Bull condition when the signal candle’s lower wick extends beyond the lower boundary by at least the configured Super Signal Wick Extension percentage.
A lime SBULL label identifies this condition.
### Super Bear recovery
A bearish recovery becomes a Super Bear condition when the signal candle’s upper wick extends beyond the upper boundary by at least the configured Super Signal Wick Extension percentage.
An orange SBEAR label identifies this condition.
The Super classification measures wick distance beyond the relevant boundary.
It does not independently measure trend strength, probability, expected return, or future reversal quality.
A higher Super threshold creates fewer Super classifications.
A lower threshold creates more frequent Super classifications.
## Signal cooldown
The Signal Cooldown setting controls the minimum number of chart bars required between signals of the same direction.
Bullish and bearish cooldowns are tracked independently.
For example, a bullish signal does not reset the bearish cooldown.
A value of zero allows another same-direction signal as soon as all other requirements are satisfied.
The cooldown reduces repeated signals but does not change the underlying FVG channel.
## Volume confirmation
Volume confirmation is optional.
When enabled, a recovery signal requires current reported volume to be greater than:
* average volume over the selected Volume Lookback;
* multiplied by the Volume Confirmation Multiplier.
A multiplier of 1.0 requires volume to exceed its average.
A multiplier above 1.0 requires comparatively higher volume.
A multiplier below 1.0 creates a less restrictive condition.
Volume information differs between markets and data providers. Some symbols provide centralized transaction volume, while others may provide exchange-specific or tick-volume data.
The volume condition should therefore be interpreted according to the selected market.
## Signal-bar background
Optional background highlighting can be enabled for confirmed signal bars.
Separate colours are available for:
* Bull signals;
* Super Bull signals;
* Bear signals;
* Super Bear signals.
The background highlight is visual only and does not change the signal calculations.
## Signal labels
The indicator displays four possible labels:
* BULL: standard bullish recovery;
* SBULL: Super bullish recovery;
* BEAR: standard bearish recovery;
* SBEAR: Super bearish recovery.
The Signal Offset setting controls the vertical distance between each label and the signal candle.
Labels are plotted for every confirmed signal, even when another historical outcome measurement is already active.
## Alerts
Separate alerts are available for:
* Bull Recovery;
* Super Bull Recovery;
* Bear Recovery;
* Super Bear Recovery.
Standard and Super alerts are exclusive.
Alerts are based on confirmed chart bars, so a signal is not finalized until the bar closes.
When creating a PulseWire alert, using Once Per Bar Close is recommended for consistency with the script’s confirmed-bar logic.
## Historical target and stop measurements
The Historical Outcome Settings provide simplified target and stop measurements for confirmed signals.
This system is not a full PulseWire strategy backtest.
Only one unresolved outcome can be tracked at a time across all four signal types.
Signals can still appear while another outcome is active, but those later signals will not begin additional outcome measurements.
## Target Mode
The available Target Modes are:
* Disabled;
* Percentage;
* Internal Level 1;
* Internal Level 2;
* Internal Level 3.
### Disabled
Historical outcome tracking is turned off.
Signal labels and alerts continue to operate.
### Percentage
The target is calculated as a percentage of the signal bar’s closing price.
Separate target settings are available for standard and Super signals.
### Internal Level targets
The selected internal channel level is used as the target only when it lies beyond the signal close in the expected direction.
For a bullish signal, the internal target must be above the signal close.
For a bearish signal, the internal target must be below the signal close.
When the selected internal level is not positioned in the required direction, no historical outcome is started for that signal.
This prevents the script from creating an invalid target behind the recorded entry price.
## Standard and Super target settings
When Percentage mode is selected:
* Standard Target is used for BULL and BEAR signals;
* Super Target is used for SBULL and SBEAR signals;
* Standard Stop is used for BULL and BEAR signals;
* Super Stop is used for SBULL and SBEAR signals.
Targets and stops are measured from the confirmed signal bar’s closing price.
They are research references only and are not automatically submitted as orders.
## Outcome evaluation
The signal bar’s closing price becomes the recorded reference price.
Target and stop evaluation begins on the following chart bar.
The signal candle’s earlier high and low are therefore not used to determine the outcome after the entry has been recorded at its close.
For bullish measurements:
* the target is reached when a later high touches or exceeds the target;
* the stop is reached when a later low touches or falls below the stop.
For bearish measurements:
* the target is reached when a later low touches or falls below the target;
* the stop is reached when a later high touches or exceeds the stop.
## Target and stop on the same bar
When both the target and stop are touched during the same evaluation bar, the script records a stop outcome.
This conservative rule is used because the script cannot determine the exact intrabar order from standard chart-bar data.
A lower-timeframe price path is not reconstructed.
## Target and stop reference lines
The most recently created target and stop levels can be displayed temporarily on the chart.
The Target/Stop Line Length controls how many bars these references remain visible after they are created.
The display duration does not control how long the historical outcome remains active.
An outcome continues to be evaluated until its target or stop is reached, even after the visual lines disappear.
## Standard outcome table
The standard table reports completed BULL and BEAR measurements.
The format is:
* T: target outcomes;
* S: stop outcomes;
* percentage: target outcomes divided by completed target and stop outcomes.
For example:
BULL T/S: 12/8 (60%)
This means that 12 completed bullish measurements reached their targets and 8 reached their stops.
## Super outcome table
The Super table reports the same measurements separately for SBULL and SBEAR signals.
Super results are not combined with standard signal results.
This allows users to compare the script’s wick-extension classification with the standard recovery classification.
## Meaning of the table percentages
The percentages are simplified historical target-outcome ratios.
They are not:
* guaranteed win rates;
* expected future returns;
* probability forecasts;
* full strategy results;
* proof of profitability.
The calculations do not account for:
* commissions;
* slippage;
* spread;
* liquidity;
* position sizing;
* portfolio equity;
* order rejection;
* realistic execution;
* overlapping positions;
* complete intrabar sequencing.
Only one unresolved measurement is tracked at a time, so not every displayed signal is represented in the tables.
Results depend on the selected:
* symbol;
* timeframe;
* available chart history;
* FVG structure;
* smoothing length;
* minimum outside-bar requirement;
* cooldown;
* volume settings;
* Super threshold;
* target mode;
* target settings;
* stop settings.
Historical results do not imply future performance.
# How to Use
## 1. Use a standard chart
Apply FVG Channel to a standard candlestick or bar chart.
Avoid evaluating signal performance on synthetic chart types such as:
* Heikin Ashi;
* Renko;
* Kagi;
* Point and Figure;
* Range charts.
Synthetic chart prices may not represent directly tradable market prices.
## 2. Begin with the default channel settings
The default Smoothing Length is 20.
This gives the active bullish and bearish FVG reference averages two smoothing passes of 20 bars each.
Observe how the channel behaves on the selected symbol before reducing or increasing the setting.
Use a shorter length when a faster channel is preferred.
Use a longer length when a slower and smoother structure is preferred.
## 3. Read the channel position
Use the upper and lower boundaries to understand where price is trading relative to the smoothed active FVG structure.
Price inside the channel indicates that it is between the two adaptive boundaries.
Price below the lower boundary indicates a lower-channel overextension.
Price above the upper boundary indicates an upper-channel overextension.
An overextension is not a signal by itself.
The script waits for a confirmed recovery back inside the channel.
## 4. Wait for the required outside closes
The default Minimum Closes Outside Channel setting is 5.
For a bullish setup, price must close below the lower boundary for at least five consecutive confirmed bars.
For a bearish setup, price must close above the upper boundary for at least five consecutive confirmed bars.
Changing this value adjusts how persistent the overextension must be.
## 5. Wait for the confirmed recovery
After the required outside closes:
* a bullish condition requires price to cross and close back above the lower boundary;
* a bearish condition requires price to cross and close back below the upper boundary.
The signal is confirmed only when the candle closes.
A temporary intrabar move through the boundary does not create a finalized signal unless the close satisfies the condition.
## 6. Distinguish standard and Super signals
Use the signal labels to identify the classification.
* BULL is a standard bullish recovery.
* SBULL is a bullish recovery with sufficient lower-wick extension.
* BEAR is a standard bearish recovery.
* SBEAR is a bearish recovery with sufficient upper-wick extension.
A Super signal is not automatically better than a standard signal.
It only means that the wick-extension threshold was reached.
## 7. Adjust the Super threshold carefully
The default Super Signal Wick Extension is 15%.
This percentage is measured relative to the relevant channel-boundary price.
A higher value makes Super signals rarer.
A lower value makes them more common.
Review the scale and volatility characteristics of the selected market before changing this setting significantly.
## 8. Use volume confirmation when appropriate
Enable Volume Confirmation when signals should require reported volume above a selected threshold.
A practical starting point is:
* Volume Lookback: 20;
* Volume Confirmation Multiplier: 1.0.
This requires current volume to be above its 20-bar average.
Increase the multiplier for a stricter requirement.
Volume confirmation may be more useful on instruments with reliable volume data.
## 9. Review the internal levels
The internal channel levels can be used as visual reference points within the adaptive range.
The default levels represent approximately:
* 23.6%;
* 50%;
* 78.6%.
They can help show where price is positioned inside the current channel.
They are not guaranteed support, resistance, or profit targets.
## 10. Review wider market context
Before interpreting a recovery label, examine:
* the broader trend;
* nearby support and resistance;
* volatility;
* channel direction;
* channel width;
* recent price structure;
* active session conditions;
* available volume quality;
* major news or event risk.
A recovery signal against a strong directional trend can fail.
The indicator should not be used as the only reason for a market decision.
## 11. Configure the signal cooldown
The default cooldown is 50 bars for signals of the same direction.
Reduce the setting when more frequent same-direction signals are desired.
Increase it when repeated signals should be restricted.
Bullish and bearish cooldowns operate independently.
## 12. Configure historical measurements
Select Percentage mode for simple percentage-based target and stop research.
A practical starting configuration is:
* Standard Target: 1%;
* Standard Stop: 1%;
* Super Target: 2%;
* Super Stop: 2%.
These are examples only and are not recommended settings for every market or timeframe.
Select an Internal Level target when the channel’s own internal structure should be used.
Remember that a measurement is skipped when the chosen level is not beyond the signal close in the correct direction.
## 13. Read the target and stop lines
When a valid outcome starts:
* the green line represents the target;
* the red line represents the stop.
The lines remain visible for the selected number of bars.
Their disappearance does not necessarily mean the outcome has been resolved.
## 14. Read the tables correctly
The standard table separates BULL and BEAR results.
The Super table separates SBULL and SBEAR results.
T means completed target outcomes.
S means completed stop outcomes.
The percentage represents targets divided by completed targets and stops.
Do not interpret the percentage as a guaranteed win rate.
## 15. Understand one-active-outcome tracking
The script tracks only one unresolved outcome at a time.
A new signal may be displayed while an older measurement remains active.
However, the newer signal will not be added to the historical table until the previous measurement has ended and another eligible signal occurs.
This prevents overlapping measurements but means the table does not measure every displayed signal.
## 16. Create alerts
Create separate PulseWire alerts for the conditions you want to receive:
* Bull Recovery;
* Super Bull Recovery;
* Bear Recovery;
* Super Bear Recovery.
Use Once Per Bar Close to match the script’s confirmed-signal behaviour.
Test alerts on the intended symbol and timeframe before relying on them operationally.
## Suggested starting process
1. Apply the indicator to a liquid symbol on a standard candlestick chart.
2. Keep the default Smoothing Length of 20.
3. Keep Minimum Closes Outside Channel at 5.
4. Leave volume confirmation disabled initially.
5. Observe several BULL and BEAR recovery examples.
6. Compare standard and Super signals.
7. Review whether signals occur with or against the broader trend.
8. Enable volume confirmation and compare the difference.
9. Use the historical tables only as simplified research measurements.
10. Test multiple symbols and timeframes before drawing conclusions.
## Important limitations
* The script stores one reference level from each FVG, not the entire FVG zone.
* FVGs are confirmed only after the relevant chart bar closes.
* FVG mitigation requires a confirmed close through the stored reference.
* Wick contact alone does not remove an FVG reference.
* Active bullish and bearish references are equally weighted.
* The channel uses a price-SMA fallback when no active FVG reference is available.
* Double smoothing introduces delay.
* Recovery signals do not guarantee reversals.
* Super classifications measure wick extension only.
* Volume quality varies across markets and data providers.
* Only one historical outcome is tracked at a time.
* Not every displayed signal is included in the tables.
* Same-bar target and stop contact is recorded as a stop outcome.
* Historical measurements do not include realistic execution costs.
* Internal target modes may skip signals when the selected level is not positioned beyond the signal close.
* Historical table results do not guarantee future performance.
FVG Channel is an analytical and research tool. It does not provide financial advice, guaranteed signals, or guaranteed results. Indicator

Indicator

Indicator

Indicator

HTF Power of 3 (PO3) with Trailing Stop🔵 OVERVIEW
The HTF Power of 3 (PO3) with Trailing Stop is a technical indicator created by BigBeluga to capture institutional market cycles based on Smart Money Concepts (SMC). Detecting market manipulation phases and structural accumulation zones has always been a major challenge in technical analysis, as traditional breakouts often lead to false signals and whipsaw trades. In order to provide a solution to this problem, this indicator maps higher timeframe (HTF) Power of 3 cycles—breaking price action down into Accumulation, Manipulation, and Distribution phases—combined with an advanced volatility-based trailing stop engine.
The indicator aims to visualize institutional order-building and subsequent expansions. The core element of its calculation involves tracking HTF session levels alongside a dynamic ATR-based trailing threshold defined as:
trailingStop = close ± currentAtr * trailMultiplier
where currentAtr is the standard Average True Range of period atrPeriod , and trailMultiplier is the sensitivity footprint multiplier. Higher values of accumMultiplier and trailMultiplier allow the indicator to adjust to longer consolidation periods and filter out minor market noise.
🔵 FEATURES
The system utilizes a multi-layered matrix structure to provide actionable market intelligence:
1 — Auto HTF Matrix Mode & Session Engine
Dynamic Timeframe Scaling: When enabled, the indicator automatically scales the higher timeframe matrix dynamically based on your current chart timeframe context.
Session Tracking: Continuously calculates local open, high, low, and close parameters across higher timeframe layers to project real-time structural candles on the right side of your chart.
2 — Power of 3 (PO3) Phase Breakdown & Peak Labels
Accumulation Phase: Maps the initial consolidation boundary lines over a defined accumMultiplier bar count, outlining the high and low thresholds where institutional orders cluster.
Manipulation Phase & Peak Labels: Triggers automatically when price breaks out of the accumulation boundaries, identifying fakeouts and plotting a peak manipulation label marked with an M at the extreme high or low.
Distribution Phase & Peak Labels: Transitions into the expansion phase once the trailing stop is breached, tracking the final leg of the institutional delivery cycle and plotting a peak distribution label marked with a D .
3 — Dynamic Trailing Stop & Cloud Fill
Volatility Boundaries: Employs a robust ATR trailing line that shifts dynamically to lock in profits and signal shifts in market bias.
Visual Cloud Fills: Dynamically colors and fills the space between price action and the trailing stop line to offer clear visual confirmation of trend direction.
🔵 HOW TO USE
Apart from the basic visualization of institutional market cycles, this tool can also act in alternative ways to support decision-making:
Identify Accumulation Zones: Monitor the orange accumulation channel during the early stages of an HTF session to spot tight consolidation ranges before an expansion.
Trade the Manipulation Breakout: Wait for price to sweep outside the accumulation boundaries to trigger a "Manipulation" label and an M peak marker, signaling an institutional run on liquidity before the true directional move.
Manage Risk with Trailing Stops: Use the dynamic trailing stop line, cloud fill, and subsequent D distribution peak markers as a trailing stop loss mechanism to guide entries, manage open positions, and catch the final distribution leg.
🔵 NOTES
Why this implementation is unique:
It automates complex multi-timeframe ICT concepts directly onto lower timeframe charts without requiring manual chart reconfiguration.
The right-aligned visual projection engine gives traders a clear look at the developing higher timeframe candle and session metrics without cluttering active price history.
The script is fully optimized for Pine Script version 6, integrating seamless label sizing and automated line management for maximum rendering performance.
Indicator

SNIPERS CANDLESSNIPERS CANDLES
SNIPERS CANDLES is an enhanced PVSRA volume analysis indicator that classifies candles according to relative trading activity while introducing a configurable Volume Participation Baseline for additional market participation analysis.
The indicator combines traditional PVSRA candle classification with an independent participation threshold, allowing traders to compare current trading activity against both recent market behaviour and configurable average volume levels within a single visual tool.
How the Indicator Works
The indicator analyses volume using the PVSRA methodology and classifies each candle into one of three participation levels.
Normal Volume
Represents standard market participation.
150% Volume
Highlights candles where volume exceeds approximately 150% of the recent average, indicating increasing market participation.
200% Volume (Vector Candle)
Highlights candles where volume exceeds approximately 200% of the recent average or produces exceptional volume relative to recent price range activity, identifying significant market participation.
Bullish and bearish candles are colour coded independently to preserve directional context.
Volume Participation Baseline
In addition to standard PVSRA candle classification, SNIPERS CANDLES includes a configurable Volume Participation Baseline.
The Participation Baseline calculates an average volume over a user-defined lookback period and applies an optional multiplier to create a dynamic participation threshold.
This allows traders to compare current trading activity against configurable average participation levels rather than relying solely on fixed PVSRA classifications.
The Participation Baseline is designed to complement the original PVSRA methodology by providing additional context when market participation transitions between below-average and above-average volume.
Instrument Override
For cryptocurrency markets, the indicator can automatically retrieve volume data from the equivalent Binance Perpetual Futures contract when available.
Where an equivalent perpetual contract is unavailable, the indicator automatically falls back to the chart's native volume data.
A manual symbol override is also included for users who wish to specify an alternative volume source.
Features
Traditional PVSRA candle classification
150% and 200% vector candle detection
Independent bullish and bearish candle colouring
Configurable Volume Participation Baseline
Adjustable Participation Baseline lookback period
Configurable Participation Baseline multiplier
Customisable Participation Baseline colour and width
Automatic Binance Perpetual Futures volume support
Manual volume source override
Main-chart candle colouring
Colour-coded volume histogram
Configurable alerts
Alert Conditions
The indicator includes alert conditions for:
Any Vector Candle
Any 200% Volume Peak Vector Candle
Any 150% Volume Rising Vector Candle
Bullish 200% Vector Candle
Bearish 200% Vector Candle
Bullish 150% Vector Candle
Bearish 150% Vector Candle
Volume Crossing the Participation Baseline
Volume Crossing Above the Participation Baseline
Volume Crossing Below the Participation Baseline
Participation Baseline alerts are designed to identify changes in market participation as trading activity transitions above or below the configured threshold.
Intended Use
SNIPERS CANDLES is designed to provide visual context for analysing:
Relative market participation
High-volume trading activity
Volume confirmation
Market momentum
Trend participation
Price action
Multi-timeframe analysis
The indicator is intended as an analytical tool and does not generate automatic buy or sell signals. It is designed to complement the trader's own market analysis, price action and risk management process.
Markets
The indicator can be applied to all PulseWire-supported markets, including:
Forex
Indices
Commodities
Cryptocurrencies
Equities
When enabled, cryptocurrency markets can automatically utilise Binance Perpetual Futures volume where available.
Disclaimer
This open-source indicator is provided free of charge for educational and analytical purposes only. It does not constitute financial advice or a recommendation to buy or sell any financial instrument. Users remain responsible for their own analysis, trading decisions and risk management.
Created by Market Sniper HQ
Trade Like a Sniper, Not Like the Crowd.
Indicator

V4//@version=5
indicator("ICT MTF Entry: OB + CHoCH + FVG + Liquidity", overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=500)
// ================= INPUTS =================
grpHTF = "HTF Order Block / POI"
htfOB = input.timeframe("60", "Order Block TF", group=grpHTF)
dispMult = input.float(1.5, "Displacement (x ATR)", group=grpHTF)
obMaxAgeBars = input.int(150, "OB Max Age (chart bars)", group=grpHTF)
grpMTF = "MTF CHoCH"
mtfCHoCH = input.timeframe("15", "CHoCH TF", group=grpMTF)
pivotLen = input.int(5, "Swing Pivot Length (MTF bars)", group=grpMTF)
chochWindow = input.int(30, "CHoCH Validity Window (chart bars)", group=grpMTF)
grpLTF = "Entry FVG / IFVG (uses chart timeframe - run this on your 1M/5M chart)"
useIFVG = input.bool(true, "Include Inverse FVG entries", group=grpLTF)
requireFVG = input.bool(false, "Require FVG/IFVG for entry (off = CHoCH + OB retest only)", group=grpLTF)
grpLIQ = "Liquidity Targets"
liqPivotLen = input.int(10, "Liquidity Pivot Length", group=grpLIQ)
liqTolTicks = input.float(2, "Equal High/Low Tolerance (ticks)", group=grpLIQ)
grpVis = "Display"
showOB = input.bool(true, "Show Order Blocks", group=grpVis)
showCHoCH = input.bool(true, "Show CHoCH Labels", group=grpVis)
showFVG = input.bool(true, "Show FVG/IFVG", group=grpVis)
showLiq = input.bool(true, "Show Liquidity", group=grpVis)
grpKZ = "Kill Zones (New York time)"
useKillzones = input.bool(false, "Only allow entries within kill zones", group=grpKZ)
asiaSession = input.session("2000-0000", "Asia Killzone", group=grpKZ)
londonSession = input.session("0200-0500", "London Killzone", group=grpKZ)
nySession = input.session("0700-1000", "New York Killzone", group=grpKZ)
shadeKZ = input.bool(true, "Shade Kill Zones on Chart", group=grpKZ)
inAsia = not na(time(timeframe.period, asiaSession, "America/New_York"))
inLondon = not na(time(timeframe.period, londonSession, "America/New_York"))
inNY = not na(time(timeframe.period, nySession, "America/New_York"))
inKillzone = inAsia or inLondon or inNY
bgcolor(shadeKZ and inAsia ? color.new(color.purple, 92) : na, title="Asia KZ")
bgcolor(shadeKZ and inLondon ? color.new(color.blue, 92) : na, title="London KZ")
bgcolor(shadeKZ and inNY ? color.new(color.yellow, 92) : na, title="NY KZ")
tick = syminfo.mintick
// ================= HTF ORDER BLOCK =================
= request.security(syminfo.tickerid, htfOB,
[open, high, low, close, open , high , low , close , time, ta.atr(14)], lookahead=barmerge.lookahead_off)
var box bullOBs = array.new_box()
var box bearOBs = array.new_box()
var int lastHTFTimeOB = na
newHTFBar = na(lastHTFTimeOB) or hTime != lastHTFTimeOB
if newHTFBar
lastHTFTimeOB := hTime
body = math.abs(hC - hO)
bullDisp = hC > hO and body >= hATR * dispMult
bearDisp = hC < hO and body >= hATR * dispMult
prevBear = hC1 < hO1
prevBull = hC1 > hO1
if bullDisp and prevBear and showOB
b = box.new(bar_index, hH1, bar_index + obMaxAgeBars, hL1, border_color=color.new(color.teal, 0), bgcolor=color.new(color.teal, 85), extend=extend.none)
array.push(bullOBs, b)
if bearDisp and prevBull and showOB
b = box.new(bar_index, hH1, bar_index + obMaxAgeBars, hL1, border_color=color.new(color.red, 0), bgcolor=color.new(color.red, 85), extend=extend.none)
array.push(bearOBs, b)
f_manageOB(boxes, isBull) =>
if array.size(boxes) > 0
for i = array.size(boxes) - 1 to 0
b = array.get(boxes, i)
box.set_right(b, bar_index + 5)
top = box.get_top(b)
bot = box.get_bottom(b)
mitigated = isBull ? close < bot : close > top
expired = bar_index > box.get_left(b) + obMaxAgeBars
if mitigated or expired
box.delete(b)
array.remove(boxes, i)
f_manageOB(bullOBs, true)
f_manageOB(bearOBs, false)
priceInBullOB() =>
inside = false
if array.size(bullOBs) > 0
for i = 0 to array.size(bullOBs) - 1
b = array.get(bullOBs, i)
if close <= box.get_top(b) and close >= box.get_bottom(b)
inside := true
inside
priceInBearOB() =>
inside = false
if array.size(bearOBs) > 0
for i = 0 to array.size(bearOBs) - 1
b = array.get(bearOBs, i)
if close >= box.get_bottom(b) and close <= box.get_top(b)
inside := true
inside
// ================= MTF CHoCH =================
= request.security(syminfo.tickerid, mtfCHoCH, , lookahead=barmerge.lookahead_off)
var float lastSwingHigh = na
var float lastSwingLow = na
var string trend = "neutral"
var int bullCHoCHBar = na
var int bearCHoCHBar = na
if not na(pivHi)
lastSwingHigh := pivHi
if not na(pivLo)
lastSwingLow := pivLo
bullishCHoCH = trend != "up" and not na(lastSwingHigh) and close > lastSwingHigh
bearishCHoCH = trend != "down" and not na(lastSwingLow) and close < lastSwingLow
var bool bullSignaled = false
var bool bearSignaled = false
if bullishCHoCH
trend := "up"
bullCHoCHBar := bar_index
bullSignaled := false
if showCHoCH
label.new(bar_index, low, "CHoCH↑", style=label.style_label_up, color=color.new(color.lime, 0), textcolor=color.black, size=size.small)
if bearishCHoCH
trend := "down"
bearCHoCHBar := bar_index
bearSignaled := false
if showCHoCH
label.new(bar_index, high, "CHoCH↓", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, size=size.small)
recentBullCHoCH = not na(bullCHoCHBar) and (bar_index - bullCHoCHBar) <= chochWindow
recentBearCHoCH = not na(bearCHoCHBar) and (bar_index - bearCHoCHBar) <= chochWindow
// ================= LTF FVG / IFVG (runs on chart's own timeframe) =================
bullFVG = low > high
bearFVG = high < low
var box bullFVGs = array.new_box()
var box bearFVGs = array.new_box()
if showFVG and bullFVG
fb = box.new(bar_index , low, bar_index + 20, high , border_color=color.new(color.blue, 0), bgcolor=color.new(color.blue, 80))
array.push(bullFVGs, fb)
if showFVG and bearFVG
fb = box.new(bar_index , low , bar_index + 20, high, border_color=color.new(color.orange, 0), bgcolor=color.new(color.orange, 80))
array.push(bearFVGs, fb)
var bool bullIFVGSignal = false
var bool bearIFVGSignal = false
bullIFVGSignal := false
bearIFVGSignal := false
if array.size(bullFVGs) > 0
for i = array.size(bullFVGs) - 1 to 0
b = array.get(bullFVGs, i)
bot = box.get_bottom(b)
box.set_right(b, bar_index + 5)
if close < bot
if useIFVG
bearIFVGSignal := true
box.delete(b)
array.remove(bullFVGs, i)
else if bar_index > box.get_left(b) + 100
box.delete(b)
array.remove(bullFVGs, i)
if array.size(bearFVGs) > 0
for i = array.size(bearFVGs) - 1 to 0
b = array.get(bearFVGs, i)
top = box.get_top(b)
box.set_right(b, bar_index + 5)
if close > top
if useIFVG
bullIFVGSignal := true
box.delete(b)
array.remove(bearFVGs, i)
else if bar_index > box.get_left(b) + 100
box.delete(b)
array.remove(bearFVGs, i)
// ================= LIQUIDITY (equal highs/lows) =================
liqPH = ta.pivothigh(liqPivotLen, liqPivotLen)
liqPL = ta.pivotlow(liqPivotLen, liqPivotLen)
var float lastPH = na
var float lastPH2 = na
var float lastPL = na
var float lastPL2 = na
if not na(liqPH)
lastPH2 := lastPH
lastPH := liqPH
if showLiq and not na(lastPH2) and math.abs(lastPH - lastPH2) <= liqTolTicks * tick
line.new(bar_index - liqPivotLen, lastPH, bar_index + 30, lastPH, color=color.new(color.fuchsia, 0), style=line.style_dashed)
label.new(bar_index, lastPH, "BSL", style=label.style_label_down, color=color.new(color.fuchsia, 0), textcolor=color.white, size=size.tiny)
if not na(liqPL)
lastPL2 := lastPL
lastPL := liqPL
if showLiq and not na(lastPL2) and math.abs(lastPL - lastPL2) <= liqTolTicks * tick
line.new(bar_index - liqPivotLen, lastPL, bar_index + 30, lastPL, color=color.new(color.aqua, 0), style=line.style_dashed)
label.new(bar_index, lastPL, "SSL", style=label.style_label_up, color=color.new(color.aqua, 0), textcolor=color.black, size=size.tiny)
// ================= ENTRY SIGNAL =================
kzOK = not useKillzones or inKillzone
fvgLongOK = not requireFVG or bullFVG or (useIFVG and bullIFVGSignal)
fvgShortOK = not requireFVG or bearFVG or (useIFVG and bearIFVGSignal)
longSetup = priceInBullOB() and trend == "up" and recentBullCHoCH and fvgLongOK and kzOK and not bullSignaled
shortSetup = priceInBearOB() and trend == "down" and recentBearCHoCH and fvgShortOK and kzOK and not bearSignaled
if longSetup
bullSignaled := true
if shortSetup
bearSignaled := true
plotshape(longSetup, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.new(color.lime, 0), size=size.small)
plotshape(shortSetup, title="Short Entry", style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small)
if longSetup
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.new(color.lime, 0), textcolor=color.black, size=size.normal)
if shortSetup
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, size=size.normal)
alertcondition(longSetup, title="Long Setup", message="Bullish OB + CHoCH + FVG entry")
alertcondition(shortSetup, title="Short Setup", message="Bearish OB + CHoCH + FVG entry" Indicator

Indicator

Trend Analyser Pro V3Trend Analyser Pro V3 (TAP V3) is a multi-confirmation, score-based trading indicator designed for both Intraday and Short Term traders. It combines candlestick pattern recognition, momentum analysis, trend filtering, and key price level proximity into a single clean signal engine.
─────────────────────────────────
HOW IT WORKS — SCORE SYSTEM
─────────────────────────────────
Every bar is scored from 0 to 4 across four pillars:
1. TREND — Price above/below EMA/SMA 200 with slope confirmation
2. MOMENTUM — Majority vote across RSI + Stochastic + MACD (default: 2 of 3 must agree — eliminates false signals when one indicator contradicts the others)
3. CANDLESTICK PATTERN — Engulfing, Hammer, Inverted Hammer, Morning/Evening Star, Doji
4. LOCATION — Proximity to Daily Pivot Points (PP, R1, R2, S1, S2) or Camarilla Levels (H3, H4, L3, L4)
A LONG or SHORT signal fires only when the score meets your required threshold (default: 3 of 4). This prevents noise-driven entries that plague single-indicator systems.
─────────────────────────────────
SIGNAL TYPES
─────────────────────────────────
▲ LONG label (green, below candle) — bullish entry
▼ SHORT label (red, above candle) — bearish entry
▼ EXIT label (black, above candle) — exit long
▲ EXIT label (black, below candle) — exit short
Trade zones (colored boxes) expand bar-by-bar from entry to exit, giving a clear visual of trade duration and range.
─────────────────────────────────
EXIT LOGIC
─────────────────────────────────
Exit is also score-based (default: 2 of 4):
• Price reaches opposite pivot/Camarilla level
• Reversal candlestick pattern appears
• Momentum exits (RSI cross, Stoch cross above/below midline, MACD histogram flip past zero)
• Price crosses the trend MA
In Intraday mode: auto-exits on the final bar of the exchange session (no overnight holds).
─────────────────────────────────
KEY SETTINGS
─────────────────────────────────
• Trading Mode — Intraday or Short Term (changes how filters are applied)
• Entry Score Required — how many of 4 conditions must agree (default 3)
• Exit Score Required — how many exit signals needed (default 2)
• Momentum Min Agree — minimum of RSI/Stoch/MACD to confirm momentum (default 2 of 3)
• Opposite Signal Behaviour — Ignore / Exit Only / Reverse
• Cooldown Bars — prevents immediate re-entry after exit
• Session Mode — Auto-detects exchange session or use custom hours
• Level Tolerance % — how close price needs to be to a pivot/Camarilla level
─────────────────────────────────
DASHBOARD (top-right)
─────────────────────────────────
Live readout of: Session status · Trend · Momentum (X/3) · RSI · Long score · Short score · Position · Cooldown bars remaining
─────────────────────────────────
DESIGNED FOR
─────────────────────────────────
• Equity indices (Nifty, Bank Nifty, Nasdaq, S&P 500)
• 15-minute and 1-hour timeframes
• Intraday scalping and short-term positional swing trades
─────────────────────────────────
WHAT MAKES IT DIFFERENT
─────────────────────────────────
Most indicators fire on a single condition. TAP V3 requires a confluence of trend, momentum, pattern, and location — all at the same time. The majority-vote momentum engine means a single rogue RSI tick cannot trigger a signal while Stochastic and MACD are pointing the other way.
No repainting — all signals are confirmed on candle close by default. Indicator

Indicator

Indicator

Echo Vector PVSRA Volume### Credits and licence
The starting point for the relative-volume and volume-spread classification framework was the open-source “Traders Reality PVSRA Volume Suite,” originally created by infernix with library integration by peshocore, under the Mozilla Public License 2.0.
This derivative is independently named and does not use the Traders Reality or Pattern Watchers names as its branding.
The imported library calculation has been replaced with script-level calculations. This implementation adds configurable volume tiers, price-extension filters, volume divergence, optional divergence lines, extreme-volume event detection, body-recovery measurements, expanded alerts, and simplified historical outcome tables.
### Overview
Echo Volume Structure is a volume-analysis indicator that classifies candles according to:
* reported volume;
* candle direction;
* candle range;
* volume multiplied by candle range;
* body size;
* price extension from a configurable EMA.
The classifications are displayed as colour-coded volume columns in a separate pane.
Users can optionally apply the same classification colours to the candles on the main price chart.
The script also includes:
* regular bullish and bearish volume divergence;
* divergence markers and configurable lines;
* extreme-volume event diamonds;
* body-recovery tracking;
* simplified divergence target/stop outcomes;
* recovery statistics;
* configurable alerts.
The indicator identifies when its mathematical conditions are present. It does not establish why the activity occurred and does not predict what price will do afterward.
### Data source
By default, the indicator uses OHLC and volume data from the active chart symbol and timeframe.
The requested values include:
* open;
* high;
* low;
* close;
* volume.
The data is requested with lookahead disabled.
### Symbol override
Users can optionally analyze data from a different symbol instead of the active chart symbol.
The override can also contain a combination of compatible feeds, such as multiple exchange symbols added together.
Adding several data feeds can increase processing requirements.
When symbol override is enabled, users should confirm that the selected source is meaningfully related to the active chart.
Differences in exchange activity, trading hours, price scale, market structure, and volume reporting can cause the classifications to differ from those produced by the chart symbol.
### Volume-spread calculation
The script calculates a volume-spread value by multiplying candle volume by the candle’s high-to-low range.
This allows the classification process to consider both:
* the amount of reported volume;
* the price range produced during that volume.
A candle may qualify for an elevated classification because its volume is unusually high, its volume-spread value is unusually large, or it meets a combination of volume, body-size, and price-extension conditions.
### Candle-classification hierarchy
The script applies a fixed priority hierarchy.
When a candle qualifies for more than one classification, the highest active tier determines its colour.
The hierarchy from highest to lowest is:
1. Echo Peak Up or Echo Valley Down;
2. Ultra Up or Ultra Down;
3. Echo Surge Up or Echo Surge Down;
4. Echo Pulse Up or Echo Pulse Down;
5. Normal Up or Normal Down.
The classifications are internal analytical categories. They are not measurements of trade quality and do not guarantee reversal or continuation.
### Default colour key
The default candle classifications and colours are:
* Echo Peak Up — bright green;
* Echo Valley Down — bright red;
* Ultra Up — dark green;
* Ultra Down — dark red;
* Echo Surge Up — lime green;
* Echo Surge Down — light red;
* Echo Pulse Up — blue;
* Echo Pulse Down — fuchsia;
* Normal Up — light grey;
* Normal Down — dark grey;
* Extreme Volume Event — yellow diamond;
* Bullish Volume Divergence — turquoise upward triangle;
* Bearish Volume Divergence — coral-red downward triangle.
All classification, divergence, and line colours can be adjusted in the indicator settings.
### Echo Peak Up — bright green
An Echo Peak Up candle is bright green by default.
It requires:
* an up candle;
* volume at or above the selected multiple of the longer-term average volume;
* a candle body above the selected multiple of its average body size;
* price above the selected EMA by more than the configured standard-deviation distance.
The longer-term volume, body, EMA, and deviation settings are independently configurable.
Echo Peak Up identifies an unusually large bullish candle occurring while price is extended above its recent mean.
It may be examined as possible climactic or blow-off activity, but it does not prove that a market top has formed.
Price may continue rising after an Echo Peak Up candle.
### Echo Valley Down — bright red
An Echo Valley Down candle is bright red by default.
It requires:
* a down candle;
* volume at or above the selected multiple of the longer-term average volume;
* a candle body above the selected multiple of its average body size;
* price below the selected EMA by more than the configured standard-deviation distance.
Echo Valley Down identifies an unusually large bearish candle occurring while price is extended below its recent mean.
It may be examined as possible climactic or exhaustion activity, but it does not prove that a market bottom has formed.
Price may continue falling after an Echo Valley Down candle.
### Ultra Up — dark green
An Ultra Up candle is dark green by default.
It occurs when:
* the candle closes above its open;
* volume reaches the selected Ultra multiple of the longer-term average;
* the candle does not meet all the additional body-size and price-extension requirements of Echo Peak Up.
Ultra Up identifies exceptionally high reported volume on an up candle relative to the selected baseline.
It does not determine whether the activity represents accumulation, distribution, continuation, short covering, or reversal.
### Ultra Down — dark red
An Ultra Down candle is dark red by default.
It occurs when:
* the candle closes at or below its open;
* volume reaches the selected Ultra multiple of the longer-term average;
* the candle does not meet all the additional body-size and price-extension requirements of Echo Valley Down.
Ultra Down identifies exceptionally high reported volume on a down candle relative to the selected baseline.
It does not determine whether the activity represents accumulation, distribution, liquidation, continuation, or reversal.
### Echo Surge Up — lime green
An Echo Surge Up candle is lime green by default.
It is an up candle that meets at least one of the following conditions:
* volume reaches the selected Surge multiple of the recent average volume;
* the candle’s volume-spread value reaches or exceeds the highest previous volume-spread value within the selected lookback.
The candle must not already qualify for Echo Peak Up or Ultra Up.
Echo Surge Up identifies elevated volume or volume-spread activity on an up candle.
It is not an automatic bullish entry signal and does not guarantee that price will continue rising.
### Echo Surge Down — light red
An Echo Surge Down candle is light red by default.
It is a down candle that meets at least one of the following conditions:
* volume reaches the selected Surge multiple of the recent average volume;
* the candle’s volume-spread value reaches or exceeds the highest previous volume-spread value within the selected lookback.
The candle must not already qualify for Echo Valley Down or Ultra Down.
Echo Surge Down identifies elevated volume or volume-spread activity on a down candle.
It is not an automatic bearish entry signal and does not guarantee that price will continue falling.
### Echo Pulse Up — blue
An Echo Pulse Up candle is blue by default.
It occurs when:
* the candle closes above its open;
* volume reaches the selected Pulse multiple of the recent average;
* the candle does not qualify for Echo Peak Up, Ultra Up, or Echo Surge Up.
Echo Pulse Up represents moderately elevated volume on an up candle relative to the selected lookback.
It does not guarantee that upward movement will continue.
### Echo Pulse Down — fuchsia
An Echo Pulse Down candle is fuchsia by default.
It occurs when:
* the candle closes at or below its open;
* volume reaches the selected Pulse multiple of the recent average;
* the candle does not qualify for Echo Valley Down, Ultra Down, or Echo Surge Down.
Echo Pulse Down represents moderately elevated volume on a down candle relative to the selected lookback.
It does not guarantee that downward movement will continue.
### Normal Up — light grey
A Normal Up candle is light grey by default.
It closes above its open but does not meet any enabled elevated-volume classification.
A normal classification does not mean that the candle is unimportant. It means only that the selected relative-volume and volume-spread thresholds were not reached.
### Normal Down — dark grey
A Normal Down candle is dark grey by default.
It closes at or below its open but does not meet any enabled elevated-volume classification.
A normal classification does not mean that the candle is unimportant. It means only that the selected relative-volume and volume-spread thresholds were not reached.
### How to interpret the colours
The colour describes the candle’s direction and the relative-volume tier detected by the script.
For example:
* bright green identifies Echo Peak Up;
* bright red identifies Echo Valley Down;
* dark green identifies Ultra Up;
* dark red identifies Ultra Down;
* lime green identifies Echo Surge Up;
* light red identifies Echo Surge Down;
* blue identifies Echo Pulse Up;
* fuchsia identifies Echo Pulse Down;
* light grey identifies Normal Up;
* dark grey identifies Normal Down.
The colour should be interpreted together with price location and market structure.
An elevated-volume up candle near resistance may have a different context from the same classification during a breakout.
An elevated-volume down candle near support may have a different context from the same classification during an established decline.
The colour identifies the configured mathematical condition. It does not identify the intent of market participants and is not an instruction to buy or sell.
### How to use the indicator
Apply the indicator to a liquid symbol with usable volume data.
A practical workflow is:
1. Review the broader price trend and market structure.
2. Observe the normal volume behaviour of the selected symbol and timeframe.
3. Identify where elevated-volume colours appear relative to support, resistance, breakouts, failed breakouts, and extended price movement.
4. Compare the direction of each classified candle with subsequent price behaviour.
5. Note whether the event is isolated or part of a sequence of elevated-volume candles.
6. Review any bullish or bearish divergence marker while accounting for its pivot-confirmation delay.
7. Inspect yellow extreme-volume diamonds and whether price later crosses their recovery level.
8. Use the historical tables only as simplified chart-based measurements.
9. Test alerts on the intended symbol and timeframe.
10. Combine the indicator with independent price, volatility, liquidity, and risk analysis.
Do not treat an individual colour, triangle, diamond, ratio, or alert as an automatic trade instruction.
### Example use of an Echo Peak Up candle
When a bright-green Echo Peak Up candle appears, consider:
* whether price is already extended above its recent mean;
* whether the candle appears near established resistance;
* whether the candle closes strongly or leaves a large wick;
* whether subsequent candles continue higher or fail to maintain progress;
* whether similar high-volume activity appeared earlier;
* whether a bearish divergence is also present.
The condition identifies unusual volume, body size, and price extension. It does not prove a reversal.
### Example use of an Echo Valley Down candle
When a bright-red Echo Valley Down candle appears, consider:
* whether price is already extended below its recent mean;
* whether the candle appears near established support;
* whether the candle closes strongly or leaves a large wick;
* whether subsequent candles continue lower or recover;
* whether similar high-volume activity appeared earlier;
* whether a bullish divergence is also present.
The condition identifies unusual volume, body size, and price extension. It does not prove a reversal.
### Example use of Surge and Pulse candles
Echo Surge and Echo Pulse candles identify lower relative-volume tiers than Echo Peak, Echo Valley, and Ultra candles.
A sequence of lime-green or blue up candles during a breakout can show repeated elevated activity.
A sequence of light-red or fuchsia down candles during a decline can show repeated elevated activity.
The same colours near failed breakouts or important support and resistance may have a different context.
The classifications describe relative volume and direction, not future price outcomes.
### Main-chart candle colouring
When main-chart candle colouring is enabled, the script applies the classification colour to the corresponding candles on the price chart.
When disabled, the original price-chart colours remain unchanged while the classified volume columns continue to appear in the indicator pane.
### Background preset
The Dark Background and Light Background options adjust the table text colour for visibility.
The preset does not change the candle-classification colour palette.
Individual candle and line colours can be changed separately.
### Volume moving average
An optional simple moving average can be displayed over the volume columns.
The moving-average period is configurable.
The visible moving average provides an additional reference for current volume, but it is separate from some of the internal classification averages.
Changing the visible moving-average period does not automatically change the internal Peak, Valley, Ultra, Surge, or Pulse thresholds.
### Regular volume divergence
The divergence module compares confirmed pivots in price with confirmed pivots in volume.
It identifies two regular divergence conditions:
* bullish volume divergence;
* bearish volume divergence.
The conditions show structural disagreement between price pivots and volume pivots.
They do not guarantee that price will reverse.
### Bullish volume divergence — turquoise upward triangle
A turquoise upward triangle marks a confirmed bullish volume divergence.
The condition requires:
* price to form a lower confirmed low;
* volume to form a higher confirmed low.
This means price reached a lower pivot while the volume pivot did not form a corresponding lower low.
Users may examine the condition together with:
* nearby support;
* reduced downward progress;
* candle structure;
* broader trend;
* subsequent volume classifications.
Price can continue lower after bullish volume divergence is confirmed.
### Bearish volume divergence — coral-red downward triangle
A coral-red downward triangle marks a confirmed bearish volume divergence.
The condition requires:
* price to form a higher confirmed high;
* volume to form a lower confirmed high.
This means price reached a higher pivot while the volume pivot did not form a corresponding higher high.
Users may examine the condition together with:
* nearby resistance;
* reduced upward progress;
* candle structure;
* broader trend;
* subsequent volume classifications.
Price can continue higher after bearish volume divergence is confirmed.
### Divergence pivot strength
The Divergence Pivot Strength setting is applied to both the left and right sides of each pivot.
Higher values generally produce:
* fewer pivots;
* broader pivot structures;
* later confirmation;
* fewer divergence markers.
Lower values generally produce:
* more pivots;
* narrower structures;
* earlier confirmation;
* greater sensitivity to short-term noise.
There is no universal pivot value that is suitable for every symbol and timeframe.
### Divergence confirmation delay
A divergence is not known on the exact historical pivot bar.
The script must wait for the selected number of right-side bars before the pivot can be confirmed.
Once confirmed, the triangle is displayed on the earlier pivot bar.
For example, a pivot strength of 5 requires five later bars before confirmation.
The marker therefore appears earlier on the historical chart than the time at which the condition became available.
### Divergence lines in the indicator pane
Optional panel lines connect the previous and current volume pivots associated with the divergence structure.
Users can configure:
* bullish line colour;
* bearish line colour;
* line width;
* solid, dashed, or dotted style.
These lines help users inspect the change in volume pivots.
They do not project future movement.
### Divergence lines on the price chart
Optional price-chart lines provide a visual reference between price points associated with the volume-pivot locations.
Users can configure their colour, width, and style independently from the panel lines.
These lines are visual aids and should not be interpreted as projected support, resistance, or a forecast of future price movement.
### Extreme Volume Event — yellow diamond
A yellow diamond identifies an Extreme Volume Event.
The condition requires a combination of:
* an already elevated-volume classification;
* volume at least four times the rolling average of recent qualifying elevated-volume candles;
* the highest volume within the recent 50-bar period;
* a candle range above the recent average range.
The rolling event-volume average becomes available only after the script has collected 30 qualifying elevated-volume observations.
The diamond identifies an unusually large volume-and-range event under the selected rules.
It does not prove:
* manipulation;
* institutional activity;
* accumulation;
* distribution;
* liquidation;
* an imminent reversal.
### Extreme-event recovery level
When an Extreme Volume Event occurs, the script calculates a configurable level inside the candle’s body.
At the default 50% setting, the recovery level is the midpoint between the candle’s open and close.
It is not the midpoint of the full high-to-low candle range.
A recovery is counted when closing price crosses the body-based level within the selected recovery lookback.
A wick touching the level without a qualifying close-to-close crossing does not count as a recovery.
A recorded recovery does not guarantee continued movement beyond the level.
### Recovery lookback
The Recovery Lookback setting controls how many bars are allowed for price to cross the active recovery level.
If the level is not crossed within the selected number of bars, that event is no longer tracked as unresolved.
The script tracks only one unresolved recovery event at a time.
If a new yellow-diamond event appears before the earlier event is resolved, the active recovery level is replaced by the newer event.
### Historical divergence outcome table
The left table displays:
* Wins;
* Losses;
* Ratio.
When no earlier hypothetical outcome is active, a confirmed bullish or bearish divergence creates a new measurement.
The script records the confirmation-bar closing price and calculates:
* a fixed percentage target;
* a fixed percentage stop.
For a bullish divergence:
* the target is above the recorded close;
* the stop is below the recorded close.
For a bearish divergence:
* the target is below the recorded close;
* the stop is above the recorded close.
The script records which threshold is detected first.
Only one hypothetical divergence outcome is tracked at a time.
A new divergence is ignored while an earlier outcome remains unresolved.
### Same-bar target and stop behaviour
The target is checked before the stop.
If both the target and stop are reached during the same chart bar, the script records the case as a win.
The script does not reconstruct the lower-timeframe path within that candle, so it cannot determine which level was actually reached first.
This is a material limitation of the table.
### Meaning of the win ratio
The displayed ratio is the number of recorded wins divided by the total number of recorded wins and losses.
It is a simplified historical chart measurement.
It is not equivalent to PulseWire Strategy Tester results and does not model:
* commissions;
* slippage;
* spread;
* realistic order execution;
* position sizing;
* portfolio equity;
* liquidity;
* overlapping trades;
* all intrabar sequencing possibilities.
The ratio depends on:
* the symbol;
* timeframe;
* available chart history;
* divergence pivot strength;
* target percentage;
* stop percentage.
The displayed results do not imply future performance.
### Extreme-event recovery table
The right table displays:
* Recovered;
* Ratio.
Recovered is the number of yellow-diamond events for which closing price crossed the configured body-recovery level within the selected lookback.
The ratio is the number of recovered events divided by the total number of detected yellow-diamond events.
This is a simplified event measurement.
It is not:
* a reversal probability;
* an accuracy score;
* a trading win rate;
* evidence that future events will behave similarly.
### Alerts
Alerts are available for:
* any elevated-volume candle;
* Echo Peak Up;
* Echo Valley Down;
* Ultra Up or Ultra Down;
* Echo Surge Up or Echo Surge Down;
* Echo Pulse Up or Echo Pulse Down;
* bullish volume divergence;
* bearish volume divergence.
The general elevated-volume alert activates when any non-normal classification is detected.
### Current-bar behaviour
Volume, high, low, and close can continue changing while the current chart candle remains open.
As a result, candle classifications may appear, change tier, change colour, or disappear before the candle closes.
Extreme Volume Event conditions may also change while the current candle remains open.
Pivot divergence requires right-side confirmation, but the confirmation bar itself may still be open when the condition first becomes true.
Users seeking stable alerts should generally configure PulseWire alerts for bar-close execution.
### Suggested starting settings
A practical starting process is:
1. Begin with the default settings on a liquid symbol.
2. Observe how frequently each colour appears.
3. Review the relationship between elevated-volume candles and nearby price structure.
4. Keep the default volume multiples until several historical examples have been inspected.
5. Enable chart-candle colouring only if it improves readability.
6. Enable the volume moving average for additional context.
7. Review divergence triangles while accounting for their confirmation delay.
8. Treat yellow diamonds as extreme-volume markers rather than proof of manipulation.
9. Treat both tables as simplified research measurements.
10. Test alerts before relying on them.
### Adjusting the volume tiers
Increase a tier’s volume multiple to make that classification less frequent.
Decrease the multiple to make it more frequent.
Changing the Echo Peak and Echo Valley body, EMA, or deviation settings affects how strictly the script defines price extension and candle size.
More restrictive values generally produce fewer classifications.
Less restrictive values generally produce more classifications.
Settings should be reviewed separately for each market and timeframe.
### What this implementation adds
Compared with the referenced open-source starting framework, this implementation adds or replaces:
* script-level volume calculations;
* script-level volume-spread calculations;
* configurable multi-tier candle classifications;
* longer-term extreme-volume thresholds;
* candle-body filters;
* EMA-extension filters;
* standard-deviation extension measurements;
* independently configurable classification colours;
* dark- and light-background table presets;
* optional main-chart candle colouring;
* regular price-versus-volume divergence;
* configurable divergence markers and lines;
* optional price-chart divergence references;
* Extreme Volume Event diamonds;
* body-based recovery measurements;
* recovery statistics;
* simplified divergence target/stop outcomes;
* expanded alert conditions.
These modules are combined to study relative volume, price response, divergence, and subsequent recovery within one indicator.
### Limitations
* Reported volume differs between exchanges, brokers, markets, and symbols.
* Some markets provide tick volume rather than centralized transaction volume.
* Combined or overridden data feeds can produce different results from the active chart.
* The classification tiers depend on configurable averages, lookbacks, and thresholds.
* An elevated-volume candle does not reveal the identity or intent of market participants.
* Echo Peak Up does not confirm a market top.
* Echo Valley Down does not confirm a market bottom.
* Ultra, Surge, and Pulse classifications are relative-volume categories, not trade-quality grades.
* Candle classifications may change before the current candle closes.
* Pivot divergence is delayed by the selected right-side confirmation length.
* Confirmed divergence markers are displayed on earlier pivot bars.
* Price-chart divergence lines are visual references and not projections.
* Extreme volume does not prove manipulation.
* Extreme-event detection requires sufficient qualifying historical samples.
* The recovery calculation uses body-based levels and closing-price crossings.
* Only one unresolved recovery event is tracked at a time.
* The historical tables are simplified measurements and not full strategy backtests.
* Only one unresolved divergence outcome is tracked at a time.
* Same-bar target and stop sequencing is not reconstructed.
* The outcome tracker checks the target before the stop.
* The indicator does not account for commissions, slippage, spread, liquidity, position sizing, or realistic execution.
* The indicator should not be used as the sole basis for a trading decision.
This indicator is an analytical tool and does not provide financial advice or guaranteed trading outcomes.
Indicator

Supertrend + FVG StrategySupertrend + FVG Strategy
A trend-following strategy that pairs a classic Supertrend trailing stop with Fair Value Gap (FVG) entries for precision timing — built with a full risk management and safety toolkit for anyone looking to test or automate it.
Core Concept
Most Supertrend implementations enter the instant the trend flips — which means buying/selling right into potential noise. This strategy instead uses Supertrend purely for trend direction and trailing stop, and waits for price to retrace back into a Fair Value Gap (a 3-candle imbalance) in that direction before entering. The idea: let the trend tell you which way to trade, let the FVG retest tell you when, rather than chasing the breakout candle itself.
Entry Logic
Supertrend establishes trend direction (configurable ATR period/multiplier)
An FVG forms and price retraces into it
Entry triggers only when the retest candle closes back in the trend's favor
Recommended Timeframe
Testing has shown solid results on 1-minute, 15-minute, and 30-minute charts — but not with the same settings carried across all three. Each timeframe needs its own tuning pass on ATR Multiplier, ADX threshold, and Displacement Multiplier; a config that works well on 15m will not automatically transfer to 1m or vice versa.
Because the parameters are volatility-relative (ATR-scaled) and trend-strength is measured via ADX (a normalized, timeframe-agnostic indicator), the underlying logic itself is not timeframe-specific — it's the specific numbers that need re-tuning per timeframe.
Important caveat on lower timeframes: 1-minute testing to date has been over a shorter window than the multi-month testing done on 15m. Strong short-window results are encouraging but not yet confirmed to the same degree — validate over a longer, separate time period before relying on any single timeframe's numbers.
Quality Filters (all independently toggleable)
ADX trend-strength filter — pauses entries when the market isn't actually trending, the single biggest lever against whipsaw losses in choppy conditions
Displacement filter — requires the retest candle to have genuine range/conviction, not just a marginal close
One trade per trend leg — blocks repeated re-entries within the same Supertrend direction
ATR-relative FVG size filter — ignores tiny, low-quality gaps
Higher-timeframe trend agreement — checks a higher timeframe's EMA trend before allowing a signal
Volume confirmation — requires above-average volume on the retest candle
Risk Management
Trailing stop via the Supertrend line — toggleable on/off in favor of a fixed stop
Optional breakeven stop-move once a trade reaches a set R-multiple
Optional fixed Risk:Reward target (default: ride until trend flip, no fixed ceiling)
Position sizing: fixed contracts, or risk a fixed % of account equity per trade (auto-scales size to stop distance)
Safety circuit breakers: auto-pause after N consecutive losses and/or a max daily loss %, both with an on-chart status indicator
Visuals
Fixed-size trade box on every entry showing the risk zone, profit zone, entry line, and TP1/TP2/TP3 reference levels — built for clean manual reading regardless of timeframe or how long a trade runs.
Automation
Entries/exits carry structured JSON alert messages (action, quantity, price) ready for webhook-based automation (e.g. TradersPost).
⚠️ Disclaimer
This is a technical trading tool, not financial advice. Past backtest performance does not guarantee future results — markets change regimes, and this strategy performs very differently in trending vs. choppy conditions by design. Always forward-test and validate on out-of-sample data before risking real capital. Commission and slippage are included in the backtest engine but should be adjusted to match your actual broker. Strategy

All FVG Boxes//@version=6
indicator("All FVG Boxes", overlay = true, max_boxes_count = 500)
bullFVG = low > high
bearFVG = high < low
if bullFVG
box.new(
left = bar_index - 2,
top = low,
… right = bar_index,
bottom = high,
border_color = color.rgb(255, 0, 179),
border_width = 1,
bgcolor = color.new(color.red, 90)) Indicator

Institutional Core Engine [IOF-X Major ICT]Institutional Core Engine
The Institutional Core Engine is an analytical Pine Script tool designed to assist traders in visualizing key Institutional Order Flow (IOF) and Inner Circle Trader (ICT) concepts on their charts. By removing unnecessary chart clutter, this indicator highlights high-probability liquidity pools, fair value imbalances, premium/discount zones, and structural pivot levels in a clean and modern aesthetic.
🔑 Key Features & Core Components
1. Major ICT Intermediate-Term Highs & Lows (ITH / ITL)
ITH (Red Markers): Automatically plots significant intermediate-term highs where buy-side liquidity resides.
ITL (Green Markers): Plots significant intermediate-term lows where sell-side liquidity resides.
Proximity & Range Protection: Utilizes dynamic ATR-based swing filtering and a distance gap rule (minimum 20 bars) to ensure micro-fractals do not clutter the chart.
Dynamic Sweep Auto-Deletion: Active ITH/ITL markers automatically disappear when price sweeps or breaks through the level, maintaining a clean visual workspace.
2. Clean Consolidation Ranges (EQH / EQL)
Equal Highs (EQH) & Equal Lows (EQL): Identifies active range consolidations using subtle horizontal trendlines.
Floating Labels: Displays clean, floating text labels for EQH at the top-right and EQL at the bottom-left without heavy background boxes.
3. Fair Value Gap Imbalances (BISI / SIBI)
BISI (Buyside Imbalance Sellside Inefficiency): Identifies bullish imbalances where price expanded aggressively upward.
SIBI (Sellside Imbalance Buyside Inefficiency): Highlights bearish imbalances where price expanded aggressively downward.
Golden Imbalance Candle: Highlights the origin bar of active imbalances with a golden candle hue for fast visual identification.
Mitigation Engine: Active zones automatically resolve and clear from the chart once price fully mitigates the gap.
4. Smart Money Fibonacci & OTE Engine
Optimal Trade Entry (OTE): Draws key equilibrium (0.5 Fib) and OTE extension levels (0.618 - 0.786 zone) across active swing ranges to assess premium and discount pricing.
5. Institutional Trend Filter (EMA 50 / 200)
Plots smoothed fast and slow moving averages to quickly assess higher-timeframe trend context and dynamic support/resistance zones.
6. Professional Real-Time HUD Dashboard
A top-right visual table displaying real-time metrics including active BISI/SIBI counts, current market state (Consolidation vs. Expansion), and overall institutional order flow bias.
📐 How to Use This Script
Context & Bias: Check the HUD Dashboard and Trend EMAs to establish the higher timeframe direction (Bullish, Bearish, or Neutral).
Liquidity Mapping: Observe active ITH and ITL markers along with EQH/EQL boundaries to locate where market liquidity is resting.
Imbalance Confluence: Look for price reactions near BISI or SIBI zones within the OTE (0.618 - 0.786) Fibonacci range for potential trade setups.
Execution Management: Once liquidity levels are taken or imbalances are mitigated, watch how the dynamic auto-deletion clears swept zones to adapt your analysis to fresh price action.
⚙️ Customization Settings
Sensitivity Controls: Adjust pivot lookback lengths and distance filters to match your preferred trading timeframe (Scalping, Intraday, or Swing).
Threshold Filters: Modify ATR imbalance thresholds to show only major market moves.
Visual Toggles: Turn off individual visual modules (EMAs, Fibs, or HUD) directly from the input settings menu to tailor the indicator to your personal chart style.
Disclaimer: This indicator is developed strictly for educational and analytical purposes on PulseWire. It does not guarantee future market outcomes nor constitute financial advice. Always apply proper risk management. Indicator

Indicator

Indicator

EPS Countdown - Days to Earningsfsa//@version=6
indicator("EPS Countdown - Days to Earnings", overlay=true)
// ---- Inputs ----
posInput = input.string("Bottom Left", "Table Position",
options = )
prefixTxt = input.string("EPS", "Label Prefix")
warnDays = input.int(5, "Turn red when days-to-go ≤", minval = 0)
getPosition(p) =>
switch p
"Bottom Left" => position.bottom_left
"Bottom Right" => position.bottom_right
"Top Left" => position.top_left
=> position.top_right
// ---- Pull earnings estimate with gaps so it's non-na only when a NEW estimate appears ----
est = request.earnings(syminfo.tickerid, earnings.estimate, barmerge.gaps_on, barmerge.lookahead_on)
// Persist the time of the most recent "new estimate" event = next report's scheduled bar
var float nextEarningsTime = na
if not na(est) and na(est )
nextEarningsTime := time
// ---- Days to go (calendar days) ----
daysToGo = na(nextEarningsTime) ? na : math.max(0, math.round((nextEarningsTime - time) / 86400000))
// ---- Draw label bottom-left (or wherever chosen) ----
var table t = table.new(getPosition(posInput), 1, 1)
if barstate.islast
txt = na(daysToGo) ? prefixTxt + " - No data" : prefixTxt + " - " + str.tostring(daysToGo) + " days to go"
bg = na(daysToGo) ? color.new(color.gray, 20) : daysToGo <= warnDays ? color.new(color.red, 10) : color.new(color.blue, 10)
table.cell(t, 0, 0, txt, text_color = color.white, bgcolor = bg, text_size = size.normal)//@version=6
indicator("EPS Countdown - Days to Earnings", overlay=true)
// ---- Inputs ----
posInput = input.string("Bottom Left", "Table Position",
options = )
prefixTxt = input.string("EPS", "Label Prefix")
warnDays = input.int(5, "Turn red when days-to-go ≤", minval = 0)
getPosition(p) =>
switch p
"Bottom Left" => position.bottom_left
"Bottom Right" => position.bottom_right
"Top Left" => position.top_left
=> position.top_right
// ---- Pull earnings estimate with gaps so it's non-na only when a NEW estimate appears ----
est = request.earnings(syminfo.tickerid, earnings.estimate, barmerge.gaps_on, barmerge.lookahead_on)
// Persist the time of the most recent "new estimate" event = next report's scheduled bar
var float nextEarningsTime = na
if not na(est) and na(est )
nextEarningsTime := time
// ---- Days to go (calendar days) ----
daysToGo = na(nextEarningsTime) ? na : math.max(0, math.round((nextEarningsTime - time) / 86400000))
// ---- Draw label bottom-left (or wherever chosen) ----
var table t = table.new(getPosition(posInput), 1, 1)
if barstate.islast
txt = na(daysToGo) ? prefixTxt + " - No data" : prefixTxt + " - " + str.tostring(daysToGo) + " days to go"
bg = na(daysToGo) ? color.new(color.gray, 20) : daysToGo <= warnDays ? color.new(color.red, 10) : color.new(color.blue, 10)
table.cell(t, 0, 0, txt, text_color = color.white, bgcolor = bg, text_size = size.normal) Indicator

ATK / DEF Directional Movement State EngineDescription
ATK / DEF Directional Movement State Engine is a market condition analysis framework built around the Directional Movement Index (DMI) system.
Unlike traditional DMI tools that mainly display +DI, -DI, and ADX values, this indicator focuses on interpre the effectiveness and current condition of directional movement through multiple analytical layers.
The engine combines directional strength, trend structure, volatility behavior, and price action characteristics to provide a structured view of market conditions.
The purpose of this framework is to evalu the qual of directional movement and understand the current state of market behavior.
Directional Movement Core
The foundation of this indicator is based on the DMI and ADX framework.
It analyzes:
+DI directional pressure
-DI directional pressure
ADX directional strength
The relationship between these components is used to class the current movement environment, including:
Strong directional conditions
Weak directional conditions
Balanced movement
Swinging conditions
Rather than focusing on a single numeri rea, the engine evalua how directional components interact with the broader market structure.
ATK / DEF Market State Concept
The ATK / DEF framework represents two different market behaviors.
ATK (Attack State)
Describes environments where directional movement demonstrates stronger activity and clearer momentum characteristics.
DEF (Defense State)
Describes environments where directional movement becomes weaker, balanced, or less defined.
The engine observes these states through directional strength, price structure, and movement behavior to describe the current market condition.
Directional Radar System
The Radar module analyzes current price behavior by combining candle structure and market movement characteristics.
It evaluates:
Candle body efficiency
Price range behavior
Directional pressure
Trend positioning
Short-term movement characterist
The radar provides a visual representation of the current behavioral condition, helping use understand whether the market is displaying expansion, decline, compression, or swing characteristics.
Trend Structure Analysis
The trend module evaluates market structure through multiple moving average relationships and price positioning.
It observes:
Short- trend direction
Medium-alignment
Long- structural condition
This provides additional context for understanding the relationship between directional movement and the overall price structure.
Velocity Measurement
The Velocity component measures current movement intensit through volatility conditions.
It evalua price movement range relative to recent market activity to describe different leve of movement speed.
This helps identify whether the current environment is experiencing:
Lower activity conditions
Normal movement conditions
Higher volatility conditions
Market Regime Observation
The Regime module evaluates changes in market activity using volatility structure.
It observes:
Expansion conditions
Contraction conditions
Range environments
This provides additional context around how the market is currently behaving.
ADX State Classification
The ADX state engine combines ADX strength with DI relationships to categorize directional conditions.
The classification includes:
Strong U
Strong D
Weak U
Weak D
Swing Condition
These states are designed to describe the current directional environment rather than forecast future market movement.
Integrated Dashboard
The built-in dashboard organizes multiple analytical components into a single view:
Engine status
Velocity level
Radar condition
Trend direction
Market regime
ADX state
Current price information
The dashboard provides a compact overview of market structure and directional behavior.
Design Philosophy
ATK / DEF Directional Movement State Engine is designed around the concept that market movement should be analyzed through multiple layers rather than a single indicator value.
By combining:
Directional movement analysis
ADX strength evaluation
Trend structure
Volatility behavior
Price action characteristics
the indicator provides a structured framework for observing market conditions and understanding directional movement effectiveness.
This tool is designed for analytical purposes, helping users stu market behavior, movement structure, and directional dynamics. Indicator

DoubleUp ORB LiteDoubleUp ORB Lite - Opening Range Breakout with A-D Grading
DoubleUp ORB Lite marks the opening range for a session you define, plots breakout extension levels, and grades each breakout A through D so you can separate a stronger breakout from a weaker one instead of treating every range break the same. It is the free entry point to DoubleUp ORB+.
How it works;
You define the opening range as a time window (entered as HHMM-HHMM - the default 0930-0945 captures the first fifteen minutes of the US session), with a separate control for which days it applies. During that window the script builds the range from either the high/low or the close, marks the range and its midpoint, and plots three breakout extension levels above and below at multiples of the range height (default 1x, 2x, 3x).
Before it trusts a break, it checks the range's own quality: the opening range is measured as a percentage of ATR-14 and compared to a minimum you set (default 30%). When the range comes in abnormally compressed it is flagged NARROW and its breakouts are drawn in grey, because a break out of an unusually tight range is more often noise than genuine expansion. An optional filter can also require the breakout's bar volume to exceed the session average.
How the grading works
Each breakout is scored on a small weighted model rather than a single trigger. The factors are real and script-derived: which side of session VWAP the breakout sits on, and a volume surge measured against the moving average ( a strong surge above 1.5x carries double weight versus a marginal one). The total maps to a letter grade printed on the breakout, so the grade is auditable rather than a black box. This grading approach, a specific, chart-derived criteria rather than a generic "trend" or "scalping" label, is the core of what the tool does.
Also included:
Session VWAP, the opening range midpoint, previous-day high and low levels, and a visual ATR trailing stop at 1.0x ATR-14, so a graded breakout comes with a ready reference for invalidation.
How to use it;
Set the Opening Range session to your instrument's open and match the time zone. Raise the minimum range/ATR threshold in choppy conditions to grey out low-quality breakouts, and use the grade to decide which breaks are worth acting on. Works on intraday timeframes across futures, indices, and other liquid instruments.
The full DoubleUp ORB+ adds Fibonacci extension levels, a higher timeframe bias and multi-timeframe volume filters, order block and breaker zones, a Fair Value Gap system, a volume profile, instrument presets with position sizing, and a full trade plan with graded targets. Indicator
