Dr.Oat SEPA Command # Dr.Oat SEPA Command Center V2
**Developed by Dr.Kor Endo**
Dr.Oat SEPA Command Center V2 is a technical analysis and stock-screening tool inspired by the principles of SEPA (Specific Entry Point Analysis), Stage 2 trend analysis, and volatility contraction concepts.
The indicator is designed to help traders identify stocks that are showing strong trend characteristics, constructive price contraction, proximity to a potential pivot, and breakout confirmation with volume expansion.
## Main Features
### 1. Stage 2 Trend Template
The script evaluates seven technical conditions using:
* SMA 50
* SMA 150
* SMA 200
* SMA 200 rising trend
* Distance above the 52-week low
* Proximity to the 52-week high
* Price position relative to SMA 50
A stock passing all seven conditions is considered to have passed the Stage 2 Trend Template.
### 2. Quantitative VCP Engine
The VCP Score is a quantitative proxy designed to identify characteristics associated with volatility contraction.
The score evaluates:
* Base depth
* Short-term range contraction
* Medium-term range contraction
* ATR contraction
* Volume dry-up
* Right-side price tightness
The VCP Score ranges from **0 to 100**.
Higher scores indicate a tighter and potentially more constructive setup.
### 3. Pivot Detection
The indicator automatically calculates an active pivot using the highest price of the previous configurable lookback period.
The current bar is excluded from the pivot calculation.
The dashboard also displays the percentage distance between the current price and the active pivot.
### 4. Setup Classification
The system classifies each stock into five possible states:
**BREAKOUT**
Trend Template passed, VCP conditions satisfied, price has moved above the pivot within the permitted breakout zone, and relative volume confirms the move.
**READY**
Trend Template passed, VCP conditions satisfied, and price is approaching the pivot from below.
**DEVELOPING**
The stock is in a valid Stage 2 trend, but the setup has not yet reached READY or BREAKOUT conditions.
**EXTENDED**
The stock has moved too far above the active pivot and may no longer offer an attractive entry point according to the configured maximum chase distance.
**SKIP**
The stock does not currently meet the required Stage 2 trend conditions.
Signal Codes:
* `0 = SKIP`
* `1 = DEVELOPING`
* `2 = READY`
* `3 = BREAKOUT`
* `4 = EXTENDED`
### 5. SEPA Score
The indicator calculates a composite **SEPA Score from 0–100** using:
* Trend Template — 30 points
* VCP characteristics — 30 points
* Volume characteristics — 15 points
* Pivot positioning — 15 points
* Breakout confirmation — 10 points
The score is intended as a ranking and screening tool rather than a standalone buy or sell signal.
### 6. Volume Analysis
The system evaluates both:
**Volume Dry-Up**
and
**Relative Volume (RVOL)**
Low relative volume during consolidation can help identify contraction, while expanding relative volume is used as confirmation during potential breakouts.
### 7. Daily RSI
Daily RSI is displayed for additional momentum context.
**Important:** RSI is informational only.
RSI is **not included in the Stage 2 Trend Template** and is **not included in the SEPA Score**.
### 8. Visual Dashboard
The on-chart dashboard provides a compact overview of:
* Current Status
* SEPA Score
* Trend Template Score
* VCP Score
* Daily RSI
* Active Pivot
* Distance to Pivot
* RVOL
* Base Depth
* Volume Dry-Up
* Range Contraction
* ATR Contraction
* Distance from 52-Week High
* Suggested Action
### 9. TradingView Pine Screener Support
The script exposes several numerical outputs that can be used as columns or filters within TradingView Pine Screener, including:
* SEPA Score
* Trend Template Score
* VCP Score
* Daily RSI
* Pivot Distance %
* RVOL
* Signal Code
* Base Depth %
* Volume10 / Volume50
* Trend Template PASS
For screening purposes, the **Daily timeframe (1D)** is recommended.
## Suggested Interpretation
Rather than treating the indicator as an automatic trading system, it can be used as a workflow:
**Market Universe → Stage 2 Trend → VCP → READY → BREAKOUT → Risk Management**
Stocks classified as READY may deserve closer monitoring around their pivot.
BREAKOUT indicates that the configured breakout and volume conditions have been satisfied.
EXTENDED is intended to warn against chasing a stock that has already moved significantly beyond its pivot.
## Important Notes
This indicator uses quantitative approximations of technical concepts such as VCP and SEPA.
Pattern recognition in financial markets is inherently subjective, and no numerical model can perfectly reproduce discretionary chart reading.
The tool should therefore be used as a **screening, ranking, and decision-support system**, not as a replacement for independent analysis.
Users are encouraged to evaluate:
* Overall market conditions
* Liquidity
* Fundamental quality
* Earnings growth
* Relative strength
* Risk/reward
* Position sizing
* Stop-loss strategy
before making any trading decision.
## Disclaimer
This script is provided for educational, research, and technical-analysis purposes only.
It does not constitute investment advice, financial advice, or a recommendation to buy or sell any security.
Past performance and historical technical patterns do not guarantee future results.
Users are solely responsible for their own trading and investment decisions.
---
**Developed by Dr.Kor Endo**
*Quantitative SEPA / Stage 2 / VCP Screening & Decision Support*
Indicator

