Volume-Gated Trend Ribbon [QuantAlgo]🟢 Overview
The Volume-Gated Trend Ribbon employs a selective price-updating mechanism that filters market noise through volume validation, creating a trend-following system that responds exclusively to significant price movements. The indicator gates price updates to moving average calculations based on volume threshold crossovers, ensuring that only bars with significant participation influence the trend direction. By interpolating between fast and slow moving averages to create a multi-layered visual ribbon, the indicator provides traders and investors with an adaptive trend identification framework that distinguishes between volume-backed directional shifts and low-conviction price fluctuations across multiple timeframes and asset classes.
🟢 How It Works
The indicator first establishes a dynamic baseline by calculating the simple moving average of volume over a configurable lookback period, then applies a user-defined multiplier to determine the significance threshold:
avgVol = ta.sma(volume, volPeriod)
highVol = volume >= avgVol * volMult
The gated price mechanism employs conditional updating where the close price is only captured and stored when volume exceeds the threshold. During low-volume periods, the indicator maintains the last qualified price level rather than tracking every minor fluctuation:
var float gatedClose = close
if highVol
gatedClose := close
Dual moving averages are calculated using the gated price input, with the indicator supporting various MA types. The fast and slow periods create the outer boundaries of the trend ribbon:
fastMA = volMA(gatedClose, close, fastPeriod)
slowMA = volMA(gatedClose, close, slowPeriod)
Ribbon interpolation creates intermediate layers by blending the fast and slow moving averages using weighted combinations, establishing a gradient effect that visually represents trend strength and momentum distribution:
midFastMA = fastMA * 0.67 + slowMA * 0.33
midSlowMA = fastMA * 0.33 + slowMA * 0.67
Trend state determination compares the fast MA against the slow MA, establishing bullish regimes when the faster average trades above the slower average and bearish regimes during the inverse relationship. Signal generation triggers on state transitions, producing alerts when the directional bias shifts:
bullish = fastMA > slowMA
longSignal = trendState == 1 and trendState != 1
shortSignal = trendState == -1 and trendState != -1
The visualization architecture constructs a three-tiered opacity gradient where the ribbon's core (between mid-slow and slow MAs) displays the highest opacity, the inner layer (between mid-fast and mid-slow) shows medium opacity, and the outer layer (between fast and mid-fast) presents the lightest fill, creating depth perception that emphasizes the trend center while acknowledging edge uncertainty.
🟢 How to Use This Indicator
▶ Long and Short Signals: The indicator generates long/buy signals when the trend state transitions to bullish (fast MA crosses above slow MA) and short/sell signals when transitioning to bearish (fast MA crosses below slow MA). Because these crossovers only reflect volume-validated price movements, they represent significant level of participation rather than random noise, providing higher-conviction entry signals that filter out false breakouts occurring on thin volume.
▶ Ribbon Width Dynamics: The spacing between the fast and slow moving averages creates the ribbon width, which serves as a visual proxy for trend strength and volatility. Expanding ribbons indicate accelerating directional movement with increasing separation between short-term and long-term momentum, suggesting robust trend development. Conversely, contracting ribbons signal momentum deceleration, potential trend exhaustion, or impending consolidation as the fast MA converges toward the slow MA.
▶ Preconfigured Presets: Three optimized parameter sets accommodate different trading styles and market conditions. Default provides balanced trend identification suitable for swing trading on daily timeframes with moderate volume filtering and responsiveness. Fast Response delivers aggressive signal generation optimized for intraday scalping on 1-15 minute charts, using lower volume thresholds and shorter moving average periods to capture rapid momentum shifts. Smooth Trend offers conservative trend confirmation ideal for position trading on 4-hour to weekly charts, employing stricter volume requirements and extended periods to filter noise and identify only the most robust directional moves.
▶ Built-in Alerts: Three alert conditions enable automated monitoring: Bullish Trend Signal triggers when the fast MA crosses above the slow MA confirming uptrend initiation, Bearish Trend Signal activates when the fast MA crosses below the slow MA confirming downtrend initiation, and Trend Change alerts on any directional transition regardless of direction. These notifications allow you to respond to volume-validated regime shifts without continuous chart monitoring.
▶ Color Customization: Six visual themes (Classic, Aqua, Cosmic, Ember, Neon, plus Custom) accommodate different chart backgrounds and display preferences, ensuring optimal contrast and visual clarity across trading environments. The adjustable fill opacity control (0-100%) allows fine-tuning of ribbon prominence, with lower opacity values create subtle background context while higher values produce bold trend emphasis. Optional bar coloring extends the trend indication directly to the price bars, providing immediate directional reference without requiring visual cross-reference to the ribbon itself.
頻帶和通道
Auto Trend [theUltimator5]The Auto Trend indicator was designed to be a unique pattern detection indicator without the use of standard pivot point logic or high/low lines. It is a study in pattern detection by using iterative best-fit logic.
The indicator automatically identifies and draws trend channels by analyzing price action across configurable lookback periods. It finds optimal high and low trendlines that contain price movement, with a middle line marking the trend's center.
Key Features:
Automatic Pattern Detection - Intelligently searches for the best lookback period where price stays within the channel boundaries
Dual Pattern Modes - Choose between Short (20-66 bars) for quick patterns or Long (50-500 bars) for extended trends. Note - the long pattern is fully configurable and can be set anywhere up to 5000 bars.
Smart Caching - Optimized performance that only recalculates when necessary
Customizable Starting Point - Click directly on the chart to set where the trend channel begins
Flexible Lookback Range - Set minimum and maximum lookback periods to match your trading style
Visual Debugging - Optional label displays the active lookback period and violation count
How It Works:
The indicator divides the lookback period into thirds, finds the highest and lowest closes in the first and last thirds, then draws trendlines connecting these points. It can automatically search through different lookback periods to find the one with the fewest price violations (closes outside the channel).
Settings:
Use Auto Lookback - Enable automatic optimal lookback detection
Pattern Length - Short (faster, 1-bar increments) or Long (broader, 5-bar increments)
Min/Max Lookback - Define the search range for the Long pattern
Manual Lookback - Override auto-detection with a fixed period
Custom Colors - Personalize the high, low, and middle line colors
Starting Point - Select where the trend analysis begins
Use Cases:
Identify dominant trend channels across different timeframes
Spot potential support and resistance levels
Determine trend strength and consistency
Time entries and exits based on channel position
The indicator supports up to 5000 bars of historical data for comprehensive trend analysis.
Abyss Protocol OneAbyss Protocol One — Momentum Exhaustion Trading System
Overview
Abyss Protocol One is a momentum exhaustion indicator designed to identify high-probability reversal points by detecting when price momentum has reached extreme levels. It combines Chande Momentum Oscillator (CMO) threshold signals with dynamic volatility-adjusted bands and multiple protective filters to generate buy and sell signals.
Core Concept
The indicator operates on the principle that extreme momentum readings (CMO reaching ±80) often precede mean reversion. Rather than chasing trends, Abyss Protocol waits for momentum exhaustion before signaling entries and exits.
Key Components
1. Dynamic Bands (Money Line ± ATR)
Center line uses linear regression (Money Line) for smooth trend representation
Bands expand and contract based on Bollinger Band Width Percentile (BBWP)
Low volatility (BBWP < 30): Tighter bands using lower multiplier
High volatility (BBWP > 70): Wider bands using higher multiplier
Bands visually adapt to current market conditions
2. CMO Exhaustion Signals
BUY Signal: CMO drops below -80 (oversold/momentum exhaustion to downside)
SELL Signal: CMO rises above +80 (overbought/momentum exhaustion to upside)
Thresholds are configurable for different assets and timeframes
3. ADX Filter
Signals only fire when ADX exceeds minimum threshold (default: 22)
Ensures there's enough directional movement to trade
Prevents signals during choppy, directionless markets
4. Band Contraction Filter
Calculates band width percentile rank over configurable lookback
When bands are contracted (below 18th percentile), ALL signals are blocked
Prevents trading during low-volatility squeeze periods where breakout direction is uncertain
5. Consecutive Buy Limit
Maximum of 3 consecutive buys allowed before a sell is required
Prevents overexposure during extended downtrends
Counter resets when a sell signal fires
6. Underwater Protection
Tracks rolling average of recent entry prices (last 10 entries within 7 days)
Blocks sell signals if current price is below average entry price
Prevents locking in losses during drawdowns
7. Signal Cooldown
Minimum 5-bar cooldown between signals
Prevents rapid-fire signals during volatile swings
8. Extreme Move Detection
Detects when price penetrates beyond bands by more than 0.6 × ATR
Extreme signals can bypass normal cooldown period
Fire intra-bar for faster response to capitulation/blow-off moves
Still respects max consecutive buys and underwater protection
Visual Features
Trend State Detection
The indicator classifies market conditions into six states based on EMA stack, price position, and directional indicators:
STRONG UP: Full bullish alignment (EMA stack + price above trend + bullish DI + ADX > threshold)
UP: Moderate bullish conditions
NEUTRAL: No clear directional bias
DOWN: Moderate bearish conditions
STRONG DOWN: Full bearish alignment
CONTRACTED: Bands squeezed, volatility low
ADX Trend Bar
Colored dots at chart bottom provide instant trend state visibility:
Lime = Strong Uptrend
Blue = Uptrend
Orange = Neutral
Red = Downtrend
Maroon = Strong Downtrend
White = Contracted
Volume Spike Highlighting
Purple background highlights candles where volume exceeds 2x the 20-bar average, helping identify institutional activity or significant market events.
Signal Labels
Buy labels show consecutive buy count (e.g., "BUY 2/3"), price, and CMO value
Sell labels show consecutive sell count, price, and CMO value
Extreme signals display in distinct colors (cyan for buys, fuchsia for sells)
Signal candles turn bright blue for easy identification
Info Panel
Real-time dashboard displaying:
Current trend state
CMO value with threshold status
CMO thresholds (buy/sell levels)
ADX with directional indicator (▲/▼) and signal eligibility
BBWP percentage
Buy/Sell counters
Average entry price (with underwater shield indicator 🛡 when protected)
Price position relative to Money Line
Band width percentile rank
Extreme move status
Signals status (OPEN/BLOCKED)
Recommended Use
Timeframe: 5-15 minute charts (parameters tuned for this range)
Best suited for: Assets with regular oscillations between overbought/oversold extremes
Trading style: Mean reversion, momentum exhaustion, scaled entries
Parameters Summary
Money Line Length: 12 — Smoothing for center line
ATR Length: 10 — Volatility measurement
Band Multiplier (Low/High Vol): 1.5 / 2.5 — Dynamic band width
CMO Length: 9 — Momentum calculation period
CMO Buy/Sell Threshold: -80 / +80 — Signal trigger levels
ADX Min for Signals: 22 — Minimum trend strength
Signal Cooldown: 5 bars — Minimum bars between signals
Max Consecutive Buys: 3 — Position scaling limit
Band Contraction Threshold: 18th %ile — Low volatility filter
Band Contraction Lookback: 188 bars — Percentile calculation period
Extreme Penetration: 0.6 × ATR — Threshold for extreme signals
ICT Candle Reading PROICT Candle Reading – Visual Clean
This indicator is designed to provide a clean and precise price reading, based on ICT and Smart Money Concepts, without cluttering the chart.
Its purpose is to help traders identify real institutional zones, understand market intention, and improve entry timing, using pure price action.
🔹 What does this indicator show?
🟢 Fair Value Gaps (FVG / Imbalances)
Detects market inefficiencies created by impulsive moves.
Displayed as clean and minimal boxes extended into the future.
Useful as mitigation, reaction, or continuation zones.
🟠 Liquidity Sweeps
Highlights liquidity grabs above recent highs or below recent lows.
Drawn using dashed horizontal lines.
Helps identify market manipulation before the true move.
🔵 Displacement Candles
Identifies candles with dominant bodies, showing institutional momentum.
Marked with small symbols to keep the chart clean.
Useful to confirm impulse starts or shifts in market intent.
🎯 Indicator Philosophy
❌ No lagging indicators
❌ No chart clutter
✅ Real ICT concepts
✅ Clean candle reading
✅ Suitable for scalping, intraday, and swing trading
⚙️ Customization
Each concept can be enabled or disabled individually.
Zone extension length is adjustable.
Optimized for 15M, 1H, and 4H timeframes.
📈 How to use
This indicator does not provide automatic buy/sell signals.
It is best used with:
Higher timeframe bias
Market structure
Session timing (London / New York)
Proper risk management
🧠 Final Notes
ICT Candle Reading – Visual Clean helps you see the market from an institutional perspective, focusing only on what truly matters: price, liquidity, and intent.
Round Strike Price, Levels Options Series➤ Strike Price Range Mode:
➤ Exact Strike Price Mode:
⭐ Overview and How It Works
Round Strike Price or Levels is a precision-focused visual tool designed for options and index traders.
It dynamically plots round strike levels around the current price and presents them either as:
⠀ — Exact strike prices, or
⠀ — Strike price ranges, where each zone represents the midpoint between two adjacent strikes.
The indicator continuously recalculates the base strike using the current price and aligns all surrounding levels using a fixed step size.
All lines and labels are updated only on the last bar for optimal performance and stability.
This makes StrikePrice ideal for:
🔹 Identifying key option strikes.
🔹 Visualizing price acceptance zones.
🔹 Understanding strike-to-strike movement during intraday trading.
⭐ Key Features and Functionality
Strike Price Range:
⠀ — Treats each pair of strike lines as a price zone.
⠀ — Labels are plotted at the midpoint between two lines.
⠀ — Last label is intentionally hidden (no upper range exists)
Exact Strike Price:
⠀ — Labels are plotted directly on each strike line.
⠀ — Useful for precise strike-based analysis.
Dynamic Base Calculation:
⠀ — Automatically snaps price to the nearest round strike.
⠀ — Re-centers the entire grid as price moves.
⠀ — No manual adjustment required.
Efficient Object Management:
⠀ — Uses persistent arrays for lines and labels.
⠀ — Objects are reused instead of recreated.
⠀ — Prevents flickering and avoids TradingView object limits.
🎨 Visualizations and User Experience
Clean horizontal strike grid with configurable:
⠀ — Line width, Line color, Line style (Solid / Dashed / Dotted), Extension direction (Left / Right / Both / None).
Labels are:
⠀ — Positioned to the right of price, Size-adjustable, Fully customizable in text color and background color.
Designed to stay visually clear even on:
⠀ — Fast-moving intraday charts, Options-focused layouts, Multi-indicator setups.
Tip: Increase Right Bars Margin in chart settings to give labels proper spacing.
⭐ Settings and Customization
🔹 Strike Settings:
⠀ — Step (points): Distance between adjacent strike levels (e.g., 50, 100)
⠀ — Levels per side: Number of strike levels plotted above and below the base.
⠀ — Strike Mode: Strike Price Range, Exact Strike Price.
🔹 Line Settings:
⠀ — Line width, Line color, Line style (Solid / Dashed / Dotted), Line extension direction.
🔹 Label Settings:
⠀ — Show / hide labels, Label distance (bars to the right), Label size, Label text color, Label background color.
All label properties are updated dynamically, allowing real-time UI tuning without reloading the script.
⭐ Uniqueness of the Concept:
Unlike generic round-number indicators, StrikePrice:
⠀ — Understands option-style strike structure.
⠀ — Separates range-based thinking from exact price levels.
⠀ — Uses midpoint logic to visualize strike-to-strike movement.
⠀ — Maintains strict performance discipline by updating only when necessary.
This makes it especially useful for:
⠀ • NIFTY / BANKNIFTY options.
⠀ • Index and futures traders.
⠀ • Intraday strike rotation analysis.
⠀ • Premium decay and range-bound setups.
🚀 Conclusion:
StrikePrice is a focused, professional-grade indicator for traders who think in strikes, ranges, and levels rather than arbitrary prices.
It offers:
⠀ • Clear structure
⠀ • Accurate strike alignment
⠀ • Clean visuals
⠀ • Zero repainting logic
RCI4linesRCI4lines plots four Rank Correlation Index (RCI) lines in a single panel to help you read momentum and trend conditions at a glance.
It shows two short-term RCIs (default: 7 and 9), a middle-term RCI (26), and a long-term RCI (52).
The script also draws shaded threshold zones between +80 to +95 and -80 to -95, making it easier to spot potential overbought / oversold areas and compare short-term moves with the bigger trend.
Useful for scalping to day trading, and for checking whether short-term momentum is aligned with mid/long-term direction.
UK100 London Judas & IFVG SetupUK100 London Judas & IFVG Setup
Overview This indicator is a specialized trading tool designed to automate the ICT Judas Swing strategy specifically for the UK100 (FTSE 100) index during the London Market Open. It combines institutional time-based logic with price action confirmation using Inversion Fair Value Gaps (IFVG) to identify high-probability reversal setups.
How It Works The strategy is based on the concept that the initial move after the London Open is often a "fake-out" (manipulation) designed to trap retail traders and engineer liquidity before the true trend of the day begins.
Session & Opening Price:
The script marks the London Open price (default 09:00 Warsaw / 08:00 London time) with a dashed line.
This serves as the "line in the sand." Prices moving away from this line initially are monitored for manipulation.
Judas Swing (Liquidity Sweep):
If price moves BELOW the open, it is hunting Sell-Side Liquidity (trapping sellers).
If price moves ABOVE the open, it is hunting Buy-Side Liquidity (trapping buyers).
The Entry Trigger: Inversion FVG (IFVG):
The indicator scans for Fair Value Gaps (FVG) created during the manipulation phase.
BUY Signal: The price manipulates lower, creates a Bearish FVG (Red Box), but then aggressively reverses and closes ABOVE that gap. The gap is now "Inverted" (turns Green), acting as support.
SELL Signal: The price manipulates higher, creates a Bullish FVG (Green Box), but then aggressively reverses and closes BELOW that gap. The gap is now "Inverted" (turns Orange), acting as resistance.
Key Features
Automated Pattern Recognition: No need to manually draw gaps. The script detects valid FVG inversions that align with the Judas Swing logic.
Built-in Risk Calculator: The signal labels display the exact Lot Size you should use based on your account balance and risk percentage (default 0.5%). It calculates this dynamically based on the Stop Loss distance.
Institutional Targets: The indicator fetches H1 Fractals (Liquidity) from the 1-hour timeframe and plots them on your 1-minute chart as blue lines. These are your primary Take Profit (TP) levels.
Stop Loss Visualization: Automatically suggests a Stop Loss placement behind the swing high/low of the reversal structure.
How to Use
Timeframe: Set your chart to 1 Minute (1m).
Asset: UK100 (FTSE 100).
Wait: Allow the London session to open. Watch for price to move away from the opening line.
Execute: When a BUY or SELL label appears:
Enter the trade using the Lot Size shown on the label.
Set your Stop Loss at the price shown on the label.
Target the blue H1 Liquidity lines for profit taking.
Settings
Timezone: Set this to your chart/exchange timezone (Default: Europe/Warsaw).
Account Balance: Input your current trading capital (e.g., 100,000) for accurate risk calculations.
Risk Per Trade %: The percentage of your account you are willing to lose if the Stop Loss is hit (Standard: 0.5% - 1.0%).
Contract Size: The value of 1 point movement (Check your broker's specifications. Usually 1 for CFDs).
Alerts You can set a single alert in TradingView to capture all signals. Select the indicator and choose "Any alert() function call". You will receive a notification with the direction (Buy/Sell), Entry Price, and Lot Size.
MNQ Quant Oscillator Lab v2.1MNQ Quant Oscillator Lab v2.1 — Clean Namespaces
Adaptive LinReg Oscillator + Auto Regime Switching + MTF Confirmation + MOEP Gate + Research Harness
MNQ Quant Oscillator Lab is a research-grade oscillator framework designed for MNQ/NQ (and other liquid futures/indices) on 1-minute and intraday timeframes. It combines a linear-regression-based detrended oscillator with quant-style normalization, adaptive parameterization, regime switching, multi-timeframe confirmation, and an optional MOEP (Minimum Optimal Entry Point) gate. The goal is to provide a customizable signal laboratory that is stable in real time, non-repainting by default, and suitable for systematic experimentation.
What this indicator does
1) Core oscillator (quant-normalized)
The indicator computes a linear regression (LinReg) detrended signal and expresses it as a z-scored oscillator for portability across volatility regimes and assets. You can switch the oscillator “transform family” via Oscillator type:
LinReg Residual / Residual Z: detrended residual (mean-reversion sensitive)
LinReg Slope Z: regression slope (trend-derivative sensitive)
LogReturn Z: log-return oscillator (momentum-style)
VolNorm Return Z: volatility-normalized returns (risk-scaled)
This yields a single oscillator that is comparable over time, not tied to raw point values.
2) Adaptive length (dynamic calibration)
When enabled, the regression length is automatically adapted using a volatility-regime proxy (ATR% z-scored → logistic mapping). High volatility typically shortens the effective lookback; low volatility allows longer lookbacks. This helps the oscillator remain responsive during expansions while staying stable in compressions.
Important: the adaptive logic is implemented with safe warmup behavior, so it will not throw NaN errors on early bars.
3) Adaptive thresholds (dynamic bands)
Instead of static overbought/oversold levels, the indicator can compute dynamic upper/lower bands from the oscillator’s own distribution (rolling mean + sigma). This creates thresholds that adjust automatically to regime changes.
4) Auto regime switching (Trend vs Mean Reversion)
With Auto regime switch enabled, the indicator selects whether to behave as a Trend system or a Mean Reversion system using an interpretable heuristic:
Trend regime when EMA-spread is strong relative to ATR and ATR is rising
Otherwise defaults to Mean Reversion
This prevents running mean-reversion logic in trend breakouts and reduces “mode mismatch.”
5) Multi-timeframe (MTF) confirmation (optional)
MTF confirmation can be enabled to require that the higher timeframe oscillator sign aligns with the direction of the signal. This is useful for reducing noise on MNQ 1m by requiring higher-timeframe structure agreement (e.g., 5m or 15m).
6) MOEP Gate (optional “institutional” filter)
The MOEP gate is a confluence score filter intended to reduce low-quality signals. It aggregates multiple components into a 0–100 score:
BB/KC squeeze condition
Expansion proxy
Trend proxy
Momentum proxy (RSI-based)
Volume catalyst (volume z-score)
Structure break (highest/lowest break)
You can set:
Score threshold (minimum score required)
Minimum components required (forces diversity of evidence)
When enabled, a signal must satisfy both oscillator logic and MOEP confluence conditions.
7) Research harness (NON-CAUSAL, OFF by default)
A built-in research mode evaluates signals using future bars to compute basic forward excursion statistics:
MFE (max favorable excursion)
MAE (max adverse excursion)
Simple win-rate proxy based on MFE vs MAE
This feature is strictly for offline analysis and tuning. It is disabled by default and should not be considered “live-safe” because it uses future information for evaluation.
Signals and interpretation
Mean Reversion regime
Long: oscillator is below the lower band and turns back upward across it
Short: oscillator is above the upper band and turns back downward across it
Trend regime
Long: oscillator crosses above zero (optionally requires structure break confirmation)
Short: oscillator crosses below zero (optionally requires structure break confirmation)
Hybrid
When Hybrid is selected (manual mode), the indicator allows both trend and mean-reversion triggers, but still respects the filters and gates you enable.
Recommended starting configuration (MNQ 1m)
If you want stable, high-quality signals first, then expand into research:
Use RTH only: ON
Auto regime switch: ON
Adaptive length: ON
Adaptive bands: ON
MTF confirmation: OFF initially (turn ON later with 5m)
MOEP Gate: OFF initially (turn ON after you confirm base behavior)
Research harness: OFF (only enable for tuning studies)
Practical notes / transparency
The indicator is designed to be stable on live bars (optional confirmed-bar behavior reduces flicker).
No repainting logic is used for signals.
Any “performance” numbers shown under Research harness are not tradable metrics; they are forward-looking evaluation outputs intended strictly for experimentation.
Disclaimer
This script is provided for educational and research purposes only and does not constitute financial advice. Futures trading involves substantial risk, including the possibility of loss exceeding initial investment.
TRV & nTRV - Trimmed Range VolatilityGrid bots require stable volatility measurement - ATR becomes misleading when gaps and sudden spikes distort the average. TRV (Trimmed Range Volatility) is an advanced version of ATR: it filters outliers at the extremes (highest and lowest ranges) and remains unaffected by gaps. This provides real-time, accurate volatility measurement for grid bot setup.Grid bots require stable volatility measurement - ATR becomes misleading when gaps and sudden spikes distort the average. TRV (Trimmed Range Volatility) is an advanced version of ATR: it filters outliers at the extremes (highest and lowest ranges) and remains unaffected by gaps. This provides real-time, accurate volatility measurement for grid bot setup.
Why We Developed TRV?
When a gap or sudden spike occurs in the morning, this extreme movement affects standard ATR calculations for an extended period. Even if the price moves sideways for the rest of the day, ATR remains elevated. This causes grid bots to operate with unnecessarily wide spacing and execute fewer trades.
TRV Advantages:
✅ Unaffected by Gaps: Opening gaps don't distort the calculation
✅ Extreme Point Elimination: Filters the largest and smallest outlier candles
✅ Real-Time Accuracy: Shows current market volatility
✅ Grid Bot Optimization: Enables tighter and more efficient grid spacing
✅ Comparison Capability: Compare different stocks and timeframes with nTRV
Grid Bot Usage:
The TRV value is used directly to calculate the number of grid lines:
(Resistance - Support) / TRV = Number of Grid Lines
Example:
Resistance: $110
Support: $90
TRV: $2
Grid Count: (110-90)/2 = 10 grid lines
Features:
Two Filtering Modes: Manual (enter number) or Percentage-Based (automatic ratio)
Four Indicators in One: nTRV, TRV, ATR, and nATR all displayed on the same panel
nTRV: Normalized value (percentage-based, for stock comparison)
TRV: Absolute value (currency-based, for grid calculation)
ATR & nATR Included: Standard ATR and nATR for direct comparison with TRV
Comprehensive Analysis: Compare filtered (TRV) vs unfiltered (ATR) volatility side-by-side
Default: 10% top, 10% bottom outlier elimination
Conclusion:
TRV is an advanced version of ATR specifically designed for grid bot traders. By filtering outlier movements, it provides more stable and reliable volatility measurement. The indicator includes both TRV (filtered) and ATR (unfiltered) on the same chart, giving traders a comprehensive view to make informed decisions. This dual-display approach enables more efficient grid strategies and increased trading frequency.
Weekend Asia High/Low Dots + Trading Window (UTC+1)**Weekend Asia High/Low Dots & Trading Window** is a lightweight TradingView indicator designed to **mark the exact Asia session extremes on weekends (Saturday & Sunday)** and highlight predefined **trading time windows** with maximum clarity and minimal chart clutter.
The indicator focuses on **precision, simplicity, and manual trading workflows**.
---
### 🔍 Key Features
#### 🟢 Asia Session High & Low (Weekend Only)
* Tracks the **Asia session on Saturday and Sunday**
* Marks **exactly two points per session**:
* One dot at the **true wick high**
* One dot at the **true wick low**
* Dots are plotted **only once**, at the **end of the Asia session**
* **No lines, no boxes, no extensions** – just clean reference points
* Ideal for traders who prefer to **draw their own ranges manually**
#### 🟩 Trading Window Highlight
* Customizable **trading time windows** for Saturday and Sunday
* Displayed as a **clean outline box** (no background fill)
* Helps visually separate **range formation** from **active trading hours**
---
### ⏰ Time Handling
* All session times are defined in **UTC+1**
* Uses a **fixed UTC+1 timezone** (`Etc/GMT-1`) for consistent behavior
* Easily adjustable to other timezones if needed
---
### ⚙️ Customizable Inputs
* Asia session times (Saturday & Sunday)
* Trading session times (Saturday & Sunday)
* Optional trading window labels
* Easy point size adjustment directly in the code
---
### 🎯 Use Cases
* Weekend trading (Crypto, Indices, Synthetic markets)
* Asia range analysis
* Manual range drawing & breakout planning
* Clean, distraction-free chart layouts
---
### 🧠 Who Is This Indicator For?
* Price action traders
* Range & session-based traders
* Traders who prefer **manual chart markup**
* Anyone trading **weekends with structured time windows**
---
### 🛠 Technical Details
* Pine Script® **Version 6**
* Overlay indicator
* Optimized for clarity and performance
---
If you want, I can also provide:
* a **short description** (1–2 lines for the TradingView header)
* **tags & keywords** for better discoverability
* or a **version with user-adjustable dot size via Inputs**
Quantum Darvas BoxesQuantum Darvas Boxes - The Modern Evolution
The original Darvas Box methodology, conceived by Nicolas Darvas in the 1950s, revolutionized breakout trading by identifying consolidation phases as "boxes." However, modern markets move with algorithmic speed and fractal volatility that often trigger false breakouts. Quantum Darvas Boxes were designed not as a nostalgic tribute, but as a computational upgrade. By anchoring boxes to volatility-adjusted boundaries rather than raw highs/lows, and introducing adaptive stability mechanisms, this indicator transforms a classic discretionary tool into a systematic, noise-filtered engine.
Description & Improvements
Quantum Darvas Boxes solve the three fatal flaws of the original: false breakouts, arbitrary box sizing, and lack of confirmation. Instead of drawing boxes at exact recent highs/lows, it creates volatility-buffered boundaries using ATR, ensuring breakouts require meaningful momentum. The boxes remain anchored until a confirmed close beyond the buffer occurs, preventing the constant redrawing that plagued traditional Darvas implementations. Built-in volume and RSI filters add discretionary-grade confirmation to pure price action. Visually, the system presents as a stable, semi-transparent blue zone between red (resistance) and lime (support) lines, with clear triangle signals appearing only on validated breakouts.
How It's Based on Darvas
The core philosophy remains true to Darvas' 1950s methodology:
Identify Consolidation: Finds price ranges where the market consolidates
Draw Box: Creates a "box" representing the accumulation zone
Breakout Trading: Enters when price breaks out of the box with momentum
Volatility-Adjusted Boundaries
Original: Boxes at exact highs/lows → prone to false breakouts
QDB: Boxes set at High - (ATR × Multiplier) and Low + (ATR × Multiplier)
→ Breakouts require meaningful momentum, not just price tags
→ Adapts to different volatility regimes
Signal Logic:
Long: Close above box top, previous close was inside box
Short: Close below box bottom, previous close was inside box
Ideal Settings:
For daily charts, use lookback=13 and mult=2.4.
For intraday (1H-4H), reduce to lookback=8 and mult=1.8. Enable volume filter in trending markets and RSI filter in ranging conditions.
Trade Execution: Enter long on the green triangle below the bar following a close above the red top line; enter short on the red triangle above the bar after a close below the lime bottom line. The background glow provides immediate visual confirmation.
Risk Management: Set stops at the opposite box boundary. The volatility multiplier inherently calculates a risk buffer—larger multipliers create wider, higher-conviction boxes; smaller multipliers produce more frequent, sensitive signals. This system excels in trending markets and provides clear exit/reversal points, transforming Darvas's original speculation into a quantified, repeatable edge.
Pro trade by Amit// This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0) creativecommons.org
//@version=5
import HeWhoMustNotBeNamed/utils/1 as ut
import Trendoscope/ohlc/1 as o
import Trendoscope/LineWrapper/1 as wr
import Trendoscope/ZigzagLite/2 as zg
import Trendoscope/abstractchartpatterns/5 as p
import Trendoscope/basechartpatterns/6 as bp
indicator("Installing Wait....", "Automatic Chart Pattern", overlay = true, max_lines_count=500, max_labels_count=500, max_polylines_count = 100)
openSource = input.source(open, '', inline='cs', group='Source', display = display.none)
highSource = input.source(high, '', inline='cs', group='Source', display = display.none)
lowSource = input.source(low, '', inline='cs', group='Source', display = display.none)
closeSource = input.source(close, '', inline='cs', group='Source', display = display.none, tooltip = 'Source on which the zigzag and pattern calculation is done')
useZigzag1 = input.bool(true, '', group = 'Zigzag', inline='z1', display = display.none)
zigzagLength1 = input.int(8, step=5, minval=1, title='', group='Zigzag', inline='z1', display=display.none)
depth1 = input.int(55, "", step=25, maxval=500, group='Zigzag', inline='z1', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 1')
useZigzag2 = input.bool(false, '', group = 'Zigzag', inline='z2', display = display.none)
zigzagLength2 = input.int(13, step=5, minval=1, title='', group='Zigzag', inline='z2', display=display.none)
depth2 = input.int(34, "", step=25, maxval=500, group='Zigzag', inline='z2', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 2')
useZigzag3 = input.bool(false, '', group = 'Zigzag', inline='z3', display = display.none)
zigzagLength3 = input.int(21, step=5, minval=1, title='', group='Zigzag', inline='z3', display=display.none)
depth3 = input.int(21, "", step=25, maxval=500, group='Zigzag', inline='z3', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 3')
useZigzag4 = input.bool(false, '', group = 'Zigzag', inline='z4', display = display.none)
zigzagLength4 = input.int(34, step=5, minval=1, title='', group='Zigzag', inline='z4', display=display.none)
depth4 = input.int(13, "", step=25, maxval=500, group='Zigzag', inline='z4', display=display.none, tooltip = 'Enable and set Length and Dept of Zigzag 4')
numberOfPivots = input.int(5, "Number of Pivots", , 'Number of pivots used for pattern identification.', group='Scanning', display = display.none)
errorThresold = input.float(20.0, 'Error Threshold', 0.0, 100, 5, 'Error Threshold for trend line validation', group='Scanning', display = display.none)
flatThreshold = input.float(20.0, 'Flat Threshold', 0.0, 30, 5, 'Ratio threshold to identify the slope of trend lines', group='Scanning', display = display.none)
lastPivotDirection = input.string('both', 'Last Pivot Direction', , 'Filter pattern based on the last pivot direction. '+
'This option is useful while backtesting individual patterns. When custom is selected, then the individual pattern last pivot direction setting is used',
group='Scanning', display=display.none)
checkBarRatio = input.bool(true, 'Verify Bar Ratio ', 'Along with checking the price, also verify if the bars are proportionately placed.', group='Scanning', inline = 'br', display = display.none)
barRatioLimit = input.float(0.382, '', group='Scanning', display = display.none, inline='br')
avoidOverlap = input.bool(true, 'Avoid Overlap', group='Scanning', inline='a', display = display.none)
repaint = input.bool(false, 'Repaint', 'Avoid Overlap - Will not consider the pattern if it starts before the end of an existing pattern '+
'Repaint - Uses real time bars to search for patterns. If unselected, then only use confirmed bars.',
group='Scanning', inline='a', display = display.none)
allowChannels = input.bool(true, 'Channels', group='Pattern Groups - Geometric Shapes', display = display.none, inline='g')
allowWedges = input.bool(true, 'Wedge', group='Pattern Groups - Geometric Shapes', display = display.none, inline='g')
allowTriangles = input.bool(true, 'Triangle', group='Pattern Groups - Geometric Shapes', display = display.none, inline='g',
tooltip = 'Channels - Trend Lines are parralel to each other creating equidistance price channels'+
' \t- Ascending Channel \t- Descending Channel \t- Ranging Channel'+
' Wedges - Trend lines are either converging or diverging from each other and both the trend lines are moving in the same direction'+
' \t- Rising Wedge (Expanding) \t- Rising Wedge (Contracting) \t- Falling Wedge (Expanding) \t- Falling Wedge (Contracting)'+
' Triangles - Trend lines are either converging or diverging from each other and both trend lines are moving in different directions'+
' \t- Converging Triangle \t- Diverging Triangle \t- Ascending Triangle (Contracting) \t- Ascending Triangle (Expanding) \t- Descending Triangle(Contracting) \t- Descending Triangle(Expanding)')
allowRisingPatterns = input.bool(true, 'Rising', group='Pattern Groups - Direction', display = display.none, inline = 'd')
allowFallingPatterns = input.bool(true, 'Falling', group='Pattern Groups - Direction', display = display.none, inline = 'd')
allowNonDirectionalPatterns = input.bool(true, 'Flat/Bi-Directional', group='Pattern Groups - Direction', display = display.none, inline = 'd',
tooltip = 'Rising - Either both trend lines are moving up or one trend line is flat and the other one is moving up.'+
' \t- Ascending Channel \t- Rising Wedge (Expanding) \t- Rising Wedge (Contracting) \t- Ascending Triangle (Expanding) \t- Ascending Triangle (Contracting)'+
' Falling - Either both trend lines are moving down or one trend line is flat and the other one is moving down.'+
' \t- Descending Channel \t- Falling Wedge (Expanding) \t- Falling Wedge (Contracting) \t- Descending Triangle (Expanding) \t- Descending Triangle (Contracting)'+
' Flat/Bi-Directional - Trend Lines move in different directions or both flat.'+
' \t- Ranging Channel \t- Converging Triangle \t- Diverging Triangle')
allowExpandingPatterns = input.bool(true, 'Expanding', group='Pattern Groups - Formation Dynamics', display = display.none, inline = 'f')
allowContractingPatterns = input.bool(true, 'Contracting', group='Pattern Groups - Formation Dynamics', display = display.none, inline='f')
allowParallelChannels = input.bool(true, 'Parallel', group = 'Pattern Groups - Formation Dynamics', display = display.none, inline = 'f',
tooltip = 'Expanding - Trend Lines are diverging from each other.'+
' \t- Rising Wedge (Expanding) \t- Falling Wedge (Expanding) \t- Ascending Triangle (Expanding) \t- Descending Triangle (Expanding) \t- Diverging Triangle'+
' Contracting - Trend Lines are converging towards each other.'+
' \t- Rising Wedge (Contracting) \t- Falling Wedge (Contracting) \t- Ascending Triangle (Contracting) \t- Descending Triangle (Contracting) \t- Converging Triangle'+
' Parallel - Trend Lines are almost parallel to each other.'+
' \t- Ascending Channel \t- Descending Channel \t- Ranging Channel')
allowUptrendChannel = input.bool(true, 'Ascending ', group = 'Price Channels', inline='uc', display = display.none)
upTrendChannelLastPivotDirection = input.string('both', '', , inline='uc', group='Price Channels', display = display.none,
tooltip='Enable Ascending Channel and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowDowntrendChannel = input.bool(true, 'Descending', group = 'Price Channels', inline='dc', display = display.none)
downTrendChannelLastPivotDirection = input.string('both', '', , inline='dc', group='Price Channels', display = display.none,
tooltip='Enable Descending Channel and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRangingChannel = input.bool(true, 'Ranging ', group = 'Price Channels', inline='rc', display = display.none)
rangingChannelLastPivotDirection = input.string('both', '', , inline='rc', group='Price Channels', display = display.none,
tooltip='Enable Ranging Channel and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingWedgeExpanding = input.bool(true, 'Rising ', inline='rwe', group = 'Expanding Wedges', display = display.none)
risingWedgeExpandingLastPivotDirection = input.string('down', '', , inline='rwe', group='Expanding Wedges', display = display.none,
tooltip='Enable Rising Wedge (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingWedgeExpanding = input.bool(true, 'Falling ', inline='fwe', group = 'Expanding Wedges', display = display.none)
fallingWedgeExpandingLastPivotDirection = input.string('up', '', , inline='fwe', group='Expanding Wedges', display = display.none,
tooltip='Enable Falling Wedge (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingWedgeContracting = input.bool(true, 'Rising ', inline='rwc', group = 'Contracting Wedges', display = display.none)
risingWedgeContractingLastPivotDirection = input.string('down', '', , inline='rwc', group='Contracting Wedges', display = display.none,
tooltip='Enable Rising Wedge (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingWedgeContracting = input.bool(true, 'Falling ', inline='fwc', group = 'Contracting Wedges', display = display.none)
fallingWedgeContractingLastPivotDirection = input.string('up', '', , inline='fwc', group='Contracting Wedges', display = display.none,
tooltip='Enable Falling Wedge (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingTriangleExpanding = input.bool(true, 'Ascending ', inline='rte', group = 'Expanding Triangles', display = display.none)
risingTriangleExpandingLastPivotDirection = input.string('up', '', , inline='rte', group='Expanding Triangles', display = display.none,
tooltip='Enable Ascending Triangle (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingTriangleExpanding = input.bool(true, 'Descending', inline='fte', group = 'Expanding Triangles', display = display.none)
fallingTriangleExpandingLastPivotDirection = input.string('down', '', , inline='fte', group='Expanding Triangles', display = display.none,
tooltip='Enable Descending Triangle (Expanding) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowExpandingTriangle = input.bool(true, 'Diverging ', inline='dt', group = 'Expanding Triangles', display = display.none)
divergineTriangleLastPivotDirection = input.string('both', '', , inline='dt', group='Expanding Triangles', display = display.none,
tooltip='Enable Diverging Triangle and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowRisingTriangleConverging= input.bool(true, 'Ascending ', inline='rtc', group = 'Contracting Triangles', display = display.none)
risingTriangleContractingLastPivotDirection = input.string('up', '', , inline='rtc', group='Contracting Triangles', display = display.none,
tooltip='Enable Ascending Triangle (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowFallingTriangleConverging = input.bool(true, 'Descending', inline='ftc', group = 'Contracting Triangles', display = display.none)
fallingTriangleContractingLastPivotDirection = input.string('down', '', , inline='ftc', group='Contracting Triangles', display = display.none,
tooltip='Enable Descending Triangle (Contracting) and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowConvergingTriangle = input.bool(true, 'Converging ', inline='ct', group = 'Contracting Triangles', display = display.none)
convergingTriangleLastPivotDirection = input.string('both', '', , inline='ct', group='Contracting Triangles', display = display.none,
tooltip='Enable Converging Triangle and select the last pivot direction filter. Last pivot direction will only be used if the Generic Last Pivot Direction parameter is set to Custom')
allowedPatterns = array.from(
false,
allowUptrendChannel and allowRisingPatterns and allowParallelChannels and allowChannels,
allowDowntrendChannel and allowFallingPatterns and allowParallelChannels and allowChannels,
allowRangingChannel and allowNonDirectionalPatterns and allowParallelChannels and allowChannels,
allowRisingWedgeExpanding and allowRisingPatterns and allowExpandingPatterns and allowWedges,
allowFallingWedgeExpanding and allowFallingPatterns and allowExpandingPatterns and allowWedges,
allowExpandingTriangle and allowNonDirectionalPatterns and allowExpandingPatterns and allowTriangles,
allowRisingTriangleExpanding and allowRisingPatterns and allowExpandingPatterns and allowTriangles,
allowFallingTriangleExpanding and allowFallingPatterns and allowExpandingPatterns and allowTriangles,
allowRisingWedgeContracting and allowRisingPatterns and allowContractingPatterns and allowWedges,
allowFallingWedgeContracting and allowFallingPatterns and allowContractingPatterns and allowWedges,
allowConvergingTriangle and allowNonDirectionalPatterns and allowContractingPatterns and allowTriangles,
allowFallingTriangleConverging and allowFallingPatterns and allowContractingPatterns and allowTriangles,
allowRisingTriangleConverging and allowRisingPatterns and allowContractingPatterns and allowTriangles
)
getLastPivotDirectionInt(lastPivotDirection)=>lastPivotDirection == 'up'? 1 : lastPivotDirection == 'down'? -1 : 0
allowedLastPivotDirections = array.from(
0,
lastPivotDirection == 'custom'? getLastPivotDirectionInt(upTrendChannelLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(downTrendChannelLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(rangingChannelLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingWedgeExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingWedgeExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(divergineTriangleLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingTriangleExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingTriangleExpandingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingWedgeContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingWedgeContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(convergingTriangleLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(fallingTriangleContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection),
lastPivotDirection == 'custom'? getLastPivotDirectionInt(risingTriangleContractingLastPivotDirection) : getLastPivotDirectionInt(lastPivotDirection)
)
theme = input.string('Dark', title='Theme', options= , group='Display', inline='pc',
tooltip='Chart theme settings. Line and label colors are generted based on the theme settings. If dark theme is selected, '+
'lighter colors are used and if light theme is selected, darker colors are used. '+
'Pattern Line width - to be used for drawing pattern lines', display=display.none)
patternLineWidth = input.int(2, '', minval=1, inline='pc', group = 'Display', display = display.none)
showPatternLabel = input.bool(true, 'Pattern Label', inline='pl1', group = 'Display', display = display.none)
patternLabelSize = input.string(size.normal, '', , inline='pl1', group = 'Display', display = display.none,
tooltip = 'Option to display Pattern Label and select the size')
showPivotLabels = input.bool(true, 'Pivot Labels ', inline='pl2', group = 'Display', display = display.none, tooltip = 'Option to display pivot labels and select the size')
pivotLabelSize = input.string(size.normal, '', , inline='pl2', group = 'Display', display = display.none)
showZigzag = input.bool(true, 'Zigzag', inline='z', group = 'Display', display = display.none)
zigzagColor = input.color(color.blue, '', inline='z', group = 'Display', display = display.none, tooltip = 'Option to display zigzag within pattern and the default zigzag line color')
deleteOldPatterns = input.bool(true, 'Max Patterns', inline='do', group = 'Display', display = display.none)
maxPatterns = input.int(20, '', minval=1, step=5, inline = 'do', group = 'Display', display = display.none, tooltip = 'If selected, only last N patterns will be preserved on the chart.')
errorRatio = errorThresold/100
flatRatio = flatThreshold/100
showLabel = true
offset = 0
type Scanner
bool enabled
string ticker
string timeframe
p.ScanProperties sProperties
p.DrawingProperties dProperties
array patterns
array zigzags
method getZigzagAndPattern(Scanner this, int length, int depth, array ohlcArray, int offset=0)=>
var zg.Zigzag zigzag = zg.Zigzag.new(length, depth, 0)
var map lastDBar = map.new()
zigzag.calculate(array.from(highSource, lowSource))
var validPatterns = 0
mlzigzag = zigzag
if(zigzag.flags.newPivot)
while(mlzigzag.zigzagPivots.size() >= 6+offset)
lastBar = mlzigzag.zigzagPivots.first().point.index
lastDir = int(math.sign(mlzigzag.zigzagPivots.first().dir))
if(lastDBar.contains(mlzigzag.level)? lastDBar.get(mlzigzag.level) < lastBar : true)
lastDBar.put(mlzigzag.level, lastBar)
= mlzigzag.find(this.sProperties, this.dProperties, this.patterns, ohlcArray)
if(valid)
validPatterns+=1
currentPattern.draw()
this.patterns.push(currentPattern, maxPatterns)
alert('New Pattern Alert')
else
break
mlzigzag := mlzigzag.nextlevel()
true
method scan(Scanner this)=>
var array ohlcArray = array.new()
var array patterns = array.new()
ohlcArray.push(o.OHLC.new(openSource, highSource, lowSource, closeSource))
if(useZigzag1)
this.getZigzagAndPattern(zigzagLength1, depth1, ohlcArray)
if(useZigzag2)
this.getZigzagAndPattern(zigzagLength2, depth2, ohlcArray)
if(useZigzag3)
this.getZigzagAndPattern(zigzagLength3, depth3, ohlcArray)
if(useZigzag4)
this.getZigzagAndPattern(zigzagLength4, depth4, ohlcArray)
var scanner = Scanner.new(true, "", "",
p.ScanProperties.new(offset, numberOfPivots, errorRatio, flatRatio, checkBarRatio, barRatioLimit, avoidOverlap, allowedPatterns=allowedPatterns, allowedLastPivotDirections= allowedLastPivotDirections, themeColors = ut.getColors(theme)),
p.DrawingProperties.new(patternLineWidth, showZigzag, 1, zigzagColor, showPatternLabel, patternLabelSize, showPivotLabels, pivotLabelSize, deleteOnPop = deleteOldPatterns),
array.new())
if(barstate.isconfirmed or repaint)
scanner.scan()
Resampling Reverse Engineering Bands XRREB X: Visual Oscillator Projection Bands
Based on the innovative "Resampling Reverse Engineering" concept pioneered by Donovan Wall, this enhanced script fixes the core mathematical symmetry and provides anchored, non-repainting bands for reliable analysis.
This indicator transforms any RSI, Stochastic, or CCI calculation directly onto your price chart as dynamic support/resistance bands. Instead of watching an oscillator below your chart, you see its overbought/oversold levels projected as price levels the market must reach.
RREB X reverses standard oscillator formulas to answer one question: "What price must the market reach for my chosen oscillator to hit an extreme level like RSI=70, Stoch=80, or CCI=100?" It then plots these levels as actionable bands.
Key Improvements
Adjustable Oscillator Values - While the original was hard coded the reverse engineered oscillator length which limited its usefulness, this script finally allows you to visualize any length oscillator as dynamic OB/OS regions directly on the chart.
Dynamic OB/OS levels: This version also lets you dynamically adjust the OB/OS levels location, making bands tighter or wider as your strategy demands.
Mathematical Symmetry: Outer bands are perfect mirrors, providing reliable projected levels.
Fixed Anchoring: Bands don't repaint historically, offering stable reference lines.
Direct Price Translation: Oscillator overbought/oversold conditions are visualized as clear price levels.
The Band Calculation Type switch lets you project different oscillator logics, each with unique characteristics for different market conditions.
RRSI - General trend & momentum. Change RSI Period (e.g., 7 for fast, 21 for slow). Adjust OB/OS (e.g., 80/20 for strong trends). The bands show the price needed to push your custom RSI into overbought/oversold territory.
RStoch - Ranging markets & short-term reversals. Focus on the Stochastic Period. The projected bands are highly sensitive to recent highs/lows. Excellent for spotting reversals at the edges of a range.
RCCI - Strong trends & volatile markets. Use a higher Outer Bands Multiplier. CCI's lack of upper/lower bounds means bands reflect extreme momentum shifts. Great for identifying explosive breakout or breakdown levels in trends.
Use Middle Band as Filter: Price above the white middle band suggests a bullish bias for long setups; below suggests bearish for shorts. Same as the 50 midline on the RSI or Stochastic or 0 for CCI.
Customizing the Calculation:
The power lies in changing the oscillator lengths that the bands reflect. Adjust these in the settings:
Change from 14 to 7 for faster, more reactive bands, or to 21 for slower, smoother bands.
Overbought/Oversold: Change from 70/30 to 80/20 for stronger-trend filters, or to 60/40 for more frequent signals.
Trading the Bands:
Bands as Dynamic S/R: The solid cyan (Upper 100) and magenta (Lower 0) bands act as dynamic support and resistance. A touch and reversal can signal a trade.
Gradient as Momentum: The colored fills between bands visually represent the "pressure" needed to reach the next oscillator level.
Middle Band as Trend Filter: Price above the white middle band suggests a bullish bias for long setups; below suggests bearish for short setups.
Supply and Demand Zones [BigBeluga]🔵 OVERVIEW
The Supply and Demand Zones indicator automatically identifies institutional order zones formed by high-volume price movements. It detects aggressive buying or selling events and marks the origin of these moves as demand or supply zones. Untested zones are plotted with thick solid borders, while tested zones become dashed, signaling reduced strength.
🔵 CONCEPTS
Supply Zones: Identified when 3 or more bearish candles form consecutively with above-average volume. The script then searches up to 5 bars back to find the last bullish candle and plots a supply zone from that candle’s low to its low plus ATR.
Demand Zones: Detected when 3 or more bullish candles appear with above-average volume. The script looks up to 5 bars back for a bearish candle and plots a demand zone from its high to its high minus ATR.
Volume Weighting: Each zone displays the cumulative bullish or bearish volume within the move leading to the zone.
Tested Zones: If price re-enters a zone and touches its boundary after being extended for 15 bars, the zone becomes dashed , indicating a potential weakening of that level.
Overlap Logic: Older overlapping zones are removed automatically to keep the chart clean and only show the most relevant supply/demand levels.
Zone Expiry: Zones are also deleted after they’re fully broken by price (i.e., price closes above supply or below demand).
🔵 FEATURES
Auto-detects supply and demand using volume and candle structure.
Extends valid zones to the right side of the chart.
Solid borders for fresh untested zones.
Dashed borders for tested zones (after 15 bars and contact).
Prevents overlapping zones of the same type.
Labels each zone with volume delta collected during zone formation.
Limits to 5 zones of each type for clarity.
Fully customizable supply and demand zone colors.
🔵 HOW TO USE
Use supply zones as potential resistance levels where sell-side pressure could emerge.
Use demand zones as potential support areas where buyers might step in again.
Pay attention to whether a zone is solid (untested) or dashed (tested).
Combine with other confluences like volume spikes, trend direction, or candlestick patterns.
Ideal for swing traders and scalpers identifying key reaction levels.
🔵 CONCLUSION
Supply and Demand Zones is a clean and logic-driven tool that visualizes critical liquidity zones formed by institutional moves. It tracks untested and tested levels, giving traders a visual edge to recognize where price might bounce or reverse due to historical order flow.
Momentum Burst Pullback System v66 * Detects **momentum “bursts”** using:
* **Keltner breakout** (high above upper band for long, low below lower band for short), and/or
* **MACD histogram extreme** (highest/lowest in a lookback window, with correct sign).
* Optional **burst-zone extension** keeps the burst “active” for N extra bars after the burst.
* Marks bursts with **K** (Keltner) and **M** (MACD) labels:
* Core burst labels use one color, extension labels use a different color.
* Tracks the most recent burst as the **dominant side** (long or short), and stores burst “leg” anchors (high/low context).
* Adds **structure-based invalidation**:
* On a new **core burst**, it locks the most recent **confirmed swing** level (pivot):
* Long: locks the last confirmed **swing low**.
* Short: locks the last confirmed **swing high**.
* After the burst, if price **breaks that locked level**, the burst regime is **cancelled** (and any pending setup on that side is dropped).
* Finds **pullback setups** after a dominant burst (and not inside the active burst zone), within min/max bars:
* Long pullback requires a sequence of **lower highs** and price still below the burst high.
* Short pullback requires **higher lows** and price still above the burst low.
* Optional background shading highlights pullback bars.
* On pullback bars, plots **static TP/SL crosses** using ATR:
* Anchor is the pullback bar’s high (long) or low (short).
* TP/SL are ± ATR * multiple.
* TP plots are visually classified (bright vs faded) based on whether TP would exceed the prior burst extreme.
* Maintains a **state-machine entry + trailing stop**:
* Sets a “waiting” trigger on pullback.
* Enters when price breaks the trigger (high break for long, low break for short).
* Trails a stop using **R-multiples**, with different behavior pre-break-even, post-break-even, and near-TP.
* Optionally draws the trailing stop as horizontal line segments.
* Optionally shows a **last-bar label** with the most recent pullback’s TP and SL values.
Bollinger Bands Forecast with Signals (Zeiierman)█ Overview
Bollinger Bands Forecast with Signals (Zeiierman) extends classic Bollinger Bands into a forward-looking framework. Instead of only showing where volatility has been, it projects where the basis (midline) and band width are likely to drift next, based on recent trend and volatility behavior.
The projection is built from the measured slopes of the Bollinger basis, the standard deviation (or ATR, depending on the mode), and a volatility “breathing” component. On top of that, the script includes an optional projected price path that can be blended with a deterministic random walk, plus rejection signals to highlight failed band breaks.
█ How It Works
⚪ Bollinger Core
The script first computes standard Bollinger Bands using the selected Source, Length, and Multiplier:
Basis = SMA(Source, Length)
Band width = Multiplier × StDev(Source, Length)
Upper/Lower = Basis ± Width
This remains the “live” (non-forecast) structure on the chart.
⚪ Trend & Volatility Slope Estimation
To project forward, the indicator measures directional drift and volatility drift using linear regression differences:
Basis slope from the Bollinger basis
StDev slope from the Bollinger deviation
ATR slope for ATR-based projection mode
These slopes drive the forecast bands forward, reflecting the market’s recent directional and volatility regime.
⚪ Projection Engine (Forecast Bands)
At the last bar, the indicator draws projected basis, upper, and lower lines out to Forecast Bars. The projected basis can be:
Trend (straight linear projection)
Curved (ease-in/out transition toward projected endpoints)
Smoothed (extra smoothing on projected basis/width)
⚪ Price Path Projection + Optional Random Walk
In addition to projecting the bands, the script can draw a price forecast path made of a small number of zigzag swings.
Each swing targets a point offset from the projected basis by a multiple of the projected half-width (“width units”).
Decay gradually reduces swing size as the forecast deepens.
The Optional Random Walk Blend adds a deterministic drift component to the zigzag path. It’s not true randomness; it’s a stable pseudo-random sequence, so the drawing doesn’t jump around on refresh, while still adding “natural” variation.
⚪ Rejection Signals
Signals are based on failed attempts to break a band:
Bear Signal (Down): price tries to push above the upper band, then falls back inside, while still closing above the basis.
Bull Signal (Up): price tries to push below the lower band, then returns back inside, while still closing below the basis.
█ How to Use
⚪ Forward Support/Resistance Corridors
Treat the projected upper/lower bands as a future volatility envelope, not a guarantee:
The upper projection ≈ is likely a resistance level if the regime persists
The lower projection ≈ is likely a support level if the regime persists
Best used for trade planning, targets, and “where price could travel” under similar conditions.
⚪ Regime Read: Trend + Volatility
The projection shape is informative:
Rising basis + expanding width → trend with increasing volatility (needs wider stops / more caution)
Flat basis + compressing width → contraction regime (often precedes expansion)
⚪ Signals for Mean-Reversion / Failed Breakouts
The rejection markers are useful for fade-style setups:
A Down signal near/after upper-band failure can imply rotation back toward the basis.
An Up signal near/after lower-band failure can imply snap-back toward the basis.
With MA filtering enabled, signals are constrained to align with the broader bias, helping reduce chop-driven noise.
█ Related Publications
Donchian Predictive Channel (Zeiierman)
█ Settings
⚪ Bollinger Band
Controls the live Bollinger Bands on the chart.
Source – Price used for calculations.
Length – Lookback period; higher = smoother, lower = more reactive.
Multiplier – Bandwidth; higher = wider bands, lower = tighter bands.
⚪ Forecast
Controls the forward projection of the Bollinger Bands.
Forecast Bars – How far into the future the bands are projected.
Trend Length – Lookback used to estimate trend and volatility slopes.
Forecast Band Mode – Defines projection behavior (linear, curved, breathing, ATR-based, or smoothed).
⚪ Price Forecast
Controls the projected price path inside the bands.
ZigZag Swings – Number of projected oscillations.
Amplitude – Distance from basis, measured in bandwidth units.
Decay – Shrinks swings further into the forecast.
⚪ Random-Walk
Adds controlled randomness to the price path.
Enable – Toggle random-walk influence.
Blend – Strength of randomness vs. zigzag.
Step Size – Size of random steps (band-width units).
Decay – Reduces randomness as the forecast deepens.
Seed – Changes the (stable) random sequence.
⚪ Signals
Controls rejection/mean-reversion signals.
Show Signals – Enable/disable signal markers.
MA Filter (Type/Length) – Filters signals by trend direction.
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
Rainbow MA Width█ OVERVIEW
Rainbow MA Width is a companion indicator for Rainbow MA Cloud. It displays ribbon width as a normalized Z-Score, allowing traders to visualize trend momentum expansion and contraction relative to recent history.
█ CONCEPTS
Z-Score Normalization:
Rather than displaying raw width values (which vary by asset and timeframe),
this indicator normalizes the ribbon width using Z-Score calculation:
Z-Score = (Current Width - Average Width) / Standard Deviation
Z-Score Interpretation:
• 0 = Average width (mean)
• +1 to +2 = Expanding (above average, strong trend)
• -1 to -2 = Contracting (below average, weakening trend)
• Beyond ±2 = Extreme (statistical outlier, potential reversal)
Width Calculation Modes:
• Outer — Distance between fastest and slowest MA: |MA1 - MA8|
• Average Gap — Mean of all adjacent MA gaps
• Total Gap — Sum of all adjacent MA gaps
█ FEATURES
1 — Width Mode Selection
Three methods to calculate ribbon width.
"Outer" recommended for aligned trends.
2 — Z-Score Period
Configurable lookback for mean and standard deviation.
Default 20 bars; increase for smoother, less reactive readings.
3 — Zone Fill Coloring
Cyan fill when expanding (Z > 0).
Orange fill when contracting (Z < 0).
Yellow fill for extreme values (|Z| > 2) as warning.
4 — Alignment Background
Green background during bullish alignment.
Red background during bearish alignment.
Synced with Rainbow MA Cloud for consistency.
5 — Reference Lines
Horizontal lines at 0 (mean), ±1σ, and ±2σ levels.
Provides clear visual boundaries for interpretation.
6 — Raw Width Display
Optional secondary line showing original width percentage.
Useful for comparing normalized vs absolute values.
█ HOW TO USE
Trend Confirmation:
• Z-Score rising above 0 confirms trend acceleration
• Z-Score staying above +1 indicates sustained strong momentum
• Use alongside alignment background for confluence
Reversal Warning:
• Z-Score exceeding +2 suggests overextension (yellow warning zone)
• Z-Score dropping below -2 indicates extreme contraction
• Extreme readings often precede trend reversals or consolidation
Entry Timing:
• Enter trends when Z-Score crosses above 0 (expansion beginning)
• Avoid entries when Z-Score is at extreme highs (potential exhaustion)
• Consider exits when Z-Score peaks and begins declining
█ LIMITATIONS
• Z-Score is relative to lookback period; different periods give different readings
• Extreme zones (±2) are statistical guides, not guarantees
• Best used in conjunction with Rainbow MA Cloud for full context
█ ALERTS
Four built-in alert conditions:
• Z-Score crosses above/below zero
• Z-Score enters extreme high/low zones (±2)
Rainbow MA Cloud█ OVERVIEW
Rainbow MA Cloud displays 8 Moving Averages as a gradient-colored cloud to visualize trend direction and strength. The "rainbow" effect shows momentum through ribbon width, while perfect MA alignment signals strong trending conditions.
█ CONCEPTS
The indicator uses 8 MAs with Fibonacci-based default lengths (8, 13, 21, 34, 55, 89, 144, 233) to create a layered view of price momentum across multiple timeframes.
Perfect Alignment Detection:
• Bullish Alignment — All 8 MAs in ascending order (MA1 > MA2 > ... > MA8)
Indicates strong uptrend with momentum across all timeframes
• Bearish Alignment — All 8 MAs in descending order (MA1 < MA2 < ... < MA8)
Indicates strong downtrend with aligned selling pressure
• Mixed — MAs are not in sequential order, suggesting consolidation or transition
Ribbon Width:
• Widening ribbon = Trend acceleration, increasing momentum
• Narrowing ribbon = Trend weakening, potential reversal or consolidation
█ FEATURES
1 — MA Configuration
Choose from EMA, SMA, WMA, VWMA, or HMA calculation methods.
All 8 MA lengths are fully customizable.
2 — Color Themes
Five built-in themes: Rainbow, Warm, Cool, Neon, Mono.
Creates visually distinct gradient from fast to slow MAs.
3 — Alignment Background
Green background during bullish alignment.
Red background during bearish alignment.
Helps quickly identify strong trending periods.
4 — Trend Signals
Labels appear when perfect alignment forms.
"BULL ALIGN" for bullish, "BEAR ALIGN" for bearish.
5 — Information Panel
Real-time display of alignment status, trend strength percentage,
ribbon width, price position relative to cloud, and MA values.
█ HOW TO USE
Entry Signals:
• Look for alignment signals (BULL/BEAR ALIGN) as trend confirmation
• Enter long when bullish alignment forms with price above cloud
• Enter short when bearish alignment forms with price below cloud
Trend Following:
• Stay in position while alignment background color persists
• Widening ribbon confirms trend continuation
• Exit or reduce when alignment breaks (background disappears)
Support/Resistance:
• Cloud edges act as dynamic support (bullish) or resistance (bearish)
• Price entering cloud suggests consolidation or potential reversal
█ LIMITATIONS
• Alignment signals are lagging by nature (based on MA crossovers)
• Works best on trending markets; generates mixed signals during ranging periods
• Ribbon width measurement uses outer MAs only (MA1 vs MA8)
█ COMPANION INDICATOR
Use "Rainbow MA Width" indicator for detailed Z-Score analysis of ribbon expansion/contraction patterns.
Trading Value RSI (NQ Tuned)The Trading Value RSI (NQ Tuned) is an indicator that applies the RSI calculation to trading value, defined as volume × close, rather than just price. It is specifically tuned for Nasdaq 100 futures (NQ), with a default RSI length of 24, overbought level at 75, and oversold level at 25 to filter out false signals from high volatility. The indicator visually colors the RSI line based on overbought (red), oversold (green), or neutral (blue) conditions. A horizontal midline at 50 helps identify potential trend direction changes or confirm ongoing momentum. This tool allows traders to monitor capital flow intensity, giving insight into when strong buying or selling pressure may drive short-term market moves.
Ultimate Reversion BandsURB – The Smart Reversion Tool
URB Final filters out false breakouts using a real retest mechanism that most indicators miss. Instead of chasing wicks that fail immediately, it waits for price to confirm rejection by retesting the inner band—proving sellers/buyers are truly exhausted.
Eliminates fakeouts – The retest filter catches only genuine reversions
Triple confirmation – Wick + retest + optional volume/RSI filters
Clear visuals – Outer bands show extremes, inner bands show retest zones
Works on any timeframe – From scalping to swing trading
Perfect for traders tired of getting stopped out by false breakouts.
Core Construction:
Smart Dynamic Bands:
Basis = Weighted hybrid EMA of HLC3, SMA, and WMA
Outer Bands = Basis ± (ATR × Multiplier)
Inner Bands = Basis ± (ATR × Multiplier × 0.5) → The "retest zone"
The Unique Filter: The Real Retest
Step 1: Identify an extreme wick touching the outer band
Step 2: Wait 1-3 bars for price to return and touch the inner band
Why it works: Most false breakouts never retest. A genuine reversal shows seller/buyer exhaustion by allowing price to come back to the "halfway" level.
Optional Confirmations:
Volume surge filter (default ON)
RSI extremes filter (optional)
Each can be toggled ON/OFF
How to Use:
Watch for extreme wicks touching the red/lime outer bands
Wait for the retest – price must return to touch the inner band (dotted line) within 3 bars
Enter on confirmation with built-in volume/RSI filters
Set stops beyond the extreme wick






















