Dresteghamat:Adaptive Multi-TF Decision Engine**Dresteghamat: Adaptive Multi-Timeframe Decision Engine**
This open-source indicator is an algorithmic decision-support system designed to filter market noise by quantifying three core market dimensions: **Regime**, **Direction**, and **Exhaustion**.
**⚠️ Technical Note on Originality:**
This script solves the "Timeframe Irrelevance" problem found in standard dashboards. Instead of using static HTF references, it implements a custom **"Adaptive Context Engine"** (see lines 245-270 in source code). It calculates the user's current `timeframe.multiplier` and dynamically maps the mathematically relevant Higher Timeframes.
* *Innovation:* A 5m chart automatically weights 15m/1H structure, whereas a 1H chart weights 4H/Daily structure. This dynamic logic is proprietary and ensures contextual accuracy.
---
### 🛠️ Logic & Calculation Methodology
The script does not simply overlay indicators. It processes raw market data through a **Weighted Scoring Engine** (lines 275-285) to output a unified market state.
**1. Regime Identification (Volatility Normalized)**
We calculate a custom "Volatility Ratio" to distinguish Trend vs. Range regimes.
* **Logic:** `Range / Smoothed_ATR`.
* **Function:** If Ratio > 2.0, the market is in Expansion (Trend). If < 1.2, it is in Compression (Range). This normalizes volatility across assets (Crypto/Forex/Stocks).
**2. Directional Bias (Composite Metric)**
Direction is calculated via a voting system of three sub-components (lines 80-130):
* **Structural Pivots:** Detects Swing Highs/Lows using a 25-bar lookback to define market structure.
* **Cumulative Body Delta:** Tracks the net buying/selling pressure within candle bodies.
* **Micro-Flow:** A short-term (5-bar) momentum filter to detect immediate order flow shifts.
**3. Exhaustion Model (Risk Management)**
The script prevents late entries by calculating an "Exhaustion Score" (lines 150-200). It aggregates:
* **VRSD (Volatility Regime Shift):** Detects when volatility expands > 2 standard deviations (Mean Reversion risk).
* **Volume Decay (VEFF):** Identifies Divergence where price makes new highs on declining Volume MA.
* **RSI/Impulse Divergence:** Standard momentum divergence logic.
**4. The Decision Output (MODE)**
The dashboard renders a final signal based on a hierarchical algorithm:
* **BUY/SELL ONLY:** Triggered when Current Momentum aligns with the Dynamically Selected HTF Structure AND the Exhaustion Score is low.
* **PULLBACK:** Triggered when HTF Structure is bullish, but Current Momentum is bearish (indicating a corrective phase).
* **HTF EXHAUST:** Overrides signals when the Higher Timeframe metrics hit extreme levels.
* **WAIT:** Default state during Range Regimes or conflicting signals.
---
### 📊 Usage Guide
1. Apply to chart (Auto-adapts to any timeframe).
2. **Status Column:** Shows the raw health of the trend (Strong/Weakening/Exhausted).
3. **MODE Column:** Displays the final actionable bias based on the scoring algorithm.
**Disclaimer:** This tool provides statistical analysis based on historical data. It does not guarantee future results.
볼래틸리티
Time-Decay Liquidity Zones [BackQuant]Time-Decay Liquidity Zones
A dynamic liquidity map that turns single-bar exhaustion events into fading, color-graded zones, so you can see where trapped traders and unfinished business still matter, and when those areas have finally stopped pulling price.
What this is
This indicator detects unusually strong impulsive moves into wicks, converts them into supply or demand “zones,” then lets those zones decay over time. Each zone carries a strength score that fades bar by bar. Zones that stop attracting or rejecting price are gradually de-emphasized and eventually removed, while the most relevant areas stay bright and obvious.
Instead of static rectangles that live forever, you get a living liquidity map where:
Zones are born from objective criteria: volatility, wick size, and optional volume spikes.
Zones “age” using a configurable decay factor and maximum lifetime.
Zone color and opacity reflect current relative strength on a unified clear → green → red gradient.
Zones freeze when broken, so you can distinguish “active reaction areas” from “historical levels that have already given way”.
Conceptual idea
Large wicks with strong volatility often mark areas where aggressive orders met hidden liquidity and got absorbed. Price may revisit these areas to test leftover interest or to relieve trapped positions. However, not every wick matters for long. As time passes and more bars print, the market “forgets” some areas.
Time-Decay Liquidity Zones turns that idea into a rule-based system:
Find bars that likely reflect strong aggressive flows into liquidity.
Mark a zone around the wick using ATR-based thickness.
Assign a strength score of 1.0 at birth.
Each bar, reduce that score by a decay factor and remove zones that fall below a threshold or live too long.
Color all surviving zones from weak to strong using a single gradient scale and a visual legend.
How events are detected
Detection lives in the Event Detection group. The script combines range, wick size, and optional volume filters into simple rules.
Volatility filter
ATR Length — computes a rolling ATR over your chosen window. This is the volatility baseline.
Min range in ATRs — bar range (High–Low) must exceed this multiple of ATR for an event to be considered. This avoids tiny bars triggering zones.
Wick filters
For each bar, the script splits the candle into body and wicks:
Upper wick = High minus the max(Open, Close).
Lower wick = min(Open, Close) minus Low.
Then it tests:
Upper wick condition — upper wick must be larger than Min wick size in ATRs × ATR.
Lower wick condition — lower wick must be larger than Min wick size in ATRs × ATR.
Only bars with a sufficiently long wick relative to volatility qualify as candidate “liquidity events”.
Volume filter
Optionally, the script requires a volume spike:
Use volume filter — if enabled, volume must exceed a rolling volume SMA by a configurable multiplier.
Volume SMA length — period for the volume average.
Volume spike multiplier — how many times above the SMA current volume needs to be.
This lets you focus only on “heavy” tests of liquidity and ignore quiet bars.
Event types
Putting it together:
Upper event (potential supply / long liquidation, etc.)
Occurs when:
Upper wick is large in ATR terms.
Full bar range is large in ATR terms.
Volume is above the spike threshold (if enabled).
Lower event (potential demand / short liquidation, etc.)
Symmetric conditions using the lower wick.
How zones are constructed
Zone geometry lives in Zone Geometry .
When an event is detected, the script builds a rectangular box that anchors to the wick and extends in the appropriate direction by an ATR-based thickness.
For upper (supply-type) zones
Bottom of the zone = event bar high.
Top of the zone = event bar high + Zone thickness in ATRs × ATR.
The zone initially spans only the event bar on the x-axis, but is extended to the right as new bars appear while the zone is active.
For lower (demand-type) zones
Top of the zone = event bar low.
Bottom of the zone = event bar low − Zone thickness in ATRs × ATR.
Same extension logic: box starts on the event bar and grows rightward while alive.
The result is a band around the wick that scales with volatility. On high-ATR charts, zones are thicker. On calm charts, they are narrower and more precise.
Zone lifecycle, decay, and removal
All lifecycle logic is controlled by the Decay & Lifetime group.
Each zone carries:
Score — a floating-point “importance” measure, starting at 1.0 when created.
Direction — +1 for upper zones, −1 for lower zones.
Birth index — bar index at creation time.
Active flag — whether the zone is still considered unbroken and extendable.
1) Active vs broken
Each confirmed bar, the script checks:
For an upper zone , the zone is counted as “broken” when the close moves above the top of the zone.
For a lower zone , the zone is counted as “broken” when the close moves below the bottom of the zone.
When a zone breaks:
Its right edge is frozen at the previous bar (no further extension).
The zone remains on the chart, but is no longer updated by price interaction. It still decays in score until removal.
This lets you see where a major level was overrun, while naturally fading its influence over time.
2) Time decay
At each confirmed bar:
Score := Score × Score decay per bar .
A decay value close to 1.0 means very slow decay and long-lived zones.
Lower values (closer to 0.9) mean faster forgetting and more current-focused zones.
You are controlling how quickly the market “forgets” past events.
3) Age and score-based removal
Zones are removed when either:
Age in bars exceeds Max bars a zone can live .
This is a hard lifetime cap.
Score falls below Minimum score before removal .
This trims zones that have decayed into irrelevance even if their age is still within bounds.
When a zone is removed, its box is deleted and all associated state is freed to keep performance and visuals clean.
Unified gradient and color logic
Color control lives in Gradient & Color . The indicator uses a single continuous gradient for all zones, above and below price, so you can read strength at a glance without guessing what palette means what.
Base colors
You set:
Mid strength color (green) — used for mid-level strength zones and as the “anchor” in the gradient.
High strength color (red) — used for the strongest zones.
Max opacity — the maximum visual opacity for the solid part of the gradient. Lower values here mean more solid; higher values mean more transparent.
The script then defines three internal points:
Clear end — same as mid color, but with a high alpha (close to transparent).
Mid end — mid color at the strongest allowed opacity.
High end — high color at the strongest allowed opacity.
Strength normalization
Within each update:
The script finds the maximum score among all existing zones.
Each zone’s strength is computed as its score divided by this maximum.
Strength is clamped into .
This means a zone with strength 1.0 is currently the strongest zone on the chart. Other zones are colored relative to that.
Piecewise gradient
Color is assigned in two stages:
For strength between 0.0 and 0.5: interpolate from “clear” green to solid green.
Weak zones are barely visible, mid-strength zones appear as solid green.
For strength between 0.5 and 1.0: interpolate from solid green to solid red.
The strongest zones shift toward the red anchor, clearly separating them from everything else.
Strength scale legend
To make the gradient readable, the indicator draws a vertical legend on the right side of the chart:
About 15 cells from top (Strong) to bottom (Weak).
Each cell uses the same gradient function as the zones themselves.
Top cell is labeled “Strong”; bottom cell is labeled “Weak”.
This legend acts as a fixed reference so you can instantly map a zone’s color to its approximate strength rank.
What it plots
At a glance, the indicator produces:
Upper liquidity zones above price, built from large upper wick events.
Lower liquidity zones below price, built from large lower wick events.
All zones colored by relative strength using the same gradient.
Zones that freeze when price breaks them, then fade out via decay and removal.
A strength scale legend on the right to interpret the gradient.
There are no extra lines, labels, or clutter. The focus is the evolving structure of liquidity zones and their visual strength.
How to read the zones
Bright red / bright green zones
These are your current “major” liquidity areas. They have high scores relative to other zones and have not yet decayed. Expect meaningful reactions, absorption attempts, or spillover moves when price interacts with them.
Faded zones
Pale, nearly transparent zones are either old, decayed, or minor. They can still matter, but priority is lower. If these are in the middle of a long consolidation, they often become background noise.
Broken but still visible zones
Zones whose extension has stopped have been overrun by closing price. They show where a key level gave way. You can use them as context for regime shifts or failed attempts.
Absence of zones
A chart with few or no zones means that, under your current thresholds, there have not been strong enough liquidity events recently. Either tighten the filters or accept that recent price action has been relatively balanced.
Use cases
1) Intraday liquidity hunting
Run the indicator on lower timeframes (e.g., 1–15 minute) with moderately fast decay.
Use the upper zones as potential sell reaction areas, the lower zones as potential buy reaction areas.
Combine with order flow, CVD, or footprint tools to see whether price is absorbing or rejecting at each zone.
2) Swing trading context
Increase ATR length and range/wick multipliers to focus only on major spikes.
Set slower decay and higher max lifetime so zones persist across multiple sessions.
Use these zones as swing inflection areas for larger setups, for example anticipating re-tests after breakouts.
3) Stop placement and invalidation
For longs, place invalidation beyond a decaying lower zone rather than in the middle of noise.
For shorts, place invalidation beyond strong upper zones.
If price closes through a strong zone and it freezes, treat that as additional evidence your prior bias may be wrong.
4) Identifying trapped flows
Upper zones formed after violent spikes up that quickly fail can mark trapped longs.
Lower zones formed after violent spikes down that quickly reverse can mark trapped shorts.
Watching how price behaves on the next touch of those zones can hint at whether those participants are being rescued or squeezed.
Settings overview
Event Detection
Use volume filter — enable or disable the volume spike requirement.
Volume SMA length — rolling window for average volume.
Volume spike multiplier — how aggressive the volume spike filter is.
ATR length — period for ATR, used in all size comparisons.
Min wick size in ATRs — minimum wick size threshold.
Min range in ATRs — minimum bar range threshold.
Zone Geometry
Zone thickness in ATRs — vertical size of each liquidity zone, scaled by ATR.
Decay & Lifetime
Score decay per bar — multiplicative decay factor for each zone score per bar.
Max bars a zone can live — hard cap on lifetime.
Minimum score before removal — score cut-off at which zones are deleted.
Gradient & Color
Mid strength color (green) — base color for mid-level zones and the lower half of the gradient.
High strength color (red) — target color for the strongest zones.
Max opacity — controls the most solid end of the gradient (0 = fully solid, 100 = fully invisible).
Tuning guidance
Fast, session-only liquidity
Shorter ATR length (e.g., 20–50).
Higher wick and range multipliers to focus only on extreme events.
Decay per bar closer to 0.95–0.98 and moderate max lifetime.
Volume filter enabled with a decent multiplier (e.g., 1.5–2.0).
Slow, structural zones
Longer ATR length (e.g., 100+).
Moderate wick and range thresholds.
Decay per bar very close to 1.0 for slow fading.
Higher max lifetime and slightly higher min score threshold so only very weak zones disappear.
Noisy, high-volatility instruments
Increase wick and range ATR multipliers to avoid over-triggering.
Consider enabling the volume filter with stronger settings.
Keep decay moderate to avoid the chart getting overloaded with old zones.
Notes
This is a structural and contextual tool, not a complete trading system. It does not account for transaction costs, execution slippage, or your specific strategy rules. Use it to:
Highlight where liquidity has recently been tested hard.
Rank these areas by decaying strength.
Guide your attention when layering in separate entry signals, risk management, and higher-timeframe context.
Time-Decay Liquidity Zones is designed to keep your chart focused on where the market has most recently “cared” about price, and to gradually forget what no longer matters. Adjust the detection, geometry, decay, and gradient to fit your product and timeframe, and let the zones show you which parts of the tape still have unfinished business.
Relative Performance vs XAO (Histogram)RSC Relative Strength Comparison is used to compare performance of a Sector Index or Stock against a Benchmark (Index). The Benchmark used is the Australian All Ordinaries Index with a look back period of 63 days (3 months). Both the benchmark and look back period may be changed in the code to suit.
ADX HUD LabelStatic ADX Strength Label
Drops a fixed label in the top-right corner of your chart that only tells you one thing: is the trend worth trading or not.
The label constantly updates the current ADX value and changes color: red below 20 (dead / choppy), yellow between 20–25 (warming up), and green above 25 (strong trend, go hunting).
Use it as a quick trend-filter so you’re not forcing trades when the market is caca chop.
Turtle System 1 (20/10) + N-Stop + MTF Table V7.2🐢 Description: Turtle System 1 (20/10) IndicatorThis indicator implements the original trading signals of the Turtle Trading System 1 based on the classic Donchian Channels. It incorporates a historically correct, volatility-based Trailing Stop (N-Stop) and a Multi-Timeframe (MTF) status dashboard. The script is written in Pine Script v6, optimized for performance and reliability.📊 Core Logic and ParametersThe system is a pure trend-following model, utilizing the more widely known, conservative parameters of the Turtle System 1:FunctionParameterValueDescriptionEntry$\text{Donchian Breakout}$$\mathbf{20}$Buy/Sell upon breaking the 20-day High/Low.Exit (Turtle)$\text{Donchian Breakout}$$\mathbf{10}$Close the position upon breaking the 10-day Low/High.Volatility$\mathbf{N}$ (ATR Period)$\mathbf{20}$Calculation of market volatility using the Average True Range (ATR).Stop-LossMultiplier$\mathbf{2.0} BER:SETS the initial and Trailing Stop at $\mathbf{2N}$.🛠️ Key Technical Features1. Original Turtle Trailing Stop (Section 4)The stop-loss mechanism is implemented with the historically accurate Turtle Trailing Logic. The stop is not aggressively tied to the current candle's low/high, which often causes premature exits. Instead, the stop only trails in the direction of the trend, maximizing the previous stop price against the new calculated $\text{Close} \pm 2N$:$$\text{New Trailing Stop} = \text{max}(\text{Previous Stop}, \text{Close} \pm (2 \times N))$$2. Reliable Multi-Timeframe (MTF) Status (Section 6)The indicator features a robust MTF status table.Purpose: It calculates and persistently stores the Turtle System 1 status (LONG=1, SHORT=-1, FLAT=0) for various timeframes (1H, 4H, 8H, 1D, and 1W).Method: It uses global var int variables combined with request.security(), ensuring the status is accurately maintained and updated across different bars and timeframes, providing a reliable higher-timeframe context.3. VisualizationsChannels: The 20-period (Entry) and 10-period (Exit) Donchian Channels are plotted.Stop Line: The dynamic $\mathbf{2N}$ Trailing Stop is visible as a distinct line.Signals: plotshape markers indicate Entry and Exit.MTF Table: A clean, color-coded status summary is displayed in the upper right corner.
Turtle System 2 (55/20) + N-Stop + MTF Table V7.2🐢 Description: Turtle System 2 (55/20) IndicatorThis indicator implements the trading signals of the Turtle Trading System 2 based on the classic Donchian Channels, supplemented by a historically correct, volatility-based Trailing Stop (N-Stop) and a Multi-Timeframe (MTF) status overview. The script was developed in Pine Script v6 and is optimized for performance and robustness.📊 Core Logic and ParametersThe indicator is based on the rule-based trend-following system developed by Richard Dennis and William Eckhardt, utilizing the more aggressive Entry/Exit parameters of System 2:FunctionParameterValueDescriptionEntry$\text{Donchian Breakout}$$\mathbf{55}$Buy/Sell upon breaking the 55-day High/Low.Exit (Turtle)$\text{Donchian Breakout}$$\mathbf{20}$Close the position upon breaking the 20-day Low/High.Volatility$\mathbf{N}$ (ATR Period)$\mathbf{20}$Calculation of market volatility using the Average True Range (ATR).Stop-LossMultiplier$\mathbf{2.0} BER:SETS the initial and Trailing Stop at $\mathbf{2N}$.🛠️ Technical Implementation1. Correct Trailing Stop (Section 4)In contrast to many flawed implementations, the Trailing Stop is implemented here according to the Original Turtle Logic. The stop price (current_stop_price) is not aggressively tied to the current low or high. Instead, at the close of each bar, it is only trailed in the direction of the trade (math.max for long positions) based on the formula:$$\text{New Trailing Stop} = \text{max}(\text{Previous Stop}, \text{Close} \pm (2 \times N))$$This ensures the stop is only adjusted upon sustained positive movement and is not prematurely triggered by short-term, deep price shadows.2. Reliable Multi-Timeframe (MTF) Logic (Section 6)The MTF section utilizes global var int variables (mtf_status_1h, mtf_status_D, etc.) in conjunction with the request.security() function.Purpose: Calculates and persistently stores the current Turtle System 2 status (LONG=1, SHORT=-1, FLAT=0) for the timeframes 1H, 4H, 8H, 1D, and 1W.Advantage: By persistently storing the status using the var variables, the critical error of single-update status is eliminated. The states shown in the table are reliable and accurately reflect the Turtle System's position status on the respective timeframes.3. Visual ComponentsDonchian Channels: The entry (55-period) and exit (20-period) channels are drawn with color highlighting.N-Stop Line: The dynamically calculated Trailing Stop ($\mathbf{2N}$) is displayed as a magenta line.Visual Signals: plotshape markers indicate Entry and Exit points.MTF Table: A compact status summary with color coding (Green/Red/Gray) for the higher timeframes is displayed in the upper right corner.
920 Order Flow SATY ATR//@version=6
indicator("Order-Flow / Volume Signals (No L2)", overlay=true)
//======================
// Inputs
//======================
rvolLen = input.int(20, "Relative Volume Lookback", minval=5)
rvolMin = input.float(1.1, "Min Relative Volume (× avg)", step=0.1)
wrbLen = input.int(20, "Wide-Range Lookback", minval=5)
wrbMult = input.float(1, "Wide-Range Multiplier", step=0.1)
upperCloseQ = input.float(0.60, "Close near High (0-1)", minval=0.0, maxval=1.0)
lowerCloseQ = input.float(0.40, "Close near Low (0-1)", minval=0.0, maxval=1.0)
cdLen = input.int(25, "Rolling CumDelta Window", minval=5)
useVWAP = input.bool(true, "Use VWAP Bias Filter")
showSignals = input.bool(true, "Show Long/Short OF Triangles")
//======================
// Core helpers
//======================
rng = high - low
tr = ta.tr(true)
avgTR = ta.sma(tr, wrbLen)
wrb = rng > wrbMult * avgTR
// Relative Volume
volAvg = ta.sma(volume, rvolLen)
rvol = volAvg > 0 ? volume / volAvg : 0.0
// Close location in bar (0..1)
clo = rng > 0 ? (close - low) / rng : 0.5
// VWAP (session) + SMAs
vwap = ta.vwap(close)
sma9 = ta.sma(close, 9)
sma20 = ta.sma(close, 20)
sma200= ta.sma(close, 200)
// CumDelta proxy (uptick/downtick signed volume)
tickSign = close > close ? 1.0 : close < close ? -1.0 : 0.0
delta = volume * tickSign
cumDelta = ta.cum(delta)
rollCD = cumDelta - cumDelta
//======================
// Signal conditions
//======================
volActive = rvol >= rvolMin
effortBuy = wrb and clo >= upperCloseQ
effortSell = wrb and clo <= lowerCloseQ
cdUp = ta.crossover(rollCD, 0)
cdDown = ta.crossunder(rollCD, 0)
biasBuy = not useVWAP or close > vwap
biasSell = not useVWAP or close < vwap
longOF = barstate.isconfirmed and volActive and effortBuy and cdUp and biasBuy
shortOF = barstate.isconfirmed and volActive and effortSell and cdDown and biasSell
//======================
// Plot ONLY on price chart
//======================
// SMAs & VWAP
plot(sma9, title="9 SMA", color=color.orange, linewidth=3)
plot(sma20, title="20 SMA", color=color.white, linewidth=3)
plot(sma200, title="200 SMA", color=color.black, linewidth=3)
plot(vwap, title="VWAP", color=color.new(color.aqua, 0), linewidth=3)
// Triangles with const text (no extra pane)
plotshape(showSignals and longOF, title="LONG OF",
style=shape.triangleup, location=location.belowbar, size=size.tiny,
color=color.new(color.green, 0), text="LONG OF")
plotshape(showSignals and shortOF, title="SHORT OF",
style=shape.triangledown, location=location.abovebar, size=size.tiny,
color=color.new(color.red, 0), text="SHORT OF")
// Alerts
alertcondition(longOF, title="LONG OF confirmed", message="LONG OF confirmed")
alertcondition(shortOF, title="SHORT OF confirmed", message="SHORT OF confirmed")
//────────────────────────────
// End-of-line labels (offset to the right)
//────────────────────────────
var label label9 = na
var label label20 = na
var label label200 = na
var label labelVW = na
if barstate.islast
// delete old labels before drawing new ones
label.delete(label9)
label.delete(label20)
label.delete(label200)
label.delete(labelVW)
// how far to move the labels rightward (increase if needed)
offsetBars = input.int(3)
label9 := label.new(bar_index + offsetBars, sma9, "9 SMA", style=label.style_label_left, textcolor=color.white, color=color.new(color.orange, 0))
label20 := label.new(bar_index + offsetBars, sma20, "20 SMA", style=label.style_label_left, textcolor=color.black, color=color.new(color.white, 0))
label200 := label.new(bar_index + offsetBars, sma200, "200 SMA", style=label.style_label_left, textcolor=color.white, color=color.new(color.black, 0))
labelVW := label.new(bar_index + offsetBars, vwap, "VWAP", style=label.style_label_left, textcolor=color.black, color=color.new(color.aqua, 0))
//────────────────────────────────────────────────────────────────────
//────────────────────────────────────────────
// Overnight High/Low + HOD/LOD (no POC)
//────────────────────────────────────────────
sessionRTH = input.session("0930-1600", "RTH Session (exchange tz)")
levelWidth = input.int(2, "HL line width", minval=1, maxval=5)
labelOffsetH = input.int(10, "HL label offset (bars to right)", minval=0)
isRTH = not na(time(timeframe.period, sessionRTH))
rthOpen = isRTH and not isRTH
// --- Track Overnight High/Low during NON-RTH; freeze at RTH open
// --- Track Overnight High/Low during NON-RTH; freeze at RTH open
var float onHigh = na
var float onLow = na
var int onHighBar = na
var int onLowBar = na
var float onHighFix = na
var float onLowFix = na
var int onHighFixBar = na
var int onLowFixBar = na
if not isRTH
if na(onHigh) or high > onHigh
onHigh := high
onHighBar := bar_index
if na(onLow) or low < onLow
onLow := low
onLowBar := bar_index
if rthOpen
onHighFix := onHigh
onLowFix := onLow
onHighFixBar := onHighBar
onLowFixBar := onLowBar
onHigh := na, onLow := na
onHighBar := na, onLowBar := na
// ──────────────────────────────────────────
// Candle coloring + labels for 9/20/VWAP crosses
// ──────────────────────────────────────────
showCrossLabels = input.bool(true, "Show cross labels")
// Helpers
minAll = math.min(math.min(sma9, sma20), vwap)
maxAll = math.max(math.max(sma9, sma20), vwap)
// All three lines
goldenAll = open <= minAll and close >= maxAll
deathAll = open >= maxAll and close <= minAll
// 9/20 only (exclude cases that also crossed VWAP)
dcUpOnly = open <= math.min(sma9, sma20) and close >= math.max(sma9, sma20) and not goldenAll
dcDownOnly = open >= math.max(sma9, sma20) and close <= math.min(sma9, sma20) and not deathAll
// Candle colors (priority: all three > 9/20 only)
var color cCol = na
cCol := goldenAll ? color.yellow : deathAll ? color.black :dcUpOnly ? color.lime :dcDownOnly ? color.red : na
barcolor(cCol)
// Labels
plotshape(showCrossLabels and barstate.isconfirmed and goldenAll, title="GOLDEN CROSS",
style=shape.labelup, location=location.belowbar, text="GOLDEN CROSS",
color=color.new(color.yellow, 0), textcolor=color.black, size=size.tiny)
plotshape(showCrossLabels and barstate.isconfirmed and deathAll, title="DEATH CROSS",
style=shape.labeldown, location=location.abovebar, text="DEATH CROSS",
color=color.new(color.black, 0), textcolor=color.white, size=size.tiny)
plotshape(showCrossLabels and barstate.isconfirmed and dcUpOnly, title="DC UP",
style=shape.labelup, location=location.belowbar, text="DC UP",
color=color.new(color.lime, 0), textcolor=color.black, size=size.tiny)
plotshape(showCrossLabels and barstate.isconfirmed and dcDownOnly, title="DC DOWN",
style=shape.labeldown, location=location.abovebar, text="DC DOWN",
color=color.new(color.red, 0), textcolor=color.white, size=size.tiny)
// ──────────────────────────────────────────
// Audible + alert conditions
// ──────────────────────────────────────────
alertcondition(goldenAll, title="GOLDEN CROSS", message="GOLDEN CROSS detected")
alertcondition(deathAll, title="DEATH CROSS", message="DEATH CROSS detected")
alertcondition(dcUpOnly, title="DC UP", message="Dual Cross UP detected")
alertcondition(dcDownOnly,title="DC DOWN", message="Dual Cross DOWN detected")
Weekday Close vs Open — Last N (per weekday)# Weekday Close vs Open - Last N Occurrences
This indicator distills every weekday's historical open-to-close behavior into a compact table so you can see how "typical" the current session is before the day even closes. It runs independently of your chart timeframe by pulling daily OHLCV data under the hood, tracking the last **N** completed occurrences for each weekday, and refreshing only when a daily bar closes. On daily charts you can also shade every past bar that matches today's weekday (excluding the in-progress session) to reinforce the pattern visually while the table remains non-repainting.
## What It Shows
- **Win/Loss/Tie counts** - how many of the last `N` occurrences closed above the open (wins), below (losses), or inside the tie threshold you define as "flat".
- **Win % heatmap** - the win column is color-coded (deep green > deep red) so you immediately recognize strong or weak weekdays.
- **Advanced metrics (optional)** - average daily volume plus the average percentage excursion above/below the open (`AvgUp%`, `AvgDn%`) for that weekday.
- **Totals row** - aggregates every weekday into one row to estimate overall hit rate and average stats across the entire data set.
- **Weekday shading (optional)** - on daily charts you can tint every bar that matches today's weekday (all Mondays, all Fridays, etc.) for instant pattern recognition.
## How It Works
1. The script requests daily OHLCV data (non-repainting) regardless of the chart timeframe.
2. When a new daily bar confirms, it packs that day's data into one of seven arrays (one per weekday). Each day contributes five floats (O/H/L/C/V) so trimming and statistics stay in lockstep.
3. A helper function (`f_dayMetrics`) scans daily history to compute average volume, average excursion above/below the open, and win/loss/tie counts for the requested weekday.
4. The table populates on the last bar of the chart session, respecting your advanced/totals toggles and keeping text at `size.normal`.
## Reading the Table
- **Win/Loss/Tie columns**: raw counts taken from your chosen `N`.
- **Win %***: excludes ties from the denominator so it reflects only decisive closes.
- **AvgUp% / AvgDn%**: typical intraday extension (high vs open, open vs low) in percent.
- **Avg Vol**: arithmetic mean of daily volume for that weekday.
- **TOTAL row**: provides a global win rate plus volume/up/down averages weighted by how many samples each weekday contributed.
## Practical Uses
- Spot weekdays that historically trend higher or lower before entering a trade.
- Compare current price action against the typical intraday range (`AvgUp%` vs today's move).
- Filter mean-reversion vs breakout setups based on the most reliable weekday patterns.
- Quickly gauge whether today is behaving "in character" by referencing the highlighted row or the optional whole-chart weekday shading.
> **Tip:** Use smaller `N` values (e.g., 10-20) for adaptive, recent behavior and larger values (50+) to capture longer-term seasonality. Tighten the tie threshold if you want almost every candle to register as win/loss, or widen it to focus only on meaningful moves.
Top N Candle HighlighterTrack highest candle sizes on current timeframes. This short script:
1. Tracks the **top N largest candles** on the current chart
2. Option to use **body size** or **full candle range**
3. Highlights candles using `box.new()` (fully v6 compatible)
4. Optionally shows **rank and size labels**
5. Handles red, green, and doji candles differently with color
ATR Volatility AlertsOverview:
This is a dynamic alert tool based on the Average True Range (ATR), designed to help traders detect sudden price movements that exceed normal volatility levels. Whether you are trading breakouts or monitoring for abnormal spikes, this indicator visualizes these events on the chart and triggers system alerts when the price move exceeds your specified ATR multiplier.
Key Features:
Fully Customizable ATR Range:
You can adjust the ATR Length (Default: 14) and the Multiplier (Default: 1.5x).
Tip: Increase the multiplier (e.g., to 2.0 or 3.0) to catch only extreme volatility, or lower it for scalping smaller moves.
Visual Chart Signals:
Visual markers appear instantly when a bar's movement exceeds the ATR threshold.
Green Triangle: Indicates an Upward Spike.
Red Triangle: Indicates a Downward Spike.
Flexible System Alerts:
Designed to integrate seamlessly with TradingView's alert system. You can choose from three specific alert directions based on your strategy:
1.Price Spike Up: Triggers only on sharp upward moves.
2.Price Spike Down: Triggers only on sharp downward moves.
3.Bidirectional Volatility Alert: Triggers on BOTH huge pumps and dumps.
How to Set Alerts:
Click the "Create Alert" button in TradingView.
Select ATR Volatility Alerts in the "Condition" dropdown.
Choose the specific logic you need:
· Select Price Spike Up for bullish monitoring.
· Select Price Spike Down for bearish monitoring.
· Select Bidirectional Volatility Alert to watch for any volatility expansion.
Two Supertrend Crossover SignalThis indicator is designed to visualize trend shifts using two Supertrend lines and a crossover-based signal system.
It also colors the area between the two Supertrend lines based on the current trend direction, making trend changes easy to identify at a glance.
How It Works
The indicator plots:
Fast Supertrend (shorter ATR length, lower factor)
Slow Supertrend (longer ATR length, higher factor)
A crossover between these two Supertrend lines indicates a possible trend shift.
Buy Signal
A BUY signal occurs when: Fast Supertrend crosses ABOVE Slow Supertrend
This suggests bullish momentum strengthening.
Sell Signal
A SELL signal occurs when: Fast Supertrend crosses BELOW Slow Supertrend
This suggests bearish momentum increasing.
Buy/Sell Signal Labels
The chart displays clear BUY (green) and SELL (red) labels at every crossover.
These signals help traders quickly pinpoint potential entries or exits.
This indicator is ideal for:
✓ Trend trading
✓ Swing trading
✓ Identifying momentum shifts
✓ Visual confirmation of market direction
✓ Combining with price action or EMA filters
You may adjust ATR length and multiplier depending on the timeframe:
For Scalping (1–5 min):
Fast ATR: 5–7
Slow ATR: 10–14
For Intraday (5–15 min):
Fast ATR: 7
Slow ATR: 10–14
For Swing Trading (1h–4h):
Fast ATR: 10
Slow ATR: 20
Important Notes
This indicator does not repaint the Supertrend values.
Signals are based on confirmed crossovers.
Use stop-loss and risk management appropriate for your strategy.
Always combine with market context (support/resistance, volume, etc.)
ROC x4 (Multi-Period Overlay) + Table📈 ROC x4 (Multi-Period Momentum Suite) + Compact Table
A clean, powerful momentum indicator that overlays four Rate-of-Change (ROC) periods inside a single pane — without needing to stack multiple separate indicators.
This script is designed for traders who use multi-timeframe momentum confirmation, trend strength validation, and early detection of rotation, compression, or expansion in price behavior.
🔍 What This Indicator Does
Plots 4 different ROC lengths in one panel
Includes a compact real-time ROC table that fits even in small panes
Tracks momentum shifts, trend acceleration, slowdowns, and regime transitions
Allows manual input for all 4 ROC lengths
Optional smoothing to reduce noise
Zero-line toggle for momentum direction clarity
Perfect for traders who want to monitor short-term, mid-term, and long-term ROC simultaneously.
SVE Daily ATR + SDTR Context BandsSVE Daily ATR + SDTR Context Bands is a free companion overlay from The Volatility Engine™ ecosystem.
It plots daily ATR-based expansion levels and a Standardized Deviation Threshold Range (SDTR) to give traders a clean, quantitative view of where intraday price sits relative to typical daily movement and volatility extremes.
This module is designed as an SVE-compatible context layer—using discrete, RTH-aligned daily zones, expected-move bands, and a standardized volatility shell—so traders can build situational awareness even without the full SPX Volatility Engine™ (SVE).
It does not generate trade signals.
Its sole purpose is to provide a clear volatility framework you can combine with your own structure, Fibonacci, or signal logic (including SVE, if you use it).
🔍 What It Shows
* Daily ATR Bands (expHigh / expLow)
- Expected high/low based on smoothed daily ATR
- Updates at the RTH open
* Daily SDTR Bands (expHighSDTR / expLowSDTR)
- Standard deviation threshold range for volatility extremes
- Helps identify overextended conditions
Discrete RTH-aligned Zones
- Bands reset cleanly at each RTH session
No continuous carry-over from prior days
Daily ATR & SDTR stats label
Quick-reference box showing current ATR and SDTR values
🎯 Purpose
This tool helps traders:
- Gauge intraday context relative to expected daily movement
- Assess volatility state (quiet, normal, expanded, extreme)
- Identify likely exhaustion or expansion zones
- Frame intraday price action inside daily volatility rails
- Support decision-making with objective context rather than emotion
It complements any strategy and works on any intraday timeframe.
⚙️ Inputs
- ATR Lookback (default: 20 days)
- RTH Session Times
- SDTR Lookback
- Show/Hide Daily Stats Label
🧩 Part of the SVE Ecosystem
This module is part of the broader SPX Volatility Engine™ framework.
The full SVE system includes:
- Composite signal scoring
- Volatility compression logic
- Histogram slope and momentum analysis
- Internals (VIX / VVIX / TICK)
- Structural zone awareness
- Real-time bias selection
- High-clarity decision support
⚠️ Disclaimer
This tool is provided for educational and informational purposes only.
No performance claims are made or implied.
Not investment advice.
BB Breakout + EMA Touch (50/100)Shows points only when BOTH happen on the same candle:
1️⃣ Price breaks through Bollinger Bands
2️⃣ Price touches (or crosses) EMA 50 or EMA 100
The Bear & Bull TieWhat it does:
Bear & Bull Tie is a moving average crossover indicator that identifies trend reversals and generates entry/exit signals based on the relationship between price and three simple moving averages (SMA 21, SMA 55, SMA 89). The indicator combines these three MAs into an Average Moving Average (AMA) to confirm directional bias, then uses ATR (Average True Range) volatility measurement for dynamic position sizing and stop-loss placement.
How it works:
The indicator operates on a simple but effective principle: it enters a bullish trend when price closes above all three moving averages simultaneously, and enters a bearish trend when price closes below all three MAs simultaneously. This "three MA alignment" approach filters out noise and confirms genuine trend changes. The indicator then plots:
Entry levels at the highest MA during uptrends or lowest MA during downtrends
Stop-loss zones calculated using 2x ATR distance from entry prices
Trend confirmation fill between price and the Average Moving Average, color-coded blue for bullish and red for bearish
The ATR-based stop-loss sizing adapts to market volatility, making it suitable for different market conditions and timeframes.
How to use it:
Monitor the filled zones to visually confirm your trend bias
Watch for alerts when new long or short setups form; entry prices and ATR-based stops are displayed on the chart
Trade the zones between your entry level and stop-loss zone, adjusting position size based on your risk tolerance
Exit when colors reverse to indicate trend termination
The indicator works best on higher timeframes (1H and above) where trend clarity is stronger and false signals are reduced.
Alerts: FOR AUTOMATION / NOTIFICATION's (create an alert for B/B tie (2, 4) that uses Any Alert / Function Call )
Long Positions:
entries ---> "Bull Tie on NVDA | Entry : 100.5 | ATR Stop : 99.5"
exits ------> "Bull Tie on NVDA | Exit : 110.1"
Short Positions:
entries ---> "Bear Tie on NVDA | Entry : 120.05 | ATR Stop : 85.05"
exits -----> "Bear Tie on NVDA | Exit : 100"
Credits:
This script incorporates concepts and code portions from @LOKEN94 with his explicit permission. Special thanks for the foundational logic that inspired this development.
Disclaimer:
This indicator is for educational and analytical purposes. It is not financial advice. Past performance does not guarantee future results. Always manage risk properly and use stops. Test thoroughly on historical data before live trading.
Energy Meter (Candle Range/ATR Ratio)Purpose:
This indicator is a simple, intuitive way to visualize auction energy — the actual force behind a price move — rather than just its appearance on the chart. It’s built on a single idea:
If a bar travels farther than normal in its fixed amount of time, something pushed harder than usual.
That “push” is auction energy, and it’s the raw material of microstructure inference: reading intent and imbalance from nothing more than candles, tempo, and volatility.
Traditional indicators focus on price patterns or volume. This one focuses on pressure — the underlying imbalance driving each bar.
How It Works
Each bar’s True Range is divided by its ATR, producing a normalized ratio:
1.0 = Average energy
>1.2 (default) = Above-normal energy
<1.0 = Quiet, low-pressure bars
This ratio is plotted as a histogram to highlight bursts of force, with a smoothed line added to show the tempo of recent energy changes.
When the histogram spikes, you’re seeing the auction flash its teeth: aggression, initiative, failed absorption, breakout ignition, or the first punch of a reversal.
When the line rolls over, you’re seeing the engine lose torque.
It’s a minimalist tool for seeing who is actually winning the auction, even when price looks deceptively calm.
Why It Matters
Price moves because of imbalance, not geometry. Two candles that look identical can represent completely different internal dynamics.
This indicator helps you see:
Breakout strength vs. fakeouts
Acceleration vs. drift
Exhaustion after extended runs
Reversal attempts with real intent
Quiet absorption before explosive moves
Shifts in aggression hidden inside consolidation
For new traders, it’s a clean introduction to microstructure inference — extracting meaningful order-flow insights without needing L2, DOM, or volume profile.
For experienced traders, it's a compact impulse detector that complements trend, volatility, and liquidity models.
Summary
This is a lightweight, first-principles tool designed to expose the energy signature of the auction: how hard the market is trying to go somewhere.
It doesn’t predict direction — it reveals pressure, so you can judge the quality of the move you’re trading.
Energy beats geometry.
Intent beats patterns.
Microstructure is hiding in every candle; this indicator makes it visible.
Weekly price boxWeekend Trap / Custom Timebox Analyzer
This indicator allows traders to define a specific time window (e.g., the "Weekend Trap" period from Friday to Sunday, or a full weekly range) and automatically draws a box highlighting the price action during that session. It is designed to help visualize gaps, ranges, and trend direction over specific timeframes.
Key Features
Dynamic Range Detection: automatically draws a box connecting the Highest High and Lowest Low occurring between your start and end times.
Trend Visualization: The box changes color dynamically based on price performance:
Bullish (Blue): Close is higher than the Open of the defined period.
Bearish (Red): Close is lower than the Open of the defined period.
Smart Labeling: Displays a customizable label (default: "Box") along with the real-time Percentage Change of the period. The label is positioned intelligently outside the box to avoid cluttering the price action.
Flexible Timing:
Supports standard intraday sessions (e.g., Mon 09:00 to Mon 17:00).
Supports "wrap-around" sessions (e.g., Friday 23:00 to Sunday 17:00).
New: Supports full-week monitoring (e.g., Friday to Friday) by handling start times that are later than end times on the same day.
Fully Customizable:
Configure specific Bullish and Bearish colors (Border, Background, Text).
Adjust line styles (Solid, Dashed, Dotted) and widths.
Select days via easy-to-use dropdown menus.
How to Use
Time Settings:
Select your Start Day and Time (e.g., Friday 23:00).
Select your End Day and Time (e.g., Sunday 17:00).
Note: Times are based on the Chart/Exchange time.
Visual Settings:
Go to the settings menu to define your preferred colors for Bullish and Bearish scenarios.
Toggle the Label on/off and adjust text size.
Use Cases
Weekend Gaps: Monitor price action that occurs during off-hours or between market close and open.
Opening Range Breakouts: Define the first hour of trading to see the initial range.
Weekly Profiles: Set the start and end day to the same day (e.g., Friday to Friday) to visualize the entire week's range and net performance.
Built with Pine Script™ v6
Momentum Divergence Oscillator by JJMomentum Divergence Oscillator by JJ
A powerful, all-in-one momentum tool designed to streamline trade confluence, combining multi-timeframe trend analysis with automatic divergence spotting and classic MACD signals.
How to Use This Indicator
This oscillator is designed to be used in the lower pane of your chart, beneath your primary price chart. It provides three main types of signals:
1. Multi-Timeframe (MTF) Trend Confirmation
The background shading is your primary trend filter. It looks at the MACD trend on two higher timeframes (30m and 60m by default) to confirm the market's overarching direction.
Green Shading: Indicates that both higher timeframes are in a bullish trend (MACD above signal line). Focus on looking for BUY signals during this time.
Red Shading: Indicates that both higher timeframes are in a bearish trend. Focus on looking for SELL signals during this time.
Grey/No Shading: The higher timeframes are not in agreement or are consolidating. Exercise caution or stick to standard price action rules.
2. Automatic Divergence Signals
Divergence is a powerful early warning system where the indicator moves in the opposite direction of the price. The indicator automatically flags these occurrences:
"Bull RSI Div" (Green Label-Up): Bullish divergence identified using the RSI oscillator. This suggests a potential reversal to the upside after a downtrend.
"Bear RSI Div" (Red Label-Down): Bearish divergence identified using the RSI oscillator. This suggests a potential reversal to the downside after an uptrend.
Tip: These signals are often most reliable when they occur within the corresponding MTF background colour (e.g., a "Bull RSI Div" during a Green MTF background).
3. Momentum Shifts and Crossovers
The standard plots provide immediate insight into market momentum:
Blue/Orange Lines: The traditional MACD line (Blue) and Signal line (Orange).
Histogram (Green/Red Bars): Represents the momentum difference between the MACD and Signal lines.
Zero-Line Crosses (Triangles): Tiny triangles appear when the MACD line crosses the zero line, indicating a shift in long-term momentum.
Peaks & Troughs (X-Crosses): The 'X' markers identify local peaks and troughs in the histogram, sometimes indicating short-term exhaustion of the current move.
Disclaimer: Trading involves significant risk and is not suitable for every investor. This indicator is for educational purposes only and should not be considered financial advice. Always use appropriate risk management.
Liquidity ThermometerThis is a universal indicator that assesses market liquidity based on five key market parameters: volume, volatility, candlestick range, body size, and price momentum.
The indicator does not use open interest data and is suitable for all markets, including spot, futures, and Forex.
This indicator normalizes each metric historically and creates a composite index between 0 and 1, where higher values correspond to a stable and calm market environment, and lower values indicate periods of increased risk and potential liquidity stress.
LT generates an integral liquidity index in the range based on five normalized components:
-nVol — normalized volume, reflecting trading density and activity.
-nATR — the volatility component (ATR), inverted, as high volatility is typically associated with declining liquidity.
-nRange — the normalized candlestick range, also inverted to assess the structural narrowness of the price movement.
-nBody — the normalized candlestick body size (|close − open|), inverted to assess the balance of supply and demand.
-nMove — the normalized value of the price impulse movement (|Δclose|), reflecting short-term price spikes.
Each metric is linearly normalized over a sliding window (200 bars) using the formula:
norm(x) = (x − min) / (max − min),
where at max = min, the value is fixed at 0.5 to ensure stability.
The ALT index is calculated as a weighted combination:
ALT = 0.35 nVol + 0.20 (1 − nATR) + 0.20 (1 − nRange) + 0.15 (1 − nBody) + 0.10 (1 − nMove)
The result is further smoothed using EMA(3) to reduce micronoise.
Red Zone (MLI < 0.25) — Risk, Thin Liquidity
When the indicator falls into the red zone, it means the market is extremely volatile:
Characteristics:
Low volume — small trades have a strong impact on the price.
High volatility — candlesticks rise or fall sharply.
Wide candlestick range — the market is "breathing heavily," easily breaking price extremes.
Impulsive movements — small market shocks lead to sharp spikes.
Thin liquidity — few orders in the order book, large orders "eat up" the market.
What this means for a trader:
🔥 High risk of spikes and false breakouts.
⚠ Possible series of liquidations on leverage.
❌ It is not recommended to enter long or short positions without a filter or protection.
✅ Can be used for short scalping strategies if you know the entry point, but very carefully.
Green Zone (MLI > 0.75) — High Liquidity, Safe Zone
When the indicator rises into the green zone, it means the market is stable and balanced:
Characteristics:
High volume — the market is deep, orders are executed without a strong impact on the price.
Low volatility — candlesticks are stable, no sharp spikes.
Narrow candlestick range — price moves calmly.
Weak impulse movements — no sharp surges.
Sufficient liquidity — the market can handle large orders.
What this means for a trader:
✅ Safe zone for opening positions.
🔄 Easier to set stop-loss and take-profit orders.
💡 You can trade both up and down, the risk of sharp movements is minimal.
⚡ Under these conditions, there is a lower risk of spikes and accidental liquidations.
It does not predict price movements or guarantee results. It is an analytical tool intended for additional research into market structure.
Vince/Williams Selling Climax SignalThis indicator identifies moments of ultimate market capitulation based on the "Selling Climax" research by Ralph Vince and Larry Williams. It monitors the ratio of New Lows to total traded issues to detect when selling pressure has reached an unsustainable, panic-driven extreme (defaulting to 20% of the entire market hitting new lows).
The script visualizes this process in two stages. First, it marks the actual days of panic with red diamonds, showing you where the "washout" is occurring. Second, and most importantly, it generates a green diamond buy signal on the very first day the panic subsides. This allows you to enter a position immediately after the supply of desperate sellers has been exhausted, often catching the absolute bottom of a sharp correction.
Vince/Williams Bloodbath Sidestepping RuleThis is a defensive risk management tool designed to keep you on the sidelines during devastating market crashes. Drawing on the "Bloodbath" criteria outlined by Vince and Williams, this script highlights periods where market internals have structurally broken down, specifically when the percentage of New Lows exceeds a "danger" threshold (default 4%).
Unlike the Climax signal which looks for the end of a drop, this rule is designed to spot the acceleration phase of a decline. When the background turns red, it indicates that the market is in a liquidating phase where support levels are likely to fail. You should use this as a strict filter to avoid opening new long positions or to tighten stops on existing ones until the background color clears, signaling that the internal bleeding has stopped.






