MAD Volatility Trail [BackQuant]MAD Volatility Trail
Overview
MAD Volatility Trail is a robust trend-following overlay built from a rolling median and Median Absolute Deviation rather than a conventional moving average and standard deviation.
The indicator estimates a central price using the rolling median, measures how widely recent prices are distributed around that median using MAD, converts that dispersion into adaptive upper and lower bands, and then transforms those bands into one-sided trailing boundaries.
The result is a persistent bullish or bearish trend regime with:
A robust median-based center.
MAD-derived volatility bands.
Optional ATR minimum band width.
One-sided trailing support and resistance.
Optional median-slope confirmation.
Bullish and bearish regime flips.
Strength-reactive gradient and glow.
Post-flip bloom visualization.
Trend-coloured candles.
Signal and alert support.
The main distinction is statistical.
Most volatility trails rely on:
Means.
Standard deviation.
ATR.
MAD Volatility Trail instead uses:
Median.
Median Absolute Deviation.
Median-based statistics are substantially less sensitive to isolated extreme observations, making the framework useful when the user wants a trend structure that is less influenced by individual spikes or outliers.
Core concept
The indicator separates the problem into four stages:
Estimate a robust rolling center using the median.
Measure robust dispersion around that center using MAD.
Build upper and lower adaptive deviation bands.
Convert those raw bands into persistent trailing trend boundaries.
The resulting trail behaves conceptually like a volatility-aware regime filter, but its volatility estimate comes primarily from the empirical distribution of price around its median.
Why median instead of mean?
A conventional arithmetic mean is calculated by summing all observations and dividing by their count.
Every value directly affects the result.
This makes the mean sensitive to outliers.
Consider a simplified sample:
100
101
101
102
150
The extreme value at 150 pulls the arithmetic mean upward substantially.
The median is simply the middle observation after sorting:
Median = 101
The single extreme observation has much less influence.
This property is called robustness .
In markets, isolated large candles, gaps, liquidation events and temporary price spikes can distort mean-based statistics. Median-based calculations intentionally reduce the influence of those individual observations.
Rolling median
For each bar, the indicator collects the selected Source values across the MAD Lookback.
It then calculates the exact median of the available observations.
For an odd number of observations, the median is the middle sorted value.
For an even number, the median lies between the two central observations according to the median implementation.
The resulting value becomes the statistical center of the trail.
Unlike an EMA or RMA, the median is not recursively smoothed.
It is recomputed from the actual distribution of values inside the current rolling window.
Early-history behaviour
At the beginning of the chart, the script ignores unavailable historical values.
This means the first valid median calculations may use fewer observations than the full MAD Lookback until sufficient chart history has accumulated.
Once the complete lookback is available, the calculation uses the full selected window.
Median Absolute Deviation
After calculating the rolling median, the script measures the absolute distance of every observation from that median:
Absolute Deviation = |Value - Median|
It then takes the median of those absolute deviations:
MAD = Median(|Xi - Median(X)|)
This is the Median Absolute Deviation .
MAD measures the typical distance of observations from the median.
It serves a role similar to standard deviation, but the mathematics and statistical behaviour are different.
Why MAD is robust
Standard deviation squares deviations from the mean.
Large deviations therefore receive disproportionately large influence.
A single extreme observation can:
Move the mean.
Create a very large squared deviation.
Increase the final standard deviation substantially.
MAD does not square deviations.
It calculates absolute distance and then takes another median.
Extreme values therefore have limited ability to change the result unless enough of the underlying sample shifts.
This gives MAD a high resistance to outliers.
In practical chart terms, one unusual wick or shock candle is less likely to inflate the statistical width as dramatically as it could under a standard-deviation model.
MAD versus standard deviation
The two measures answer related but different questions.
Standard deviation
Measures squared dispersion around the arithmetic mean.
MAD
Measures median absolute dispersion around the median.
Standard deviation is highly useful when a mean-and-variance framework is desired.
MAD is useful when robustness to unusual observations is more important.
The indicator does not claim one is universally superior.
It intentionally uses MAD because the purpose is to construct a robust trend boundary.
MAD Scale
Raw MAD is not numerically identical to standard deviation.
Under a normal distribution, MAD is usually multiplied by a consistency factor of approximately 1.4826 when the goal is to make it comparable to standard deviation.
The indicator exposes this scaling directly:
Robust Deviation = Raw MAD × MAD Scale
The script default is 1.4655.
The input remains fully adjustable, so users who want the conventional normal-consistency approximation can set the factor near 1.4826.
This scale does not change the median itself.
It changes only the size of the deviation estimate used to build the bands.
Deviation Factor
After scaling MAD, the indicator applies the Deviation Factor:
MAD Width = Scaled MAD × Deviation Factor
This acts as the main sensitivity control.
Lower values:
Create narrower raw bands.
Place the trail closer to price.
Produce more frequent regime changes.
Higher values:
Create wider bands.
Require larger movement for reversals.
Produce more persistent trend states.
The MAD Scale and Deviation Factor both affect width, but they represent different concepts.
MAD Scale calibrates the statistical dispersion estimate.
Deviation Factor determines how much of that estimated dispersion is used for the trend envelope.
Raw MAD bands
The raw bands are:
Upper MAD Band = Median + Band Width
Lower MAD Band = Median - Band Width
Before trailing logic is applied, these bands can move freely upward or downward with:
The rolling median.
MAD dispersion.
Any active ATR floor.
These are statistical envelopes around the median.
They are not yet the final trend trail.
ATR Minimum Width
MAD can become extremely small when recent prices are tightly clustered.
In very low-dispersion conditions, this may place the raw bands extremely close to the median.
That can create excessive sensitivity to minor price fluctuations.
The optional ATR Minimum Width provides a secondary floor.
The script calculates:
ATR Floor = ATR(ATR Length) × ATR Floor Multiplier
When enabled:
Band Width = max(MAD Width, ATR Floor)
This means MAD remains the primary volatility model, but the bands cannot contract below the selected ATR-based threshold.
Why use an ATR floor?
MAD and ATR measure different aspects of market behaviour.
MAD measures:
Dispersion of the selected source around its rolling median.
ATR measures:
Bar-to-bar trading range.
Gaps relative to the previous close.
A market can have:
Low median dispersion.
But still produce meaningful intrabar range.
The ATR floor can prevent the trail from becoming unrealistically tight under those conditions.
ATR floor disabled
With ATR Minimum Width disabled, the entire structural width comes from:
MAD × MAD Scale × Deviation Factor
This produces the purest MAD-based version of the indicator.
ATR Length
ATR Length controls the volatility horizon used only for the optional minimum-width calculation.
It does not affect:
The rolling median.
Raw MAD.
Scaled MAD.
Note that the visual glow and bloom later in the script use a fixed ATR(14), separate from this ATR Length input.
Trailing bands
The raw MAD bands are converted into one-sided trails.
This is the stage that turns a statistical envelope into a persistent trend system.
Two independent trails are maintained:
Lower Trail.
Upper Trail.
Lower Trail
When the previous trigger remains above the previous Lower Trail, the new Lower Trail is:
max(Current Raw Lower Band, Previous Lower Trail)
This means the Lower Trail can:
Move upward.
Remain unchanged.
But cannot move downward while the condition remains active.
This creates a ratcheting support structure.
If the trigger falls below the prior Lower Trail, the trail is allowed to reset to the new raw lower band.
Upper Trail
When the previous trigger remains below the previous Upper Trail, the new Upper Trail is:
min(Current Raw Upper Band, Previous Upper Trail)
This means the Upper Trail can:
Move downward.
Remain unchanged.
But cannot move upward while the condition remains active.
This creates a ratcheting resistance structure.
If the trigger rises above the previous Upper Trail, the band can reset to the current raw upper value.
Why trailing the bands matters
A raw median-deviation envelope moves in both directions.
If those raw bands were used directly for trend changes:
The threshold itself could retreat toward price.
Small changes in median or MAD could produce unstable reversals.
The one-sided trail introduces hysteresis .
Hysteresis means that once a trend regime is established, the threshold required to reverse it remains on the opposing side.
This reduces the tendency to flip repeatedly around the rolling median.
Flip Trigger
The user can choose which series is used when evaluating trail breaks:
Close.
Source.
Close
Uses the candle close regardless of which series is used for the MAD calculation.
This is the conventional option.
Source
Uses the selected Source input.
For example, if HLC3 is selected as the Source:
The median is calculated from HLC3.
MAD is calculated from HLC3.
The trail can also be triggered by HLC3.
This keeps the center, dispersion and reversal trigger based on the same source.
Initial trend state
The trend begins in a neutral state.
Once a valid rolling median is available:
Trigger at or above Median = bullish initialization.
Trigger below Median = bearish initialization.
This initial assignment is not treated as a bullish or bearish flip.
Flip signals occur only after the indicator has already established one regime and later transitions into the opposite regime.
Bullish flip
A bullish regime change requires:
Trigger to move above the Upper Trail.
Current trend not already bullish.
Optional bullish median-slope confirmation to pass.
Once confirmed:
Trend becomes bullish.
The Lower Trail becomes the active trend boundary.
A bullish signal can be displayed.
Bearish flip
A bearish regime change requires:
Trigger to move below the Lower Trail.
Current trend not already bearish.
Optional bearish median-slope confirmation to pass.
Once confirmed:
Trend becomes bearish.
The Upper Trail becomes the active boundary.
A bearish signal can be displayed.
Active trend trail
The final displayed trend boundary depends on the regime:
Bullish = Lower Trail.
Bearish = Upper Trail.
This means the line automatically moves to the opposite side of price when a complete regime change occurs.
Median Slope Confirmation
The optional Median Slope Confirmation adds a directional requirement to trend reversals.
For a bullish flip:
Current Median > Median from Slope Lookback bars ago
For a bearish flip:
Current Median < Median from Slope Lookback bars ago
This requires the robust statistical center itself to move in the direction of the proposed new trend.
Why confirm with median slope?
Price can briefly cross a trail while the underlying median remains flat or continues moving in the opposite direction.
Slope confirmation can reject some of these events.
For example:
A bullish trail break with a still-falling median may represent:
A temporary rebound.
A liquidity sweep.
Noise inside a larger bearish structure.
Requiring the median to rise adds another layer of confirmation.
The trade-off is lag.
A genuine reversal may cross the trail before the rolling median has clearly changed direction.
Slope Lookback
Slope Lookback controls how far back the median is compared.
Lower values:
Respond more quickly.
Require only a very local median turn.
Higher values:
Require a broader directional shift.
Produce stronger confirmation.
Can delay reversals.
This same lookback is also used in the visual slope-strength calculation even when slope confirmation itself is disabled.
Break Trail On Flips
When enabled, the displayed trail is temporarily hidden on the actual regime-flip bar.
This creates a visual break between:
The previous regime’s trail.
The new regime’s trail.
Without the break, the plotting engine can draw a connecting segment from one side of the market to the other.
That connection has no analytical meaning.
Break Trail On Flips affects visualization only.
It does not affect:
Trend state.
Raw bands.
Trail calculations.
Signals.
Robust trend structure
The complete structural model can therefore be summarized as:
Rolling Median determines robust center.
MAD determines robust dispersion.
MAD Scale calibrates the dispersion.
Deviation Factor determines band distance.
Optional ATR floor prevents excessive compression.
Raw bands form the initial envelope.
Ratchet logic creates trailing support and resistance.
Opposite-trail breaks determine regime changes.
Optional median slope confirms those reversals.
This combination is what separates the indicator from simply plotting median ± MAD.
Visual strength model
The script calculates a separate Trend Strength value used only to control the presentation of the gradient and glow.
It does not alter:
Trend direction.
Trail levels.
Flip conditions.
Trend Strength combines:
Price distance from the active trail.
Absolute rolling-median slope.
Distance Strength
The script first measures:
Trail Distance = |Close - Active Trail|
This is normalized by the current band width.
The normalized distance is capped when price reaches twice the active band width away from the trail.
Conceptually:
Close to trail = low distance strength.
Far from trail = high distance strength.
This reflects how separated price is from the current structural boundary.
Slope Strength
The indicator also measures:
|Current Median - Median |
This value is normalized by the current band width and capped at one.
The purpose is to compare median movement against the current statistical width.
A steep median relative to the band width produces stronger visual slope strength.
Combined Trend Strength
The final visual strength is:
70% Distance Strength.
30% Median Slope Strength.
and is capped at one.
The distance component receives greater weight because the visual system places more emphasis on how strongly price is separated from the active trail.
Again, this number is not a probability, forecast or additional signal.
It is a visual intensity measure.
Layered gradient
The area between the active trail and current close is divided into several intermediate levels.
The script creates reference points approximately:
15% of the distance from trail to price.
35%.
60%.
82%.
Then the final segment to price.
These create five layered gradient regions.
The layers become progressively more transparent as they move away from the trail.
This gives the trail visual depth without turning the entire area between price and structure into one solid block.
Gradient direction
The geometry of the gradient is determined by whether close is above or below the active trail.
The colour itself comes from the current bullish or bearish trend regime.
The gradient therefore visualizes:
The active trend colour.
The distance between price and trail.
The relative strength of the trend visualization.
The gradient does not determine the regime.
Trend-strength gradient response
Higher Trend Strength reduces transparency in several layers.
This makes the ribbon more visible when:
Price is strongly separated from the trail.
The rolling median is moving meaningfully.
Lower strength produces a softer appearance.
This allows the visual presentation to communicate more than simple bullish or bearish state.
Flip bloom
The indicator includes a temporary post-flip bloom.
The bloom is derived from the number of bars elapsed since the most recent bullish or bearish transition.
Importantly, in the current implementation the bloom begins after the flip bar:
Flip bar: no bloom boost.
1 bar after flip: maximum bloom.
2 bars after flip: reduced bloom.
3 bars after flip: smaller residual bloom.
Afterward: bloom disappears.
The relative bloom strengths are:
1.00
0.55
0.25
This emphasizes the early bars following a newly confirmed regime change.
Why bloom after the flip?
The flip itself can optionally contain a break in the trail.
Applying the bloom to the following bars emphasizes the newly established active trail rather than drawing a large effect around a temporarily hidden flip point.
The bloom is cosmetic.
It does not modify the underlying calculations.
Trail glow
The active trail can also display a persistent glow.
Glow width is based on:
ATR(14) × a factor that increases with Trend Strength
This ATR(14) is fixed for visualization and is independent of the user-selected ATR Length used by the optional minimum-width floor.
The glow therefore becomes slightly wider as visual trend strength increases.
Two layers are used:
A tighter inner glow.
A broader outer glow.
The inner glow responds more strongly to Trend Strength and post-flip bloom.
Rolling Median display
The rolling median can be displayed independently from the trail.
This is useful for studying the difference between:
The current robust center.
The statistical raw bands.
The ratcheting trend trail.
During a bullish regime, the active Lower Trail can remain below the rolling median.
During a bearish regime, the active Upper Trail can remain above it.
The median is not itself the trend signal.
Raw MAD Bands display
The raw upper and lower MAD bands can also be shown.
These lines make it easier to see how the trailing logic differs from the unrestricted statistical envelope.
Raw bands:
Can move in either direction.
Trailing bands:
Can ratchet in only one direction while their persistence condition remains active.
The gap between raw and trailing levels illustrates the hysteresis introduced by the trend logic.
Trend candles
The script can redraw candles on the main chart using the active trend colour.
Bullish regime:
Uses the selected Bullish colour.
Bearish regime:
Uses the selected Bearish colour.
The candle colour represents the persistent trail regime, not whether each individual candle closed higher or lower.
A bearish candle can therefore remain bullish-coloured while the broader MAD Trail regime remains bullish.
Signal markers
Bullish and bearish markers appear only on complete transitions between established regimes.
A bullish marker requires:
Previous trend = bearish.
Current trend = bullish.
A bearish marker requires:
Previous trend = bullish.
Current trend = bearish.
Initial trend assignment does not generate a flip marker.
How to interpret the indicator
Bullish regime
A bullish state means price has previously broken above the opposing Upper Trail and the Lower Trail is now active.
The Lower Trail can be interpreted as:
Dynamic trend support.
A structural invalidation reference.
A trailing regime boundary.
Bearish regime
A bearish state means price has broken below the opposing Lower Trail and the Upper Trail is active.
The Upper Trail can be interpreted as:
Dynamic resistance.
A bearish invalidation reference.
A trailing regime boundary.
Price close to trail
When price approaches the active trail:
Visual distance strength decreases.
The gradient becomes softer.
The market is closer to the regime boundary.
This does not guarantee a reversal.
A healthy trend can repeatedly retest its active trail.
Price far from trail
When price moves substantially away:
Distance Strength rises.
The visual effect becomes stronger.
This indicates greater separation from the active structural boundary.
It should not automatically be interpreted as a better entry.
A market can be strongly extended and simultaneously close to exhaustion.
Median and trail rising together
During a bullish regime, a rising median combined with a rising Lower Trail indicates:
The robust center is moving upward.
The structural support boundary is also advancing.
This represents cleaner directional alignment.
Median flattening while trail remains bullish
The persistent regime can remain bullish while the median begins flattening.
This indicates:
The trend has not yet been invalidated.
But the robust center is no longer advancing as strongly.
The visual slope-strength component may weaken under this condition.
Raw band expansion
If MAD increases:
Raw bands widen.
Trail reset levels can move farther away.
This means recent source values are becoming more dispersed around the median.
Raw band contraction
If MAD falls:
The raw envelope tightens.
If the ATR floor is disabled, the structure can become substantially narrower.
If the ATR floor is enabled, contraction stops once the selected minimum width is reached.
How to use the indicator
1. Trend regime filter
Use the persistent trail state as directional context:
Bullish trail regime = prioritize long-side setups.
Bearish trail regime = prioritize short-side setups.
The trail does not define a complete trading system by itself.
2. Pullback structure
During a bullish regime, the Lower Trail can provide a dynamic reference for deeper pullbacks.
During a bearish regime, the Upper Trail can provide a reference for rallies.
The farther price moves from the trail, the greater the current structural separation.
3. Regime transitions
Bullish and bearish flips identify moments when price has crossed completely through the opposing robust-deviation trail.
These may be used as:
Trend-change alerts.
Confirmation for another entry method.
Potential exit conditions.
4. Median confirmation
Users who want more selective signals can enable Median Slope Confirmation.
This can be especially useful when:
The market is choppy.
Price frequently sweeps through statistical boundaries.
5. Pure robust-volatility mode
Disable the ATR Minimum Width to make band width depend only on:
Rolling MAD.
MAD Scale.
Deviation Factor.
This produces the purest version of the model.
6. Hybrid robust-volatility mode
Enable ATR Minimum Width when the MAD channel becomes too narrow for the instrument or timeframe.
This preserves MAD as the primary engine while adding a conventional range-based safety floor.
Input guide
Source
Series used for the rolling median and MAD calculation.
MAD Lookback
Controls the number of observations used for the rolling median and dispersion estimate.
Shorter values adapt faster.
Longer values create a broader and more stable distribution.
MAD Scale
Multiplier applied directly to raw MAD.
The commonly cited normal-distribution consistency factor is approximately 1.4826; the script default is 1.4655.
Deviation Factor
Controls the final width of the MAD envelope.
ATR Minimum Width
Prevents the active band width from falling below an ATR-derived floor.
ATR Length
Controls the ATR used by the optional floor.
ATR Floor
Controls the minimum width as a multiple of ATR.
Median Slope Confirmation
Requires the rolling median to move in the direction of a proposed trend flip.
Slope Lookback
Controls how far back the current median is compared.
It also influences the visual slope-strength calculation.
Flip Trigger
Selects Close or Source for trail-break detection.
Break Trail On Flips
Creates a visual discontinuity on transition bars.
How this differs from a standard Supertrend
A conventional Supertrend generally uses:
A price midpoint such as HL2.
ATR as the full band-width model.
MAD Volatility Trail instead uses:
Rolling median as its center.
Median Absolute Deviation as its primary width.
ATR only as an optional minimum floor.
The trail mechanics are conceptually related, but the statistical foundation is different.
How this differs from Bollinger Bands
Bollinger Bands normally use:
A moving average.
Standard deviation.
Symmetrical raw bands.
MAD Volatility Trail uses:
Rolling median.
Median Absolute Deviation.
One-sided trailing bands.
Persistent trend-state logic.
Bollinger Bands are primarily a statistical envelope.
MAD Volatility Trail converts its robust statistical envelope into a trend-regime system.
How this differs from median ± MAD alone
A simple median-MAD indicator would plot:
Median.
Median + MAD width.
Median - MAD width.
Those bands would move freely.
This indicator adds:
Ratchet logic.
Persistent bullish/bearish state.
Opposite-trail break conditions.
Optional median-slope confirmation.
Signals and alerts.
The raw statistical model is therefore only the first stage.
MAD versus ATR
ATR measures the size of trading ranges.
MAD measures dispersion of the selected source around its median.
They can behave very differently.
For example:
A volatile but mean-reverting market can have large ATR with relatively controlled median dispersion.
A persistent directional displacement can produce increasing MAD even if individual candle ranges are moderate.
The optional floor allows both concepts to coexist without replacing the MAD foundation.
Robust statistics and financial markets
Financial return and price distributions frequently contain:
Outliers.
Large jumps.
Skew.
Fat tails.
Mean-and-standard-deviation models remain extremely useful, but robust alternatives can provide different information when unusual observations are present.
Median and MAD belong to a family of robust statistical tools designed to reduce sensitivity to extreme sample values.
This does not make the resulting indicator immune to market shocks.
If enough of the rolling window moves, the median and MAD will also move.
The advantage is primarily that one isolated observation has less influence.
Strengths
Uses an exact rolling median.
Uses exact Median Absolute Deviation rather than an approximation.
More resistant to isolated outliers than mean/standard-deviation envelopes.
Provides a configurable MAD scale.
Supports a pure MAD or MAD-plus-ATR hybrid width.
Converts robust statistics into persistent trend boundaries.
Uses one-sided trail logic to reduce rapid regime switching.
Provides optional median-direction confirmation.
Separates signal logic from visual strength.
Includes dynamic gradient, glow and post-flip visualization.
Exposes raw MAD, scaled MAD, active band width and Trend Strength in the Data Window.
Limitations
The indicator is reactive rather than predictive.
Robust statistics do not eliminate whipsaws.
A very short MAD Lookback can still react sharply.
A very long lookback can delay adaptation to new regimes.
Median calculations can remain unchanged across several bars and then move discretely as the rolling sample changes.
Higher Deviation Factors reduce reversals but increase confirmation lag.
The ATR floor changes the model from pure MAD dispersion to a hybrid MAD/ATR structure.
Median Slope Confirmation can reject false breaks but also delay genuine reversals.
Extreme readings in the visual-strength system are not probabilities of continuation.
Glow and bloom are cosmetic and should not be treated as separate signals.
Computational considerations
Unlike many moving averages, the exact rolling median and MAD calculations require the script to build and process the values inside the selected window.
For each bar:
The rolling source sample is collected.
Its median is calculated.
Absolute deviations from that median are calculated.
A second median is calculated from those deviations.
Larger MAD Lookbacks therefore require more work than a simple recursive EMA or ATR calculation.
This is the cost of calculating the robust statistics directly.
Causality and live-bar behaviour
The indicator uses current and historical values without intentional future-looking references.
On completed historical bars, the model is causal.
On a live unfinished bar:
The Source can change.
The current rolling median can change.
MAD can change.
Raw bands can change.
A trail break can appear or disappear.
Users who require confirmed regime changes should evaluate signals at bar close.
Data Window
The indicator exposes four useful diagnostic values.
Raw MAD
The unscaled median absolute deviation.
Scaled MAD
Raw MAD multiplied by the selected MAD Scale.
Active Band Width
The actual band width after:
MAD scaling.
Deviation Factor.
Optional ATR minimum floor.
Trend Strength
The visual-strength score expressed from approximately 0 to 100.
This is calculated from trail distance and median movement.
It is not part of the trend-flip logic.
Alerts
The indicator includes:
MAD Trail Bullish: established bearish regime changes to bullish.
MAD Trail Bearish: established bullish regime changes to bearish.
MAD Trail Flip: either regime transition occurs.
Summary
MAD Volatility Trail builds a trend-following regime from robust statistics.
The calculation begins with an exact rolling median of the selected Source.
Rather than measuring dispersion with standard deviation, the script calculates the Median Absolute Deviation:
MAD = Median(|X - Median(X)|)
The raw MAD is scaled and multiplied by a configurable Deviation Factor to create the statistical width around the rolling median.
The resulting raw upper and lower bands are:
Median + Band Width.
Median - Band Width.
An optional ATR minimum floor prevents these bands from becoming excessively narrow during low-dispersion conditions.
The raw envelope is then transformed into one-sided trailing boundaries.
The Lower Trail can ratchet upward while price remains above it, while the Upper Trail can ratchet downward while price remains below it.
These trails create hysteresis and form the actual regime-switching structure.
A bearish regime turns bullish only when the selected trigger breaks above the opposing Upper Trail, optionally while the rolling median itself is rising.
A bullish regime turns bearish only when the trigger breaks below the Lower Trail, optionally while the median is falling.
The active Lower Trail is displayed during bullish regimes and the active Upper Trail during bearish regimes.
A separate visual-strength model measures price-to-trail distance and median slope relative to the active band width. That score controls gradient and glow intensity but does not alter signals.
The result is a robust alternative to conventional mean-, standard-deviation- and ATR-centered trend trails.
Rather than allowing individual extreme prices to dominate its statistical center and dispersion estimate, MAD Volatility Trail uses the median twice: once to define the center of the distribution and again to define the typical absolute distance from that center.
This creates a trend framework designed around robust location, robust dispersion and persistent trailing structure .
Indicator

Indicator

FW_MLA+ Key Trading Levels Pro
A+ Key Trading Levels Pro is an intraday trading indicator designed to give traders a clean, quick view of important support/resistance levels and overall directional alignment.
The indicator automatically plots several commonly watched market levels directly on the chart:
Previous Day High and Low
Previous Week High and Low
Premarket High and Low
First 5-Minute High and Low
Each level extends across the chart and can be customized by color, thickness, line style, label size, and label transparency. Price labels can also display the exact dollar value of each level for faster chart reading.
The indicator also includes a compact A+ Trade Checklist designed to help traders quickly evaluate bullish or bearish alignment without cluttering the chart.
The checklist evaluates:
Previous Day range
Premarket range
Previous Week range
First 5-Minute range
VWAP
1-Minute 9 EMA
Bullish conditions display in green, bearish conditions display in red, and neutral or inside conditions remain neutral.
When all six bullish criteria align, the checklist displays:
A+ CALL
When all six bearish criteria align, the checklist displays:
A+ PUT
The purpose of the checklist is not to generate automatic trade entries, but to provide a fast visual summary of market structure and directional confluence.
Key Features
Automatic intraday support and resistance levels
Previous day and previous week levels
Premarket high and low
Opening 5-minute range
Full-width horizontal levels
Exact price labels
Transparent label option
Customizable colors and line styles
Compact A+ checklist
Bullish and bearish directional scoring
VWAP confirmation
1-minute 9 EMA confirmation
Designed for intraday trading on liquid stocks and ETFs
Suggested Use
This indicator is primarily intended for intraday traders looking for confluence around major market levels. It can be used to quickly identify whether price is trading above, below, or inside important reference areas before considering a trade setup.
For example, a trader may use an A+ CALL reading as confirmation that multiple bullish conditions are aligned, while an A+ PUT reading indicates bearish alignment.
It should be used alongside proper risk management, price action, volume, market context, and the trader’s own strategy.
Important Note
The first 5-minute levels are based on the opening 9:30 AM–9:35 AM Eastern Time candle. Premarket levels are calculated from the 4:00 AM–9:30 AM Eastern Time session, so extended-hours data should be enabled when applicable.
This indicator is for informational and educational purposes only and does not constitute financial advice or guarantee future results.
For the TradingView title, I’d use:
A+ Key Trading Levels Pro | PDH/PDL + PM + 5M + Checklist
And for the short description:
Clean intraday key levels with previous day/week, premarket, opening 5-minute range, VWAP, 9 EMA, and a compact bullish/bearish A+ checklist. Indicator

StormCore Engine: OTE, Alligator & Volume ProfileThe StormCore Engine is a modular, all-in-one technical analysis tool designed to consolidate three powerful trading methodologies into a single, highly optimized script. By combining Optimal Trade Entry (OTE) zones, a modernized Williams Alligator, and a dynamic Volume Profile with node detection, this engine helps traders identify liquidity zones, trend alignments, and key volume clusters without exhausting indicator limits on the chart.
This script is built with a modular architecture, meaning every core component can be toggled on or off via a "Master Toggle" in the settings, keeping your workspace clean and reducing CPU load when specific tools are not in use.
### Core Modules
1. Optimal Trade Entry (OTE)
This module automatically plots Fibonacci retracement levels (including the 62% and 79% "sweet spot" boxes) anchored either to the visible chart area, custom date ranges, or higher timeframe swings.
- Features fractal detection to identify potential market structure shifts.
- Customizable Fibonacci extensions for dynamic profit-taking targets.
2. Super Alligator
A modernized take on the classic Bill Williams Alligator indicator. It utilizes SMMA-based Jaw, Teeth, and Lips to gauge trend direction and momentum.
- Signal Generation: Prints explicit Buy/Sell markers only when the "mouth" is fully open and the gap between the close price and the Lips exceeds a user-defined percentage.
- Trend Filters: Includes optional SMA 200 and VWAP filters to ensure signals only fire in the direction of the macro trend or intraday fair value.
3. Volume Profile & Node Detection
Calculates the trading volume at specific price levels over a user-defined lookback period.
- Displays the Point of Control (POC) and Value Area High/Low (VAH/VAL).
- Node Detection Algorithm: Highlights high-volume Peaks and low-volume Troughs within the profile, which often act as significant support and resistance barriers.
### Practical Application (How to Use)
A high-probability setup occurs when multiple modules align:
- Wait for the price to retrace into the OTE 70% box.
- Check if this zone coincides with a Volume Profile Peak (indicating strong historical liquidity).
- Await a confirming signal from the Super Alligator (e.g., a Buy triangle firing above the VWAP filter) to execute the trade.
All modules are calculated independently but rendered cleanly to avoid chart clutter. Adjust the settings for your specific asset and timeframe.
Developed by Andy Storm | AI-StormCore. Indicator

Daybreak Strategy [Achira Meegasthanne]Daybreak Strategy
Daybreak Strategy is an Opening Range Breakout (ORB) strategy designed to capture potential directional moves based on the high and low of the 9:00 opening candle on the 1-hour timeframe.
The strategy places breakout stop orders above and below the opening range, with the entry distance dynamically adjusted using ATR and the selected Sensitivity.
🔹 KEY FEATURES
⏱️ 1-HOUR TIMEFRAME
The strategy is specifically designed to operate on the 1-hour timeframe .
The opening range is taken from the 9:00 candle, making the 1H timeframe important for the intended ORB calculation.
📊 OPENING RANGE BREAKOUT
The strategy records:
• Opening Range High
• Opening Range Low
• Opening Range Range
• Opening Range Midpoint
These levels are displayed in the on-chart dashboard and used to establish potential breakout entries.
🟢 LONG BREAKOUT
A Long stop order is placed above the Opening Range High.
The entry level is calculated using:
Opening Range High + ATR × Sensitivity
This allows the breakout distance to adapt to current market volatility.
🔴 SHORT BREAKOUT
A Short stop order is placed below the Opening Range Low.
The entry level is calculated using:
Opening Range Low − ATR × Sensitivity
This provides a volatility-adjusted downside breakout level.
⚙️ CUSTOMIZABLE SETTINGS
The strategy provides several user-controlled settings:
• Sensitivity
• Take Profit
• Stop Loss
• Up Color
• Down Color
• Dashboard
• Dashboard Size
• Dashboard Color
The default Sensitivity is 0.5 .
🎯 TAKE PROFIT & STOP LOSS
Each Long and Short entry uses predefined Take Profit and Stop Loss values.
Default settings:
• Take Profit = 40 ticks
• Stop Loss = 25 ticks
These values can be adjusted according to the user's preferred testing configuration.
📈 ATR-BASED ENTRY
The strategy uses a 14-period ATR to dynamically calculate the distance between the opening range and the breakout entry level.
This allows the entry distance to respond to changing market volatility.
🌅 DAILY OPENING RANGE
The opening range is reset at the beginning of each new trading day.
The 9:00 candle high and low are captured once per day and used as the day's Opening Range levels.
🔄 ONE-TIME ORDER PLACEMENT
The strategy places the Long and Short breakout orders only once after the Opening Range has been established.
This prevents repeated placement of the same breakout orders during the session.
⏰ END-OF-DAY ORDER CANCELLATION
Untriggered Long and Short stop orders are cancelled during the defined end-of-session period around 21:30–22:00 .
This prevents remaining breakout orders from continuing indefinitely after the intended trading session.
📍 VISUAL BREAKOUT LEVELS
The Opening Range High and Opening Range Low are plotted on the chart as step-style levels.
• Buy Stop level = Opening Range High
• Sell Stop level = Opening Range Low
These levels make the daily breakout structure easy to identify visually.
📋 TRADING DASHBOARD
The strategy includes an on-chart dashboard displaying important Opening Range information.
The dashboard can show:
• Current Bias
• Opening Range High
• Opening Range Low
• Opening Range Range
• Opening Range Mid
The dashboard also displays a message when the strategy is not being used on the 1-hour timeframe.
🧭 MARKET BIAS
The strategy determines a directional bias from the 9:00 opening candle.
The dashboard displays either:
Long
or
Short
based on the opening candle's relationship between its Close and Open.
📊 PERFORMANCE STATISTICS
The strategy includes a statistics dashboard containing:
• Total Trades
• Win Rate
• Starting Capital
• Ending Capital
• Average Win
• Average Loss
• Profit Factor
• Max Runup
• Return
• Max Drawdown
These statistics provide a quick overview of the strategy's historical backtest performance.
💰 PROFIT & LOSS ANALYSIS
The performance section uses the strategy's calculated trading results to display:
• Net Profit
• Gross Profit
• Gross Loss
• Winning Trades
• Losing Trades
• Return Percentage
• Profit Factor
This allows users to evaluate the historical performance directly from the chart.
🧠 HOW IT WORKS
1. Detect New Trading Day
The strategy resets the Opening Range variables at the beginning of each new day.
2. Capture the 9:00 Candle
The high and low of the 9:00 candle are recorded as the day's Opening Range High and Opening Range Low.
3. Calculate ATR
A 14-period ATR is used to measure current market volatility.
4. Calculate Breakout Levels
Long and Short stop orders are positioned around the Opening Range using ATR multiplied by Sensitivity.
5. Wait for Breakout
A Long position can be triggered when price reaches the upper breakout level.
A Short position can be triggered when price reaches the lower breakout level.
6. Apply Risk Management
Take Profit and Stop Loss values are applied to the corresponding position.
7. Cancel Remaining Orders
Untriggered breakout orders are cancelled during the defined end-of-day session.
8. Display Performance
The dashboard provides Opening Range information and historical strategy statistics.
📌 CORE CONCEPT
9:00 Opening Range → ATR Adjustment → Breakout Stop Orders → Take Profit / Stop Loss → End-of-Day Management
⚠️ IMPORTANT DISCLAIMER
This strategy is provided for market analysis, backtesting, and educational purposes .
Historical strategy performance does not guarantee future results.
Backtest statistics such as Win Rate, Profit Factor, Return, and Max Drawdown can vary significantly depending on the market, timeframe, trading session, and selected inputs.
Always perform your own analysis, apply proper risk management, and thoroughly test the strategy before using it with real capital.
Capture the opening range. Wait for the breakout. Let volatility define the entry.
Strategy

Indicator

Volatility Expansion Score (0-4) v2.2 [TotoMazter]Volatility Expansion Score (0-4)
WHAT IT IS
This indicator detects one specific market state: a compressed market whose calm is starting to break. It scores every closed bar from 0 to 4, one point per condition:
Compressed regime — ATR% in the lower tercile of its own last 500 bars
Expansion starting — ATR% higher than on the previous bar
Narrow Bollinger Bands — band width in the lower tercile of its last 120 bars
Volume waking up — tick volume above its 100-bar mean (z-score > 0)
Score 3 (orange) is the signal threshold; score 4 (red) is a full trigger. Everything is self-normalized (rolling percentiles and z-scores, no absolute levels), so the indicator needs no recalibration across price regimes: in our research it behaved the same with gold at 1,800 and at 4,800.
WHAT IT DOES NOT DO — READ THIS FIRST
It does NOT predict direction. In the research program behind this script, the directional question was tested three separate ways on 14 years of XAUUSD minute data — 132 technical variables, a dedicated 40-feature study (intraday synthetic dollar index, gold/silver lead-lag, compression context, M1 microstructure, path features), and real aggressor order flow from COMEX gold futures — and all three came back null. A 4/4 score says "an impulse is more likely than usual", never which way. Any use of this tool as a bullish/bearish signal is outside what was validated.
It also does not promise big moves in dollar terms. The signal fires when ATR is compressed (about 0.83x its normal level), and the subsequent move measured in % of price is slightly SMALLER than average (about 0.97x). What increases is the move relative to current volatility. If you size stops and targets in ATR units (R multiples), the historical edge is real; if you think in dollars, there is none.
MEASURED RESULTS (all historical, XAUUSD 1h, 2013-2026, ~79,000 bars)
Out-of-sample validation on a pre-registered 2023-2026 holdout, opened once: bars with score >= 3 were followed by a 2-ATR impulse 1.95x more often than the base rate (95% CI 1.76-2.03). Score = 4: 2.73x (CI 2.09-2.94).
Honest base rates: with a ~5% base impulse rate, 2.7x lift means roughly 13-14% of full triggers are followed by an impulse. Most signals are NOT followed by a large move. Position sizing must assume this.
The follow-through advantage, measured in ATR units and controlled for time of day, is about x1.106, favorable in all 21 measurable hourly buckets and in 13 of 14 years. Without the time-of-day control the raw number is x1.139 — the control matters, and the built-in table applies it for you.
Where signals cluster on gold: the New York morning (13:00-15:00 UTC) and the London open (08:00-09:00 UTC). The most volatile hour of gold's day in this dataset is 14:00 UTC (about 1.8x the daily average hourly range).
STOCKS (NVDA, AMD, TSLA — high-volume, high-volatility test set)
The signal transfers, but with roughly half the strength: x1.04-1.08 in ATR units after the same time-of-day control (below 1 in dollar terms). Three structural rules came out of that validation and are enforced by the script's guards:
Do not use 5-minute charts: intraday volume is U-shaped and the signal degenerates into a closing-auction detector (a fake x1.68 "edge" came entirely from the last 30 minutes of the session).
Do not use 1-hour charts on RTH equities: the session's partial bar has a smaller range by construction and concentrates signals. The script excludes partial bars automatically (marked with a dot).
Use 15m or 30m, and keep the characterization horizon inside the session (H <= 12 on 15m, H <= 11 on 30m). Windows containing long closures (overnight gaps, weekends) are excluded by the gap guard.
Earnings are not the driver: excluding extreme-gap days does not change the result.
THE BUILT-IN CHARACTERIZATION TABLE
The table answers, for THE SYMBOL AND TIMEFRAME ON YOUR CHART, whether the signal has historically preceded larger moves, using three measures: raw MFE in ATR (inflated by the denominator and by time of day — reference only), MFE in % of price (immune to the denominator), and the intra-hour advantage (computed within each hour of day, then aggregated — the one that decides, highlighted in yellow). It also reports the ATR-at-signal ratio (~0.8 expected) and the maximum hourly concentration of signals (if it exceeds ~8 pp, part of what you see is the clock, not the market). If it says "short sample", the guards are refusing to output a number that cannot be measured cleanly on your chart — that is a feature.
WHY IT IS ORIGINAL
Rolling percentiles converted to the exact convention of pandas rolling rank, so the script reproduces the research module it was ported from (practical parity check: on XAUUSD 1h, score >= 3 should fire on roughly 17% of bars, score = 4 on roughly 3.7%).
Wilder ATR (RMA), population standard deviations, closed-bar evaluation with alerts on bar close, and an entry reference at the next bar's open — no repainting of the validated signal.
Session guards: partial-bar exclusion (any intraday bar shorter than its timeframe) and a data-measured gap guard (characterization windows may not contain a closure longer than 3x the timeframe), so equity overnight gaps and weekends do not contaminate the statistics while gold's 1-hour daily break does not block them.
A self-auditing characterization table with denominator-aware and time-of-day-controlled measures. It will happily tell you the signal does NOT work on your chart.
SETTINGS
Signal windows (14 / 500 / 120 / 100) and tercile cuts are the canonical values of the validated module; changing them invalidates every reference number above. "Confirm on bar close" keeps the indicator inside its validated definition. The alert message includes the score breakdown and states that the entry reference is the next bar's open. The characterization table can be displayed in English or Spanish via the "Table language" setting.
LIMITATIONS
All figures are historical measurements from the research program described above; past behavior does not guarantee future behavior. The stock characterization is in-sample (no reserved validation window). This is a statistical tool for regime awareness — when to pay attention — not a trading system: it provides no direction, no entries, and no risk management. Indicator

DNSE VN301!, SMA ADX/DI Trend Following Strategy"SMA ADX DI Trend Following" is a trend-following strategy designed to identify and capture directional price movements by combining SMA slope analysis with ADX trend-strength confirmation and DI directional signals. The strategy uses SMA(89) to determine the primary trend direction, while ADX(14) confirms that the market has sufficient trend strength and DI identifies whether bullish or bearish pressure is dominant.
By requiring agreement between trend direction, trend strength, and directional momentum, the strategy seeks to filter out weak or unclear market conditions while participating in stronger intraday trends. An optional SMA(200) trend filter provides additional broader-trend confirmation. The strategy also includes configurable stop loss, take profit, trading session filters, signal confirmation settings, and automatic end-of-session position closure for disciplined risk management.
Strategy settings and configuration:
Chart timeframe: recommended 15-minute chart
Position size: 3 contracts
Signal SMA length: 89
SMA slope lookback: 5
ADX length: 14
ADX threshold: 20
DI filter: On / Off
New signal only: On / Off
SMA trend filter: disabled by default
Trend filter SMA length: 200
Stop loss: 10 points
Take profit: 20 points
Take profit: On / Off
Time filter: On / Off
Trading session: 09:00 – 14:30
Trade direction: Long / Short / Both
Signal arrows: disabled by default
Default script settings:
The strategy uses a signal SMA with a length of 89 to identify the main market direction. Instead of comparing the current SMA with only the previous candle, the bot uses a slope lookback of 5.
This means the bot compares the current SMA with the SMA value from 5 candles ago. If the current SMA is higher than the SMA from 5 candles ago, the SMA is considered rising. If the current SMA is lower than the SMA from 5 candles ago, the SMA is considered falling.
This method helps reduce noise on the 1-minute timeframe. The bot does not enter a trade just because the SMA moves slightly within one candle.
ADX(14) is used to confirm trend strength. When ADX is above 20, the market is considered to have enough trend strength for trading signals to be considered.
DI is used to confirm trend direction. When +DI is above -DI, buying pressure is dominant. When -DI is above +DI, selling pressure is dominant.
When the DI filter is enabled, the bot only allows Long trades when +DI > -DI. It only allows Short trades when -DI > +DI.
The “New signal only” option helps reduce repeated entries in the same signal state. When this option is enabled, the bot only enters when a new Long or Short state appears.
The SMA(200) trend filter is disabled by default. Users can enable this filter if they want stricter alignment with the larger trend.
When the SMA(200) trend filter is enabled, the script only allows Long trades when SMA(200) is rising and only allows Short trades when SMA(200) is falling.
Entry and exit rules:
Long entry:
Signal SMA is rising based on the 5-candle lookback
AND ADX(14) > 20
AND +DI > -DI, if the DI filter is enabled
AND SMA(200) is rising, if the SMA trend filter is enabled
AND a new Long state has just appeared, if new signal only mode is enabled
AND the signal appears during the trading session
AND trade direction allows Long entries
Long exit:
Stop loss: 10 points from entry price
Take profit: 20 points from entry price, if enabled
Signal SMA turns downward
Reversal when a valid Short signal appears
Automatic position close at the end of the trading session
Short entry:
Signal SMA is falling based on the 5-candle lookback
AND ADX(14) > 20
AND -DI > +DI, if the DI filter is enabled
AND SMA(200) is falling, if the SMA trend filter is enabled
AND a new Short state has just appeared, if new signal only mode is enabled
AND the signal appears during the trading session
AND trade direction allows Short entries
Short exit:
Stop loss: 10 points from entry price
Take profit: 20 points from entry price, if enabled
Signal SMA turns upward
Reversal when a valid Long signal appears
Automatic position close at the end of the trading session
Strategy logic:
CNPS 05 is suitable for market phases with clear trend direction. The signal SMA identifies the main direction. ADX filters for markets with enough trend strength. DI confirms whether buying or selling pressure is dominant.
This structure helps reduce noise in sideways conditions. The bot does not rely only on SMA slope. It also requires enough trend strength and directional confirmation from DI.
Time filter:
The default trading session is 09:00 – 14:30, designed to avoid two abnormal volatility periods.
ATO 08:45 – 09:00 is the opening auction period. Price can gap strongly and technical signals may be noisy.
ATC and negotiated trading 14:30 – 15:00 is the closing auction period. Price can move sharply or reverse quickly.
Users can adjust the start time and end time in the bot settings.
Risk disclaimer:
Futures trading involves a high level of risk and prices can move sharply. This script is provided for reference, research, and backtesting purposes only. Users should fully understand derivatives trading, their own risk tolerance, and the strategy logic before applying it to live trading.
All investment decisions are the responsibility of the user. phaisinh.online is not responsible for any losses arising from the use of this strategy in real trading. Past performance does not guarantee future results.
______________________________________________________________
"SMA ADX DI Trend Following" là một chiến lược giao dịch theo xu hướng, được thiết kế nhằm xác định và nắm bắt các chuyển động giá theo xu hướng bằng cách kết hợp phân tích độ dốc SMA với xác nhận sức mạnh xu hướng từ ADX và tín hiệu định hướng từ DI. Chiến lược sử dụng SMA(89) để xác định hướng xu hướng chính, trong khi ADX(14) xác nhận thị trường đang có đủ sức mạnh xu hướng và DI xác định bên mua hay bên bán đang chiếm ưu thế.
Bằng cách yêu cầu sự đồng thuận giữa hướng xu hướng, sức mạnh xu hướng và động lượng định hướng, chiến lược hướng tới việc lọc các điều kiện thị trường yếu hoặc không rõ xu hướng, đồng thời tham gia vào các xu hướng intraday mạnh hơn. Bộ lọc xu hướng SMA(200) tùy chọn cung cấp thêm xác nhận về xu hướng tổng thể. Chiến lược cũng bao gồm các tùy chọn Stop Loss, Take Profit, bộ lọc khung thời gian giao dịch, cài đặt xác nhận tín hiệu và cơ chế tự động đóng vị thế khi kết thúc phiên, nhằm đảm bảo quản trị rủi ro một cách chặt chẽ và có kỷ luật.
Cài đặt & cấu hình chiến lược:
Biểu đồ: khuyến nghị khung 15 phút
Khối lượng giao dịch: 3 hợp đồng
Chu kỳ SMA tín hiệu: 89
SMA slope lookback: 5
Chu kỳ ADX: 14
Ngưỡng ADX: 20
Bộ lọc DI: Bật / Tắt
Chỉ vào khi tín hiệu mới: Bật / Tắt
Bộ lọc xu hướng SMA: Tắt mặc định
Chu kỳ SMA bộ lọc: 200
Cắt lỗ: 10 điểm
Chốt lời: 20 điểm
Dùng chốt lời: Bật / Tắt
Bộ lọc giờ: Bật / Tắt
Khung giờ giao dịch: 09:00 – 14:30
Chiều giao dịch: Mua / Bán / Cả hai
Hiện mũi tên tín hiệu: Tắt mặc định
Cài đặt mặc định của script:
Chiến lược sử dụng SMA tín hiệu chu kỳ 89 để xác định hướng chính của thị trường. Thay vì so sánh SMA hiện tại với đúng một nến trước, bot sử dụng SMA slope lookback 5.
Điều này có nghĩa là bot so sánh SMA hiện tại với SMA của 5 nến trước. Nếu SMA hiện tại cao hơn SMA của 5 nến trước, SMA được xem là đang dốc lên. Nếu SMA hiện tại thấp hơn SMA của 5 nến trước, SMA được xem là đang dốc xuống.
Cách tính này giúp giảm nhiễu trên khung 1 phút. Bot không vào lệnh chỉ vì SMA nhích nhẹ trong một nến ngắn.
ADX(14) được dùng để xác nhận sức mạnh xu hướng. Khi ADX lớn hơn 20, thị trường được xem là có đủ lực xu hướng để xét tín hiệu giao dịch.
DI được dùng để xác nhận hướng xu hướng. Khi +DI lớn hơn -DI, lực tăng đang chiếm ưu thế. Khi -DI lớn hơn +DI, lực giảm đang chiếm ưu thế.
Khi bật bộ lọc DI, bot chỉ cho phép lệnh Mua khi +DI > -DI. Bot chỉ cho phép lệnh Bán khi -DI > +DI.
Tùy chọn “Chỉ vào khi tín hiệu mới” giúp hạn chế vào lại liên tục trong cùng một trạng thái. Khi bật tùy chọn này, bot chỉ vào lệnh khi trạng thái Long hoặc Short vừa mới xuất hiện.
Bộ lọc SMA(200) được để tắt mặc định. Người dùng có thể bật bộ lọc này nếu muốn giao dịch chặt hơn theo xu hướng lớn.
Khi bật bộ lọc SMA(200), script chỉ cho phép lệnh Mua khi SMA(200) dốc lên và chỉ cho phép lệnh Bán khi SMA(200) dốc xuống.
Điều kiện vào và thoát lệnh:
Vào lệnh Mua:
SMA tín hiệu dốc lên theo lookback 5
VÀ ADX(14) > 20
VÀ +DI > -DI, nếu bật bộ lọc DI
VÀ SMA(200) dốc lên, nếu bật bộ lọc xu hướng SMA
VÀ trạng thái Mua vừa mới xuất hiện, nếu bật chế độ chỉ vào tín hiệu mới
VÀ tín hiệu xuất hiện trong khung giờ giao dịch
VÀ chiều giao dịch cho phép lệnh Mua
Thoát lệnh Mua:
Cắt lỗ: 10 điểm từ giá vào lệnh
Chốt lời: 20 điểm từ giá vào lệnh, nếu bật
SMA tín hiệu đảo chiều xuống
Đảo chiều khi xuất hiện tín hiệu Bán hợp lệ
Tự động đóng lệnh khi hết khung giờ giao dịch
Vào lệnh Bán:
SMA tín hiệu dốc xuống theo lookback 5
VÀ ADX(14) > 20
VÀ -DI > +DI, nếu bật bộ lọc DI
VÀ SMA(200) dốc xuống, nếu bật bộ lọc xu hướng SMA
VÀ trạng thái Bán vừa mới xuất hiện, nếu bật chế độ chỉ vào tín hiệu mới
VÀ tín hiệu xuất hiện trong khung giờ giao dịch
VÀ chiều giao dịch cho phép lệnh Bán
Thoát lệnh Bán:
Cắt lỗ: 10 điểm từ giá vào lệnh
Chốt lời: 20 điểm từ giá vào lệnh, nếu bật
SMA tín hiệu đảo chiều lên
Đảo chiều khi xuất hiện tín hiệu Mua hợp lệ
Tự động đóng lệnh khi hết khung giờ giao dịch
Logic chiến lược:
CNPS 05 phù hợp với các giai đoạn thị trường có xu hướng rõ ràng. SMA tín hiệu giúp xác định hướng di chuyển chính. ADX giúp lọc những giai đoạn thị trường có lực. DI giúp xác nhận lực đang nghiêng về bên Mua hay bên Bán.
Cấu trúc này giúp bot hạn chế tín hiệu nhiễu trong vùng sideway. Bot không chỉ nhìn độ dốc SMA, mà còn yêu cầu thị trường có đủ sức mạnh xu hướng và có xác nhận hướng từ DI.
Bộ lọc giờ:
Mặc định 09:00 – 14:30, nhằm tránh hai vùng biến động bất thường.
ATO 08:45 – 09:00 là giai đoạn khớp lệnh mở cửa. Giá thường có thể gap mạnh và tín hiệu kỹ thuật dễ bị nhiễu.
ATC và giao dịch thỏa thuận 14:30 – 15:00 là giai đoạn khớp lệnh đóng cửa. Giá có thể biến động mạnh hoặc đảo chiều nhanh.
Người dùng có thể điều chỉnh giờ bắt đầu và giờ kết thúc trong phần cài đặt bot.
Tuyên bố rủi ro:
Giao dịch hợp đồng tương lai có mức độ rủi ro cao và giá có thể biến động mạnh. Script này chỉ phục vụ mục đích tham khảo, nghiên cứu và kiểm thử. Người dùng cần hiểu rõ giao dịch phái sinh, khẩu vị rủi ro cá nhân và logic của chiến lược trước khi áp dụng vào giao dịch thực tế.
Mọi quyết định đầu tư thuộc trách nhiệm của người dùng. phaisinh.online không chịu trách nhiệm cho bất kỳ khoản lỗ nào phát sinh từ việc sử dụng chiến lược này trong giao dịch thực tế. Hiệu quả trong quá khứ không đảm bảo kết quả trong tương lai.
Strategy

Decision timeDecision Time is an intraday session overlay built around fair-value boxes and confirmation after a breakout retest. The script creates a box from a selected session's anchor candle, extends that box for the configured session duration, and then tracks whether price breaks out, retests, and confirms continuation with a second close outside the box.
The indicator supports multiple session anchors:
- Market Reopen
- Asia
- London
- New York Open
- New York PM
- Pre-news
How it works:
- When a selected session begins, the script captures the anchor candle.
- The fair-value box is built from either the anchor candle range or a fixed band around the chosen fair-price source.
- If price closes above the box, the script starts watching for a bullish retest that still holds above the box.
- If the next candle also closes above the box, the script prints a long signal.
- The bearish sequence is mirrored below the box.
Session behavior:
- Each session can be enabled or disabled independently.
- Each session box can use its own duration.
- The Asia session can optionally extend for the full day.
- The script can also color each session start candle and draw a separate rectangle around that start candle.
- A preview box shows the next upcoming session.
Main inputs:
- Session timezone and display timezone
- Session enable/disable toggles
- Per-session box lengths
- Fair-price source: Open, Midpoint, or Close
- Fair-value box mode: anchor candle range or fixed band
- Entry window after the anchor
- Maximum bars allowed between breakout and retest
- Retest touch and close conditions
- Signal limits and cooldown
- Session start candle colors and optional start-candle rectangles
Visual outputs:
- Session fair-value boxes
- Fair-price line
- Breakout and retest markers
- Long and short confirmation labels
- Session phase background shading
- Next session preview box
- Session start candle coloring
What makes this script different:
- It is session-anchored rather than using one continuous breakout model for the whole chart.
- It separates the breakout, retest, and confirmation steps instead of flagging the first close outside the range as the final signal.
- It allows different session box lengths and a full-day Asia mode, which makes it easier to adapt the same workflow across multiple market phases.
Important limitations:
- This is an indicator, not a strategy or automated execution system.
- It does not place orders, manage risk, or calculate performance.
- Signals depend on the selected session anchors, duration settings, and chart timeframe.
- The logic is designed for intraday use and may be less useful on higher timeframes or symbols with very different session behavior.
- A signal only means the configured box/retest conditions were met. It does not guarantee continuation or profitability.
This script is for chart analysis and workflow structure only. It is not financial advice. Indicator

Multi EMA SMA Pro - 5/13/20/50/100/200 - MTFMULTI EMA/SMA PRO — 5/13/20/50/100/200 + MTF
Nine independent moving averages in one indicator, each with its own length,
type, timeframe, color and width. Defaults give you the classic 20 / 50 / 100 /
200 on your chart timeframe, with 5 and 13 a click away.
EVERY LINE IS LABELLED
No more guessing which line is which. Each average is tagged at the right edge
with its length — and optionally its type, its timeframe, its current value, and
how far price sits from it in percent. You read "200 D +18.06%" straight off the
chart instead of hovering over lines to find out.
DAILY / WEEKLY / MONTHLY AVERAGES ON ANY CHART
Every slot has a Chart / Daily / Weekly / Monthly / Custom selector, so you can
sit on a 5-minute chart and still see exactly where the daily 200 and the weekly
200 are — the levels that actually decide intraday reversals. Slots 7, 8 and 9
come pre-set to 200 D, 30 W and 200 W. Each higher-timeframe line is tagged with
D, W or M so there is never any ambiguity about what you are looking at. Ask for
a timeframe below your chart and the slot quietly falls back to chart data rather
than returning misleading values.
INFO TABLE
An on-chart panel lists every enabled average, its current value, and how far
price is above or below it in percent, color-coded green and red. It is the
fastest way to tell whether price is extended and due a snap back, or resting on
support. Decimal precision is adjustable.
GOLDEN CROSS / DEATH CROSS, DONE PROPERLY
GC/DC detection is on by default and measured on the DAILY 50 vs 200 no matter
what timeframe you are viewing — so an intraday chart shows the real cross, not a
5-minute imitation of one. Markers carry their own context: "GC 50/200 D".
Lengths, timeframe and MA type are all configurable, or you can point the cross
logic at any two of your plotted lines instead.
EVERYTHING ELSE
- EMA / SMA / WMA / HMA / RMA / VWMA globally, or overridden per line
- Custom source, plot offset, transparency, per-line width and color
- Line / step-line / circles / cross plot styles
- Slope-based coloring (green rising, red falling)
- Ribbon fill between any two averages
- Alerts for price crossing each average, plus golden and death cross
- Palette chosen to stay readable on both light and dark chart backgrounds
A NOTE ON HIGHER-TIMEFRAME DATA
Leave "wait for bar close" off and the daily and weekly lines update live inside
the forming candle, which is usually what you want when trading. The trade-off is
that an intraday cross can appear and then disappear before the session closes.
Turn it on for confirmed, non-repainting values that step one bar late.
If you find this useful, a boost is appreciated. Suggestions and feedback welcome in the comments.
Open-source — feel free to study, fork, and adapt. Indicator

Volume + RVOL + Directional Delta [Clean]# Volume + RVOL + Directional Delta
## What this is
A volume pane with three layers: raw volume colored by relative volume, a
signed Directional Delta histogram, and a dashboard that reports **how each
number was actually produced**.
The third layer is the point. Relative volume and volume delta both depend on
data that is not always available, and most implementations substitute a
different measurement when the real one is missing — without saying so. This
indicator computes the same things everyone else computes, then tells you when
what you are looking at is not what the label claims.
Every fallback in the script is visible in the dashboard. There are no silent
substitutions.
---
## The problem it addresses
Two silent substitutions happen constantly in volume tooling.
**1. Time-of-day RVOL that isn't.** Comparing a bar to prior bars at the same
clock time is the right way to do intraday RVOL — 9:30 volume and 2:00 volume
are not the same population. But it only works if session bars land on
consistent clock times. On a 65-minute regular-hours chart there are six bars
per session and the opens repeat cleanly. Turn on extended hours and the
session runs about 14.8 bars, the opens drift, and the same-time search returns
almost nothing. Most scripts fall back to a rolling average at that point and
keep displaying the number as though nothing changed.
**2. Volume delta that is really just bar direction.** Estimating delta
requires summing signed intrabar volume from a lower timeframe. TradingView's
intrabar budget is finite — at 65m/1m that is 65 intrabars per chart bar,
covering roughly a year of history before `request.security_lower_tf()` starts
returning empty arrays. The usual fallback is a chart-bar proxy: positive if
the bar closed up, negative if it closed down. That proxy can only ever return
exactly ±volume, i.e. ±100% delta. It is not a noisier version of intrabar
delta. It is a different measurement with a different range, and a single proxy
bar contributes the largest value any bar can contribute.
Both substitutions are reasonable as fallbacks. Neither is acceptable as a
silent one.
---
## Relative volume
**Baseline statistic.** Median by default rather than mean. The mean is dragged
upward by exactly the news-driven spikes RVOL exists to detect, which makes a
fixed threshold like 2.0x mean different things on different tickers and in
different regimes. The median keeps the threshold comparable across names.
**Time-of-day mode** walks backward collecting prior bars whose open lands on
the same hour and minute as the current bar, then takes the median of those.
The setting is a **target sample count, not a search window**. This matters
more than it sounds. A search-window setting produces a completely different
statistical baseline on every timeframe — 120 bars finds about 20 samples on
65m, 12 on 39m, and 4 on 15m. Asking for 20 comparable sessions instead means
20 sessions wherever they are reachable. A separate maximum search distance
bounds how far the scan may walk to find them.
Sizing guidance, on a 390-minute regular-hours session:
Chart TF Bars/session Search distance for 20 samples
10m 39 ~780
15m 26 ~520
39m 10 ~200
65m 6 ~120
78m 5 ~100
130m 3 ~60
195m 2 ~40
The default 1000-bar ceiling reaches 20 samples down through 10m. Some
combinations are simply unreachable — 20 sessions on a 1-minute chart would
need 7800 bars — and those degrade to the rolling baseline and say so.
**Attainment is a three-state result**, because once the setting means "20
sessions", clearing a bare minimum of 10 is not the same as meeting the
request:
MODE TOD target met — the baseline you configured
MODE TOD* minimum met, target missed — usable, but not what you asked
MODE ROLL* minimum missed — fell back to rolling entirely
The middle state keeps a useful 15-sample baseline rather than discarding it,
while refusing to report it as though 20 sessions had been achieved.
**Coloring.** Gray below the high threshold, green at high RVOL, gold at
extreme. Thresholds are configurable.
---
## Bar completion, and why nothing is projected
RVOL divides a **partial** current bar by a median of **completed** bars. It
therefore reads low at the start of a bar and climbs throughout. A 0.4x forty
minutes into a 65-minute bar is not the same statement as a 0.4x at the close.
This is deliberately not projected to a full-bar estimate. Intraday volume is
U-shaped, so scaling linearly by elapsed time overstates near the open and
understates into the close — and an extrapolated figure displayed to two
decimals invites more trust than it has earned. The honest fix is a baseline
built from the same elapsed *fraction* of prior same-time-of-day bars, which
requires intrabar history for every baseline bar and is a substantially larger
build.
So the indicator reports completion instead and lets you discount. The `BAR%`
cell turns amber below 95%, which is precisely when the RVOL cell beside it is
understated.
One caveat: this is wall-clock elapsed against nominal bar duration. A bar
truncated by a session boundary or a holiday early close reads below 100% even
at its close. In time-of-day mode such bars are compared against other bars at
the same clock time, so RVOL itself stays meaningful — only the completion
figure misreports.
---
## Directional Delta
Each lower-timeframe bar's entire volume is signed by that bar's own candle
direction, with dojis resolved against the prior close, and the signed values
are summed across the chart bar.
**It is called Directional Delta because that is what it is.** It is not
market-buy volume minus market-sell volume. No lower-timeframe reconstruction
can see bid/ask trade classification; it can only sign small bars by their
direction. That is genuinely useful information about intrabar pressure, and it
is not order flow, and the name should not imply otherwise.
**Cumulative Directional Delta uses real intrabar bars only.** Bars that fell
back to the proxy are excluded from the total rather than included and flagged.
This is worth explaining, because it drives the display. Proxy bars are not
scattered randomly through the window — the intrabar budget runs out going
*backward*, so they form the oldest contiguous block. Filtering therefore
produces a **shorter, more recent window**, not a cleaned full-length one. The
column header reports the real bar count for that reason:
57B DΔ +8.7M
57B DΔ% +12.6%
VALID 57/60
You asked for 60 bars and you are looking at a clean measurement over 57. With
zero valid bars both cells read `n/a` rather than a confident `+0`.
Cumulative delta % is total delta divided by total volume across those same
valid bars — not the average of per-bar percentages.
The lookback is left in bars rather than normalized to sessions, deliberately.
It means different amounts of market time on different charts — 60 bars is ten
sessions on 65m but 2.3 sessions on 15m — and the tooltip says so. Which span
you want is a judgment, not something the script should make for you.
---
## Dashboard reference
RVOL current bar volume / active baseline
BAR% bar completion; amber below 95%, when RVOL is understated
MODE TOD / TOD* / ROLL / ROLL*, plus "med" or "avg"
SAMP 20+ (target met with margin) / 20 (met exactly) / 15/20 (short)
BAR DΔ current bar Directional Delta
BAR DΔ% as a share of bar volume
nB DΔ cumulative over valid bars; header states how many
nB DΔ% cumulative delta / cumulative volume, same bars
VALID valid bars / requested bars
Δ TF intrabar timeframe in use, or why there isn't one
The `Δ TF` cell distinguishes four outcomes, because "no intrabar data" has
causes that call for different responses:
1 / 15S intrabar data genuinely in use
Chart* a valid lower timeframe was requested, no data came back
INVALID manual timeframe is not lower than the chart — fix the setting
Chart no lower timeframe exists at all (1-second chart)
`INVALID` exists because entering 65m as the delta timeframe on a 65m chart
used to display a calm white "Chart", identical to the legitimate case. Both
fall through to the proxy; only one is a mistake.
**Color convention.** Amber means one thing throughout: *the number is usable
but is not the measurement you asked for.* Red appears in exactly one place and
means *this setting cannot work as entered*. Keeping those separate is what
makes the pane readable at a glance.
---
## Settings guidance
- **65m regular hours:** defaults work as-is. About 120 bars of search finds
the 20-sample target.
- **15m and 10m:** also fine at the 1000-bar default, but the scan runs much
further. If the script becomes slow, turn off *Compute Time-of-Day Baseline
on History* — historical bar coloring then uses the rolling baseline while
the dashboard uses time-of-day, which is a real inconsistency and is why it
is a visible toggle rather than a silent optimization.
- **Extended-hours charts:** time-of-day will degrade to `ROLL*`. Session bar
opens do not repeat. Either switch to regular hours or accept the rolling
baseline knowingly.
- **Daily and above:** time-of-day is inapplicable and is bypassed.
- **Delta timeframe:** leave on automatic. It steps down correctly including on
1-minute charts. Sub-minute intrabar data requires a higher TradingView plan
tier; on a lower tier the request returns empty and `Δ TF` reports `Chart*`.
- **Below ~15 samples**, the median becomes sensitive to holiday early-close
sessions, whose truncated final bars carry structurally low volume.
---
## Alerts
Six conditions. High RVOL and Extreme RVOL are straightforward.
The two combined alerts — extreme volume with positive or negative Directional
Delta — **require real intrabar data**. On a proxy bar the delta sign is
nothing more than the candle body's direction, so an ungated version would fire
on "heavy volume, bar closed up" while appearing to describe something more.
Two ungated variants are provided separately and named for what they actually
test: *Extreme Volume + Up Bar* and *Extreme Volume + Down Bar*, each stating in
its own message that it does not test Directional Delta.
---
## What this is not
- It does not project or estimate finished bar volume.
- Directional Delta is not bid/ask trade classification and does not claim to be.
- It makes no directional claim, generates no entries, and has no backtest.
- The proxy fallback is not "close enough." It is excluded from cumulative
figures and labeled where it appears, so you can decide whether a number is
usable for what you are doing.
---
## Implementation notes
Both rolling statistics (`ta.sma` and `ta.median`) are evaluated
unconditionally and then selected, rather than being called inside a
conditional branch, which would produce an inconsistent series.
The sample scan probes for one more than the target, then discards it. That is
what makes `20+` truthful: it means a 21st match genuinely existed, not merely
that the loop stopped. A bare `20` means the target was met with no margin left
in the window, which is worth distinguishing.
The scan exits as soon as the target is met, so the search ceiling costs
nothing on timeframes that reach it — 65m stops near bar 126 regardless of the
setting. It is not free where the target is unreachable: the loop then runs the
full distance on every bar, which is what the history toggle is for.
`todActive` reflects what the code actually used, never what was requested. The
dashboard reads that flag rather than the input, which is what prevents MODE
from displaying `TOD` while a rolling baseline is in use.
The compact number formatter uses `"#0"` rather than `"#"` for sub-thousand
values — a bare `"#"` drops the digit on sub-1 values and renders a lone minus
sign.
Open source. Indicator

Macro HUDMacro HUD is an on-chart panel that shows the macro context around the instrument you are trading, so you can read price with the broader backdrop in view rather than in isolation.
Most indicators transform the price already on your chart into another form of the same price. Macro HUD does something different: it reads a set of other markets and presents their current state as context on a single panel, so you do not have to open several extra charts or an economic calendar to see the wider picture. It is a context dashboard, not a signal generator.
What it shows
The panel has four sections:
Macro engine — the US Dollar Index (DXY), the US 10-year and 2-year Treasury yields, crude oil, and the VIX. Each row shows its current value and a direction arrow measured over a lookback you set. The VIX row adds a volatility-regime band: Calm, Normal, Stressed, or Panic.
Regime — two plain-language reads derived from the rows above: a dollar read (bid or offered, from its recent direction) and a risk read (risk-on, risk-off, or mixed, from a chosen index's trend together with the VIX band).
Watchlist — up to five instruments of your choice, each labelled Bull or Bear depending on whether its price sits above or below a moving average, so you can see the directional state of a whole basket at a glance.
Event — an optional manual countdown to your next key economic releases. You enter the events yourself; the panel displays whichever is soonest and turns red inside a stand-down window you define.
How it works
Every value in the panel is requested from another symbol on a timeframe you choose (Daily by default) using request.security. The direction arrows compare the current value to the value a set number of bars earlier. The VIX band and the dollar and risk reads are simple threshold and trend rules applied to those requested values — the band uses fixed volatility thresholds, and the risk read combines an index's position relative to its moving average with the VIX band. The watchlist Bull/Bear flags compare each requested symbol's price to an EMA of its own price. The event countdown compares the current time to the timestamps you enter and shows the nearest upcoming one. Nothing in the panel is predictive; it reports the current state of external data.
Why it is original, and why these parts are combined
Macro HUD is not a single built-in republished, and it is not a mashup of overlapping signals. Each component answers a different question, and they are gathered together because a discretionary trader usually needs all of them at once before acting:
The macro engine answers "what is the broad backdrop?" — the dollar, rates, oil, and volatility.
The regime rows condense that backdrop into a plain read that can be absorbed at a glance.
The watchlist answers "what state is my basket in right now?" across several instruments without switching charts.
The event row answers "is it safe to act, or is a major release imminent?" — the one piece Pine cannot source on its own.
The purpose of the combination is to assemble, on one panel, the external context a trader would otherwise gather from several separate windows plus an economic calendar. No component duplicates another; each covers a distinct part of the question "should I be looking at this market now, and with what lean?" That specific, purpose-built combination is what the script contributes.
How to use it
Add it to any chart. Open the settings and point the macro and watchlist symbols at instruments your data plan supports, set the read timeframe (Daily gives the broad regime regardless of your chart timeframe), and choose the EMA length used for the Bull/Bear flags. If you follow economic events, type your next few releases into the event slots. The panel then updates live. Panel text colour is theme-aware by default and can be forced to black or white.
Limitations and things to be aware of
Pine cannot read the economic calendar or news, so the event slots are filled in by hand. If you do not maintain them, the event row simply shows that no event is set.
The direction arrows show short-term direction over your chosen lookback, not the absolute level. A market can show a down arrow while still being historically high, so read the arrow as recent drift, not position.
The regime reads are deliberately simple threshold and trend rules, not a proprietary model. They are a quick summary, not a forecast.
Some symbols (DXY, yields, VIX) depend on your TradingView data plan. If a row shows "n/a", open the settings and replace that symbol with one your plan provides. The script handles missing symbols without failing.
All values reflect the chosen read timeframe and update on that basis.
Scope
Macro HUD assembles context. It does not generate buy or sell signals, predict direction, or tell you what to do, and it makes no performance claims. The interpretation and every trading decision remain entirely yours.
This script is open-source. The full Pine code is available on this page for anyone to read, verify, and build upon.
Indicator

Indicator

Dynamic Liquidity ZonesDynamic Liquidity Zones is a price-action indicator designed to identify equal highs and equal lows where resting liquidity may be concentrated.
The indicator compares confirmed pivot points and creates a liquidity zone when two pivot highs or two pivot lows form within the selected equality threshold.
Liquidity Zone Types
EQH — Equal High liquidity zone
Equal highs may represent buy-side liquidity resting above previous highs. EQH zones are displayed using the selected bearish-zone color.
EQL — Equal Low liquidity zone
Equal lows may represent sell-side liquidity resting below previous lows. EQL zones are displayed using the selected bullish-zone color.
Dynamic Detection
The indicator uses adjustable left- and right-side pivot lengths to confirm meaningful swing highs and lows.
When two confirmed pivots are within the selected percentage threshold, a zone is drawn between their prices. The two pivot locations are marked with circular points, making it easier to identify the structure responsible for creating the zone.
Each active zone automatically extends to the latest bar until price sweeps its outer boundary.
Liquidity Sweeps
An EQH zone is considered swept when price trades above its highest boundary.
An EQL zone is considered swept when price trades below its lowest boundary.
After a sweep, the user can choose to:
• Keep the zone visible in a faded historical state
• Automatically delete the swept zone from the chart
Retained zones are relabeled as Swept EQH or Swept EQL, allowing previous liquidity events to remain available for market-structure review.
Volume Information
Optional volume labels display the volume associated with each pivot bar. The active zone label displays the combined pivot-bar volume used to form the liquidity zone.
Large values are automatically formatted using K and M abbreviations.
Zone Consolidation
Nearby active zones of the same type are grouped visually to reduce label congestion.
When multiple EQH or EQL zones exist within the consolidation range, the indicator displays a combined label such as:
2x EQH
3x EQL
The label can also display the combined pivot volume for the grouped zones.
Features
• Automatic equal-high and equal-low detection
• Adjustable pivot confirmation lengths
• Adjustable equality threshold
• Tracks multiple active liquidity zones
• Optional combined pivot-volume display
• Optional dashed zone midline
• Custom bullish and bearish colors
• Adjustable zone transparency
• Active zone-label consolidation
• Automatic sweep detection
• Option to retain or delete swept zones
• Optimized active-zone limit for lower-timeframe charts
Liquidity zones represent areas where orders may be resting, but they do not guarantee a reversal or continuation. Price can sweep a liquidity area and continue moving in the same direction.
This indicator should be combined with market structure, displacement, trend, session context, and appropriate risk management.
For educational and informational purposes only. This indicator is not financial advice and does not guarantee future results.
Indicator

Relative Volume (RVOL) PercentileRelative Volume (RVOL) Percentile
What it does
Relative Volume (RVOL) Percentile shows when participation on the current chart bar is unusual versus its own recent history. The pane displays a relative-volume histogram colored as Dry-up, Normal, High, or Extreme, with an optional norm line at 1.0x. It describes observed volume conditions only and does not generate directional trade signals.
How it works
The script compares each bar with a rolling sample of completed bars from the same chart timeframe. The current bar is excluded from both the baseline and percentile sample.
The baseline is either the median or simple moving average of the previous Lookback bars.
RVOL is current volume divided by that baseline. A value of 1.0 means current volume equals the selected norm.
Percentile rank is the percentage of the previous Lookback volume values that are less than or equal to current volume.
Dry-up is below the Dry-up threshold, Normal is below High, High is below Extreme, and Extreme is at or above the Extreme threshold.
How to use it
Add the script to a chart and choose a Lookback that represents the recent activity you want to compare.
Read bars near 1.0x as close to the selected volume norm, then use the stage color to judge how unusual that bar is within the recent sample.
Use High or Extreme transitions to identify unusually active bars and Dry-up transitions to identify unusually quiet bars.
Enable price-bar coloring or the last-bar RVOL label only when that extra context is useful.
Inputs
Lookback (Bars) - Number of prior completed chart bars used for both the baseline and percentile sample. Range 2-1000, default 20.
Baseline Method - Median reduces the influence of isolated spikes; SMA uses the arithmetic mean. Default Median.
Dry-up Below (%) - Percentile below which volume is classified as Dry-up. Range 0-100, default 15.
High From (%) - Percentile from which volume is classified as High. Range 0-100, default 80.
Extreme From (%) - Percentile from which volume is classified as Extreme. Range 0-100, default 95. Thresholds must remain in ascending order.
Show Histogram - Shows or hides the RVOL histogram. Default on.
Show Reference Line (Norm) - Shows or hides the 1.0x norm line. Default on.
Color Price Bars - Applies the same stage color to price bars on the main chart. Default off.
Show Value Label - Shows the current RVOL value on the last bar only. Default off.
Text Size - Numeric size for the optional last-bar label. Range 10-24, default 12.
Opacity (%) - Controls visual opacity. Range 0-100, default 70.
Dry-up / Normal / High / Extreme colors - Sets the four stage colors used by the histogram and optional price-bar coloring.
Signals and alerts
Relative Volume - Extreme - fires on a confirmed bar when the stage newly becomes Extreme.
Relative Volume - High - fires on a confirmed bar when the stage crosses from below High into High or Extreme.
Relative Volume - Dry-up - fires on a confirmed bar when the stage newly becomes Dry-up.
Repainting
The baseline and percentile sample use only prior chart bars. Alert transitions require the current chart bar to be confirmed, so an alert state is not finalized from an unfinished bar. The histogram can move with live volume while the current bar is open because it describes that still-forming bar; closed historical bars are not rewritten afterward.
Limitations
The script uses total chart-bar volume only. It does not estimate buy/sell delta, footprint data, or intrabar order flow.
Percentile rank is relative to the chosen Lookback, so different sample lengths can classify the same bar differently.
Markets or symbols with missing, sparse, or non-comparable volume data can produce incomplete or less useful readings.
The script measures volume anomaly only. It does not predict direction, continuation, reversal, or future price movement.
This script is a charting tool for educational purposes. It does not provide financial advice and does not predict future price movement. Trading carries risk; decisions and their outcome remain yours. Indicator

Pivot MA StructurePivot MA Structure— Complete User Guide
1. General Purpose
This indicator combines several independent market-reading components into one framework:
Pivot-controlled directional moving averages
Bullish and Bearish market-structure shifts
Pre-break structure candidates
Trend-continuation markers
Shift-direction MA retests
Anchored VWAP equilibrium
RSI 50 equilibrium
Fair Value Gaps and breakers
Long/Short health scores
A real-time information dashboard
Selectable alerts
It is an indicator, not an automated strategy. It does not place orders, calculate position size, or automatically manage stop-loss and take-profit orders.
Its primary objective is to answer five questions:
What is the latest structural direction?
Which directional Pivot MA is currently active?
Do structure and the active MA agree?
Do VWAP and RSI support the same direction?
Is there a suitable continuation or retest location for entry?
2. The Core Reading Model
The indicator separates market information into three layers.
Structural layer
This layer detects:
Bullish Shift
Bearish Shift
Bullish continuation
Bearish continuation
Unbroken bullish and bearish candidates
A Shift represents a change in the direction of confirmed structure breaks.
Directional MA layer
This layer determines whether the active moving-average condition is:
Bullish
Bearish
Ghost/inactive
Still waiting for a valid pivot
Only one directional MA can be active at a time.
Confirmation layer
The following secondary filters measure the quality of the directional condition:
Anchored VWAP
RSI relative to 50
Fair Value Gaps
Directional MA retests
Health score
A structural signal does not automatically imply that all confirmation filters agree.
3. Pivot Moving Average System
Default settings
MA type: EMA
MA length: 50
Pivot strength: 5
Pivot qualification: All Confirmed Pivots
Source: Pivot Side
The MA type can be changed to:
EMA
SMA
WMA
RMA
HMA
Pivot Side source
When MA Source = Pivot Side:
The bullish MA is calculated from low.
The bearish MA is calculated from high.
This creates two distinct directional averages:
Green MA for bullish conditions
Red MA for bearish conditions
If Close or HL2 is selected, both averages use the selected common source.
How a Pivot MA is created
A bullish Pivot MA becomes available after a qualifying confirmed low pivot.
A bearish Pivot MA becomes available after a qualifying confirmed high pivot.
The pivot does not become known immediately. With Pivot Strength set to 5, the system requires five bars on the right side of the pivot before confirming it.
Therefore, pivot activation is intentionally delayed.
Pivot Qualification
All Confirmed Pivots
This is the default mode.
Every confirmed low pivot can refresh the bullish MA state.
Every confirmed high pivot can refresh the bearish MA state.
This allows higher lows in an uptrend to reactivate the bullish side and lower highs in a downtrend to refresh the bearish side.
HH / LL Only
This is a more selective mode.
A bearish MA trigger requires a pivot high above the previous pivot high.
A bullish MA trigger requires a pivot low below the previous pivot low.
This mode generates fewer MA refresh events and may leave an MA in ghost mode for longer.
4. Active and Ghost MA Logic
Active bullish MA
The bullish MA is eligible to become active when:
The bullish MA exists.
It has not remained locked by an unresolved break.
Price is at or above the bullish MA.
The bullish MA is rising.
Active bearish MA
The bearish MA is eligible when:
The bearish MA exists.
It has not remained locked by an unresolved break.
Price is at or below the bearish MA.
The bearish MA is falling.
One active MA at a time
The indicator does not allow both MAs to be active simultaneously.
If only the bullish side is eligible:
Bullish MA becomes active.
Bearish MA becomes ghost.
If only the bearish side is eligible:
Bearish MA becomes active.
Bullish MA becomes ghost.
If neither side is eligible:
Both lines can appear as ghost lines.
If both sides are technically eligible during compression:
A new bearish pivot or downward bar movement gives priority to the bearish MA.
Otherwise, the bullish MA receives priority.
Active line thickness
The active directional MA is always displayed one step thicker than a ghost MA.
This allows the currently accepted directional condition to be identified visually without relying only on color.
Ghost lines
A ghost line is a faded directional MA.
Ghost status means that the MA still exists and is still calculated, but it is not currently accepted as the active directional condition.
A ghost line is not frozen. Its value continues to move because the underlying MA calculation continues.
MA break behavior
The bullish MA is broken when price crosses below it according to the selected break confirmation.
The bearish MA is broken when price crosses above it.
The break method can be:
Close: requires the closing price to cross the MA.
Wick: reacts to the bar’s low or high crossing the MA.
After a genuine break, the line becomes ghosted. A new qualifying same-side pivot can reset its broken state.
5. Market Structure Engine
Default structure length
Structure Length: 12
The engine uses an odd-length fractal model. An even input is internally advanced to the next odd number.
Therefore:
Input 12 becomes an internal 13-bar fractal.
Pivot strength becomes 6 bars on each side.
This is different from using 12 left bars and 12 right bars. It is a full fractal-window interpretation.
Confirmed structure pivots
The engine continuously tracks:
Latest confirmed fractal high
Latest confirmed fractal low
These become potential break candidates.
A structure pivot appears only after its required right-side bars have completed.
6. Candidate Lines
Bullish Break Candidate
A confirmed fractal high creates a bullish break candidate.
It is displayed as:
Green dotted line
Bullish Break Candidate text above the line
This level represents the price that must be exceeded for an upward structure break.
Bearish Break Candidate
A confirmed fractal low creates a bearish break candidate.
It is displayed as:
Red dotted line
Bearish Break Candidate text below the line
This level represents the price that must be broken for a downward structure break.
Candidate projection
The default projection is five bars to the right.
The candidate does not extend infinitely. On every new bar:
Its right endpoint moves forward.
It remains five bars ahead of the current bar.
It stops when broken or replaced by a newer same-side pivot.
Candidate replacement
When a newer confirmed pivot of the same side appears:
The previous unbroken candidate is deleted.
A new candidate begins from the newer pivot.
This ensures that the chart emphasizes the latest actionable structure level.
7. Bullish and Bearish Shift Logic
The internal logic follows a CHoCH-style direction-change model, but the chart does not display the word “CHoCH.”
It uses:
Bullish Shift
Bearish Shift
Bullish Shift
A Bullish Shift occurs when:
The last confirmed structure break was downward.
Price subsequently breaks the latest unbroken fractal high.
The break can be confirmed by:
Close above the level, or
Wick above the level
depending on the selected Break Confirmation.
When confirmed:
The candidate line ends at the breakout bar.
The line becomes a stronger green dotted shift segment.
Bullish Shift appears above the middle of the segment.
The dashboard’s Latest Shift changes to Bullish Shift.
The bullish retest detector becomes armed.
Bearish Shift
A Bearish Shift occurs when:
The last confirmed structure break was upward.
Price subsequently breaks the latest unbroken fractal low.
When confirmed:
The candidate line ends at the breakdown bar.
It becomes a stronger red dotted shift segment.
Bearish Shift appears below the middle of the line.
The dashboard changes to Bearish Shift.
The bearish retest detector becomes armed.
First structure break
The first break establishes the initial direction.
Because no previous opposite break exists, it is not classified as a Shift.
It is treated as a continuation break and receives a directional triangle.
8. Trend-Continuation Triangles
The indicator does not draw BOS lines.
Instead, a same-direction continuation break is marked directly on the breaking candle.
Bullish continuation
A bullish continuation is shown as:
Green upward triangle
Located below the breakout candle
It means that an upward break occurred without reversing the previous break direction.
Bearish continuation
A bearish continuation is shown as:
Red downward triangle
Located above the breakdown candle
It means that a downward break occurred without reversing the previous break direction.
How to interpret continuation marks
Continuation triangles are not fresh reversal signals.
They are better interpreted as confirmation that the existing structural direction is continuing.
A continuation marker is generally more useful when:
The matching directional MA is active.
Price is on the correct side of VWAP.
RSI supports the same direction.
The breakout is not entering directly into an opposing FVG or major swing level.
Avoid treating every continuation triangle as an automatic market entry. Entering immediately after an extended breakout can create poor risk-to-reward.
9. Directional MA Retest — “R” Marker
Important definition
In the current version, the R marker detects a retest of the same-direction Pivot MA, not the horizontal dotted shift line.
After a Bullish Shift:
The indicator monitors the green bullish Pivot MA.
After a Bearish Shift:
It monitors the red bearish Pivot MA.
Bullish retest
After a Bullish Shift, the retest detector waits for a later candle whose range intersects the green bullish MA:
Candle low is at or below the MA.
Candle high is at or above the MA.
When the first valid touch occurs:
A green R appears below the candle.
The bullish retest alert can trigger.
The retest detector stops waiting until a new Shift occurs.
The green line can be active or ghost. The retest detector only requires the corresponding bullish MA to exist.
Bearish retest
After a Bearish Shift, the first later candle that intersects the red bearish MA produces:
A red R
Located above the candle
A bearish retest alert opportunity
Why an R may not appear
An R will not appear when:
No valid Bullish or Bearish Shift has occurred.
The contact happens on the Shift candle itself.
The candle does not actually intersect the MA value.
The first retest after that Shift has already been marked.
A new opposite Shift replaced the previous retest direction.
The corresponding directional MA does not yet exist.
Show Directional MA Retests is disabled.
The visual toggle does not disable the underlying alert calculation.
10. Anchored VWAP Equilibrium
Default status
The VWAP line is enabled by default.
Available anchors
Session
Week
Month
Session
The VWAP resets with the daily/session boundary.
Week
The VWAP resets at the beginning of each week.
Month
The VWAP resets at the beginning of each month.
Horizontal VWAP presentation
The indicator does not plot the entire conventional curved VWAP history.
Instead, it takes the latest anchored VWAP value and displays it as a horizontal equilibrium reference.
Default presentation:
100 bars to the left
10 bars to the right
VWAP label on the right
Dashed neutral-colored line
The right-side length and label offset are adjustable.
Bullish interpretation
Price above VWAP suggests that current price is trading above the volume-weighted equilibrium.
This supports a bullish setup.
Bearish interpretation
Price below VWAP suggests that price is trading below the volume-weighted equilibrium.
This supports a bearish setup.
VWAP as a trade-management filter
For an existing long:
Remaining above VWAP supports the health of the position.
Losing VWAP removes one bullish health point.
Reclaiming VWAP can restore that point.
For an existing short:
Remaining below VWAP supports the bearish condition.
Moving above VWAP weakens the short health score.
VWAP alone is not an entry or exit signal. It is an equilibrium filter.
11. RSI 50 Price Equilibrium
Default settings
RSI Length: 14
RSI line: enabled
Midpoint: 50
HUD interpretation
RSI at or above 50 is bullish.
RSI below 50 is bearish.
Horizontal RSI 50 price line
A literal RSI value of 50 cannot be plotted meaningfully on the same price scale as BTC, forex, or commodities.
Therefore, the indicator stores the closing price where RSI most recently crossed 50.
That price becomes the RSI 50 horizontal equilibrium level.
It represents the latest price associated with a momentum-regime transition.
The line:
Is green when the current RSI is above 50.
Is red when the current RSI is below 50.
Extends a configurable number of bars left and right.
Has an offset label on the right.
Practical use
For a long position:
RSI above 50 supports positive momentum.
RSI falling below 50 reduces long health.
For a short position:
RSI below 50 supports negative momentum.
RSI reclaiming 50 reduces short health.
RSI 50 should be used as confirmation, not as a standalone trigger.
12. Fair Value Gap Engine
The FVG engine is enabled by default.
It supports:
Standard FVG mode
Breaker mode
Bullish and bearish zones
ATR threshold filtering
Multiple mitigation methods
Overlap filtering
Midlines
Optional right extension
Optional raid tracking
Bullish FVG
A bullish FVG is created when the current low is above the high from two bars earlier, producing a three-candle imbalance.
The engine also applies the selected ATR threshold to filter insignificant gaps.
A bullish FVG is normally interpreted as:
An imbalance below price
A possible pullback support area
A potential location for bullish continuation or mitigation
Bearish FVG
A bearish FVG is created when the current high is below the low from two bars earlier.
It is generally interpreted as:
An imbalance above price
A possible resistance area
A potential bearish pullback or mitigation location
Show Last
Show Last determines how many recent bullish and bearish FVGs are displayed.
With a value of 5, the engine can show:
Five recent bullish zones
Five recent bearish zones
subject to mitigation and overlap removal.
Threshold
The threshold applies an ATR-based significance filter.
A value of 0 accepts all qualifying gaps.
Higher values require a stronger displacement relative to ATR.
Increasing the threshold generally produces fewer but more significant FVGs.
Mitigation modes
Close
Uses the candle body boundary as the mitigation trigger.
For a bullish FVG, the body must penetrate below the relevant lower boundary.
For a bearish FVG, the body must penetrate above the relevant upper boundary.
Wick
Uses the candle’s full high/low range.
This is the most sensitive mitigation method.
Avg
Uses the midpoint of the gap.
This treats a move through the FVG’s average price as mitigation.
FVG mode
In standard FVG mode:
The zone remains visible while active.
It is removed when the selected mitigation condition is satisfied.
Breakers mode
In Breakers mode:
The original FVG is tracked.
When mitigated, it becomes a breaker.
Its directional display changes to the opposite-side color.
It remains until the breaker’s opposite invalidation condition occurs.
Hide Overlap
When enabled, overlapping FVGs are filtered.
The newest FVG is compared against:
Older FVGs in the same direction
FVGs in the opposite direction
Overlapping stored zones can be removed to reduce visual clutter.
Midline
When enabled, the midpoint of each FVG is displayed.
The midpoint can be useful as:
A partial mitigation level
A mean-reversion reference
A refined entry or invalidation location
Extend FVG
When disabled, FVG drawings end at the current bar.
When enabled, active FVG zones extend to the right.
Display Raids
Raid tracking looks for liquidity interactions around an active FVG.
For a bullish FVG, it can track a move below the upper FVG boundary followed by a close back above it.
For a bearish FVG, it can track a move above the lower boundary followed by a close back below it.
Raid locations are displayed with a line and an x marker.
13. Information HUD
The information table summarizes the indicator’s current state.
Latest Shift
Possible values:
Bullish Shift
Bearish Shift
Waiting
This row stores the most recent genuine opposite-direction structure break.
It does not reset to neutral after a few bars. It remains bullish or bearish until an opposite Shift occurs.
Bullish Pivot MA
Possible values:
Waiting
Active
Ghost
Waiting
No qualifying bullish pivot has created the bullish MA state yet.
Active
The bullish MA currently satisfies the directional activation logic.
Ghost
The bullish MA exists but is not currently accepted as active.
Bearish Pivot MA
Uses the same status definitions for the red bearish MA.
Shift + MA
Possible values:
Bullish Match
Bearish Match
No Match
Bullish Match
Requires:
Latest Shift is bullish.
Bullish Pivot MA is active.
Bearish Match
Requires:
Latest Shift is bearish.
Bearish Pivot MA is active.
No Match
Structure and the active directional MA do not currently agree.
This is a warning that the setup lacks core confluence.
VWAP
Possible values:
Price Above
Price Below
Unavailable
This reports the current price’s relationship with the selected anchored VWAP.
RSI
Displays:
Current RSI value
Above 50 or Below 50
Example:
56.4 / Above 50
Long Health
The long score counts currently satisfied bullish conditions.
Short Health
The short score counts currently satisfied bearish conditions.
Composite Bias
Possible values:
Bullish
Bearish
Balanced
The result is determined by comparing Long Health with Short Health.
Long Health greater than Short Health → Bullish
Short Health greater than Long Health → Bearish
Equal values → Balanced
Composite Bias is a comparison of rule counts, not a forecast.
14. Health Score Calculation
With all default score filters enabled, each side has four factors.
Long Health factors
One point is awarded for each condition:
Latest Shift is Bullish.
Bullish Pivot MA is active.
Price is above VWAP.
RSI is at or above 50.
Short Health factors
One point is awarded for each condition:
Latest Shift is Bearish.
Bearish Pivot MA is active.
Price is below VWAP.
RSI is below 50.
Score examples
100% — 4/4
All directional conditions agree.
This is the strongest confluence state produced by the dashboard.
It does not mean the trade has a 100% probability of success.
75% — 3/4
The setup is directionally favorable, but one filter disagrees.
Examples:
Bullish Shift and bullish MA are aligned, but RSI is below 50.
Bearish structure is aligned, but price is still above VWAP.
50% — 2/4
The condition is mixed.
This often occurs during:
Transition
Consolidation
Pullback
Delayed confirmation
Conflict between structure and momentum
25% — 1/4
Only one filter supports the direction.
This is generally a weak environment for initiating a new position.
0% — 0/4
None of the directional filters support that side.
Disabling score filters
If VWAP is removed from the score, the denominator decreases.
If RSI is also removed, only two core factors remain:
Shift direction
Active directional MA
The displayed percentage automatically adjusts to the number of enabled factors.
Important limitation
Health is a confluence percentage, not a statistically measured win probability.
A 100% Long Health reading means four out of four programmed bullish conditions are true. It does not mean the market has a 100% chance of rising.
15. Suggested Long Entry Framework
Core long condition
The preferred long environment is:
Latest Shift = Bullish Shift
Bullish Pivot MA = Active
Shift + MA = Bullish Match
This is the minimum structural and directional agreement.
Additional confirmation
A higher-quality long condition may also include:
Price above VWAP
RSI above 50
Long Health at 75% or 100%
Bullish FVG below or around the entry
No large bearish FVG immediately above
A green R retest marker
Aggressive long entry
An aggressive trader may enter near the Bullish Shift breakout.
Risks:
The breakout may be extended.
Stop distance may be large.
Price may return to the broken structure or MA before continuing.
Conservative long entry
A more conservative sequence is:
Bullish Shift appears.
Bullish MA becomes active or remains directionally valid.
Price stays above or reclaims VWAP.
RSI remains above or reclaims 50.
Price pulls back into the green MA.
A green R appears.
The retest candle shows rejection or closes constructively.
This avoids chasing the initial breakout.
Continuation entry
A green triangle can support a continuation entry when:
The dashboard already has bullish alignment.
Price is not excessively extended above the MA.
The continuation break has room before the next bearish FVG or swing resistance.
A triangle by itself is not enough.
16. Suggested Short Entry Framework
Core short condition
The preferred short environment is:
Latest Shift = Bearish Shift
Bearish Pivot MA = Active
Shift + MA = Bearish Match
Additional confirmation
A higher-quality short may include:
Price below VWAP
RSI below 50
Short Health at 75% or 100%
Bearish FVG above or near the entry
No major bullish FVG immediately below
A red R retest marker
Conservative short entry
A conservative bearish sequence is:
Bearish Shift appears.
Bearish Pivot MA becomes active.
Price remains below or rejects VWAP.
RSI remains below 50.
Price rallies back into the red MA.
A red R appears.
The retest candle rejects the MA or closes bearishly.
17. How to Stay in a Position
Staying in a long
A long remains structurally healthier while:
Latest Shift remains bullish.
Bullish Pivot MA remains active.
Price remains above VWAP.
RSI remains above 50.
Long Health remains at 75% or 100%.
Bullish FVGs below price continue to act as support.
No Bearish Shift is created.
Early long weakness
Potential deterioration begins when:
RSI falls below 50.
Price falls below VWAP.
Bullish MA becomes ghost.
Long Health falls from 100% to 75% or 50%.
One lost factor is not necessarily an exit. It is a warning that confluence is decreasing.
Strong long invalidation
More serious invalidation can include:
Bearish Shift
Bearish Match
Bullish MA break
Price remaining below VWAP
RSI remaining below 50
Bullish FVG support being fully mitigated
Staying in a short
A short remains healthier while:
Latest Shift remains bearish.
Bearish MA remains active.
Price remains below VWAP.
RSI remains below 50.
Short Health remains high.
Bearish FVGs above price act as resistance.
No Bullish Shift appears.
Strong short invalidation
Potential invalidation includes:
Bullish Shift
Bullish Match
Bearish MA break
Sustained price above VWAP
RSI above 50
Bearish FVG resistance being invalidated
18. Stop-Loss and Profit Management
The indicator does not place stops or targets.
Possible stop references include:
For long trades
Below the retest candle low
Below the latest confirmed swing low
Below the bullish FVG
Below the bullish MA with an ATR buffer
Below the structure level that would invalidate the setup
For short trades
Above the retest candle high
Above the latest swing high
Above the bearish FVG
Above the bearish MA with an ATR buffer
Possible profit references
Previous swing high/low
Opposing FVG
Major VWAP deviation area
Fixed risk-to-reward target
Partial exit at 1R and trailing remainder
Opposite Shift
Health score deterioration
Stops should not be moved farther away simply to avoid accepting a loss.
19. Alerts
The script provides selectable conditions for:
Bullish Shift Created
Bearish Shift Created
Bullish Directional MA Retest
Bearish Directional MA Retest
Bullish Pivot MA Broken
Bearish Pivot MA Broken
Bullish Shift + Bullish MA alignment
Bearish Shift + Bearish MA alignment
Alert toggles
The shift and retest alerts have individual enable/disable inputs.
These settings control whether the corresponding alert condition can trigger.
Important TradingView behavior
Enabling an alert condition in the indicator settings does not automatically create a TradingView alert.
You must still:
Open TradingView’s alert dialog.
Select the indicator.
Select the desired alert condition.
Choose the frequency.
Create the alert.
For confirmed signals, using Once Per Bar Close is generally the most consistent choice.
20. Repainting and Confirmation Considerations
Pivot delay
Confirmed pivots require future right-side bars.
This means:
Pivot signals are delayed.
Once confirmed, the historical pivot itself is stable.
The indicator does not know a pivot at the exact moment the pivot bar first forms.
Bar-close confirmation
Confirm Signals On Bar Close is enabled by default.
This reduces intrabar signal changes for:
MA breaks
Structure breaks
Shift creation
Retests
Intrabar movement
The current MA, VWAP, RSI, and live candidate values may still visually move while the current candle is forming.
Using bar-close confirmation does not freeze the current bar’s underlying price calculations.
FVG evolution
FVGs can disappear when:
Mitigated
Invalidated
Removed by overlap filtering
Excluded by the Show Last setting
This is normal lifecycle behavior, not necessarily historical repainting.
21. Practical Decision Hierarchy
A disciplined way to use the indicator is:
Step 1 — Identify structure
Check Latest Shift.
Bullish Shift → prioritize long ideas.
Bearish Shift → prioritize short ideas.
Waiting → insufficient shift history.
Step 2 — Confirm the directional MA
Check Shift + MA.
Bullish Match → bullish structure and MA agree.
Bearish Match → bearish structure and MA agree.
No Match → wait or reduce conviction.
Step 3 — Check equilibrium
For longs:
Prefer price above VWAP.
Prefer RSI above 50.
For shorts:
Prefer price below VWAP.
Prefer RSI below 50.
Step 4 — Check location
Use:
Directional MA retest
FVG support/resistance
Recent swing levels
VWAP
A good directional idea entered at a poor location can still have poor risk-to-reward.
Step 5 — Check health
75–100%: favorable confluence
50%: mixed
0–25%: weak for that direction
Step 6 — Define invalidation before entry
Determine:
Stop level
Position size
Maximum acceptable loss
First target
Conditions for partial or full exit
Disclaimer
This indicator is provided for informational, educational, and analytical purposes only. It does not constitute financial advice, investment advice, trading advice, a solicitation, or a recommendation to buy or sell any financial instrument.
Market-structure shifts, moving averages, VWAP, RSI, Fair Value Gaps, retest markers, continuation symbols, health scores, and alerts are mathematical interpretations of historical and real-time market data. They do not guarantee future price movement or profitable outcomes.
The Health Score is a count of aligned indicator conditions. It is not a probability of success, an expected return, or a measure of actual trade risk.
Trading cryptocurrencies, forex, commodities, futures, CFDs, and other leveraged products involves substantial risk and may result in the loss of some or all invested capital. Historical performance does not guarantee future results. Signals may be delayed because of pivot confirmation, and real-time values may change before a candle closes.
Always perform independent analysis, use appropriate position sizing, define a stop-loss before entering a trade, account for fees and slippage, and never risk capital you cannot afford to lose. The user remains solely responsible for all trading and investment decisions. Indicator

ICT Kill Zones and Session High LowICT Kill Zones and Session High Low
What it does
This indicator draws the intraday sessions as boxes with their high and low, marks the three daily opening levels, and reports which time state the chart is currently in. Its point is not the feature list, which you can find elsewhere; its point is being right at the edges. Everything is anchored to New York wall-clock time, so the sessions keep their place through every daylight-saving changeover, including the weeks when the United States and Europe have not both switched yet. On those weeks the panel says so.
How it works
Every window is resolved through the named time zone America/New York rather than a fixed offset, the chart time zone or your local time. That single choice is what makes the boxes sit correctly in March and October, and it is the reason a session cannot drift by an hour without anyone noticing.
A session starts on the first bar that falls inside its window, not on a bar whose clock reads exactly the start time. On a 45 minute chart no bar lands on 07:00, and a script that waits for one draws nothing that day.
While a session runs, its box grows and its high and low move with it. That state is drawn with a dashed border, because a level that can still change must not look like one that cannot.
When the session ends, the high and low are fixed and never move again. The border turns solid and the two levels extend to the right.
The bar that ends a session can already trade through what that session just fixed, so both things are allowed to happen on the same bar. A level that was taken immediately is never shown as untouched first.
A level is taken when price trades strictly beyond it, by wick or by close depending on the setting. A value exactly on the level is not a take, and each level changes state only once.
The New York to London offset is recalculated per trading day from the calendar itself. It is displayed, never applied: the sessions sit right because they are anchored to New York, not because anything is shifted.
Short trading days and holidays are read from the bars that exist, not from a stored calendar that would need maintenance and would eventually be wrong.
How to use it
Add the script to an intraday chart. Sessions cannot be resolved above 60 minutes, and on higher timeframes the script says so instead of drawing something misleading.
Read the dashed box as the session in progress and the solid one as finished. The two lines running to the right are the finished session's high and low.
Watch the panel in March and late October. When it reads 4h instead of 5h, the two regions are out of step and the London session sits an hour away from where it was the week before. The gap can last up to three weeks in spring and about a week in autumn, depending on the year.
If a day reads Early close or No RTH session, that day was short or closed. Both are recognised after the day is over, so the label refers to the last completed day.
Inputs
Sessions group - one row per session with a switch, its start and end time in New York wall-clock time, and its colour. London Close is off by default so the standard chart shows four boxes that do not overlap.
Session Levels group - show the fixed high and low, extend them to the right, and choose whether a wick or a close counts as taking them.
Time Markers group - Midnight Open, True Day Open and RTH Open, each switchable. The last two are hidden automatically where they have no meaning. Extend Markers Right lets the newest marker of each type run past the latest candle so its line and label stay visible in front of the price action; range 0-500, default 10. Older markers still end where the next marker of the same type begins.
Level Line Style and Marker Line Style - solid, dashed or dotted. The markers are dotted by default so they read as references rather than as structure.
Label Background - off by default, so only the label text shows. Turn it on where a label sits over the candles and the bare text is hard to read.
Days Retained - how many trading days stay drawn, the current one included. Range 1-10, default 2. Older days are deleted, not hidden. On futures the Sunday evening open counts as its own day, so on a Monday the default keeps Sunday and Monday rather than Friday and Monday.
Display group - session labels and where they sit: Above Box by default, Inside Box or Below Box, always centred on the width of the box. Plus text size in points, the time state panel and its corner.
Style group - how far the boxes fade for finished and running sessions, line widths, and one colour per time marker.
Alerts group - each of the four alert conditions can be switched off.
Signals and alerts
Session opened - fires on the first closed bar of a tracked session. Off by default, because the clock is not news.
Session closed - fires when a session has ended and its levels are fixed. Off by default for the same reason.
Session high taken and Session low taken - fire when price trades through a fixed level. On by default, because this is the one event of the four that is not predictable from a clock.
All four fire on the close of the bar that produced the change, and each level can only be taken once.
Repainting
Sessions start, end and levels are taken only on closed bars. A running session is the one thing that changes while it runs, and that is its purpose rather than a defect: its box grows with each bar and is drawn with a dashed border to say so. Once a session is finished its box and its two levels are fixed and are never rewritten, and the offset shown in the panel changes nothing that is already on the chart.
Limitations
A short trading day or a holiday is recognised only after the day is over, because it is read from the bars that exist rather than from a stored calendar. The panel therefore reports the last completed day. On futures that means a short Friday is reported during the Sunday evening session and is replaced once Monday begins.
Sessions need an intraday timeframe. Above 60 minutes the windows cannot be resolved and nothing is drawn.
On instruments without a regular trading session - spot forex, crypto and CFDs - the True Day Open and RTH Open markers are hidden because they are not defined there. The panel says so.
Only the most recent day's time markers carry a label. Older ones keep their line but would otherwise stack their labels on the same spot at the right edge.
A session with no bars inside its window produces nothing at all, which is correct but means an empty session leaves no trace to explain itself.
Days Retained set to 1 together with a window you moved across midnight keeps only the session that is still running. Its completed form is never shown, because the day it belongs to is already outside the retention. Raise Days Retained to 2 if you want to see it finished.
Only the bars of the chart timeframe are used. There is no higher timeframe layer, no intrabar data and no volume.
The script describes when things happened and whether a level was traded through. It does not compare sessions, rank them, or suggest entries, exits or targets.
This script is a charting tool for educational purposes. It does not provide financial advice and does not predict future price movement. Trading carries risk; decisions and their outcome remain yours. Indicator

RC Tools - Divergence DetectorRC Tools — Divergence Detector
────────────────────────────────────────────────────────────────────
█ OVERVIEW
Most divergence tools pattern-match swing highs and lows, which is finicky and often technically repaints — pivots can un-confirm as new bars form. This tool instead measures rolling correlation between price and a momentum oscillator of your choice. When price and momentum stop agreeing, that disagreement is the divergence — measured continuously, not detected as a one-off pattern.
█ WHAT IT DOES
Plots the rolling correlation between price and a selectable oscillator (RSI, MACD line, Rate of Change, or a custom source) on a -1 to +1 scale. Classifies each confirmed bar into one of three states — Confirmed Trend, Bearish Divergence, Bullish Divergence — colours the chart background accordingly, and shows a table with the current state, how long price has been in it, and historical base rates (average forward return and win rate) for each divergence state.
█ THE THEORY BEHIND IT
A genuine trend has price and momentum moving together — new highs accompanied by strengthening momentum, new lows by weakening momentum. When that relationship breaks down — price continues in one direction while the oscillator stops confirming it — that is a divergence. Rather than searching for specific swing-point patterns (which depend on exactly which pivots you pick and can shift as price continues), this tool asks the more direct statistical question: over the last N bars, how closely have price and the oscillator actually moved together? A strong positive correlation means they agree. A correlation that has dropped toward zero or negative means they have stopped agreeing, regardless of what any single pivot looks like.
█ HOW IT IS CALCULATED
1. Compute the selected oscillator: RSI, MACD line (fast EMA minus slow EMA), Rate of Change %, or a custom source you provide.
2. Compute the rolling Pearson correlation between price (close) and the oscillator over a configurable window (default 14 bars).
3. If that correlation falls below a threshold (default 0.0), price and momentum are no longer confirming each other — a divergence state.
4. The divergence is labelled Bearish if price has been rising over a short lookback (momentum failing to confirm continued strength) or Bullish if price has been falling (momentum failing to confirm continued weakness).
Classification occurs ONLY on confirmed bar close — the state and the displayed correlation are computed and committed together, so they can never disagree mid-bar or flip back and forth as the current bar forms.
█ SETTINGS & CONFIGURATION
• Oscillator (default RSI) — RSI / MACD Line / Rate of Change % / Custom Source
• RSI / MACD / Rate of Change lookbacks (defaults 14 / 12+26 / 20)
• Correlation Window (default 14 bars) — how far back the co-movement is measured
• Divergence Threshold (default 0.0) — the correlation level below which price and momentum are considered to have stopped agreeing
• Price Direction Lookback (default 5 bars) — used only to label a divergence bullish or bearish
• Forward Return Window (default 20 bars) — the horizon used for the base-rate table
• Paint Main Chart Background — toggle off if you only want the correlation pane
█ HOW TO USE IT
Use it as a warning flag on an existing trend read, not as a standalone entry signal. Example: if you're long into a rally and the background flags Bearish Divergence, that's a cue to tighten risk management or look for confirmation elsewhere before assuming the move continues unchecked — it is not, by itself, a sell signal. Check the base-rate table's sample count before treating any single divergence reading as meaningfully predictive.
Works on any asset and timeframe with sufficient history for the correlation window.
█ LIMITATIONS
• Divergence describes a PRESENT disagreement between price and momentum. It does not predict a reversal, and any use of it as a forecast is a misuse.
• Correlation is measured over a rolling window and is noisy by nature — expect it to cross the threshold repeatedly in choppy, range-bound conditions.
• The oscillator itself is not plotted, only its correlation with price — this keeps the pane on one consistent scale regardless of which oscillator is selected (RSI is bounded 0-100, MACD line is unbounded, etc.).
• The bullish/bearish label depends on a short price-direction lookback, which can flip near genuine turning points independently of the correlation reading itself.
• Historical base-rate stats need a meaningful sample count (check N) before being trusted, especially for less common states.
• This script does NOT repaint. All classification updates on confirmed bar close only.
█ DISCLAIMER
For educational and informational purposes only. Nothing here is financial advice. Past behaviour of any divergence state does not indicate future results. Trade at your own risk.
Indicator

Strategy

MICRO SOM What this is
A Kohonen Self-Organizing Map that learns market structure from scratch, with no labels, no backpropagation, and no predefined regimes. It builds a topological map of every market condition it has observed, then shows you where the current bar sits on that map.
This is unsupervised competitive learning — a fundamentally different approach from the neural networks usually seen on TradingView. Nothing here is trying to predict direction. It is trying to organize market states, and any predictive read is a byproduct you interpret afterward.
How it works
Each bar is encoded as a five-dimensional vector: distance from VWAP, trend-versus-chop efficiency, volatility state, relative volume, and momentum. All five are ATR-normalized so the map transfers across instruments.
Thirty-six nodes arranged in a 6×6 grid compete to be nearest that vector. The closest node wins — and critically, the winner and its grid neighbors shift toward the input, weighted by a Gaussian falloff.
That neighbor update is the entire mechanism. It forces adjacent nodes to represent similar market states, which is what turns 36 independent clusters into a genuine map. Remove it and this is just k-means.
The neighborhood radius decays over training. A wide radius early establishes global topology; a narrow radius later refines local detail. A fixed radius either never organizes or freezes into a poor layout within the first hundred bars.
The map trains on every confirmed bar. Filtering samples would distort the density it exists to represent.
Reading the display
A 6×6 grid renders to the right of price:
Teal — states that historically preceded upward movement
Red — states that preceded downward movement
Gray — neutral or insufficiently visited
Brightness — visit frequency and directional consistency
White border — the node matching the current bar
Watch the highlighted cell move. That is the market traversing learned state space in real time.
BIAS shows the average forward move that historically followed from the current node, in ATR units. This is measured after clustering, not optimized for — the map organized blind, then the script asked what tended to follow from each region.
NOVELTY is the Euclidean distance from the current bar to its nearest node. When it exceeds the 90th percentile of its own recent history, the chart tints orange and a diamond prints. This means current conditions resemble nothing the map has learned.
Why novelty may be the most useful output
Threshold rules cannot tell you when they are outside their domain. This can. An ALIEN reading is a direct signal that historical analogues are unavailable — typically the moment other models are least reliable and position size should be smallest.
Settings
Learn — adaptation rate. Higher adapts faster but organizes less stably.
Radius — initial neighborhood width. Larger enforces smoother global topology.
Decay — bars over which learning rate and radius anneal toward their floor.
Grid X / Grid Size — map placement and cell height in ATR units.
Honest limitations
The map requires roughly 1,200 bars to organize meaningfully. Before that, the topology is still unfolding and bias values are noise.
BIAS is a historical average, not a forecast. A node showing +0.4 ATR means bars in that region tended upward — it says nothing about the sample size behind that average or whether the relationship persists.
Five features cannot capture everything that matters. The map organizes what it is shown, and no more.
This is an analytical and visualization tool. It produces no entry or exit signals, and it is not financial advice.
Open source. The full algorithm is readable in the code, with the competitive learning step, neighborhood update, and radius annealing documented inline. Indicator

Indicator

Key Levels - Cash MarketThis is a Pine v6 modernization of the original SpacemanBTC Key Levels indicator. The original was already a useful way to keep important higher-timeframe levels on chart, but parts of the session logic, timezone handling, and display system were showing their age—especially for equities and index futures traders.
This version keeps the same core idea while rebuilding the underlying logic for cleaner, more reliable behavior.
What changed
Updated to Pine Script v6
Modernized the codebase and removed a large amount of repetitive legacy plotting logic.
Cash-market sessions instead of FX-style sessions
London, New York, and Tokyo now use their actual local cash-market hours rather than generic FX session windows.
Timezone-aware session handling
Sessions use Europe/London, America/New_York, and Asia/Tokyo, so daylight-saving changes are handled automatically.
More reliable session High / Low / Open levels
Session tracking was rebuilt to reset from the actual first bar of each session, avoiding incorrect levels caused by gaps, stale values, or RTH-only charts.
Improved Tokyo handling
The Tokyo range accounts for the exchange's midday lunch break while preserving the morning range into the afternoon session.
Non-repainting Current Year levels
Current Year High, Low, and Mid were rewritten to avoid higher-timeframe lookahead behavior that could make historical levels differ from what was available in real time.
Improved Monday Range for futures
Uses TradingView's trading-day logic so overnight futures sessions—such as NQ beginning Sunday evening—are correctly associated with Monday.
Simplified display controls
The old Distance and Anchor Distance controls were replaced by a single Right Offset setting. Right Anchored mode now simply starts levels at the current bar.
Cleaner session settings UI
Each cash session now has its enable toggle, session time, and color on the same row.
Global Coloring is now truly global
London, New York, and Tokyo session levels now respect the Global Coloring setting as well.
Based on the original Key Levels SpacemanBTC IDWM source. The original source credited @sbtnc for the base code. This version remains open source with credit to the work it was built from.
Indicator
