Adaptive SuperTrend - Multi-Method# 📊 Adaptive SuperTrend - Multi-Method with Advanced Analytics
## 🎯 Overview
The **Adaptive SuperTrend - Multi-Method** is a sophisticated trading indicator that enhances the traditional SuperTrend by dynamically adjusting its parameters based on market conditions. Unlike static SuperTrend indicators, this version adapts to volatility changes, providing more reliable signals across different market regimes.
## ✨ Key Features
### 🤖 7 Adaptive Methods
Choose from multiple adaptation strategies or use the powerful Hybrid mode that combines all methods:
1. **Percentile-Based Adaptation**
- Adjusts multiplier based on ATR percentile ranking
- Tightens during extreme volatility, widens during calm periods
- Lookback: 100 bars (customizable)
2. **Volatility Regime Classification**
- Categorizes market into Low/Normal/High volatility regimes
- Applies different multipliers for each regime
- Default: Low=4.0x, Normal=2.5x, High=1.5x
3. **Z-Score Normalization**
- Uses statistical Z-score to normalize ATR
- Adapts to volatility outliers intelligently
- Sensitivity: 0.3 (adjustable)
4. **Dynamic Period Adjustment**
- Blends short and long ATR periods based on volatility
- Responsive in volatile markets, stable in calm markets
- Period range: 7-20 bars
5. **Rate of Change Method**
- Adjusts based on ATR's rate of change
- Detects accelerating/decelerating volatility
- Lookback: 20 bars
6. **Multi-Timeframe Comparison**
- Compares current timeframe ATR with higher timeframe
- Provides macro-context awareness
- Default HTF: Daily
7. **Hybrid Approach** ⭐ RECOMMENDED
- Combines all 6 methods with equal weighting
- Smoothed with EMA for stability
- Best overall performance
### 📈 Professional Statistics Panel
A comprehensive performance tracking panel with ML Fusion-inspired color scheme:
**Features:**
- 💼 **Current Position**: Live LONG/SHORT status with entry price
- 📊 **Total Points**: Cumulative P&L for selected period (default: 60 days)
- 💰 **Current P&L**: Unrealized profit/loss with percentage
- 🟢 **Long Stats**: Separate tracking for long trades
- 🔴 **Short Stats**: Separate tracking for short trades
- 📈 **Averages**: Average points per trade (overall, long, short)
- 📅 **Date Range**: Start and end dates of tracking period
**Customizable Options:**
- Lookback period: 1-365 days (default: 60 days)
- Table position: Top Left/Right, Bottom Left/Right
- Toggle date range display on/off
### 🎨 Visual Features
- **Color-Coded Signals**: Clear buy (green) and sell (red) markers
- **Trend Background**: Subtle background coloring for trend direction
- **SuperTrend Line**: Dynamic color based on current trend
- **Price Fill**: Shaded area between price and SuperTrend
- **Vibrant Colors**: Professional Material Design color palette
### 📊 Information Panel
Real-time display of:
- Active adaptation method
- Current ATR value
- ATR percentile ranking
- Active multiplier vs base multiplier
- Volatility regime (Low/Normal/High)
- ATR Z-Score
- Current trend direction
## 🔧 How to Use
### Quick Start
1. Add indicator to your chart
2. Choose adaptation method (start with "Hybrid")
3. Monitor the statistics panel for performance
4. Use signals for entry/exit points
### Recommended Settings
**For Intraday Trading:**
- Method: Hybrid or Dynamic Period
- Base ATR Period: 10
- Base Multiplier: 2.5-3.0
- P&L Tracking: 30 days
**For Swing Trading:**
- Method: Hybrid or Multi-Timeframe
- Base ATR Period: 14
- Base Multiplier: 3.0-4.0
- P&L Tracking: 90 days
**For Scalping:**
- Method: Rate of Change or Z-Score
- Base ATR Period: 7
- Base Multiplier: 2.0-2.5
- P&L Tracking: 7-14 days
### Signal Interpretation
✅ **BUY Signal**: Triangle up below bar
- Enter long position
- Place stop loss below SuperTrend line
❌ **SELL Signal**: Triangle down above bar
- Exit long / Enter short position
- Place stop loss above SuperTrend line
## ⚙️ Input Parameters
### Basic Settings
- **Base ATR Period**: Default 10 (1-50)
- **Base Multiplier**: Default 3.0 (0.1-10.0)
### Method-Specific Settings
Each of the 7 methods has its own customizable parameters for fine-tuning.
### Display Settings
- **Show Volatility Regime**: Toggle regime display
- **Show ATR Info Panel**: Toggle information panel
- **Show Statistics Panel**: Toggle performance stats
- **Stats Table Position**: Choose corner placement
- **P&L Tracking Period**: 1-365 days (default: 60)
- **Show P&L Date Range**: Toggle date range display
- **Bullish Color**: Customize trend-up color
- **Bearish Color**: Customize trend-down color
## 📊 Statistics Tracking
The indicator automatically tracks:
- **Entry Points**: Recorded on every trend change
- **Exit Points**: Calculated on opposite signal
- **Points Gained/Lost**: Per trade and cumulative
- **Long vs Short Performance**: Separate analytics
- **Trade Count**: Total, long, and short trades
- **Average Performance**: Overall and per direction
- **Time-Based Filtering**: Only shows trades within lookback period
## 🎯 Advantages Over Standard SuperTrend
1. **Adaptive to Market Conditions**: No more whipsaws in ranging markets or missed trends in volatile markets
2. **Multiple Adaptation Strategies**: Choose the method that fits your market and timeframe
3. **Comprehensive Analytics**: Track your performance with detailed statistics
4. **Professional Presentation**: Clean, organized display with Material Design colors
5. **Flexible Configuration**: Highly customizable for any trading style
6. **Real-Time Monitoring**: Live P&L tracking and performance metrics
## 🔔 Alerts
Built-in alert conditions for:
- Buy Signal (trend change to bullish)
- Sell Signal (trend change to bearish)
- Trend Change (any direction change)
Set up TradingView alerts to get notified on your phone or email when signals occur.
## 💡 Pro Tips
1. **Combine with Volume**: Use with volume indicators for confirmation
2. **Multiple Timeframes**: Add on multiple timeframes for confluence
3. **Risk Management**: Always use stop losses at SuperTrend line
4. **Backtest First**: Test on historical data before live trading
5. **Monitor Statistics**: Track your win rate and average gains
6. **Adjust for Market**: Switch methods based on market conditions
7. **Use Hybrid Mode**: When unsure, Hybrid mode provides balanced adaptation
## 📝 Version Notes
**Version 1.0**
- 7 adaptive methods with Hybrid mode
- Professional statistics panel with P&L tracking
- Configurable lookback period (1-365 days)
- Date range display
- Material Design color scheme
- Real-time performance analytics
- Multiple table position options
## ⚠️ Disclaimer
This indicator is for educational and informational purposes only. It should not be considered as financial advice. Always do your own research and consider consulting with a financial advisor before making trading decisions. Past performance does not guarantee future results.
---
**Happy Trading! 🚀📈**
---
## 🏷️ Tags
#SuperTrend #Adaptive #Volatility #TrendFollowing #ATR #Statistics #Analytics #PnL #Trading #Technical #Indicators #MultiMethod #Swing #Intraday #Scalping #RiskManagement
Pesquisar nos scripts por "track"
Kinetic Scalper [BULLBYTE]KINETIC SCALPER - ADVANCED MOMENTUM & CONFLUENCE TRADING SYSTEM
A SOPHISTICATED MULTI-FACTOR ANALYSIS INDICATOR FOR PRECISION ENTRIES
The Kinetic Scalper is a comprehensive trading analysis tool that combines volume-weighted momentum calculations, multi-oscillator divergence detection, and a proprietary 15-factor confluence scoring system to identify high-probability reversal setups across all timeframes.
WHAT MAKES THIS INDICATOR ORIGINAL
This is NOT a simple mashup of existing indicators.
The Kinetic Scalper features a completely custom momentum engine called the "Kinetic Pulse" - a volume-weighted momentum oscillator with Fisher Transform normalization that fundamentally differs from standard RSI or other momentum indicators. Every component feeds into a unified algorithmic framework designed specifically for this system.
KEY INNOVATIONS:
KINETIC PULSE ENGINE
Unlike standard RSI which uses simple price changes, the Kinetic Pulse applies:
→ Volume weighting to price movements (high-volume moves carry more weight)
→ EMA smoothing instead of traditional SMA (faster response to changes)
→ Fisher Transform normalization for improved signal clarity
→ Adaptive period adjustment based on current volatility regime
→ Result: A momentum oscillator that responds to conviction, not just price noise
15-FACTOR CONFLUENCE SCORING SYSTEM
Every signal is graded based on the number of confirming factors present:
→ Momentum position (oversold/overbought extremes)
→ Momentum velocity (direction change confirmation)
→ Momentum acceleration (strength of reversal)
→ Multi-oscillator divergence (price vs. 3 oscillators)
→ Volume confirmation (above-average participation)
→ Volume delta analysis (buying vs. selling pressure)
→ Higher timeframe alignment (trend confirmation from larger timeframe)
→ Session timing (major forex session awareness)
→ Structure clearance (clear path to profit targets)
→ Support/resistance proximity (confluence with key levels)
→ Market regime filtering (trending vs. choppy conditions)
Signals are graded A+, A, or B based on how many factors align:
• CONSERVATIVE MODE: A+ requires 12+ factors, A requires 9+, B requires 7+
• BALANCED MODE: A+ requires 10+ factors, A requires 7+, B requires 5+
• AGGRESSIVE MODE: A+ requires 8+ factors, A requires 5+, B requires 3+
TRADE ANALYSIS STATE MACHINE
A sophisticated monitoring system that tracks trade conditions in real-time using:
→ 5-state analysis framework (Factors Aligned / Positive Bias / Mixed Signals / Factors Weakening / Negative Bias)
→ Hysteresis-based transitions (different thresholds to enter vs. exit states)
→ Confidence smoothing with EMA (reduces noise, prevents flip-flopping)
→ Minimum commitment periods before state changes
→ Override logic for significant events (near TP/SL, momentum reversals)
→ Result: Stable, actionable guidance that doesn't change on every bar
INSTRUMENT-AWARE CALIBRATION
Automatically detects what you're trading and applies optimized parameters:
→ Forex Majors: Standard ATR, high session weight
→ Forex Crosses: Tighter stops, moderate session weight
→ Crypto: Wider stops (1.8x multiplier), reduced session weight (24/7 markets)
→ Indices: Moderate-wide stops, high session weight
→ Commodities: Moderate stops, moderate session weight
WHAT THIS INDICATOR DOES
The Kinetic Scalper is designed to identify high-confluence reversal opportunities by analyzing multiple dimensions of market behavior simultaneously.
CORE FUNCTIONS:
1. SIGNAL GENERATION
→ Identifies potential reversal points at oversold/overbought extremes
→ Confirms with multi-oscillator divergence detection
→ Validates with volume, higher timeframe, and structural analysis
→ Filters out low-probability setups automatically
→ Grades signals based on total confluence factors present
2. AUTOMATED TRADE TRACKING
→ Calculates structure-based or ATR-based stop loss levels
→ Projects take profit targets using risk-to-reward ratios
→ Monitors live position status (P/L, distance to targets, R-multiple)
→ Tracks TP1 and TP2 hits automatically
→ Displays outcome markers (TP HIT, PARTIAL WIN, STOPPED)
3. REAL-TIME CONDITION MONITORING
→ Analyzes 6 factor categories during active trades
→ Provides confidence scoring (0-100 scale)
→ Generates actionable guidance based on current market state
→ Alerts when conditions deteriorate or improve
→ Helps with trade management decisions
4. COMPREHENSIVE MARKET ANALYSIS
→ Session detection (Asian, London, New York, Overlap)
→ Volatility regime identification (Low, Normal, High, Extreme)
→ Trend state classification (Trending Up/Down, Ranging, Transitioning)
→ Volume analysis (relative volume and delta approximation)
→ Choppiness filtering (blocks signals in ranging markets)
WHY USE THIS INDICATOR
PROBLEM: Most momentum indicators generate too many false signals at extremes.
SOLUTION: The Kinetic Scalper requires MULTIPLE confirming factors before generating a signal, dramatically reducing noise and focusing on high-confluence setups.
ADVANTAGES:
✓ QUALITY OVER QUANTITY
→ Signal grading ensures you can filter for only the highest-quality setups
→ A+ signals have 10-12+ confirming factors aligned
→ Cooldown periods prevent over-trading the same move
✓ COMPLETE TRADE FRAMEWORK
→ Entry signals with confluence justification
→ Calculated stop loss based on market structure or ATR
→ Two profit targets with clear risk-to-reward ratios
→ Live trade monitoring with factor analysis
→ Outcome tracking and visual markers
✓ ADAPTIVE TO MARKET CONDITIONS
→ Volatility-based period adjustment for momentum calculations
→ Instrument-specific ATR multipliers
→ Session awareness for forex traders
→ Higher timeframe trend filtering
→ Automatic regime detection (trending vs. choppy)
✓ TRANSPARENT METHODOLOGY
→ Every input has detailed tooltips explaining its purpose
→ Signal tooltips show exactly why a signal was generated
→ Dashboard displays all relevant market conditions
→ Factor scores are visible during trades
→ No "black box" mystery calculations
✓ NON-REPAINTING & RELIABLE
→ All signals use barstate.isconfirmed (only on closed bars)
→ Higher timeframe data uses lookahead_off with historical offset
→ No future data access or repainting behavior
→ What you see is what you get - signals don't disappear or move
HOW THE INDICATOR WORKS
SIGNAL GENERATION PROCESS:
STEP 1: MOMENTUM ANALYSIS
The Kinetic Pulse engine calculates volume-weighted momentum:
→ Price changes are weighted by volume ratio vs. 20-bar average
→ High-volume moves have more influence on the oscillator
→ Gains and losses are smoothed using EMA (not SMA like RSI)
→ Fisher Transform is applied for normalization to 0-100 scale
→ Result: Momentum reading that emphasizes conviction, not noise
STEP 2: REVERSAL DETECTION
The indicator looks for potential reversal conditions:
→ Kinetic Pulse reaching oversold zone (below dynamic lower threshold)
→ Momentum velocity turning positive after being negative (for longs)
→ OR bullish divergence detected on multiple oscillators
→ Price making lower lows while oscillators make higher lows = divergence
STEP 3: MULTI-OSCILLATOR DIVERGENCE CONFIRMATION
Divergence is validated across three sources:
→ Kinetic Pulse divergence
→ CCI divergence
→ Stochastic divergence
→ Multiple oscillators confirming divergence increases signal reliability
STEP 4: CONFLUENCE FACTOR SCORING
The system evaluates all 15 possible confirming factors:
→ Momentum position: Is pulse oversold/overbought? (+0 to +2 points)
→ Momentum direction: Is velocity reversing? (+0 to +2 points)
→ Momentum acceleration: Is reversal strengthening? (+0 to +1 point)
→ Divergence count: How many oscillators show divergence? (+0 to +2 points)
→ Volume strength: Is volume above 1.3x average? (+0 to +1 point)
→ Volume delta: Is cumulative delta positive/negative? (+0 to +1 point)
→ HTF alignment: Does higher timeframe support direction? (+0 to +2 points)
→ Session timing: Is it a prime trading session? (+0 to +1 point)
→ Clear air: Is path to targets clear of obstacles? (+0 to +1 point)
→ Structure confluence: Are we near support/resistance? (+0 to +1 point)
→ Market regime: Is market trending, not choppy? (+0 to +1 point)
Total possible score: 15 points
Minimum for signal: 3-12 points depending on sensitivity mode
STEP 5: FILTER VALIDATION
Before generating a signal, additional checks are performed:
→ Volume must be above minimum threshold (if filter enabled)
→ Higher timeframe must not oppose the signal direction (if filter enabled)
→ Target path must be clear of major resistance/support (if filter enabled)
→ Volatility must not be EXTREME (blocks signals in chaos)
→ Risk-to-reward ratio must meet minimum requirement
→ Cooldown period must have elapsed since last signal
STEP 6: SIGNAL GRADING
If all filters pass, the signal is graded based on score:
→ A+ Grade: Highest confluence (8-12+ factors depending on sensitivity)
→ A Grade: High confluence (5-9+ factors)
→ B Grade: Moderate confluence (3-7+ factors)
Only graded signals (A+, A, or B) are displayed.
STEP 7: TRADE LEVEL CALCULATION
Stop loss and targets are calculated automatically:
STOP LOSS METHODS:
• Structure-Based: Uses recent swing low/high with ATR buffer, constrained by min/max ATR limits
• ATR-Based: Pure ATR multiplier with min/max constraints
• Fixed ATR: Simple ATR multiplier, no adjustments
TARGET CALCULATION:
• TP1: Entry ± (Stop Distance × Target 1 R:R)
• TP2: Entry ± (Stop Distance × Target 2 R:R)
• Default: TP1 at 1.0 R:R (1:1), TP2 at 2.0 R:R (1:2)
STEP 8: TRADE MONITORING
Once a signal is taken, the indicator tracks:
→ Current P/L in ticks and R-multiples
→ Distance to each target in ATR units
→ Distance to stop loss in ATR units
→ TP1 hit detection (marks with label, updates lines)
→ TP2 hit detection (closes trade, marks outcome)
→ Stop loss hit detection (closes trade, differentiates partial vs. full loss)
STEP 9: FACTOR ANALYSIS (DURING TRADES)
The Trade Analysis Panel monitors 6 key factor categories:
→ Momentum: Is momentum still aligned with trade direction? (-15 to +15 pts)
→ Position: Current R-multiple position (-12 to +12 pts)
→ Volume: Is volume still supportive? (-6 to +6 pts)
→ HTF Alignment: Does HTF still support trade? (-6 to +8 pts)
→ Target Proximity: How close are we to targets? (0 to +10 pts)
→ Stop Proximity: Are we dangerously close to stop? (-15 to +3 pts)
Raw scores are summed and smoothed using 5-bar EMA to create Confidence Score (0-100).
STEP 10: STATE MACHINE TRANSITIONS
Based on smoothed confidence, the system transitions between 5 states:
→ FACTORS ALIGNED (72+): Everything looks good
→ POSITIVE BIAS (58-72): Conditions favorable
→ MIXED SIGNALS (48-58): Neutral conditions
→ FACTORS WEAKENING (22-48): Concerning signals
→ NEGATIVE BIAS (<22): Poor conditions
Hysteresis prevents rapid flipping between states (different entry/exit thresholds).
RECOMMENDED TIMEFRAMES & INSTRUMENTS
TIMEFRAME VERSATILITY:
Despite the name "Scalper," this indicator works on ALL timeframes:
✓ LOWER TIMEFRAMES (1m - 15m)
→ Ideal for: Scalping and very short-term trades
→ Expect: More signals, faster trades, requires active monitoring
→ Best for: Forex majors, liquid crypto pairs
→ Tip: Use Conservative sensitivity to reduce noise
✓ MID TIMEFRAMES (15m - 1H)
→ Ideal for: Intraday trading and day trading
→ Expect: Moderate signal frequency, 1-4 hour trade duration
→ Best for: Forex, indices, major crypto
→ Tip: Balanced sensitivity works well here
✓ HIGHER TIMEFRAMES (4H - Daily)
→ Ideal for: Swing trading and position trading
→ Expect: Fewer signals, higher-quality setups, multi-day trades
→ Best for: All instruments
→ Tip: Can use Aggressive sensitivity for more opportunities
INSTRUMENT COMPATIBILITY:
✓ FOREX MAJORS (EUR/USD, GBP/USD, USD/JPY, etc.)
→ Auto-detected or manually select "Forex Major"
→ Session filtering is highly valuable here
→ London/NY overlap generates best signals
✓ FOREX CROSSES (EUR/GBP, AUD/NZD, etc.)
→ Auto-detected or manually select "Forex Cross"
→ Slightly tighter stops applied automatically
→ Session weight reduced vs. majors
✓ CRYPTOCURRENCIES (BTC, ETH, SOL, etc.)
→ Auto-detected or manually select "Crypto"
→ Wider stops (1.8x multiplier) due to volatility
→ Session filtering less relevant (24/7 markets)
→ Works well on both spot and perpetual futures
✓ INDICES (S&P 500, NASDAQ, DAX, etc.)
→ Auto-detected or manually select "Index"
→ Session opens (NY, London) are important
→ Moderate stop widths applied
✓ COMMODITIES (Gold, Silver, Oil, etc.)
→ Auto-detected or manually select "Commodity"
→ Moderate stops and session awareness
→ Works well on both spot and futures
VISUAL ELEMENTS EXPLAINED
SIGNAL MARKERS:
The indicator offers 3 display styles (choose in settings):
• PREMIUM STYLE (Default)
→ Signal appears below/above candles with connecting line
→ Background panel with grade badge (LONG , SHORT , etc.)
→ Entry price displayed
→ Direction arrow pointing to entry candle
→ Most informative, best for detailed analysis
• MINIMAL STYLE
→ Simple dot marker with grade text next to it
→ Clean, unobtrusive design
→ Best for mobile devices or cluttered charts
→ Less visual noise
• CLASSIC STYLE
→ Diamond marker with grade badge below/above
→ Traditional indicator aesthetic
→ Good balance between info and simplicity
ALL STYLES INCLUDE:
→ Signal tooltips with complete trade plan details
→ Grade display (A+, A, or B)
→ Color coding (bright colors for A+, standard for A/B)
SIGNAL TOOLTIP CONTENTS:
When you hover over any signal marker, you'll see:
→ Signal direction and grade
→ Confluence score (actual points vs. required)
→ Reason for signal (divergence type, reversal pattern)
→ Complete trade plan (Entry, Stop, TP1, TP2)
→ Risk in ticks
→ Risk-to-reward ratios
→ Market conditions at signal (Pulse value, HTF status, Volume, Session)
TRADE LEVEL LINES:
When Trade Tracking is enabled:
• ENTRY LINE (Yellow/Gold)
→ Solid horizontal line at entry price
→ Shaded zone around entry (±ATR buffer)
→ Label showing entry price
→ Extends 20-25 bars into future
• STOP LOSS LINE (Orange/Red)
→ Dashed line at stop level
→ Label showing stop price and distance in ticks
→ Turns dotted and changes color after TP1 hit (breakeven implied)
→ Deleted when trade closes
• TAKE PROFIT 1 LINE (Blue)
→ Dotted line at TP1 level
→ Label showing price and R:R ratio (e.g., "1:1.0")
→ Turns solid and changes to green when hit
→ Deleted after TP1 hit
• TAKE PROFIT 2 LINE (Blue)
→ Solid line at TP2 level
→ Label showing price and R:R ratio (e.g., "1:2.0")
→ This is the "full win" target
→ Deleted when trade closes
OUTCOME MARKERS:
When trade milestones are reached:
• - Green label appears when first target is touched
• - Green label when second target is touched (trade complete)
• - Red label if stop loss hit before any target
• - Orange label if TP1 hit but then stopped out
PREVIOUS DAY LEVELS:
If enabled (Show Previous Day Levels):
• PDH (Previous Day High) - Solid red/orange line
→ Label shows "PDH: "
→ Useful resistance reference for intraday trading
• PDL (Previous Day Low) - Solid green line
→ Label shows "PDL: "
→ Useful support reference for intraday trading
BACKGROUND TINTS:
Subtle background colors indicate states:
→ Light green tint: Active long position being tracked
→ Light red tint: Active short position being tracked
→ Light orange tint: Extreme volatility warning (signals blocked)
DASHBOARD GUIDE
The indicator features TWO dashboard panels:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MAIN DASHBOARD (Top Right by default)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHEN NO TRADE IS ACTIVE:
→ Bias: Current market bias (BULLISH, BEARISH, NEUTRAL, LEAN LONG/SHORT)
→ Based on Kinetic Pulse position and velocity
→ Helps you understand overall momentum direction
→ Pulse: Current Kinetic Pulse value (0-100 scale)
→ <30 = Oversold (potential long setups developing)
→ >70 = Overbought (potential short setups developing)
→ 40-60 = Neutral zone
→ Volatility: Current volatility regime (LOW, NORMAL, HIGH, EXTREME)
→ Calculated from ATR ratio vs. 100-period average
→ EXTREME volatility blocks all signals (too chaotic)
→ Trend: Market state classification
→ TREND UP / TREND DOWN: ADX > 25, directional movement clear
→ RANGING: ADX < 20, choppy conditions
→ TRANSITIONING: ADX 20-25, developing conditions
→ VOLATILE: Extreme ATR regime
→ Session: Current forex session
→ ASIAN (00:00-08:00 UTC)
→ LONDON (07:00-16:00 UTC)
→ NEW YORK (13:00-22:00 UTC)
→ LDN/NY (13:00-16:00 UTC) - Overlap period, highest volatility
→ OFF-HOURS: Outside major sessions
→ Volume: Current volume vs. 20-bar average
→ Displayed as multiplier (e.g., "1.45x" = 45% above average)
→ Green if >1.3x (high volume, bullish for signal quality)
→ Red if <0.8x (low volume, bearish for signal quality)
→ HTF: Higher timeframe analysis status
→ BULLISH: HTF momentum supports longs
→ BEARISH: HTF momentum supports shorts
→ NEUTRAL: No clear HTF direction
→ Best Score: Highest confluence score currently available
→ Shows both long and short scores
→ Format: " / "
→ Example: "8/7 " means long score is 8, threshold is 7, long is leading
→ Helps you anticipate which direction might signal next
→ PDH/PDL: Previous day high and low prices
→ Quick reference for intraday support/resistance
WHEN TRADE IS ACTIVE:
→ Trade: Direction and grade (e.g., "LONG ")
→ Entry: Entry price of current trade
→ P/L: Current profit/loss
→ Shown in ticks and R-multiples
→ Format: "+45 | +0.75R" or "-20 | -0.35R"
→ Green when positive, red when negative
→ TP1: First target status
→ Shows price and distance if not hit
→ Shows "HIT" in green if reached
→ TP2: Second target price and distance
→ Stop: Stop loss price and current distance from stop
→ Bars: Number of bars since entry (trade duration)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TRADE ANALYSIS PANEL (Bottom Left by default)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
This panel provides algorithmic analysis of market conditions. It does NOT provide investment advice or recommendations.
WHEN NO TRADE IS ACTIVE:
Shows scanning status and signal readiness:
→ Long/Short Readiness Gauges
→ Visual bar showing proximity to signal threshold
→ Score display (e.g., "8/7" means 8 points scored, 7 needed)
→ "RDY" indicator when threshold reached
→ Status Messages
→ "Scanning for setups..." - Normal scanning mode
→ "Long setup ready - cooldown: X bars" - Signal qualified but in cooldown
→ "Oversold conditions - watch for reversal" - Setup developing
→ "Choppy conditions detected" - Warning about market state
→ "Extreme volatility - signals blocked" - Safety filter active
WHEN TRADE IS ACTIVE:
Header shows current analysis state:
→ FACTORS ALIGNED (Green) - Everything looks good, confidence 72+
→ POSITIVE BIAS (Light Green) - Conditions favorable, confidence 58-72
→ MIXED SIGNALS (Blue) - Neutral conditions, confidence 48-58
→ FACTORS WEAKENING (Orange) - Concerning signals, confidence 22-48
→ NEGATIVE BIAS (Red) - Poor conditions, confidence <22
Confidence Score:
→ Displayed as percentage (0-100%)
→ Visual gauge (|||||.....)
→ Trend indicator (Rising, Falling, Stable)
→ Shows momentum of confidence change
Factor Breakdown (if enabled):
Shows 6 factor categories with individual scores:
→ Momentum: Is momentum aligned with trade? (-15 to +15 points)
→ Positive if velocity matches trade direction
→ Negative if momentum opposes trade
→ Position: Current R-multiple analysis (-12 to +12 points)
→ Positive if trade is in profit
→ Negative if underwater
→ Score increases as profit grows
→ Volume: Is volume supportive? (-6 to +6 points)
→ Positive if volume above average
→ Negative if volume weak
→ HTF Align: Higher timeframe status (-6 to +8 points)
→ Positive if HTF still supports trade direction
→ Negative if HTF turned against trade
→ Target: Proximity to profit targets (0 to +10 points)
→ Higher score when approaching targets
→ Bonus if TP1 already hit and near TP2
→ Stop Dist: Distance from stop loss (-15 to +3 points)
→ Negative if dangerously close to stop (<0.3 ATR)
→ Positive if well away from stop (>1.5 ATR)
Each factor shows:
• Score value with +/- indicator
• Trend symbol: + (improving), - (deteriorating), = (stable)
• Visual gauge
Guidance Messages:
→ "TARGET 2 APPROACHING" - TP2 within 0.3 ATR
→ "TARGET 1 APPROACHING" - TP1 within 0.3 ATR
→ "STOP PROXIMITY WARNING" - Stop within 0.3 ATR
→ "Factors aligned - Holding" - Positive state, stay in trade
→ "Conditions favorable" - Still looking good
→ "Conditions mixed - " - Neutral assessment
→ "Factors deteriorating" - Warning of weakening setup
→ "Confluence weakening - secure gains" - Consider exit if profitable
COMPACT MODE (Mobile-Friendly):
→ Reduces panel size by showing only essential info
→ Factor icons instead of full breakdowns
→ Simplified guidance messages
→ Perfect for smaller screens
SETTINGS GUIDE
MASTER SETTINGS:
Instrument Type
→ Purpose: Optimizes ATR multipliers and session weights for your asset
→ Options: Auto-Detect (recommended), Forex Major, Forex Cross, Crypto, Index, Commodity
→ Default: Auto-Detect
→ When to change: If auto-detection is incorrect for your symbol
Signal Sensitivity
→ Purpose: Controls how many factors required before generating signals
→ Options:
• Conservative: Requires 12+ for A+, 9+ for A, 7+ for B (fewer, highest quality)
• Balanced: Requires 10+ for A+, 7+ for A, 5+ for B (recommended)
• Aggressive: Requires 8+ for A+, 5+ for A, 3+ for B (more frequent)
→ Default: Balanced
→ When to change: If you want fewer signals (Conservative) or more opportunities (Aggressive)
Enable Trade Signals
→ Purpose: Master on/off switch for signal generation
→ Default: ON
→ When to disable: If you only want to use the analysis dashboards without signals
Enable Trade Tracking
→ Purpose: Tracks active trades and monitors conditions until TP/SL hit
→ Default: ON
→ When to disable: If you manage trades manually and don't want automatic tracking
Show Entry/Stop/Target Levels
→ Purpose: Displays trade plan lines and labels on chart
→ Default: ON
→ When to disable: If you prefer clean charts or manage levels yourself
DISPLAY SETTINGS:
Color Theme
→ Purpose: Optimizes colors for your chart background
→ Options: Dark (for dark charts), Light (for light charts)
→ Default: Dark
Signal Display Style
→ Purpose: Visual style of signal markers
→ Options:
• Premium: Badge with line and background panel (most detailed)
• Minimal: Simple dot with grade text (cleanest)
• Classic: Diamond marker with badge (traditional)
→ Default: Premium
Signal Distance
→ Purpose: How far signal labels appear from price bars (in ATR units)
→ Range: 0.5 to 10.0
→ Default: 2.0
→ When to adjust: Increase to 3.0-4.0 if signals hide behind candle wicks
TP/SL Label Distance
→ Purpose: Spacing of price labels to prevent overlap
→ Range: 0.5 to 5.0
→ Default: 1.5
Show Previous Day Levels
→ Purpose: Display PDH/PDL reference lines
→ Default: ON
→ Best for: Intraday traders who respect previous day levels
MAIN DASHBOARD:
Show Main Dashboard
→ Purpose: Toggle visibility of market conditions table
→ Default: ON
Main Dashboard Position
→ Options: Top Right, Top Left, Bottom Right, Bottom Left
→ Default: Top Right
→ When to change: To avoid overlap with TradingView's built-in panels
TRADE ANALYSIS PANEL:
Show Trade Analysis Panel
→ Purpose: Toggle factor analysis dashboard
→ Default: ON
Analysis Panel Position
→ Options: Top Right, Top Left, Bottom Right, Bottom Left, Middle Right, Middle Left
→ Default: Bottom Left
→ Recommended: Bottom Right or Middle Right to avoid overlap with Main Dashboard
Compact Mode
→ Purpose: Reduces panel size for mobile or smaller screens
→ Default: OFF
→ When to enable: Mobile trading, small screens, or minimalist preference
Show Factor Details
→ Purpose: Displays individual factor scores vs. overall confidence only
→ Default: ON
→ When to disable: For more compact view showing only state and confidence
RISK MANAGEMENT:
Stop Loss Method
→ Purpose: How stop loss distance is calculated
→ Options:
• Structure-Based: Uses swing highs/lows with ATR buffer (recommended)
• ATR-Based: Pure ATR multiplier with min/max constraints
• Fixed ATR: Simple multiplier, no adjustments
→ Default: Structure-Based
→ Impact: Structure-Based respects market geometry but constrains within safe limits
ATR Stop Multiplier
→ Purpose: Multiplier for ATR-based stop calculation
→ Range: 0.5 to 3.0
→ Default: 1.5
→ When to adjust:
• Increase to 2.0-2.5 for more breathing room (fewer false stops)
• Decrease to 1.0-1.2 for tighter stops (but more stop-outs)
Maximum Stop Distance (ATR)
→ Purpose: Cap on stop width to prevent excessive risk
→ Range: 1.0 to 5.0
→ Default: 2.5
→ Impact: If structure-based stop exceeds this, ATR-based stop is used instead
Minimum Stop Distance (ATR)
→ Purpose: Floor on stop width to avoid noise-induced stops
→ Range: 0.2 to 1.0
→ Default: 0.5
→ Impact: Prevents stops too tight to survive normal volatility
Target 1 Risk/Reward Ratio
→ Purpose: R:R for first profit target
→ Range: 0.5 to 2.0
→ Default: 1.0 (1:1 ratio)
→ Common values: 1.0 for quick profit taking, 1.5 for patient trading
Target 2 Risk/Reward Ratio
→ Purpose: R:R for second profit target (full win)
→ Range: 1.0 to 4.0
→ Default: 2.0 (1:2 ratio)
→ Common values: 2.0-3.0 for balanced risk/reward
Minimum R:R Required
→ Purpose: Filters out signals with poor risk/reward
→ Range: 0.5 to 2.0
→ Default: 1.0
→ Impact: Signals where potential reward doesn't meet this ratio are rejected
→ WARNING: Always ensure your position sizing means a stop loss = no more than 1-2% of your account, regardless of R:R ratio
SIGNAL FILTERS:
Session Awareness
→ Purpose: Weights signals higher during major forex sessions
→ Default: ON
→ Impact: Doesn't block signals, but session quality factors into scoring
→ Best for: Forex traders
Session Timezone
→ Purpose: Timezone for session calculations
→ Options: UTC, America/New_York, Europe/London, Asia/Tokyo, Asia/Hong_Kong
→ Default: UTC
→ When to change: Match your broker's server time
Higher Timeframe Alignment
→ Purpose: Checks HTF momentum before generating signals
→ Default: ON
→ Impact: Filters counter-trend signals, improves quality
→ Recommended: Keep enabled
HTF Timeframe
→ Purpose: Which higher timeframe to check
→ Default: Auto (blank field)
→ Auto selection:
• 1m chart → 5m HTF
• 5m chart → 15m HTF
• 15m chart → 1H HTF
• 1H chart → 4H HTF
• 4H+ chart → Daily HTF
→ Manual override: Enter any timeframe (e.g., "60" for 1-hour)
Volume Confirmation
→ Purpose: Requires above-average volume for signals
→ Default: ON
→ Impact: Filters low-liquidity false signals
→ Recommended: Keep enabled
Minimum Volume Ratio
→ Purpose: Volume threshold vs. 20-bar average
→ Range: 0.3 to 2.0
→ Default: 0.8 (80% of average)
→ When to adjust:
• Increase to 1.2-1.5 for only high-volume signals
• Decrease to 0.5-0.7 for more permissive filtering
Structure Clearance Check
→ Purpose: Ensures clear path to targets (no nearby resistance/support)
→ Default: ON
→ Impact: Prevents trades with immediate obstacles
→ Recommended: Keep enabled
Minimum Bars Between Signals
→ Purpose: Cooldown period after each signal
→ Range: 1 to 10
→ Default: 3
→ Impact: After a signal, this many bars must pass before another in same direction
→ When to adjust:
• Increase to 5-7 to prevent over-trading
• Decrease to 1-2 for faster re-entries
ADVANCED TUNING:
Momentum Period
→ Purpose: Base period for Kinetic Pulse calculation
→ Range: 5 to 30
→ Default: 14
→ When to adjust:
• Lower (8-10): More responsive, noisier
• Higher (18-21): Smoother, slower to react
→ Note: If Adaptive Period enabled, this is adjusted automatically
Adaptive Period
→ Purpose: Auto-adjusts momentum period based on volatility
→ Default: ON
→ Impact: Shortens period in high volatility, lengthens in low volatility
→ Recommended: Keep enabled for automatic optimization
Divergence Lookback
→ Purpose: How far back to search for divergence patterns
→ Range: 10 to 60
→ Default: 30
→ When to adjust:
• Shorter (15-20): Only recent divergences
• Longer (40-50): Catches older divergences (may be less relevant)
Swing Detection Bars
→ Purpose: Bars required on each side to confirm swing high/low
→ Range: 2 to 7
→ Default: 3
→ Impact on stops:
• Lower (2-3): More swing points, potentially tighter stops
• Higher (5-7): Only major swings, wider stops
Choppiness Index Threshold
→ Purpose: Threshold above which market considered choppy
→ Range: 38.2 to 80.0
→ Default: 61.8
→ Impact:
• Lower (50-55): Stricter quality filter (fewer signals in ranging markets)
• Higher (65-70): More permissive (allows signals in choppier conditions)
HOW TO READ SIGNALS
SIGNAL ANATOMY:
When a signal appears, you'll see:
1. DIRECTIONAL MARKER
→ Arrow, dot, or diamond pointing to entry candle (depends on style)
→ Positioned below price for LONG, above price for SHORT
→ Connected to price with line (Premium style)
2. GRADE BADGE
→ Displays signal quality: LONG , SHORT , etc.
→ Color coding:
• Bright green/cyan for A+ longs
• Standard green for A/B longs
• Bright pink/magenta for A+ shorts
• Standard red for A/B shorts
3. ENTRY PRICE (Premium style only)
→ Shows exact entry price at signal generation
4. TOOLTIP (all styles)
→ Hover over signal to see complete trade plan
→ Includes: Entry, Stop, TP1, TP2, Risk, R:R ratios, market conditions, signal reason, confluence score
INTERPRETING GRADES:
→ A+ SIGNALS (Highest Quality)
• 8-12+ confirming factors aligned
• Multiple divergences OR strong momentum reversal
• HTF alignment + volume + session timing + clear structure
• These are your highest-probability setups
• Recommended action: Give these priority, consider larger position size
→ A SIGNALS (High Quality)
• 5-9+ confirming factors aligned
• Good confluence, most key factors present
• Missing 1-2 optimal conditions
• These are still quality trades
• Recommended action: Standard position size, solid setups
→ B SIGNALS (Moderate Quality)
• 3-7+ confirming factors aligned
• Minimum viable confluence
• May be missing HTF alignment, volume, or session timing
• Higher variance outcomes
• Recommended action: Smaller position size or skip if conservative
SIGNAL NARRATIVE:
Each signal tooltip includes a narrative explaining WHY it was generated:
→ "Multi-divergence at oversold extreme"
• Multiple oscillators showing bullish divergence
• Kinetic Pulse in oversold zone
• High-quality reversal setup
→ "Bullish divergence near support"
• Divergence detected
• Price near key support level (swing low or PDL)
• Structure confluence
→ "Momentum reversal with HTF alignment"
• Kinetic Pulse velocity reversing
• Higher timeframe supports direction
• Strong trend-following setup
→ "Oversold momentum reversal"
• Extreme Kinetic Pulse reading reversing
• May not have divergence but strong momentum shift
READING THE TRADE PLAN:
Every signal comes with a complete trade plan:
→ ENTRY: The close price of the signal candle
• This is where the signal triggered
• If using limit orders, you might improve on this price
→ STOP: Calculated stop loss level
• Based on your Stop Loss Method setting
• Distance shown in ticks
• Risk tolerance: Ensure this represents ≤1-2% of your account
→ TP1: First profit target
• Default: 1:1 risk-reward
• This is your partial profit or first exit
• Consider taking 50% off at TP1
→ TP2: Second profit target
• Default: 1:2 risk-reward
• This is your "full win" target
• Hold remaining position for this level
SIGNAL FREQUENCY EXPECTATIONS:
Frequency varies by timeframe, sensitivity, and market conditions:
→ AGGRESSIVE MODE
• Lower timeframes (1m-5m): 5-15 signals per day
• Mid timeframes (15m-1H): 2-5 signals per day
• Higher timeframes (4H-D): 1-3 signals per week
→ BALANCED MODE (Default)
• Lower timeframes: 3-8 signals per day
• Mid timeframes: 1-3 signals per day
• Higher timeframes: 2-5 signals per week
→ CONSERVATIVE MODE
• Lower timeframes: 1-4 signals per day
• Mid timeframes: 0-2 signals per day
• Higher timeframes: 1-3 signals per week
Note: Frequency also depends on market volatility and trending vs. ranging conditions.
Example - Kinetic Scalper Trade Sequence
Here's an example showing the complete trade lifecycle with all dashboard transitions, annotations, and descriptions.
INSTRUMENT & TIMEFRAME DETAILS
Symbol: Nifty 50 Index (NSE)
Date: December 15, 2025
Session: London session (active trading hours)
Instrument Type: Index (auto-detected)
TRADE SEQUENCE BREAKDOWN
SCREENSHOT 1: Pre-Signal Setup Building (Image 1)
Time: ~12:00-14:30 UTC+5:30(approx.)
Price Action: Uptrend showing signs of exhaustion near 26,200
Market State: Price at session highs
Main Dashboard (Top Right):
- Bias: LEAN SHORT
- Pulse: 58.9 (approaching overbought)
- Volatility: NORMAL
- Trend: TRANSITIONING
- Session: LONDON (favorable timing)
- Volume: 0.98x (slightly below average)
- HTF: BULLISH (caution for counter-trend)
- Best Score: 9/5 (Short score building)
- PDH/PDL: 26098.25 / 25938.95
Trade Analysis Panel (Bottom Left):
- Status: NO ACTIVE TRADE
- Long Score: 5/5 (RDY)
- Short Score: 9/5 (RDY)
- Panel Message: "Short pattern developing - score: 9"
Description :
Setup Development Phase: The indicator identifies a potential short opportunity as price reaches the previous day's high. The short confluence score has climbed to 9/15 points, meeting the 'Balanced' sensitivity threshold for a Grade B signal. Notice the 'LEAN SHORT' bias and the Kinetic Pulse reading of 58.9 approaching overbought territory. The Trade Analysis panel shows 'Short pattern developing' with 9/5 factors aligned. Key factors: momentum approaching reversal zone, price at resistance (PDH), and London session providing favorable conditions.
SCREENSHOT 2: Signal Generated & Trade Entered (Image 2)
Time: ~13:00 UTC+5:30 (signal bar)
Entry Price: 26,184.65
Signal Grade: Grade
Main Dashboard (Top Right):
- Trade: SHORT
- Entry: 26184.65
- P/L: 5.95 pts | +0.2R (early positive movement)
- TP1: 26157.00 (33.2 pts away)
- TP2: 26129.35 (60.84 pts away)
- Stop: 26212.30 (22.1 pts away)
- Bars: 1 (just entered)
Trade Analysis Panel (Bottom Left):
- Header: TRADE ANALYSIS
- Status Bar: "Conditions mixed - improving 57%"
- Confidence: 57% RISING
- Factor Breakdown:
- Momentum: -4 (velocity not yet aligned)
- Position: +4 (slight profit)
- Volume: +2 = (volume present)
- HTF Align: +2 = (not strongly aligned)
- Target: +0 - (far from TP)
- Stop Dist: +3 - (good distance)
- Bottom Status: "Conditions mixed - Monitoring"
- Disclaimer: "Analysis only - Not financial advice"
Description:
Signal Activation: A Grade A short signal triggers at 26,184.65 after the short confluence score reached qualifying levels. The indicator places a structure-based stop loss at 26,212.30 (27.65 points risk) with dual targets at 1:1 and 1:2 risk-reward ratios.
The Trade Analysis Panel immediately begins monitoring with an initial confidence score of 57% - classified as 'MIXED SIGNALS' but showing a 'RISING' trend. Factor analysis reveals: momentum not yet aligned (-4 points as price just reversed), position slightly favorable (+4 points already +0.2R), volume adequate (+2), HTF showing weak alignment (+2 as we're counter-trend), stop well-placed (+3), but targets still distant (0 points).
Notice how the Main Dashboard switches from market scanning mode to active trade tracking, now displaying entry price, live P/L in both points (5.95 pts) and R-multiples (+0.2R), and distances to all key levels. The analysis panel provides real-time factor scoring to help monitor trade health.
SCREENSHOT 3: TP1 Hit - Trade Performing Well (Image 3)
Time: ~14:20 UTC+5:30(approx)
Price: ~26,154 (TP1 zone)
Bars in Trade: 29
Main Dashboard (Top Right):
- Trade: SHORT
- Entry: 26184.65
- P/L: 30.85 pts | +1.12R (excellent progress)
- TP1: HIT (displayed in green)
- TP2: 26129.35 (24.44 pts away)
- Stop: 26212.30 (58.5 pts away - well protected)
- Bars: 29
Trade Analysis Panel (Bottom Left):
- Header: TRADE ANALYSIS
- Status Bar: "Multiple factors positive"
- Confidence: 78% RISING
- Factor Breakdown:
- Momentum: +8 = (ALIGNED)
- Position: +8 + (strong profit zone)
- Volume: +2 + (continued support)
- HTF Align: +8 = (now strongly aligned)
- Target: +10 + (TP1 achieved, approaching TP2)
- Stop Dist: +3 + (excellent cushion)
- Bottom Status: "Multiple factors positive"
- Visual State: Green background (FACTORS ALIGNED state)
Description:
Trade Execution Phase - First Target Achieved: After 29 bars , price reaches the first take-profit target at 26,157.00. The ' ' marker confirms partial profit taking. Current P/L shows +30.85 points (+1.12R), exceeding the initial 1:1 risk-reward.
The Trade Analysis Panel shows dramatic improvement - confidence has surged to 78% (FACTORS ALIGNED state) with most factors now positive:
- Momentum factor improved to +8 (velocity aligned with trade direction)
- Position factor at +8 (over +1R profit zone)
- HTF Align jumped to +8 (higher timeframe now confirming the move)
- Target factor maxed at +10 (TP1 achieved, TP2 within reach)
- Stop Distance at +3 (58.5 points cushion providing safety)
Notice the panel status displays 'Multiple factors positive' with a green-tinted background, indicating optimal trade conditions. The confidence trend shows 'RISING' suggesting continued momentum. With TP1 secured and only 24.44 points to TP2, the trade is well-positioned for a full 1:2R win.
SCREENSHOT 4: TP2 Reached - Trade Complete (Image 4)
Time: ~15:00+ UTC+5:30
Final Exit: 26,129.35 (TP2)
Final Result: Full TP2 win
Main Dashboard (Top Right):
- Bias: NEUTRAL (reverted to scanning mode)
- Pulse: 45.2 (returned to neutral zone)
- Volatility: NORMAL
- Trend: TREND DOWN (confirmed the move)
- Session: LONDON
- Volume: 1.26x (increased as move developed)
- HTF: BEARISH (fully aligned post-trade)
- Best Score: 5/5 (neutral after completion)
Trade Analysis Panel (Bottom Left):
- Status: NO ACTIVE TRADE (reverted)
- Long Score: 5/5 (RDY)
- Short Score: 5/5 (RDY)
- Panel Message: "Scanning - prime session active"
- Light blue/cyan background (back to scanning mode)
Description:
Trade Completion - Full Target Achieved: The short trade reaches its second take-profit target at 26,129.35, securing a complete 1:2 risk-reward win. The ' ' marker confirms the exit. Final results:
- Entry: 26,184.65
- Exit: 26,129.35
- Profit: 55.30 points (approximately +2.0R)
- Outcome: Full TP2 success
Post-Trade Analysis: After trade closure, the indicator automatically returns to market scanning mode. The Main Dashboard reverts to showing market conditions rather than trade metrics. Notice how the 'Trend' now displays 'TREND DOWN' - confirming the move we captured. Volume increased to 1.26x during the winning move, validating the signal quality.
The Trade Analysis Panel switches back to 'NO ACTIVE TRADE' status and resumes displaying long/short setup scores. The confidence-based factor monitoring was instrumental throughout the trade:
- Initial entry at 57% confidence (MIXED SIGNALS)
- Peak confidence of 78% at TP1 (FACTORS ALIGNED)
- Real-time factor updates helped confirm trade validity
This example demonstrates the indicator's complete workflow: setup identification → signal generation → entry execution → live trade monitoring → systematic exit at targets.
KEY FEATURES DEMONSTRATED
1. Dual Dashboard System
- Main Dashboard: Market conditions (scanning) → Trade metrics (active position)
- Analysis Panel: Setup scores (scanning) → Factor-based confidence (in-trade)
2. Visual Trade Management
- Color-coded entry zones (yellow)
- Risk levels clearly marked (red dashed stop)
- Profit targets with R:R ratios labeled
- Achievement markers ( , )
3. Real-Time Factor Analysis
- 6-factor scoring system (Momentum, Position, Volume, HTF, Target, Stop Dist)
- Confidence percentage with trend indicators
- State machine (MIXED → FACTORS ALIGNED)
- Hysteresis prevents false state changes
4. Risk Management
- Structure-based stop placement (respects swing highs)
- Multiple take-profit levels (1:1 and 1:2 R:R)
- Live P/L tracking in points and R-multiples
- Distance monitoring to all key levels
This complete example showcases the indicator's progression from setup identification through trade completion, demonstrating how the dual-dashboard system and factor-based analysis provide continuous trade guidance. The structured stop-loss and dual-target approach delivered the planned 1:2 risk-reward ratio with systematic, rule-based execution.
ALERT SYSTEM
The indicator includes 9 built-in alert conditions:
SIGNAL ALERTS:
→ High-Grade Long Signal (A+)
• Triggers only on A+ long signals
• For traders who want only the highest-quality longs
• Message: "KINETIC SCALPER: LONG @ "
→ High-Grade Short Signal (A+)
• Triggers only on A+ short signals
• For traders who want only the highest-quality shorts
• Message: "KINETIC SCALPER: SHORT @ "
→ Long Signal
• Triggers on ANY qualified long signal (A+, A, or B)
• For traders who want all long opportunities
• Message: "KINETIC SCALPER: LONG @ "
→ Short Signal
• Triggers on ANY qualified short signal
• For traders who want all short opportunities
• Message: "KINETIC SCALPER: SHORT @ "
TRADE MANAGEMENT ALERTS:
→ TP1 Hit
• Triggers when first profit target is reached
• Useful for partial profit taking notifications
• Message: "KINETIC SCALPER: TP1 REACHED"
→ TP2 Reached
• Triggers when second profit target is reached
• Trade is complete, full win achieved
• Message: "KINETIC SCALPER: TP2 REACHED"
→ Stop Loss Hit
• Triggers when stop loss is reached
• Important for trade management and risk tracking
• Message: "KINETIC SCALPER: STOP LOSS"
ANALYSIS STATE ALERTS:
→ Analysis State: Negative Bias
• Triggers when factor analysis enters "Negative Bias" state
• Warning that trade conditions are deteriorating
• Consider reducing position or preparing to exit
• Message: "KINETIC SCALPER: Analysis state changed to NEGATIVE BIAS"
→ Analysis State: Factors Weakening
• Triggers when factor analysis enters "Factors Weakening" state
• Caution that confluence is diminishing
• Monitor trade closely
• Message: "KINETIC SCALPER: Analysis state changed to FACTORS WEAKENING"
HOW TO SET UP ALERTS:
1. Click the "Create Alert" button in TradingView
2. Condition: Select "Kinetic Scalper "
3. Choose your desired alert from the dropdown
4. Configure your alert options:
→ Once Per Bar Close (recommended for non-repainting)
→ Frequency: Once Per Bar Close or Only Once
5. Set expiration and notification methods (popup, email, webhook, etc.)
6. Create alert
RECOMMENDED ALERT STRATEGY:
For active traders:
→ Set "Long Signal" and "Short Signal" alerts for all opportunities
→ Set "TP1 Hit", "TP2 Reached", and "Stop Loss Hit" for trade management
→ Consider "Analysis State: Negative Bias" for trade monitoring
For selective traders:
→ Set only "High-Grade Long Signal (A+)" and "High-Grade Short Signal (A+)"
→ Focus on the absolute highest-quality setups
→ Set TP/SL alerts for position management
USAGE TIPS & BEST PRACTICES
SIGNAL SELECTION:
✓ GRADE MATTERS
→ A+ signals have statistically more confluence factors
→ If you're conservative, trade only A+ signals
→ B signals can work but require more discretion
✓ CONFLUENCE WITH YOUR ANALYSIS
→ Use this indicator as CONFIRMATION, not sole decision criteria
→ Combine with your own support/resistance analysis
→ Check for fundamental events (news, economic data)
→ Respect major round numbers and psychological levels
✓ SESSION TIMING (Forex)
→ Best signals often occur during London/NY overlap
→ Avoid signals 10 minutes before major news releases
→ Asian session signals can be valid but lower liquidity
✓ TIMEFRAME CONFLUENCE
→ If you get an A+ signal on 15m, check if 1H chart agrees
→ Higher timeframe confirmation adds conviction
→ Avoid signals that oppose the daily/4H trend
TRADE MANAGEMENT:
✓ POSITION SIZING
→ ALWAYS size positions so stop loss = 1-2% of account
→ Never risk more than you can afford to lose
→ Smaller position on B signals, standard on A, larger on A+ (within limits)
✓ PARTIAL PROFIT TAKING
→ Consider taking 50% off at TP1
→ Move stop to breakeven after TP1 hit
→ Let remaining position run to TP2
✓ TRAILING STOPS
→ The indicator doesn't auto-trail stops (manual decision)
→ After TP1, you might manually move stop to entry (breakeven)
→ Consider ATR-based trailing stop for runners
✓ WATCH THE ANALYSIS PANEL
→ If state changes to "Factors Weakening" while in profit, consider exit
→ "Negative Bias" during a trade is a strong warning
→ "Factors Aligned" confirms your trade thesis is still valid
RISK MANAGEMENT:
✓ NEVER IGNORE STOPS
→ The calculated stop is there for a reason
→ Moving stop further away increases risk exponentially
→ If stopped out, accept it and wait for next setup
✓ AVOID REVENGE TRADING
→ If you get stopped out, resist urge to immediately re-enter
→ Signal cooldown helps with this
→ Wait for next qualified signal
✓ RESPECT VOLATILITY WARNINGS
→ If indicator shows "EXTREME" volatility, signals are blocked for a reason
→ Don't force trades in chaotic conditions
→ Wait for regime to normalize
✓ CORRELATION RISK
→ Be aware of correlation if trading multiple pairs
→ EUR/USD and GBP/USD are highly correlated
→ Don't stack risk on correlated instruments
OPTIMIZATION:
✓ START WITH DEFAULTS
→ Default settings are well-tested
→ Don't over-optimize for recent market behavior
→ Give settings at least 20-30 trades before judging
✓ TIMEFRAME-SPECIFIC ADJUSTMENTS
→ Lower timeframes: Consider increasing Signal Distance to 3.0-4.0
→ Higher timeframes: ATR Stop Multiplier might go to 2.0-2.5
→ Crypto: Ensure Instrument Type is set to "Crypto" for proper stops
✓ SENSITIVITY CALIBRATION
→ Too many signals? Switch to Conservative
→ Missing good setups? Try Balanced or Aggressive
→ Quality > Quantity always
✓ KEEP A JOURNAL
→ Track which signal grades work best for you
→ Note which sessions produce best results
→ Review stopped trades for patterns
THINGS TO AVOID:
✗ DON'T chase signals after several bars have passed
✗ DON'T ignore the stop loss or move it further away
✗ DON'T overtrade by taking every B-grade signal
✗ DON'T trade during major news if you're not experienced
✗ DON'T use this as your only analysis tool
✗ DON'T expect 100% win rate (no indicator has this)
✗ DON'T risk more than 1-2% per trade regardless of signal grade
UNDERSTANDING THE METHODOLOGY
WHY VOLUME WEIGHTING?
Traditional momentum oscillators treat all price moves equally. A 10-point move on low volume is weighted the same as a 10-point move on high volume.
The Kinetic Pulse corrects this by:
→ Calculating volume ratio vs. 20-bar average
→ Applying square root transformation to volume ratio (prevents extreme weights)
→ Multiplying price changes by volume weight
→ Result: High-volume moves influence the oscillator more than low-volume noise
This helps filter false breakouts and emphasizes moves with participation.
WHY FISHER TRANSFORM?
Fisher Transform is a mathematical transformation that:
→ Normalizes probability distributions
→ Creates sharper turning points
→ Amplifies extremes while compressing the middle
→ Makes overbought/oversold levels more distinct
Applied to the Kinetic Pulse, it helps identify genuine extremes vs. noise.
WHY MULTI-OSCILLATOR DIVERGENCE?
Single-source divergence can give false signals. By requiring divergence confirmation across multiple oscillators (Kinetic Pulse, CCI, Stochastic), the system filters out:
→ Divergences caused by calculation quirks in one oscillator
→ Temporary momentum anomalies
→ False divergence on noisy, low-timeframe charts
Multiple sources confirming the same pattern increases reliability.
WHY ADAPTIVE PERIODS?
Fixed periods can be:
→ Too slow during high volatility (miss fast reversals)
→ Too fast during low volatility (generate noise)
The adaptive system:
→ Shortens period when ATR ratio > 1.3 (high volatility = need faster response)
→ Lengthens period when ATR ratio < 0.7 (low volatility = need noise filtering)
→ Keeps period in reasonable range (60% to 140% of base period)
→ Result: Oscillator adjusts to current market pace automatically
WHY HYSTERESIS IN STATE MACHINE?
Without hysteresis, the analysis state would flip-flop on every bar, creating:
→ Confusing, contradictory guidance
→ Analysis paralysis
→ Lack of actionable information
Hysteresis solves this by:
→ Using different thresholds to ENTER vs. EXIT a state
→ Example: Enter "Factors Aligned" at 72+ confidence, but don't exit until <62
→ This creates stable states that persist through minor fluctuations
→ Requires minimum commitment period (3 bars) before state changes
→ Overrides commitment for significant events (near TP/SL)
→ Result: Stable, trustworthy analysis that changes only when truly warranted
WHY CONFIDENCE SMOOTHING?
Raw factor scores fluctuate bar-by-bar based on momentary conditions. Smoothing:
→ Uses 5-period EMA on raw confidence scores
→ Filters out single-bar anomalies
→ Preserves genuine trends in confidence
→ Prevents false state transitions
→ Result: More reliable assessment of actual trade health
WHY INSTRUMENT-SPECIFIC PARAMETERS?
Different instruments have different characteristics:
→ Forex is highly liquid, respects technical levels well, standard ATR works
→ Crypto is extremely volatile, needs wider stops (1.8x) to avoid false stops
→ Indices respect session opens strongly, session weighting is important
→ Commodities fall in between
Auto-detection applies research-based multipliers automatically.
WHY STRUCTURE-BASED STOPS?
ATR-based stops can:
→ Place stop in middle of consolidation (easily hit)
→ Ignore obvious invalidation levels
→ Be too tight during expansion or too wide during contraction
Structure-based stops:
→ Use actual swing highs/lows (where traders actually place stops)
→ Add small ATR buffer to avoid stop hunting
→ Constrain within min/max ATR limits for safety
→ Result: Stops that respect market geometry while managing risk
DISCLAIMER & RISK WARNING
READ THIS CAREFULLY BEFORE USING THIS INDICATOR
This indicator is provided for EDUCATIONAL and INFORMATIONAL purposes only.
❌ NOT FINANCIAL ADVICE
This indicator does NOT constitute financial advice, investment recommendations, or solicitation to buy or sell any financial instrument. All information is for educational purposes only.
❌ NO GUARANTEES
→ Past performance does NOT guarantee future results
→ No indicator can predict future price movements with certainty
→ Signal grades represent confluence, NOT win probability
→ A+ signals can lose, B signals can win - markets are probabilistic
❌ SUBSTANTIAL RISK
Trading financial instruments involves SUBSTANTIAL RISK of loss:
→ You can lose your entire investment
→ Leveraged trading amplifies both gains AND losses
→ Never trade with money you cannot afford to lose
→ Never risk more than 1-2% of your account per trade
❌ YOUR RESPONSIBILITY
→ All trading decisions are YOUR responsibility
→ You must conduct your own analysis before entering trades
→ Consult a licensed financial advisor before trading
→ Understand the risks specific to your jurisdiction and situation
→ Only trade with capital you can afford to lose completely
❌ NO HOLY GRAIL
→ This indicator is a TOOL, not a complete trading system
→ It should be used as part of a broader analysis framework
→ Combine with your own technical analysis, risk management, and judgment
→ No indicator works 100% of the time in all market conditions
❌ ANALYSIS PANEL DISCLAIMER
The "Trade Analysis Panel" provides ALGORITHMIC ANALYSIS of market factors.
→ It does NOT provide investment advice or recommendations
→ Factor scores are mathematical calculations, not predictions
→ Guidance messages are informational, not directives
→ All trading decisions remain your responsibility
❌ BACKTESTING LIMITATIONS
→ This is an indicator, not a strategy, so no backtesting results are provided
→ Any backtesting you perform includes hindsight bias and optimization bias
→ Historical performance does not indicate future performance
→ Slippage, commissions, and real-world execution differ from backtests
❌ MARKET CONDITIONS
→ This indicator performs differently in trending vs. ranging markets
→ Extreme volatility can produce false signals or whipsaws
→ Low liquidity periods increase execution risk
→ Major news events can invalidate technical analysis
BY USING THIS INDICATOR, YOU ACKNOWLEDGE:
→ You have read and understood this disclaimer
→ You accept full responsibility for your trading decisions
→ You understand the substantial risks involved in trading
→ You will not hold the author liable for any losses incurred
→ You are using this tool as part of your own due diligence process
KEY FEATURES SUMMARY
✅ Volume-Weighted Kinetic Pulse Engine (proprietary momentum calculation)
✅ 15-Factor Confluence Scoring System (graded signals: A+, A, B)
✅ Multi-Oscillator Divergence Detection (Pulse + CCI + Stochastic)
✅ Higher Timeframe Trend Alignment Filter
✅ Adaptive Period Adjustment (volatility-responsive)
✅ Instrument-Aware Calibration (Forex, Crypto, Indices, Commodities)
✅ Structure-Based Stop Loss Calculation (respects swing highs/lows)
✅ Automated Trade Tracking (entry, stop, TP1, TP2, P/L)
✅ Real-Time Factor Analysis State Machine (5-state system with hysteresis)
✅ Session Awareness (Asian, London, New York, Overlap)
✅ Volatility Regime Detection (blocks signals in extreme conditions)
✅ Choppiness Filter (reduces signals in ranging markets)
✅ Volume Confirmation (relative volume and delta analysis)
✅ Clean Air Check (validates clear path to targets)
✅ Comprehensive Dashboards (market conditions + trade analysis)
✅ Customizable Display (3 signal styles, color themes, positioning)
✅ 9 Built-In Alert Conditions (signals, TP/SL hits, state changes)
✅ Fully Non-Repainting (barstate.isconfirmed, lookahead_off)
✅ Previous Day Levels (PDH/PDL reference lines)
✅ Mobile-Friendly Compact Mode (for smaller screens)
TECHNICAL SPECIFICATIONS
→ Pine Script Version: v6
→ Indicator Type: Overlay (displays on price chart)
→ License: Mozilla Public License 2.0
→ Copyright: BULLBYTE
→ Object Limits: 300 labels, 100 lines, 50 boxes
→ Memory Management: Automatic cleanup system (FIFO queue)
→ Repainting: Non-repainting (signals confirmed on bar close)
→ Timeframe Support: All timeframes (1s to Monthly)
→ Instrument Support: Forex, Crypto, Indices, Commodities, Stocks
→ HTF Data Handling: lookahead_off with historical offset
VERSION HISTORY
v1.0 - Initial Release
→ Kinetic Pulse engine with volume weighting and Fisher Transform
→ 15-factor confluence scoring system
→ Trade analysis state machine with hysteresis
→ Automated trade tracking and monitoring
→ Dual dashboard system (market conditions + factor analysis)
→ 9 alert conditions
→ 3 signal display styles
→ Instrument-aware calibration
→ Full risk management framework
WHO IS THIS INDICATOR FOR?
IDEAL FOR:
✓ Scalpers and day traders seeking high-confluence reversal entries
✓ Swing traders who want quality over quantity
✓ Traders who appreciate systematic, rules-based analysis
✓ Multi-timeframe traders who value HTF confirmation
✓ Forex traders who respect session timing
✓ Crypto traders needing volatility-adjusted parameters
✓ Traders who want complete trade management (entry, stop, targets)
✓ Analytical traders who want transparency in signal generation
NOT IDEAL FOR:
✗ Traders seeking a "set and forget" holy grail system
✗ Traders who don't want to learn the methodology
✗ Traders unwilling to accept losing trades as part of the process
✗ Traders who need constant signals (this is a quality-focused system)
✗ Traders who ignore risk management
FINAL THOUGHTS
The Kinetic Scalper is the result of extensive research into momentum behavior, volume confirmation, and multi-factor confluence analysis. It's designed to identify high-probability reversal setups while maintaining strict risk management and providing complete transparency.
This is NOT a magic solution. It's a sophisticated TOOL that requires:
→ Understanding of the methodology
→ Proper risk management discipline
→ Patience to wait for quality setups
→ Willingness to accept losses as part of trading
→ Integration with your own analysis and judgment
Used properly as part of a complete trading plan, the Kinetic Scalper can help you identify high-confluence opportunities and manage trades systematically.
Remember: Quality over quantity. Discipline over emotion. Risk management over everything.
Trade smart. Trade safe.
© 2025 BULLBYTE | Kinetic Scalper v1.0 | For Educational Purposes Only
ICT/SMC DOL Detector PRO (Final)This indicator is designed to operate only on the 1-hour timeframe.
The ICT/SMC DOL Detector PRO is an educational indicator designed to identify and visualize Draw on Liquidity (DOL) levels across multiple time-frames. It tracks unmitigated daily highs and lows, clusters them into zones, and calculates confidence scores based on multiple factors including time decay, cluster size, and time-frame alignment.
This indicator is based on ICT (Inner Circle Trader) concepts and liquidity theory, which suggests that price tends to seek out areas of concentrated unfilled orders before reversing or continuing its trend.
What is a DOL (Draw on Liquidity)?
A Draw on Liquidity represents a daily high or low that has not been revisited (mitigated) by price. These levels act as "magnets" that draw price toward them because:
1. They represent untapped liquidity pools where unfilled orders exist
2. Market makers and institutions often target these levels to fill large orders
3. Price is drawn to these zones to clear pending orders
4. They can serve as potential reversal or continuation zones once liquidity is taken
Methodology
1. Level Tracking
The indicator monitors daily session highs and lows on the 1-hour time-frame, tracking:
- Session high price and time of formation
- Session low price and time of formation
- Whether each level has been breached (mitigated)
- Time elapsed since level formation
2. Clustering Algorithm
Unmitigated levels within a defined tolerance (default 0.5% of price) are grouped together to identify zones where multiple DOLs cluster. Larger clusters indicate stronger liquidity pools.
3. Confidence Scoring (The "AI" Logic)
Each DOL receives a confidence score (0-100%) based on three weighted factors. This is the core "AI" intelligence of the indicator:
**Factor 1: Cluster Size (50% weight)**
- Counts how many unmitigated levels exist within 0.5% of the price zone
- Formula: (levels_in_cluster / total_unmitigated_levels) × 50
- Logic: More unfilled orders clustered together = stronger liquidity pool = higher confidence
- Example: If 5 out of 10 total unmitigated levels cluster at 27,500, cluster score = (5/10) × 50 = 25%
**Factor 2: Time Decay (25% weight)**
- Calculates age of the level since formation
- Fresh levels (< 1 week old): Full 25% score
- Aging penalty: Loses 5% per week of age
- Maximum penalty: 25% (very old levels = 0% time score)
- Formula: max(0, 25 - (weeks_old × 5))
- Logic: Recent liquidity is more relevant than old liquidity that price has ignored for months
**Factor 3: Timeframe Alignment (25% weight)**
- Checks how many timeframes (1H, 4H, D1, W1) point in the same direction
- If multiple timeframes identify DOLs on the same side (all bullish or all bearish): Higher score
- If mixed signals: Lower score
- Formula: (aligned_timeframes / total_timeframes) × 25
- Logic: When multiple timeframes agree, the liquidity zone is validated across different time perspectives
**Total Confidence Score:**
```
Confidence = Cluster_Score + Time_Score + Alignment_Score
= (0-50%) + (0-25%) + (0-25%)
= 0-100%
```
**Example Calculation:**
```
DOL at 27,500:
- 6 out of 12 unmitigated levels cluster here → (6/12) × 50 = 25%
- Level is 2 weeks old → 25 - (2 × 5) = 15%
- 3 out of 4 timeframes bullish toward this level → (3/4) × 25 = 18.75%
- Total Confidence = 25% + 15% + 18.75% = 58.75% ≈ 59%
```
This mathematical approach removes subjectivity and provides objective, data-driven confidence scoring.
4. Multi-Timeframe Analysis
The indicator analyzes DOLs across four timeframes:
- **1H:** Intraday levels (fastest reaction)
- **4H:** Short-term swing levels
- **Daily:** Intermediate-term levels
- **Weekly:** Long-term structural levels
For each timeframe, it identifies:
- Highest confidence unmitigated high
- Highest confidence unmitigated low
- Directional bias (bullish if high > low confidence, bearish if low > high confidence)
5. Primary DOL Selection (AI Auto-Selection Logic)
When "Show AI DOL" is enabled, the indicator uses an automated selection algorithm to identify the most important targets:
**Step 1: Collect All Candidates**
The algorithm gathers all identified DOLs from all timeframes (1H, 4H, D1, W1) that meet minimum criteria:
- Must be unmitigated (not yet swept)
- Must have confidence score > 0%
- Must have at least 1 level in cluster
**Step 2: Calculate Confidence for Each**
Each candidate DOL receives its confidence score using the three-factor formula described above (Cluster + Time + Alignment).
**Step 3: Sort by Confidence**
All candidates are ranked from highest to lowest confidence score.
**Step 4: Select Primary and Secondary**
- **P1 (Primary DOL):** The DOL with the absolute highest confidence score
- **P2 (Secondary DOL):** The DOL with the second highest confidence score
**Why This Matters:**
Instead of manually scanning multiple timeframes and guessing which level is most important, the AI objectively identifies the two highest-probability liquidity targets based on quantifiable data.
**Example AI Selection:**
```
Available DOLs:
- 1H High: 27,400
- 4H High: 27,500
- D1 High: 27,500 ← P1 (Highest)
- W1 High: 27,650 ← P2 (Second Highest)
- 1H Low: 26,800
- D1 Low: 26,500
AI Selection:
P1 = 27,500 (Daily High with 92% confidence)
P2 = 27,650 (Weekly High with 88% confidence)
```
This provides a data-driven target selection rather than subjective manual interpretation. The AI removes emotion and bias, selecting targets based purely on mathematical probability.
Features
Why "AI" DOL?
The term "AI" in this indicator refers to the automated algorithmic selection process, not machine learning or neural networks. Specifically:
**What the AI Does:**
- Automatically evaluates all available DOLs across all timeframes
- Applies a weighted scoring algorithm (Cluster 50%, Time 25%, Alignment 25%)
- Objectively ranks DOLs by probability
- Selects the top 2 highest-confidence targets (P1 and P2)
- Removes human bias and emotion from target selection
**What the AI Does NOT Do:**
- It does not use machine learning or train on historical data
- It does not predict future price movements
- It does not adapt or "learn" over time
- It does not guarantee accuracy
The "AI" is simply an automated decision-making algorithm that applies consistent mathematical rules to identify the most statistically significant liquidity zones. Think of it as a "smart filter" rather than artificial intelligence in the traditional sense.
Visual Components
**Daily Level Lines:**
- Green lines: Unmitigated (not yet breached) levels
- Red lines: Mitigated (already breached) levels
- Dots at origin point showing where level was formed
- X marker when level gets breached
- Lines extend forward to show projection
**DOL Labels:**
- Display timeframe (1H, 4H, D1, W1) or "DOL" for AI selection
- Show confidence percentage in brackets
- Color-coded by timeframe:
- Lime: AI DOL (Smart selection)
- Aqua: 1-hour timeframe
- Blue: 4-hour timeframe
- Purple: Daily timeframe
- Orange: Weekly timeframe
**Info Box (Top Right):**
Displays comprehensive liquidity metrics:
- Total levels tracked
- Active (unmitigated) levels count
- Cleared (mitigated) levels count
- Flow direction (BID PRESSURE / OFFER PRESSURE)
- Most recent sweep
- Primary and Secondary DOL targets
- Multi-timeframe bias analysis
- Overall directional bias
Settings Explained
**Daily Levels Group:**
- Show Daily Highs/Lows: Toggle visibility of all daily level tracking
- Unbreached Color: Color for levels not yet hit
- Breached Color: Color for levels that have been swept
- Show X on Breach: Display marker when level is breached
- Show Dot at Origin: Display marker at level formation point
- Line Width: Thickness of level lines (1-5)
- Line Extension: How many bars forward to project (1-24)
- Max Days to Track: Historical lookback period (5-200 days)
**DOL Settings Group:**
- Cluster Tolerance %: Price range to group DOLs (0.1-2.0%)
- Show Price on Labels: Display actual price value on labels
- Backtest Mode: Only show recent labels for clean historical analysis
- Labels Lookback: Number of bars to show labels when backtesting (10-500)
**Info Box Group:**
- Show Info Box: Toggle info panel visibility
**DOL Toggles Group:**
- Show AI DOL: Display smart auto-selected primary target
- Show 1HR DOL: Display 1-hour timeframe DOLs
- Show 4HR DOL: Display 4-hour timeframe DOLs
- Show Daily DOL: Display daily timeframe DOLs
- Show Weekly DOL: Display weekly timeframe DOLs
**Advanced Group:**
- Manual Mode: Simplified display showing only daily high/low clusters
How to Use This Indicator
Educational Application
This indicator is intended for educational purposes to help traders:
1. **Understand Liquidity Concepts:** Visualize where unfilled orders may exist
2. **Identify Key Levels:** See where price may be drawn to
3. **Analyze Market Structure:** Understand how price interacts with liquidity
4. **Study Multi-Timeframe Alignment:** Observe when multiple timeframes agree
5. **Learn ICT Concepts:** Apply liquidity theory in practice
Interpretation Guidelines
**BID PRESSURE (Flow):**
When lows are being swept more than highs, it suggests:
- Sell-side liquidity being taken
- Potential for upward move to unfilled buy-side liquidity
- Market may be clearing the way for a bullish move
**OFFER PRESSURE (Flow):**
When highs are being swept more than lows, it suggests:
- Buy-side liquidity being taken
- Potential for downward move to unfilled sell-side liquidity
- Market may be clearing the way for a bearish move
**Confidence Scores:**
- 90-100%: Very high probability zone (strong cluster, recent, aligned)
- 80-89%: High probability zone (good cluster, relatively recent)
- 70-79%: Moderate probability zone (decent cluster or older)
- 60-69%: Lower probability zone (small cluster or very old)
- Below 60%: Weak zone (minimal confluence)
**Timeframe Analysis:**
- All timeframes LONG: Strong bullish alignment
- All timeframes SHORT: Strong bearish alignment
- Mixed: Conflicting signals, exercise caution
- Higher timeframes (D1, W1) carry more weight than lower (1H, 4H)
**DIRECTIONAL Indicator:**
- BULLISH: Overall bias suggests upward movement toward buy-side DOLs
- BEARISH: Overall bias suggests downward movement toward sell-side DOLs
- NEUTRAL: No clear directional bias, conflicting signals
Practical Application Examples
**Example 1: Bullish Setup**
```
Flow: BID PRESSURE (lows being swept)
P1: 27,500 (price above current market)
D1: LONG 27,500
W1: LONG 27,650
DIRECTIONAL: BULLISH
```
Interpretation: Price has cleared sell-side liquidity. High confidence buy-side DOL at 27,500. Daily and Weekly timeframes aligned bullish. Watch for move toward 27,500 target.
**Example 2: Bearish Setup**
```
Flow: OFFER PRESSURE (highs being swept)
P1: 26,200 (price below current market)
D1: SHORT 26,200
W1: SHORT 26,100
DIRECTIONAL: BEARISH
```
Interpretation: Price has cleared buy-side liquidity. High confidence sell-side DOL at 26,200. Daily and Weekly timeframes aligned bearish. Watch for move toward 26,200 target.
**Example 3: Mixed Signals - Wait**
```
Flow: BID PRESSURE
P1: 26,800
D1: LONG 27,000
W1: SHORT 26,200
DIRECTIONAL: NEUTRAL
```
Interpretation: Conflicting signals. Flow suggests up, but Weekly bias is down. Confidence scores moderate. Better to wait for clarity.
Important Considerations
This Indicator Does NOT:
- Predict the future
- Guarantee profitable trades
- Provide buy/sell signals
- Replace proper risk management
- Work in isolation without other analysis
This Indicator DOES:
- Visualize liquidity concepts
- Identify potential target zones
- Show timeframe alignment
- Calculate objective confidence scores
- Help understand market structure
Proper Usage:
1. Use as one component of a complete trading strategy
2. Combine with price action analysis
3. Confirm with other technical indicators
4. Consider fundamental factors
5. Always use proper risk management
6. Backtest any strategy before live trading
Risk Disclaimer
**FOR EDUCATIONAL PURPOSES ONLY**
This indicator is for educational purposes only. Trading financial markets involves substantial risk of loss. Past performance does not guarantee future results. Always conduct your own research and consult with a financial advisor before making trading decisions.
**Important Limitations:**
- No indicator is 100% accurate, including the AI selection
- The "AI" is an automated algorithm, not predictive artificial intelligence
- DOL levels can be swept and price can continue in the same direction
- Confidence scores are mathematical calculations, not predictions or probabilities of success
- High confidence does not mean guaranteed profit
- Markets can remain irrational longer than you can remain solvent
- Always use stop losses and proper position sizing
**Understanding the AI Component:**
The AI auto-selection feature uses a fixed mathematical formula to rank DOLs. It does not:
- Predict where price will go
- Learn from past performance
- Adapt to market conditions
- Guarantee any level of accuracy
The confidence score represents the mathematical strength of a liquidity cluster based on objective factors (cluster size, recency, timeframe alignment), NOT a probability of the trade succeeding.
**Risk Warning:**
Trading is risky. Most traders lose money. This indicator cannot change that fundamental reality. Use it as an educational tool to understand market structure, not as a trading signal or system.
Technical Requirements
- **Timeframe:** Best used on 1-hour charts (required for accurate daily level tracking)
- **Markets:** Works on any market (forex, crypto, stocks, futures, indices)
- **Updates:** Real-time calculation on each bar close
- **Resources:** Uses max 500 lines and 500 labels (TradingView limits)
Backtesting Features
The indicator includes "Backtest Mode" to keep historical charts clean:
- When enabled, only shows labels from recent bars
- Adjustable lookback period (10-500 bars)
- All lines remain visible
- Helps review past setups without clutter
To use:
1. Enable "Backtest Mode" in settings
2. Adjust "Labels Lookback" to desired period
3. Review historical price action
4. Disable for live trading
Credits and Methodology
This indicator implements concepts from:
- ICT (Inner Circle Trader) liquidity theory
- Smart Money Concepts (SMC)
- Order flow analysis
- Multi-timeframe analysis principles
The clustering algorithm, confidence scoring, and timeframe synthesis are original implementations designed to quantify and visualize these concepts.
Version History
**v1.0 - Initial Release**
- Multi-timeframe DOL detection
- Confidence scoring system
- Info box with liquidity metrics
- Backtest mode for clean charts
- Black/white professional theme
Support and Updates
For questions, feedback, or suggestions, please use the TradingView comments section. Updates and improvements will be released as needed based on user feedback and market evolution.
**Remember:** This is an educational tool. Successful trading requires knowledge, discipline, risk management, and continuous learning. Use this indicator to enhance your understanding of market structure and liquidity, not as a standalone trading system.
TradeChartist Spotter ™TradeChartist Spotter is a extremely well designed Trader's toolkit that packs a range of trading indicators like MACD, RSI, MA/MA-Crosses and Price-Volume Trend Oscillator, along with visual trade spotting tools like Symbol Tracker, MACD Trend Shadow plot and Coloured Bars, including a handy information Dashboard.
===================================================================================================================
™TradeChartist Spotter Features:
1. MACD
MACD is an essential indicator for any trader to track trend strength and momentum of asset prices. Spotter offers 3 MACD options - SMA, EMA and Zero-Lag EMA . Since MACD is based on moving averages, it is inherently a lagging indicator and may not work well when there is no trend strength or when the market is choppy. It is for this reason Spotter offers the option of Overall Trend Shadow and also the option to display Zero-Lag Trend Shadow on normal MACD based on SMA or EMA. This is based on the average of MACD and Signal plots.
Spotter's default MACD settings are 13/34/13, but this can be changed to the classic settings of 12/26/9 and the user can enable or disable the various elements of the MACD based on their preference.
The Dashboard on the MACD Spotter offers information on the symbol tracked, settings used and also the close price of the asset. This is really useful especially when tracking a different symbol than the current price chart symbol. Note that the actual MACD plot also will be of the symbol tracked if it is not the same as price chart symbol.
Using Zero-Lag Trend Shadow on normal SMA/EMA MACD histogram helps spot trend changes early. It is recommended to test different MACD settings on asset traded to suit trading style and frequency.
If MACD Histogram is disabled to see the Overall Trend better, make sure to switch back on as it should not be confused with the main MACD histogram which tracks the distance between the MACD and Signal plots.
2. RSI
RSI is the classic technical indicator that helps track the price magnitude and velocity of the asset's price movement. It helps spot Oversold and Overbought areas easily as it oscillates between 0 and 100, even though values below 10 and values above 90 are almost never seen. By using a upper band and a lower band plot, it is possible to track the strength of the up or down move.
Spotter's default RSI settings are ohlc4/14/5. EMA smoothing of 5 is used to eliminate the noise, but these can be changed to suit user's preference. The default Upper Band is 60 and Lower Band is 40 in the settings, as price moves above 60 RSI tend to be bullish and price moves below 40 tend to be bearish. This can be changed to 70/30 or 80/20 etc. based on how RSI is being used by the user.
RSI strength can also be visualised on the price bars using Spotter's Coloured Bars. The bar colours can be inverted to help traders see the price action differently.
RSI Dashboard also helps track another symbol, it's RSI value and close price to help the user track another symbol on the same chart. Note that the actual RSI plot also will be of the symbol tracked if it is not the same as price chart symbol.
3. MA/MA-Crosses
Two Moving averages (SMA, EMA or Zero-Lag EMA) can be plotted with MA Crosses using the MA/MA-Crosses Spotter.
The MACD input of Fast MA Length and Slow MA Length is used to plot the MA's. To plot just one MA, same value can be entered in both MA length boxes in the settings.
The plots can be merged with the main price chart by using Move Pane Above and by merging the scales into one.
The Dashboard also helps track another symbol, it's MA plots and close price to help the user track another symbol on the same chart. Note that the actual MA plots also will be of the symbol tracked if it is not the same as price chart symbol.
4. Price-Volume Trend Oscillator
Spotter converts the Price Volume Trend (PVT) into an Oscillator, as it helps spot divergences and makes it easy to plot PVT strength as coloured bars on main price chart.
No user input required for this Oscillator plot. Note: Some Symbols don't have volume information and hence PVT Oscillator will not work on them.
PVT Oscillator Dashboard displays current bar volume (if available) along with the close price. Similar to other plots in the Spotter, the Oscillator is of the symbol tracked if its not the same as price chart symbol.
5. Useful Extras
Coloured Bars - Paints price bars with strength and intensity based on indicator used. Bar Colours can be inverted by enabling Invert Bar Colors option from Spotter settings.
Five Colour Themes - Classic, Acute Classic, Effulgence, Firefly and Hallucination
Background colour - Same as bar colour strength, but painted subtly in the indicator background.
===================================================================================================================
Note:
Alerts can be created using the name of the plot under Alert Condition for Spotter - ™TradeChartist crossing above/below etc based on the type of alert the user wants to get.
The indicator does not repaint. Alerts may display potential repaint warning, but this is because the code uses bar index for the Dashboard. For confidence in the indicator, it can be tested using bar replay to make sure the real-time and bar replay trade entries and plots stay on the same bar/timestamp.
™TradeChartist Spotter can be connected to ™TradeChartist Plug and Trade (Premium Script - not free) to generate Trade Entries, Targets, Sop Loss plots etc and to create all types of alerts. Example chart below using LINK-USDT.
===================================================================================================================
Example Charts
1. BTC-USDT 1 hr chart showing MACD with classic settings 12/26/9 on top pane with normal Overall Trend Shadow and the bottom pane with exact same settings with Zero-Lag Overall Trend Shadow.
2. XAU-USD 4 hr chart showing MACD (13/55/34) using Zero-Lag EMA.
3.ADA-USDT 1 hr chart with Price-Volume Trend Oscillator - Useful for confirming divergences and trade decisions based on volume.
4. SPX 15m chart with RSI (ohlc4,14,5) in bottom pane and 5/34 MA cross Spotter on Price Chart with Dashboard.
5. GBP-USD 1 hr chart with Spotter tracking MACD (13/89/34) of DXY (Different Symbol from GBP-USD on chart)
===================================================================================================================
Best Practice: Test with different settings first using Paper Trades before trading with real money
This is a free to use indicator.
===================================================================================================================
Chronos Reversal Labs - SPChronos Reversal Labs - Shadow Portfolio
Chronos Reversal Labs - Shadow Portfolio: combines reinforcement learning optimization with adaptive confluence detection through a shadow portfolio system. Unlike traditional indicator mashups that force traders to manually interpret conflicting signals, this system deploys 4 multi-armed bandit algorithms to automatically discover which of 5 specialized confluence strategies performs best in current market conditions, then validates those discoveries through parallel shadow portfolios that track virtual P&L for each strategy independently.
Core Innovation: Rather than relying on static indicator combinations, this system implements Thompson Sampling (Bayesian multi-armed bandits), contextual bandits (regime-specific learning), advanced chop zone detection (geometric pattern analysis), and historical pre-training to build a self-improving confluence detection engine. The shadow portfolio system runs 5 parallel virtual trading accounts—one per strategy—allowing the system to learn which confluence approach works best through actual position tracking with realistic exits.
Target Users: Intermediate to advanced traders seeking systematic reversal signals with mathematical rigor. Suitable for swing trading and day trading across stocks, forex, crypto, and futures on liquid instruments. Requires understanding of basic technical analysis and willingness to allow 50-100 bars for initial learning.
Why These Components Are Combined
The Fundamental Problem
No single confluence method works consistently across all market regimes. Kernel-based methods (entropy, DFA) excel during predictable phases but fail in chaos. Structure-based methods (harmonics, BOS) work during clear swings but fail in ranging conditions. Technical methods (RSI, MACD, divergence) provide reliable signals in trends but generate false signals during consolidation.
Traditional solutions force traders to either manually switch between methods (slow, error-prone) or interpret all signals simultaneously (cognitive overload). Both fail because they assume the trader knows which regime the market is in and which method works best.
The Solution: Meta-Learning Through Reinforcement Learning
This system solves the problem through automated strategy selection : Deploy 5 specialized confluence strategies designed for different market conditions, track their real-world performance through shadow portfolios, then use multi-armed bandit algorithms to automatically select the optimal strategy for the next trade.
Why Shadow Portfolios? Traditional bandit implementations use abstract "rewards." Shadow portfolios provide realistic performance measurement : Each strategy gets a virtual trading account with actual position tracking, stop-loss management, take-profit targets, and maximum holding periods. This creates risk-adjusted learning where strategies are evaluated on P&L, win rate, and drawdown—not arbitrary scores.
The Five Confluence Strategies
The system deploys 5 orthogonal strategies with different weighting schemes optimized for specific market conditions:
Strategy 1: Kernel-Dominant (Entropy/DFA focused, optimal in predictable markets)
Shannon Entropy weight × 2.5, DFA weight × 2.5
Detects low-entropy predictable patterns and DFA persistence/mean-reversion signals
Failure mode: High-entropy chaos (hedged by Technical-Dominant)
Strategy 2: Structure-Dominant (Harmonic/BOS focused, optimal in clear swing structures)
Harmonics weight × 2.5, Liquidity (S/R) weight × 2.0
Uses swing detection, break-of-structure, and support/resistance clustering
Failure mode: Range-bound markets (hedged by Balanced)
Strategy 3: Technical-Dominant (RSI/MACD/Divergence focused, optimal in established trends)
RSI weight × 2.0, MACD weight × 2.0, Trend weight × 2.0
Zero-lag RSI suite with 4 calculation methods, MACD analysis, divergence detection
Failure mode: Choppy/ranging markets (hedged by chop filter)
Strategy 4: Balanced (Equal weighting, optimal in unknown/transitional regimes)
All components weighted 1.2×
Baseline performance during regime uncertainty
Strategy 5: Regime-Adaptive (Dynamic weighting by detected market state)
Chop zones: Kernel × 2.0, Technical × 0.3
Bull/Bear trends: Trend × 1.5, DFA × 2.0
Ranging: Mean reversion × 1.5
Adapts explicitly to detected regime
Multi-Armed Bandit System: 4 Core Algorithms
What Is a Multi-Armed Bandit Problem?
Formal Definition: K arms (strategies), each with unknown reward distribution. Goal: Maximize cumulative reward while learning which arms are best. Challenge: Balance exploration (trying uncertain strategies) vs. exploitation (using known-best strategy).
Trading Application: Each confluence strategy is an "arm." After each trade, receive reward (P&L percentage). Bandits decide which strategy to trust for next signal.
The 4 Implemented Algorithms
1. Thompson Sampling (DEFAULT)
Category: Bayesian approach with probability distributions
How It Works: Model each strategy as Beta(α, β) where α = wins, β = losses. Sample from distributions, select highest sample.
Properties: Optimal regret O(K log T), automatic exploration-exploitation balance
When To Use: Best all-around choice, adaptive markets, long-term optimization
2. UCB1 (Upper Confidence Bound)
Category: Frequentist approach with confidence intervals
Formula: UCB_i = reward_mean_i + sqrt(2 × ln(total_pulls) / pulls_i)
Properties: Deterministic, interpretable, same optimal regret as Thompson
When To Use: Prefer deterministic behavior, stable markets
3. Epsilon-Greedy
Category: Simple baseline with random exploration
How It Works: With probability ε (0.15): random strategy. Else: best average reward.
Properties: Simple, fast initial learning
When To Use: Baseline comparison, short-term testing
4. Contextual Bandit
Category: Context-aware Thompson Sampling
Enhancement: Maintains separate alpha/beta for Bull/Bear/Ranging regimes
Learning: "Strategy 2: 60% win rate in Bull, 40% in Bear"
When To Use: After 100+ bars, clear regime shifts
Shadow Portfolio System
Why Shadow Portfolios?
Traditional bandits use abstract scores. Shadow portfolios provide realistic performance measurement through actual position simulation.
How It Works
Position Opening:
When strategy generates validated signal:
Opens virtual position for selected strategy
Records: entry price, direction, entry bar, RSI method
Optional: Open positions for ALL strategies simultaneously (faster learning)
Position Management (Every Bar):
Current P&L: pnl_pct = (close - entry) / entry × direction × 100
Exit if: pnl_pct <= -2.0% (stop-loss) OR pnl_pct >= +4.0% (take-profit) OR held ≥ 100 bars (time)
Position Closing:
Calculate final P&L percentage
Update strategy equity, track win rate, gross profit/loss, max drawdown
Calculate risk-adjusted reward:
text
base_reward = pnl_pct / 10.0
win_rate_bonus = (win_rate - 0.5) × 0.3
drawdown_penalty = -max_drawdown × 0.05
total_reward = sigmoid(base + bonus + penalty)
Update bandit algorithms with reward
Update RSI method bandit
Statistics Tracked Per Strategy:
Equity curve (starts at $10,000)
Win rate percentage
Max drawdown
Gross profit/loss
Current open position
This creates closed-loop learning : Strategies compete → Best performers selected → Bandits learn quality → System adapts automatically.
Historical Pre-Training System
The Problem with Live-Only Learning
Standard bandits start with zero knowledge and need 50-100 signals to stabilize. For weekly timeframe traders, this could take years.
The Solution: Historical Training
During Chart Load: System processes last 300-1000 bars (configurable) in "training mode":
Detect signals using Balanced strategy (consistent baseline)
For each signal, open virtual training positions for all 5 strategies
Track positions through historical bars using same exit logic (SL/TP/time)
Update bandit algorithms with historical outcomes
CRITICAL TRANSPARENCY: Signal detection does NOT look ahead—signals use only data available at entry bar. Exit tracking DOES look ahead (uses future bars for SL/TP), which is acceptable because:
✅ Entry decisions remain valid (no forward bias)
✅ Learning phase only (not affecting shown signals)
✅ Real-time mirrors training (identical exit logic)
Training Completion: Once chart reaches current bar, system transitions to live mode. Dashboard displays training vs. live statistics for comparison.
Benefit: System begins live trading with 100-500 historical trades worth of learning, enabling immediate intelligent strategy selection.
Advanced Chop Zone Detection Engine
The Innovation: Multi-Layer Geometric Chop Analysis
Traditional chop filters use simple volatility metrics (ATR thresholds) that can't distinguish between trending volatility (good for signals) and choppy volatility (bad for signals). This system implements three-layer geometric pattern analysis to precisely identify consolidation zones where reversal signals fail.
Layer 1: Micro-Structure Chop Detection
Method: Analyzes micro pivot points (5-bar left, 2-bar right) to detect geometric compression patterns.
Slope Analysis:
Calculates slope of pivot high trendline and pivot low trendline
Compression ratio: compression = slope_high - slope_low
Pattern Classification:
Converging slopes (compression < -0.05) → "Rising Wedge" or "Falling Wedge"
Flat slopes (|slope| < 0.05) → "Rectangle"
Parallel slopes (|compression| < 0.1) → "Channel"
Expanding slopes → "Expanding Range"
Chop Scoring:
Rectangle pattern: +15 points (highest chop)
Low average slope (<0.05): +15 points
Wedge patterns: +12 points
Flat structures: +10 points
Why This Works: Geometric patterns reveal market indecision. Rectangles and wedges create false breakouts that trap technical traders. By quantifying geometric compression, system detects these zones before signals fire.
Layer 2: Macro-Structure Chop Detection
Method: Tracks major swing highs/lows using ATR-based deviation threshold (default 2.0× ATR), projects channel boundaries forward.
Channel Position Calculation:
proj_high = last_swing_high + (swing_high_slope × bars_since)
proj_low = last_swing_low + (swing_low_slope × bars_since)
channel_width = proj_high - proj_low
position = (close - proj_low) / channel_width
Dead Zone Detection:
Middle 50% of channel (position 0.25-0.75) = low-conviction zone
Score increases as price approaches center (0.5)
Chop Scoring:
Price in dead zone: +15 points (scaled by centrality)
Narrow channel width (<3× ATR): +15 points
Channel width 3-5× ATR: +10 points
Why This Works: Price in middle of range has equal probability of moving either direction. Institutional traders avoid mid-range entries. By detecting "dead zones," system avoids low-probability setups.
Layer 3: Volume Chop Scoring
Method: Low volume indicates weak conviction—precursor to ranging behavior.
Scoring:
Volume < 0.5× average: +20 points
Volume 0.5-0.8× average: +15 points
Volume 0.8-1.0× average: +10 points
Overall Chop Intensity & Signal Filtering
Total Chop Calculation:
chop_intensity = micro_score + macro_score + (volume_score × volume_weight)
is_chop = chop_intensity >= 40
Signal Filtering (Three-Tier Approach):
1. Signal Blocking (Intensity > 70):
Extreme chop detected (e.g., tight rectangle + dead zone + low volume)
ALL signals blocked regardless of confluence
Chart displays red/orange background shading
2. Threshold Adjustment (Intensity 40-70):
Moderate chop detected
Confluence threshold increased: threshold += (chop_intensity / 50)
Only highest-quality signals pass
3. Strategy Weight Adjustment:
During Chop: Kernel-Dominant weight × 2.0 (entropy detects breakout precursors), Technical-Dominant weight × 0.3 (reduces false signals)
After Chop Exit: Weights revert to normal
Why This Three-Tier Approach Is Original: Most chop filters simply block all signals (loses breakout entries). This system adapts strategy selection during chop—allowing Kernel-Dominant (which excels at detecting low-entropy breakout precursors) to operate while suppressing Technical-Dominant (which generates false signals in consolidation). Result: System remains functional across full market regime spectrum.
Zero-Lag Filter Suite with Dynamic Volatility Scaling
Zero-Lag ADX (Trend Regime Detection)
Implementation: Applies ZLEMA to ADX components:
lag = (length - 1) / 2
zl_source = source + (source - source ) × strength
Dynamic Volatility Scaling (DVS):
Calculates volatility ratio: current_ATR / ATR_100period_avg
Adjusts ADX length dynamically: High vol → shorter length (faster), Low vol → longer length (smoother)
Regime Classification:
ADX > 25 with +DI > -DI = Bull Trend
ADX > 25 with -DI > +DI = Bear Trend
ADX < 25 = Ranging
Zero-Lag RSI Suite (4 Methods with Bandit Selection)
Method 1: Standard RSI - Traditional Wilder's RSI
Method 2: Ehlers Zero-Lag RSI
ema1 = ema(close, length)
ema2 = ema(ema1, length)
zl_close = close + (ema1 - ema2)
Method 3: ZLEMA RSI
lag = (length - 1) / 2
zl_close = close + (close - close )
Method 4: Kalman-Filtered RSI - Adaptive smoothing with process/measurement noise
RSI Method Bandit: Separate 4-arm bandit learns which calculation method produces best results. Updates independently after each trade.
Kalman Adaptive Filters
Fast Kalman: Low process noise → Responsive to genuine moves
Slow Kalman: Higher measurement noise → Filters noise
Application: Crossover logic for trend detection, acceleration analysis for momentum inflection
What Makes This Original
Innovation 1: Shadow Portfolio Validation
First TradingView script to implement parallel virtual portfolios for multi-armed bandit reward calculation. Instead of abstract scoring metrics, each strategy's performance is measured through realistic position tracking with stop-loss, take-profit, time-based exits, and risk-adjusted reward functions (P&L + win rate + drawdown). This provides orders-of-magnitude better reward signal quality for bandit learning than traditional score-based approaches.
Innovation 2: Three-Layer Geometric Chop Detection
Novel multi-scale geometric pattern analysis combining: (1) Micro-structure slope analysis with pattern classification (wedges, rectangles, channels), (2) Macro-structure channel projection with dead zone detection, (3) Volume confirmation. Unlike simple volatility filters, this system adapts strategy weights during chop —boosting Kernel-Dominant (breakout detection) while suppressing Technical-Dominant (false signal reduction)—allowing operation across full market regime spectrum without blind signal blocking.
Innovation 3: Historical Pre-Training System
Implements two-phase learning : Training phase (processes 300-1000 historical bars on chart load with proper state isolation) followed by live phase (real-time learning). Training positions tracked separately from live positions. System begins live trading with 100-500 trades worth of learned experience. Dashboard displays training vs. live performance for transparency.
Innovation 4: Contextual Multi-Armed Bandits with Regime-Specific Learning
Beyond standard bandits (global strategy quality), implements regime-specific alpha/beta parameters for Bull/Bear/Ranging contexts. System learns: "Strategy 2: 60% win rate in ranging markets, 45% in bull trends." Uses current regime's learned parameters for strategy selection, enabling regime-aware optimization.
Innovation 5: RSI Method Meta-Learning
Deploys 4 different RSI calculation methods (Standard, Ehlers ZL, ZLEMA, Kalman) with separate 4-arm bandit that learns which calculation works best. Updates RSI method bandit independently based on trade outcomes, allowing automatic adaptation to instrument characteristics.
Innovation 6: Dynamic Volatility Scaling (DVS)
Adjusts ALL lookback periods based on current ATR ratio vs. 100-period average. High volatility → shorter lengths (faster response). Low volatility → longer lengths (smoother signals). Applied system-wide to entropy, DFA, RSI, ADX, and Kalman filters for adaptive responsiveness.
How to Use: Practical Guide
Initial Setup (5 Minutes)
Theory Mode: Start with "BALANCED" (APEX for aggressive, CONSERVATIVE for defensive)
Enable RL: Toggle "Enable RL Auto-Optimization" to TRUE, select "Thompson Sampling"
Enable Confluence Modules: Divergence, Volume Analysis, Liquidity Mapping, RSI OB/OS, Trend Analysis, MACD (all recommended)
Enable Chop Filter: Toggle "Enable Chop Filter" to TRUE, sensitivity 1.0 (default)
Historical Training: Enable "Enable Historical Pre-Training", set 300-500 bars
Dashboard: Enable "Show Dashboard", position Top Right, size Large
Learning Phase (First 50-100 Bars)
Monitor Thompson Sampling Section:
Alpha/beta values should diverge from initial 1.0 after 20-30 trades
Expected win% should stabilize around 55-60% (excellent), >50% (acceptable)
"Pulls" column should show balanced exploration (not 100% one strategy)
Monitor Shadow Portfolios:
Equity curves should diverge (different strategies performing differently)
Win rate > 55% is strong
Max drawdown < 15% is healthy
Monitor Training vs Live (if enabled):
Delta difference < 10% indicates good generalization
Large negative delta suggests overfitting
Large positive delta suggests system adapting well
Optimization:
Too few signals: Lower "Base Confluence Threshold" to 2.5-3.0
Too many signals: Raise threshold to 4.0-4.5
One strategy dominates (>80%): Increase "Exploration Rate" to 0.20-0.25
Excessive chop blocking: Lower "Chop Sensitivity" to 0.7-0.8
Signal Interpretation
Dashboard Indicators:
"WAITING FOR SIGNAL": No confluence
"LONG ACTIVE ": Validated long entry
"SHORT ACTIVE ": Validated short entry
Chart Visuals:
Triangle markers: Entry signal (green = long, red = short)
Orange/red background: Chop zone
Lines: Support/resistance if enabled
Position Management
Entry: Enter on triangle marker, confirm direction matches dashboard, check confidence >60%
Stop-Loss: Entry ± 1.5× ATR or at structural swing point
Take-Profit:
TP1: Entry + 1.5R (take 50%, move SL to breakeven)
TP2: Entry + 3.0R (runner) or trail
Position Sizing:
Risk per trade = 1-2% of capital
Position size = (Account × Risk%) / (Entry - SL)
Recommended Settings by Instrument
Stocks (Large Cap): Balanced mode, Threshold 3.5, Thompson Sampling, Chop 1.0, 15min-1H, Training 300-500 bars
Forex Majors: Conservative-Balanced mode, Threshold 3.5-4.0, Thompson Sampling, Chop 0.8-1.0, 5min-30min, Training 400-600 bars
Cryptocurrency: Balanced-APEX mode, Threshold 3.0-3.5, Thompson Sampling, Chop 1.2-1.5, 15min-4H, Training 300-500 bars
Futures: Balanced mode, Threshold 3.5, UCB1 or Thompson, Chop 1.0, 5min-30min, Training 400-600 bars
Technical Approximations & Limitations
1. Thompson Sampling: Pseudo-Random Beta Distribution
Standard: Cryptographic RNG with true beta sampling
This Implementation: Box-Muller transform using market data as entropy source
Impact: Not cryptographically random but maintains exploration-exploitation balance. Sufficient for strategy selection.
2. Shadow Portfolio: Simplified Execution Model
Standard: Order book simulation with slippage, partial fills
This Implementation: Perfect fills at close price, no fees modeled
Impact: Real-world performance ~0.1-0.3% worse per trade due to execution costs.
3. Historical Training: Forward-Looking for Exits Only
Entry signals: Use only past data (causal, no bias)
Exit tracking: Uses future bars to determine SL/TP (forward-looking)
Impact: Acceptable because: (1) Entry logic remains valid, (2) Live trading mirrors training, (3) Improves learning quality. Training win rates reflect 8-bar evaluation window—live performance may differ if positions held longer.
4. Shannon Entropy & DFA: Simplified Calculations
Impact: 10-15% precision loss vs. academic implementations. Still captures predictability and persistence signals effectively.
General Limitations
No Predictive Guarantee: Past performance ≠ future results
Learning Period Required: Minimum 50-100 bars for stable statistics
Overfitting Risk: May not generalize to unprecedented conditions
Single-Instrument: No multi-asset correlation or sector context
Execution Assumptions: Degrades in illiquid markets (<100k volume), major news events, flash crashes
Risk Warnings & Disclaimers
No Guarantee of Profit: All trading involves substantial risk of loss. This indicator is a tool, not a guaranteed profit system.
System Failures: Software bugs possible despite testing. Use appropriate position sizing.
Market Regime Changes: Performance may degrade during extreme volatility (VIX >40), low liquidity periods, or fundamental regime shifts.
Broker-Specific Issues: Real-world execution includes slippage (0.1-0.5%), commissions, overnight financing costs, partial fills.
Forward-Looking Bias in Training: Historical training uses 8-bar forward window for exit evaluation. Dashboard "Training Win%" reflects this method. Real-time performance may differ.
Appropriate Use
This Indicator IS:
✅ Entry trigger system with confluence validation
✅ Risk management framework (automated SL/TP)
✅ Adaptive strategy selection engine
✅ Learning system that improves over time
This Indicator IS NOT:
❌ Complete trading strategy (requires position sizing, portfolio management)
❌ Replacement for due diligence
❌ Guaranteed profit generator
❌ Suitable for complete beginners
Recommended Complementary Analysis: Market context, volume profile, fundamental catalysts, higher timeframe alignment, support/resistance from other sources.
Conclusion
Chronos Reversal Labs V2.0 - Elite Edition synthesizes research from multi-armed bandit theory (Thompson Sampling, UCB, contextual bandits), market microstructure (geometric chop detection, zero-lag filters), and machine learning (shadow portfolio validation, historical pre-training, RSI method meta-learning).
Unlike typical indicator mashups, this system implements mathematically rigorous bandit algorithms with realistic performance validation, three-layer chop detection with adaptive strategy weighting, regime-specific learning, and full transparency on approximations and limitations.
The system is designed for intermediate to advanced traders who understand that no indicator is perfect, but through proper machine learning and realistic validation, we can build systems that improve over time and adapt to changing markets without manual intervention.
Use responsibly. Understand the limitations. Risk disclosure applies. Past performance does not guarantee future results.
Taking you to school. — Dskyz, Trade with insight. Trade with anticipation.
Quantum Reversal Engine [ApexLegion]Quantum Reversal Engine
STRATEGY OVERVIEW
This strategy is constructed using 5 custom analytical filters that analyze different market dimensions - trend structure, momentum expansion, volume confirmation, price action patterns, and reversal detection - with results processed through a multi-component scoring calculation that determines signal generation and position management decisions.
Why These Custom Filters Were Independently Developed:
This strategy employs five custom-developed analytical filters:
1. Apex Momentum Core (AMC) - Custom oscillator with volatility-scaled deviation calculation
Standard oscillators lag momentum shifts by 2-3 bars. Custom calculation designed for momentum analysis
2. Apex Wick Trap (AWT) - Wick dominance analysis for trap detection
Existing wick analysis tools don't quantify trap conditions. Uses specific ratios for wick dominance detection
3. Apex Volume Pulse (AVP) - Volume surge validation with participation confirmation
Volume indicators typically use simple averages. Uses surge multipliers with participation validation
4. Apex TrendGuard (ATG) - Angle-based trend detection with volatility band integration
EMA slope calculations often produce false signals. Uses angle analysis with volatility bands for confirmation
5. Quantum Composite Filter (QCF) - Multi-component scoring and signal generation system
Composite scoring designed to filter noise by requiring multiple confirmations before signal activation.
Each filter represents mathematical calculations designed to address specific analytical requirements.
Framework Operation: The strategy functions as a scoring framework where each filter contributes weighted points based on market conditions. Entry signals are generated when minimum threshold scores are met. Exit management operates through a three-tier system with continued signal strength evaluation determining position holds versus closures at each TP level.
Integration Challenge: The core difficulty was creating a scoring system where five independent filters could work together without generating conflicting signals. This required backtesting to determine effective weight distributions.
Custom Filter Development:
Each of the five filters represents analytical approaches developed through testing and validation:
Integration Validation: Each filter underwent individual testing before integration. The composite scoring system required validation to verify that filters complement rather than conflict with each other, resulting in a cohesive analytical framework that was tested during the development period.
These filters represent custom-developed components created specifically for this strategy, with each component addressing different analytical requirements through testing and parameter adjustment.
Programming Features:
Multi-timeframe data handling with backup systems
Performance optimization techniques
Error handling for live trading scenarios
Parameter adaptation based on market conditions
Strategy Features:
Uses multi-filter confirmation approach
Adapts position holding based on continued signal strength
Includes analysis tools for trade review and optimization
Ongoing Development: The strategy was developed through testing and validation processes during the creation period.
COMPONENT EXPLANATION
EMA System
Uses 8 exponential moving averages (7, 14, 21, 30, 50, 90, 120, 200 periods) for trend identification. Primary signals come from 8/21 EMA crossovers, while longer EMAs provide structural context. EMA 1-4 determine short-term structure, EMA 5-8 provide long-term trend confirmation.
Apex Momentum Core (AMC)
Built custom oscillator mathematics after testing dozens of momentum calculation methods. Final algorithm uses price deviation from EMA baseline with volatility scaling to reduce lag while maintaining accuracy across different market conditions.
Custom momentum oscillator using price deviation from EMA baseline:
apxCI = 100 * (source - emaBase) / (sensitivity * sqrt(deviation + 1))
fastLine = EMA(apxCI, smoothing)
signalLine = SMA(fastLine, 4)
Signals generate when fastLine crosses signalLine at +50/-50 thresholds.
This identifies momentum expansion before traditional oscillators.
Apex Volume Pulse (AVP)
Created volume surge analysis that goes beyond simple averages. Extensive testing determined 1.3x multiplier with participation validation provides reliable confirmation while filtering false volume spikes.
Compares current volume to 21-period moving average.
Requires 1.3x average volume for signal confirmation. This filters out low-volume moves during quiet periods and confirms breakouts with actual participation.
Apex Wick Trap (AWT)
Developed proprietary wick trap detection through analysis of failed breakout patterns. Tested various ratio combinations before settling on 60% wick dominance + 20% body limit as effective trap identification parameters.
Analyzes candle structure to identify failed breakouts:
candleRange = math.max(high - low, 0.00001)
candleBody = math.abs(close - open)
bodyRatio = candleBody / candleRange
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
upperWickRatio = upperWick / candleRange
lowerWickRatio = lowerWick / candleRange
trapWickLong = showAWT and lowerWickRatio > minWickDom and bodyRatio < bodyToRangeLimit and close > open
trapWickShort = showAWT and upperWickRatio > minWickDom and bodyRatio < bodyToRangeLimit and close < open This catches reversals after fake breakouts.
Apex TrendGuard (ATG)
Built angle-based trend detection after standard EMA crossovers proved insufficient. Combined slope analysis with volatility bands through iterative testing to eliminate false trend signals.
EMA slope analysis with volatility bands:
Fast EMA (21) vs Slow EMA (55) for trend direction
Angle calculation: atan(fast - slow) * 180 / π
ATR bands (1.75x multiplier) for breakout confirmation
Minimum 25° angle for strong trend classification
Core Algorithm Framework
1. Composite Signal Generation
calculateCompositeSignals() =>
// Component Conditions
structSignalLong = trapWickLong
structSignalShort = trapWickShort
momentumLong = amcBuySignal
momentumShort = amcSellSignal
volumeSpike = volume > volAvg_AVP * volMult_AVP
priceStrength_Long = close > open and close > close
priceStrength_Short = close < open and close < close
rsiMfiComboValue = (ta.rsi(close, 14) + ta.mfi(close, 14)) / 2
reversalTrigger_Long = ta.crossover(rsiMfiComboValue, 50)
reversalTrigger_Short = ta.crossunder(rsiMfiComboValue, 50)
isEMACrossUp = ta.crossover(emaFast_ATG, emaSlow_ATG)
isEMACrossDown = ta.crossunder(emaFast_ATG, emaSlow_ATG)
// Enhanced Composite Score Calculation
scoreBuy = 0.0
scoreBuy += structSignalLong ? scoreStruct : 0.0
scoreBuy += momentumLong ? scoreMomentum : 0.0
scoreBuy += flashSignal ? weightFlash : 0.0
scoreBuy += blinkSignal ? weightBlink : 0.0
scoreBuy += volumeSpike_AVP ? scoreVolume : 0.0
scoreBuy += priceStrength_Long ? scorePriceAction : 0.0
scoreBuy += reversalTrigger_Long ? scoreReversal : 0.0
scoreBuy += emaAlignment_Bull ? weightTrendAlign : 0.0
scoreBuy += strongUpTrend ? weightTrendAlign : 0.0
scoreBuy += highRisk_Long ? -1.2 : 0.0
scoreBuy += signalGreenDot ? 1.0 : 0.0
scoreBuy += isAMCUp ? 0.8 : 0.0
scoreBuy += isVssBuy ? 1.5 : 0.0
scoreBuy += isEMACrossUp ? 1.0 : 0.0
scoreBuy += signalRedX ? -1.0 : 0.0
scoreSell = 0.0
scoreSell += structSignalShort ? scoreStruct : 0.0
scoreSell += momentumShort ? scoreMomentum : 0.0
scoreSell += flashSignal ? weightFlash : 0.0
scoreSell += blinkSignal ? weightBlink : 0.0
scoreSell += volumeSpike_AVP ? scoreVolume : 0.0
scoreSell += priceStrength_Short ? scorePriceAction : 0.0
scoreSell += reversalTrigger_Short ? scoreReversal : 0.0
scoreSell += emaAlignment_Bear ? weightTrendAlign : 0.0
scoreSell += strongDownTrend ? weightTrendAlign : 0.0
scoreSell += highRisk_Short ? -1.2 : 0.0
scoreSell += signalRedX ? 1.0 : 0.0
scoreSell += isAMCDown ? 0.8 : 0.0
scoreSell += isVssSell ? 1.5 : 0.0
scoreSell += isEMACrossDown ? 1.0 : 0.0
scoreSell += signalGreenDot ? -1.0 : 0.0
compositeBuySignal = enableComposite and scoreBuy >= thresholdCompositeBuy
compositeSellSignal = enableComposite and scoreSell >= thresholdCompositeSell
if compositeBuySignal and compositeSellSignal
compositeBuySignal := false
compositeSellSignal := false
= calculateCompositeSignals()
// Final Entry Signals
entryCompositeBuySignal = compositeBuySignal and ta.rising(emaFast_ATG, 2)
entryCompositeSellSignal = compositeSellSignal and ta.falling(emaFast_ATG, 2)
Calculates weighted scores from independent modules and activates signals only when threshold requirements are met.
2. Smart Exit Hold Evaluation System
evaluateSmartHold() =>
compositeBuyRecentCount = 0
compositeSellRecentCount = 0
for i = 0 to signalLookbackBars - 1
compositeBuyRecentCount += compositeBuySignal ? 1 : 0
compositeSellRecentCount += compositeSellSignal ? 1 : 0
avgVolume = ta.sma(volume, 20)
volumeSpike = volume > avgVolume * volMultiplier
// MTF Bull/Bear conditions
mtf_bull = mtf_emaFast_final > mtf_emaSlow_final
mtf_bear = mtf_emaFast_final < mtf_emaSlow_final
emaBackupDivergence = math.abs(mtf_emaFast_backup - mtf_emaSlow_backup) / mtf_emaSlow_backup
emaBackupStrong = emaBackupDivergence > 0.008
mtfConflict_Long = inLong and mtf_bear and emaBackupStrong
mtfConflict_Short = inShort and mtf_bull and emaBackupStrong
// Layer 1: ATR-Based Dynamic Threshold (Market Volatility Intelligence)
atr_raw = ta.atr(atrLen)
atrValue = na(atr_raw) ? close * 0.02 : atr_raw
atrRatio = atrValue / close
dynamicThreshold = atrRatio > 0.02 ? 1.0 : (atrRatio > 0.01 ? 1.5 : 2.8)
// Layer 2: ROI-Conditional Time Intelligence (Selective Pressure)
timeMultiplier_Long = realROI >= 0 ? 1.0 : // Profitable positions: No time pressure
holdTimer_Long <= signalLookbackBars ? 1.0 : // Loss positions 1-8 bars: Base
holdTimer_Long <= signalLookbackBars * 2 ? 1.1 : // Loss positions 9-16 bars: +10% stricter
1.3 // Loss positions 17+ bars: +30% stricter
timeMultiplier_Short = realROI >= 0 ? 1.0 : // Profitable positions: No time pressure
holdTimer_Short <= signalLookbackBars ? 1.0 : // Loss positions 1-8 bars: Base
holdTimer_Short <= signalLookbackBars * 2 ? 1.1 : // Loss positions 9-16 bars: +10% stricter
1.3 // Loss positions 17+ bars: +30% stricter
// Dual-Layer Threshold Calculation
baseThreshold_Long = mtfConflict_Long ? dynamicThreshold + 1.0 : dynamicThreshold
baseThreshold_Short = mtfConflict_Short ? dynamicThreshold + 1.0 : dynamicThreshold
timeAdjustedThreshold_Long = baseThreshold_Long * timeMultiplier_Long
timeAdjustedThreshold_Short = baseThreshold_Short * timeMultiplier_Short
// Final Smart Hold Decision with Dual-Layer Intelligence
smartHold_Long = not mtfConflict_Long and smartScoreLong >= timeAdjustedThreshold_Long and compositeBuyRecentCount >= signalMinCount
smartHold_Short = not mtfConflict_Short and smartScoreShort >= timeAdjustedThreshold_Short and compositeSellRecentCount >= signalMinCount
= evaluateSmartHold()
Evaluates whether to hold positions past TP1/TP2/TP3 levels based on continued signal strength, volume confirmation, and multi-timeframe trend alignment
HOW TO USE THE STRATEGY
Step 1: Initial Setup
Apply strategy to your preferred timeframe (backtested on 15M)
Enable "Use Heikin-Ashi Base" for smoother signals in volatile markets
"Show EMA Lines" and "Show Ichimoku Cloud" are enabled for visual context
Set default quantities to match your risk management (5% equity default)
Step 2: Signal Recognition
Visual Signal Guide:
Visual Signal Guide - Complete Reference:
🔶 Red Diamond: Bearish momentum breakdown - short reversal signal
🔷 Blue Diamond: Strong bullish momentum - long reversal signal
🔵 Blue Dot: Volume-confirmed directional move - trend continuation
🟢 Green Dot: Bullish EMA crossover - trend reversal confirmation
🟠 Orange X: Oversold reversal setup - counter-trend opportunity
❌ Red X: Bearish EMA breakdown - trend reversal warning
✡ Star Uprising: Strong bullish convergence
💥 Ultra Entry: Ultra-rapid downward momentum acceleration
▲ VSS Long: Velocity-based bullish momentum confirmation
▼ VSS Short: Velocity-based bearish momentum confirmation
Step 3: Entry Execution
For Long Positions:
1. ✅ EMA1 crossed above EMA2 exactly 3 bars ago [ta.crossover(ema1,ema2) ]
2. ✅ Current EMA structure: EMA1 > EMA2 (maintained)
3. ✅ Composite score ≥ 5.0 points (6.5+ for 5-minute timeframes)
4. ✅ Cooldown period completed (no recent stop losses)
5. ✅ Volume spike confirmation (green dot/blue dot signals)
6. ✅ Bullish candle closes above EMA structure
For Short Positions:
1. ✅ EMA1 crossed below EMA2 exactly 3 bars ago [ta.crossunder(ema1,ema2) ]
2. ✅ Current EMA structure: EMA1 < EMA2 (maintained)
3. ✅ Composite score ≥ 5.4 points (7.0+ for 5-minute timeframes)
4. ✅ Cooldown period completed (no recent stop losses)
5. ✅ Momentum breakdown (red diamond/red X signals)
6. ✅ Bearish candle closes below EMA structure
🎯 Critical Timing Note: The strategy requires EMA crossover to have occurred 3 bars prior to entry, not at the current bar. This attempts to avoid premature entries and may improve signal reliability.
Step 4: Reading Market Context
EMA Ribbon Interpretation:
All EMAs ascending = Strong uptrend context
EMAs 1-3 above EMAs 4-8 = Bullish structure
Tight EMA spacing = Low volatility/consolidation
Wide EMA spacing = High volatility/trending
Ichimoku Cloud Context:
Price above cloud = Bullish environment
Price below cloud = Bearish environment
Cloud color intensity = Momentum strength
Thick cloud = Strong support/resistance
THE SMART EXIT GRID SYSTEM
Smart Exit Grid Approach:
The Smart Exit Grid uses dynamic hold evaluation that continuously analyzes market conditions after position entry. This differs from traditional fixed profit targets by adapting exit timing based on real-time signal strength.
How Smart Exit Grid System Works
The system operates through three evaluation phases:
Smart Score Calculation:
The smart score calculation aggregates 22 signal components in real-time, combining reversal warnings, continuation signals, trend alignment indicators, EMA structural analysis, and risk penalties into a numerical representation of market conditions. MTF analysis provides additional confirmation as a separate validation layer.
Signal Stack Management:
The per-tick signal accumulation system monitors 22 active signal types with MTF providing trend validation and conflict detection as a separate confirmation layer.
Take Profit Progression:
Smart Exit Activation:
The QRE system activates Smart Exit Grid immediately upon position entry. When strategy.entry() executes, the system initializes monitoring systems designed to track position progress.
Upon position opening, holdTimer begins counting, establishing the foundation for subsequent decisions. The Smart Exit Grid starts accumulating signals from entry, with all 22 signal components beginning real-time tracking when the trade opens.
The system operates on continuous evaluation where smartScoreLong and smartScoreShort calculate from the first tick after entry. QRE's approach is designed to capture market structure changes, trend deteriorations, or signal pattern shifts that can trigger protective exits even before the first take profit level is reached.
This activation creates a proactive position management framework. The 8-candle sliding window starts from entry, meaning that if market conditions change rapidly after entry - due to news events, liquidity shifts, or technical changes - the system can respond within the configured lookback period.
TP Markers as Reference Points:
The TP1, TP2, and TP3 levels function as reference points rather than mandatory exit triggers. When longTP1Hit or shortTP1Hit conditions activate, they serve as profit confirmation markers that inform the Smart Exit algorithm about achieved reward levels, but don't automatically initiate position closure.
These TP markers enhance the Smart Exit decision matrix by providing profit context to ongoing signal evaluation. The system recognizes when positions have achieved target returns, but the actual exit decision remains governed by continuous smart score evaluation and signal stack analysis.
TP2 Reached: Enhanced Monitoring
TP2 represents significant profit capture with additional monitoring features:
This approach is designed to help avoid premature profit-taking during trending conditions. If TP2 is reached but smartScoreLong remains above the dynamic threshold and the 8-candle sliding window shows persistent signals, the position continues holding. If market structure deteriorates before reaching TP2, the Smart Exit can trigger closure based on signal analysis.
The visual TP circles that appear when levels are reached serve as performance tracking tools, allowing users to see how frequently entries achieve various profit levels while understanding that actual exit timing depends on market structure analysis.
Risk Management Systems:
Operating independently from the Smart Exit Grid are two risk management systems: the Trap Wick Detection Protocol and the Stop Loss Mechanism. These systems maintain override authority over other exit logic.
The Trap Wick System monitors for conditionBearTrapExit during long positions and conditionBullTrapExit during short positions. When detected, these conditions trigger position closure with state reset, bypassing Smart Exit evaluations. This system recognizes that certain candlestick patterns may indicate reversal risk.
Volatility Exit Monitoring: The strategy monitors for isStrongBearCandle combined with conditionBearTrapExit, recognizing when market structure may be shifting.
Volume Validation: Before exiting on volatility, the strategy requires volume confirmation: volume > ta.sma(volume, 20) * 1.8. This is designed to filter exits on weak, low-volume movements.
The Stop Loss Mechanism operates through multiple triggers including traditional price-based stops (longSLHit, shortSLHit) and early exit conditions based on smart score deterioration combined with negative ROI. The early exit logic activates when smartScoreLong < 1.0 or smartScoreShort < 1.0 while realROI < -0.9%.
These risk management systems are designed so that risk scenarios can trigger protective closure with state reset across all 22 signal counters, TP tracking variables, and smart exit states.
This architecture - Smart Exit activation, TP markers as navigation tools, and independent risk management - creates a position management system that adapts to market conditions while maintaining risk discipline through dedicated protection protocols.
TP3 Reached: Enhanced Protection
Once TP3 is hit, the strategy shifts into enhanced monitoring:
EMA Structure Monitoring: isEMAStructureDown becomes a primary exit trigger
MTF Alignment: The higher timeframe receives increased consideration
Wick Trap Priority: conditionBearTrapExit becomes an immediate exit signal
Approach Differences:
Traditional Fixed Exits:
Exit at predetermined levels regardless of market conditions
May exit during trend continuation
May exit before trend completion
Limited adaptation to changing volatility
Smart Exit Grid Approach:
Adaptive timing based on signal conditions
Exits when supporting signals weaken
Multi-timeframe validation for trend confirmation
Volume confirmation requirements for holds
Structural monitoring for trend analysis
Dynamic ATR-Based Smart Score Threshold System
Market Volatility Adaptive Scoring
// Real-time ATR Analysis
atr_raw = ta.atr(atrLen)
atrValue = na(atr_raw) ? close * 0.02 : atr_raw
atrRatio = atrValue / close
// Three-Tier Dynamic Threshold Matrix
dynamicThreshold = atrRatio > 0.02 ? 1.0 : // High volatility: Lower threshold
(atrRatio > 0.01 ? 1.5 : // Medium volatility: Standard
2.8) // Low volatility: Higher threshold
The market volatility adaptive scoring calculates real-time ATR with a 2% fallback for new markets. The atrRatio represents the relationship between current volatility and price, creating a foundation for threshold adjustment.
The three-tier dynamic threshold matrix responds to market conditions by adjusting requirements based on volatility levels: lowering thresholds during high volatility periods above 2% ATR ratio to 1.0 points, maintaining standard requirements at 1.5 points for medium volatility between 1-2%, and raising standards to 2.8 points during low volatility periods below 1%.
Profit-Loss Adaptive Management:
The system applies different evaluation criteria based on position performance:
Winning Positions (realROI ≥ 0%):
→ timeMultiplier = 1.0 (No additional pressure)
→ Maintains base threshold requirements
→ Allows natural progression to TP2/TP3 levels
Losing Positions (realROI < 0%):
→ Progressive time pressure activated
→ Increasingly strict requirements over time
→ Faster decision-making on underperforming trades
ROI-Adaptive Smart Hold Decision Process:
The strategy uses a profit-loss adaptive system:
Winning Position Management (ROI ≥ 0%):
✅ Standard threshold requirements maintained
✅ No additional time-based pressure applied
✅ Allows positions to progress toward TP2/TP3 levels
✅ timeMultiplier remains at 1.0 regardless of hold duration
Losing Position Management (ROI < 0%):
⚠️ Time-based threshold adjustments activated
⚠️ Progressive increase in required signal strength over time
⚠️ Earlier exit evaluation on underperforming positions
⚠️ timeMultiplier increases from 1.0 → 1.1 → 1.3 based on hold duration
Real-Time Monitoring:
Monitor Analysis Table → "Smart" filter → "Score" vs "Dynamic Threshold"
Winning positions: Evaluation based on signal strength deterioration only
Losing positions: Evaluation considers both signal strength and progressive time adjustments
Breakeven positions (0% ROI): Treated as winning positions - no time adjustments
This approach differentiates between winning and losing positions in the hold evaluation process, requiring higher signal thresholds for extended holding of losing positions while maintaining standard requirements for winning ones.
ROI-Conditional Decision Matrix Examples:
Scenario 1 - Winning Position in Any Market:
Position ROI: +0.8% → timeMultiplier = 1.0 (regardless of hold time)
ATR Medium (1.2%) → dynamicThreshold = 1.5
Final Threshold = 1.5 × 1.0 = 1.5 points ✅ Position continues
Scenario 2 - Losing Position, Extended Hold:
Position ROI: -0.5% → Time pressure activated
Hold Time: 20 bars → timeMultiplier = 1.3
ATR Low (0.8%) → dynamicThreshold = 2.8
Final Threshold = 2.8 × 1.3 = 3.64 points ⚡ Enhanced requirements
Scenario 3 - Fresh Losing Position:
Position ROI: -0.3% → Time pressure activated
Hold Time: 5 bars → timeMultiplier = 1.0 (still early)
ATR High (2.1%) → dynamicThreshold = 1.0
Final Threshold = 1.0 × 1.0 = 1.0 points 📊 Recovery opportunity
Scenario 4 - Breakeven Position:
Position ROI: 0.0% → timeMultiplier = 1.0 (no pressure)
Hold Time: 15 bars → No time penalty applied
Final Threshold = dynamicThreshold only ⚖️ Neutral treatment
🔄8-Candle Sliding Window Signal Rotation System
Composite Signal Counting Mechanism
// Dynamic Lookback Window (configurable: default 8)
signalLookbackBars = input.int(8, "Composite Lookback Bars", minval=1, maxval=50)
// Rolling Signal Analysis
compositeBuyRecentCount = 0
compositeSellRecentCount = 0
for i = 0 to signalLookbackBars - 1
compositeBuyRecentCount += compositeBuySignal ? 1 : 0
compositeSellRecentCount += compositeSellSignal ? 1 : 0
Candle Flow Example (8-bar window):
→
✓ ✓ ✗ ✓ ✗ ✓ ✗ ✓ 🗑️
New Signal Count = 5/8 signals in window
Threshold Check: 5 ≥ signalMinCount (2) = HOLD CONFIRMED
Signal Decay & Refresh Mechanism
// Signal Persistence Tracking
if compositeBuyRecentCount >= signalMinCount
smartHold_Long = true
else
smartHold_Long = false
The composite signal counting operates through a configurable sliding window. The system maintains rolling counters that scan backward through the specified number of candles.
During each evaluation cycle, the algorithm iterates through historical bars, incrementing counters when composite signals are detected. This creates a dynamic signal persistence measurement where recent signal density determines holding decisions.
The sliding window rotation functions like a moving conveyor belt where new signals enter while the oldest signals drop off. For example, in an 8-bar window, if 5 out of 8 recent candles showed composite buy signals, and the minimum required count is 2, the system confirms the hold condition. As new bars form, the window slides forward, potentially changing the signal count and triggering exit conditions when signal density falls below the threshold.
Signal decay and refresh occur continuously where smartHold_Long remains true only when compositeBuyRecentCount exceeds signalMinCount. When recent signal density drops below the minimum requirement, the system switches to exit mode.
Advanced Signal Stack Management - 22-Signal Real-Time Evaluation
// Long Position Signal Stacking (calc_on_every_tick=true)
if inLong
// Primary Reversal Signals
if signalRedDiamond: signalCountRedDiamond += 1 // -0.5 points
if signalStarUprising: signalCountStarUprising += 1 // +1.5 points
if entryUltraShort: signalCountUltra += 1 // -1.0 points
// Trend Confirmation Signals
if strongUpTrend: trendUpCount_Long += 1 // +1.5 points
if emaAlignment_Bull: bullAlignCount_Long += 1 // +1.0 points
// Risk Assessment Signals
if highRisk_Long: riskCount_Long += 1 // -1.5 points
if topZone: tzoneCount_Long += 1 // -0.5 points
The per-tick signal accumulation system operates with calc_on_every_tick=true for real-time responsiveness. During long positions, the system monitors primary reversal signals where Red Diamond signals subtract 0.5 points as reversal warnings, Star Uprising adds 1.5 points for continuation signals, and Ultra Short signals deduct 1.0 points as counter-trend warnings.
Trend confirmation signals provide weighted scoring where strongUpTrend adds 1.5 points for aligned momentum, emaAlignment_Bull contributes 1.0 point for structural support, and various EMA-based confirmations contribute to the overall score. Risk assessment signals apply negative weighting where highRisk_Long situations subtract 1.5 points, topZone conditions deduct 0.5 points, and other risk factors create defensive scoring adjustments.
The smart score calculation aggregates all 22 components in real-time, combining reversal warnings, continuation signals, trend alignment indicators, EMA structural analysis, and risk penalties into a numerical representation of market conditions. This score updates continuously, providing the foundation for hold-or-exit decisions.
MULTI-TIMEFRAME (MTF) SYSTEM
MTF Data Collection
The strategy requests higher timeframe data (default 30-minute) for trend confirmation:
= request.security(syminfo.tickerid, mtfTimeframe, , lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)
MTF Watchtower System - Implementation Logic
The system employs a timeframe discrimination protocol where currentTFInMinutes is compared against a 30-minute threshold. This creates different operational behavior between timeframes:
📊 Timeframe Testing Results:
30M+ charts: Full MTF confirmation → Tested with full features
15M charts: Local EMA + adjusted parameters → Standard testing baseline
5M charts: Local EMA only → Requires parameter adjustment
1M charts: High noise → Limited testing conducted
When the chart timeframe is 30 minutes or above, the strategy activates useMTF = true and requests external MTF data through request.security(). For timeframes below 30 minutes, including your 5-minute setup, the system deliberately uses local EMA calculations to avoid MTF lag and data inconsistencies.
The triple-layer data sourcing architecture works as follows: timeframes from 1 minute to 29 minutes rely on chart-based EMA calculations for immediate responsiveness. Timeframes of 30 minutes and above utilize MTF data through the security function, with a backup system that doubles the EMA length (emaLen * 2) if MTF data fails. When MTF data is unavailable or invalid, the system falls back to local EMA as the final safety net.
Data validation occurs through a pipeline where mtf_dataValid checks not only for non-null values but also verifies that EMA values are positive above zero. The system tracks data sources through mtf_dataSource which displays "MTF Data" for successful external requests, "Backup EMA" for failed MTF with backup system active, or "Chart EMA" for local calculations.
🔄 MTF Smart Score Caching & Recheck System
// Cache Update Decision Logic
mtfSmartIntervalSec = input.int(300, "Smart Grid Recheck Interval (sec)") // 5-minute cache
canRecheckSmartScore = na(timenow) ? false :
(na(lastCheckTime) or (timenow - lastCheckTime) > mtfSmartIntervalSec * 1000)
// Cache Management
if canRecheckSmartScore
lastCheckTime := timenow
cachedSmartScoreLong := smartScoreLong // Store current calculation
cachedSmartScoreShort := smartScoreShort
The performance-optimized caching system addresses the computational intensity of continuous MTF analysis through intelligent interval management. The mtfSmartIntervalSec parameter, defaulting to 300 seconds (5 minutes), determines cache refresh frequency. The system evaluates canRecheckSmartScore by comparing current time against lastCheckTime plus the configured interval.
When cache updates trigger, the system stores current calculations in cachedSmartScoreLong and cachedSmartScoreShort, creating stable reference points that reduce excessive MTF requests. This cache management balances computational efficiency with analytical accuracy.
The cache versus real-time hybrid system creates a multi-layered decision matrix where immediate signals update every tick for responsive market reaction, cached MTF scores refresh every 5 minutes for stability filtering, dynamic thresholds recalculate every bar for volatility adaptation, and sliding window analysis updates every bar for trend persistence validation.
This architecture balances real-time signal detection with multi-timeframe strategic validation, creating adaptive trading intelligence that responds immediately to market changes while maintaining strategic stability through cached analysis and volatility-adjusted decision thresholds.
⚡The Execution Section Deep Dive
The execution section represents the culmination of all previous systems – where analysis transforms into action.
🚪 Entry Execution: The Gateway Protocol
Primary Entry Validation:
Entry isn't just about seeing a signal – it's about passing through multiple security checkpoints, each designed to filter out low-quality opportunities.
Stage 1: Signal Confirmation
entryCompositeBuySignal must be TRUE for longs
entryCompositeSellSignal must be TRUE for shorts
Stage 2: Enhanced Entry Validation
The strategy employs an "OR" logic system that recognizes different types of market opportunities:
Path A - Trend Reversal Entry:
When emaTrendReversal_Long triggers, it indicates the market structure is shifting in favor of the trade direction. This isn't just about a single EMA crossing – it represents a change in market momentum that experienced traders recognize as potential high-probability setups.
Path B - Momentum Breakout Entry:
The strongBullMomentum condition is where QRE identifies accelerating market conditions:
Criteria:
EMA1 rising for 3+ candles AND
EMA2 rising for 2+ candles AND
Close > 10-period high
This combination captures those explosive moves where the market doesn't just trend – it accelerates, creating momentum-driven opportunities.
Path C - Recovery Entry:
When previous exit states are clean (no recent stop losses), the strategy permits entry based purely on signal strength. This pathway is designed to help avoid the strategy becoming overly cautious after successful trades.
🛡️ The Priority Exit Matrix: When Rules Collide
Not all exit signals are created equal. QRE uses a strict hierarchy that is designed to avoid conflicting signals from causing hesitation:
Priority Level 1 - Exception Exits (Immediate Action):
Condition: TP3 reached AND Wick Trap detected
Action: Immediate exit regardless of other signals
Rationale: Historical analysis suggests wick traps at TP3 may indicate potential reversals
Priority Level 2 - Structural Breakdown:
Condition: TP3 active AND EMA structure deteriorating AND Smart Score insufficient
Logic: isEMAStructureDown AND NOT smartHold_Long
This represents the strategy recognizing that the underlying market structure that justified the trade is failing. It's like a building inspector identifying structural issues – you don't wait for additional confirmation.
Priority Level 3 - Enhanced Volatility Exits:
Conditions: TP2 active AND Strong counter-candle AND Wick trap AND Volume spike
Logic: Multiple confirmation required to reduce false exits
Priority Level 4 - Standard Smart Score Exits:
Condition: Any TP level active AND smartHold evaluates to FALSE
This is the bread-and-butter exit logic where signal deterioration triggers exit
⚖️ Stop Loss Management: Risk Control Protocol
Dual Stop Loss System:
QRE provides two stop loss modes that users can select based on their preference:
Fixed Mode (Default - useAdaptiveSL = false):
Uses predetermined percentage levels regardless of market volatility:
- Long SL = entryPrice × (1 - fixedRiskP - slipBuffer)
- Short SL = entryPrice × (1 + fixedRiskP + slipBuffer)
- Default: 0.6% risk + 0.3% slippage buffer = 0.9% total stop
- Consistent and predictable stop loss levels
- Recommended for users who prefer stable risk parameters
Adaptive Mode (Optional - useAdaptiveSL = true):
Dynamic system that adjusts stop loss based on market volatility:
- Base Calculation uses ATR (Average True Range)
- Long SL = entryPrice × (1 - (ATR × atrMultSL) / entryPrice - slipBuffer)
- Short SL = entryPrice × (1 + (ATR × atrMultSL) / entryPrice + slipBuffer)
- Automatically widens stops during high volatility periods
- Tightens stops during low volatility periods
- Advanced users can enable for volatility-adaptive risk management
Trend Multiplier Enhancement (Both Modes):
When strongUpTrend is detected for long positions, the stop loss receives 1.5x breathing room. Strong trends often have deeper retracements before continuing. This is designed to help avoid the strategy being shaken out of active trades by normal market noise.
Mode Selection Guidance:
- New Users: Start with Fixed Mode for predictable risk levels
- Experienced Users: Consider Adaptive Mode for volatility-responsive stops
- Volatile Markets: Adaptive Mode may provide better stop placement
- Stable Markets: Fixed Mode often sufficient for consistent risk management
Early Exit Conditions:
Beyond traditional stop losses, QRE implements "smart stops" that trigger before price-based stops:
Early Long Exit: (smartScoreLong < 1.0 OR prev5BearCandles) AND realROI < -0.9%
🔄 State Management: The Memory System
Complete State Reset Protocol:
When a position closes, QRE doesn't just wipe the slate clean – it performs a methodical reset:
TP State Cleanup:
All Boolean flags: tp1/tp2/tp3HitBefore → FALSE
All Reached flags: tp1/tp2/tp3Reached → FALSE
All Active flags: tp1/tp2/tp3HoldActive → FALSE
Signal Counter Reset:
Every one of the 22 signal counters returns to zero.
This is designed to avoid signal "ghosting" where old signals influence new trades.
Memory Preservation:
While operational states reset, certain information is preserved for learning:
killReasonLong/Short: Why did this trade end?
lastExitWasTP1/TP2/TP3: What was the exit quality?
reEntryCount: How many consecutive re-entries have occurred?
🔄 Re-Entry Logic: The Comeback System
Re-Entry Conditions Matrix:
QRE implements a re-entry system that recognizes not all exits are created equal:
TP-Based Re-Entry (Enabled):
Criteria: Previous exit was TP1, TP2, or TP3
Cooldown: Minimal or bypassed entirely
Logic: Target-based exits indicate potentially viable market conditions
EMA-Based Re-Entry (Conditional):
Criteria: Previous exit was EMA-based (structural change)
Requirements: Must wait for EMA confirmation in new direction
Minimum Wait: 5 candles
Advanced Re-Entry Features:
When adjustReEntryTargets is enabled, the strategy becomes more aggressive with re-entries:
Target Adjustment: TP1 multiplied by reEntryTP1Mult (default 2.0)
Stop Adjustment: SL multiplied by reEntrySLMult (default 1.5)
Logic: If we're confident enough to re-enter, we should be confident enough to hold for bigger moves
Performance Tracking: Strategy tracks re-entry win rate, average ROI, and total performance separately from initial entries for optimization analysis.
📊 Exit Reason Analytics: Learning from Every Trade
Kill Reason Tracking:
Every exit is categorized and stored:
"TP3 Exit–Wick Trap": Exit at target level with wick pattern detection
"Smart Exit–EMA Down": Structural breakdown exit
"Smart Exit–Volatility": Volatility-based protection exit
"Exit Post-TP1/TP2/TP3": Standard smart exit progression
"Long SL Exit" / "Short SL Exit": Stop loss exits
Performance Differentiation:
The strategy tracks performance by exit type, allowing for continuous analysis:
TP-based exits: Achieved target levels, analyze for pattern improvement
EMA-based exits: Mixed results, analyze for pattern improvement
SL-based exits: Learning opportunities, adjust entry criteria
Volatility exits: Protective measures, monitor performance
🎛️ Trailing Stop Implementation:
Conditional Trailing Activation:
Activation Criteria: Position profitable beyond trailingStartPct AND
(TP hold active OR re-entry trade)
Dynamic Trailing Logic:
Unlike simple trailing stops, QRE's implementation considers market context:
Trending Markets: Wider trail offsets to avoid whipsaws
Volatile Markets: Tighter offsets to protect gains
Re-Entry Trades: Enhanced trailing to maximize second-chance opportunities
Return-to-Entry Protection:
When deactivateOnReturn is enabled, the strategy will close positions that return to entry level after being profitable. This is designed to help avoid the frustration of watching profitable trades turn into losers.
🧠 How It All Works Together
The beauty of QRE lies not in any single component, but in how everything integrates:
The Entry Decision: Multiple pathways are designed to help identify opportunities while maintaining filtering standards.
The Progression System: Each TP level unlocks new protection features, like achieving ranks in a video game.
The Exit Matrix: Prioritized decision-making aims to reduce analysis paralysis while providing appropriate responses to different market conditions.
The Memory System: Learning from each trade while preventing contamination between separate opportunities.
The Re-Entry Logic: Re-entry system that balances opportunity with risk management.
This creates a trading system where entry conditions filter for quality, progression systems adapt to changing market conditions, exit priorities handle conflicting signals intelligently, memory systems learn from each trade cycle, and re-entry logic maximizes opportunities while managing risk exposure.
📊 ANALYSIS TABLE INTERPRETATION -
⚙️ Enabling Analysis Mode
Navigate to strategy settings → "Testing & Analysis" → Enable "Show Analysis Table". The Analysis Table displays different information based on the selected test filter and provides real-time insight into all strategy components, helping users understand current market conditions, position status, and system decision-making processes.
📋 Filter Mode Interpretations
"All" Mode (Default View):
Composite Section:
Buy Score: Aggregated strength from all 22 bullish signals (threshold 5.0+ triggers entry consideration)
Sell Score: Aggregated strength from all 22 bearish signals (threshold 5.4+ triggers entry consideration)
APEX Filters:
ATG Trend: Shows current trend direction analysis
Indicates whether momentum filters are aligned for directional bias
ReEntry Section:
Most Recent Exit: Displays exit type and timeframe since last position closure
Status: Shows if ReEntry system is Ready/Waiting/Disabled
Count: Current re-entry attempts versus maximum allowed attempts
Position Section (When Active):
Status: Current position state (LONG/SHORT/FLAT)
ROI: Dual calculation showing Custom vs Real ROI percentages
Entry Price: Original position entry level
Current Price: Live market price for comparison
TP Tracking: Progress toward profit targets
"Smart" Filter (Critical for Active Positions):
Smart Exit Section:
Hold Timer: Time elapsed since position opened (bar-based counting)
Status: Whether Smart Exit Grid is Enabled/Disabled
Score: Current smart score calculation from 22-component matrix
Dynamic Threshold: ATR-based minimum score required for holding
Final Threshold: Time and ROI-adjusted threshold actually used for decisions
Score Check: Pass/Fail based on Score vs Final Threshold comparison
Smart Hold: Current hold decision status
Final Hold: Final recommendation based on all factors
🎯 Advanced Smart Exit Debugging - ROI & Time-Based Threshold System
Understanding the Multi-Layer Threshold System:
Layer 1: Dynamic Threshold (ATR-Based)
atrRatio = ATR / close
dynamicThreshold = atrRatio > 0.02 ? 1.0 : // High volatility: Lower threshold
(atrRatio > 0.01 ? 1.5 : // Medium volatility: Standard
2.8) // Low volatility: Higher threshold
Layer 2: Time Multiplier (ROI & Duration-Based)
Winning Positions (ROI ≥ 0%):
→ timeMultiplier = 1.0 (No time pressure, regardless of hold duration)
Losing Positions (ROI < 0%):
→ holdTimer ≤ 8 bars: timeMultiplier = 1.0 (Early stage, standard requirements)
→ holdTimer 9-16 bars: timeMultiplier = 1.1 (10% stricter requirements)
→ holdTimer 17+ bars: timeMultiplier = 1.3 (30% stricter requirements)
Layer 3: Final Threshold Calculation
finalThreshold = dynamicThreshold × timeMultiplier
Examples:
- Winning Position: 2.8 × 1.0 = 2.8 (Always standard)
- Losing Position (Early): 2.8 × 1.0 = 2.8 (Same as winning initially)
- Losing Position (Extended): 2.8 × 1.3 = 3.64 (Much stricter)
Real-Time Debugging Display:
Smart Exit Section shows:
Score: 3.5 → Current smartScoreLong/Short value
Dynamic Threshold: 2.8 → Base ATR-calculated threshold
Final Threshold: 3.64 (ATR×1.3) → Actual threshold used for decisions
Score Check: FAIL (3.5 vs 3.64) → Pass/Fail based on final comparison
Final Hold: NO HOLD → Actual system decision
Position Status Indicators:
Winner + Early: ATR×1.0 (No pressure)
Winner + Extended: ATR×1.0 (No pressure - winners can run indefinitely)
Loser + Early: ATR×1.0 (Recovery opportunity)
Loser + Extended: ATR×1.1 or ATR×1.3 (Increasing pressure to exit)
MTF Section:
Data Source: Shows whether using MTF Data/EMA Backup/Local EMA
Timeframe: Configured watchtower timeframe setting
Data Valid: Confirms successful MTF data retrieval status
Trend Signal: Higher timeframe directional bias analysis
Close Price: MTF price data availability confirmation
"Composite" Filter:
Composite Section:
Buy Score: Real-time weighted scoring from multiple indicators
Sell Score: Opposing directional signal strength
Threshold: Minimum scores required for signal activation
Components:
Flash/Blink: Momentum acceleration indicators (F = Flash active, B = Blink active)
Individual filter contributions showing which specific signals are firing
"ReEntry" Filter:
ReEntry System:
System: Shows if re-entry feature is Enabled/Disabled
Eligibility: Conditions for new entries in each direction
Performance: Success metrics of re-entry attempts when enabled
🎯 Key Status Indicators
Status Column Symbols:
✓ = Condition met / System active / Signal valid
✗ = Condition not met / System inactive / No signal
⏳ = Cooldown active (waiting period)
✅ = Ready state / Good condition
🔄 = Processing / Transitioning state
🔍 Critical Reading Guidelines
For Active Positions - Smart Exit Priority Reading:
1. First Check Position Type:
ROI ≥ 0% = Winning Position (Standard requirements)
ROI < 0% = Losing Position (Progressive requirements)
2. Check Hold Duration:
Early Stage (≤8 bars): Standard multiplier regardless of ROI
Extended Stage (9-16 bars): Slight pressure on losing positions
Long Stage (17+ bars): Strong pressure on losing positions
3. Score vs Final Threshold Analysis:
Score ≥ Final Threshold = HOLD (Continue position)
Score < Final Threshold = EXIT (Close position)
Watch for timeMultiplier changes as position duration increases
4. Understanding "Why No Hold?"
Common scenarios when Score Check shows FAIL:
Losing position held too long (timeMultiplier increased to 1.1 or 1.3)
Low volatility period (dynamic threshold raised to 2.8)
Signal deterioration (smart score dropped below required level)
MTF conflict (higher timeframe opposing position direction)
For Entry Signal Analysis:
Composite Score Reading: Signal strength relative to threshold requirements
Component Analysis: Individual filter contributions to overall score
EMA Structure: Confirm 3-bar crossover requirement met
Cooldown Status: Ensure sufficient time passed since last exit
For ReEntry Opportunities (when enabled):
System Status: Availability and eligibility for re-engagement
Exit Type Analysis: TP-based exits enable immediate re-entry, SL-based exits require cooldown
Condition Monitoring: Requirements for potential re-entry signals
Debugging Common Issues:
Issue: "Score is high but no hold?"
→ Check Final Threshold vs Score (not Dynamic Threshold)
→ Losing position may have increased timeMultiplier
→ Extended hold duration applying pressure
Issue: "Why different thresholds for same score?"
→ Position ROI status affects multiplier
→ Time elapsed since entry affects multiplier
→ Market volatility affects base threshold
Issue: "MTF conflicts with local signals?"
→ Higher timeframe trend opposing position
→ System designed to exit on MTF conflicts
→ Check MTF Data Valid status
⚡ Performance Optimization Notes
For Better Performance:
Analysis table updates may impact performance on some devices
Use specific filters rather than "All" mode for focused monitoring
Consider disabling during live trading for optimal chart performance
Enable only when needed for debugging or analysis
Strategic Usage:
Monitor "Smart" filter when positions are active for exit timing decisions
Use "Composite" filter during setup phases for signal strength analysis
Reference "ReEntry" filter after position closures for re-engagement opportunities
Track Final Threshold changes to understand exit pressure evolution
Advanced Debugging Workflow:
Position Entry Analysis:
Check Composite score vs threshold
Verify EMA crossover timing (3 bars prior)
Confirm cooldown completion
Hold Decision Monitoring:
Track Score vs Final Threshold progression
Monitor timeMultiplier changes over time
Watch for MTF conflicts
Exit Timing Analysis:
Identify which threshold layer caused exit
Track performance by exit type
Analyze re-entry eligibility
This analysis system provides transparency into strategy decision-making processes, allowing users to understand how signals are generated and positions are managed according to the programmed logic during various market conditions and position states.
SIGNAL TYPES AND CHARACTERISTICS
🔥 Core Momentum Signals
Flash Signal
Calculation: ta.rma(math.abs(close - close ), 5) > ta.sma(math.abs(close - close ), 7)
Purpose: Detects sudden price acceleration using smoothed momentum comparison
Characteristics: Triggers when recent price movement exceeds historical average movement
Usage: Primary momentum confirmation across multiple composite calculations
Weight: 1.3 points in composite scoring
Blink Signal
Calculation: math.abs(ta.change(close, 1)) > ta.sma(math.abs(ta.change(close, 1)), 5)
Purpose: Identifies immediate price velocity spikes
Characteristics: More sensitive than Flash, captures single-bar momentum bursts
Usage: Secondary momentum confirmation, often paired with Flash
Weight: 1.3 points in composite scoring
⚡ Advanced Composite Signals
Apex Pulse Signal
Calculation: apexAngleValue > 30 or apexAngleValue < -30
Purpose: Detects extreme EMA angle momentum
Characteristics: Identifies when trend angle exceeds ±30 degrees
Usage: Confirms directional momentum strength in trend-following scenarios
Pressure Surge Signal
Calculation: volSpike_AVP and strongTrendUp_ATG
Purpose: Combines volume expansion with trend confirmation
Characteristics: Requires both volume spike and strong uptrend simultaneously
Usage: bullish signal for trend continuation
Shift Wick Signal
Calculation: ta.crossunder(ema1, ema2) and isWickTrapDetected and directionFlip
Purpose: Detects bearish reversal with wick trap confirmation
Characteristics: Combines EMA crossunder with upper wick dominance and directional flip
Usage: Reversal signal for trend change identification
🛡️ Trap Exit Protection Signals
Bear Trap Exit
Calculation: isUpperWickTrap and isBearEngulfNow
Conditions: Previous bullish candle with 80%+ upper wick, followed by current bearish engulfing
Purpose: Emergency exit signal for long positions
Priority: Highest - overrides all other hold conditions
Action: Immediate position closure with full state reset
Bull Trap Exit
Calculation: isLowerWickTrap and isBullEngulfNow
Conditions: Previous bearish candle with 80%+ lower wick, followed by current bullish engulfing
Purpose: Emergency exit signal for short positions
Priority: Highest - overrides all other hold conditions
Action: Immediate position closure with full state reset
📊 Technical Analysis Foundation Signals
RSI-MFI Hybrid System
Base Calculation: (ta.rsi(close, 14) + ta.mfi(close, 14)) / 2
Oversold Threshold: < 35
Overbought Threshold: > 65
Weak Condition: < 35 and declining
Strong Condition: > 65 and rising
Usage: Momentum confirmation and reversal identification
ADX-DMI Trend Classification
Strong Up Trend: (adx > 25 and diplus > diminus and (diplus - diminus) > 5) or (ema1 > ema2 and ema2 > ema3 and ta.rising(ema2, 3))
Strong Down Trend: (adx > 20 and diminus > diplus - 5) or (ema1 < ema2 and ta.falling(ema1, 3))
Trend Weakening: adx < adx and adx < adx
Usage: Primary trend direction confirmation
Bollinger Band Squeeze Detection
Calculation: bbWidth < ta.lowest(bbWidth, 20) * 1.2
Purpose: Identifies low volatility periods before breakouts
Usage: Entry filter - avoids trades during consolidation
🎨 Visual Signal Indicators
Red X Signal
Calculation: isBearCandle and ta.crossunder(ema1, ema2)
Visual: Red X above price
Purpose: Bearish EMA crossunder with confirming candle
Composite Weight: +1.0 for short positions, -1.0 for long positions
Characteristics: Simple but effective trend change indicator
Green Dot Signal
Calculation: isBullCandle and ta.crossover(ema1, ema2)
Visual: Green dot below price
Purpose: Bullish EMA crossover with confirming candle
Composite Weight: +1.0 for long positions, -1.0 for short positions
Characteristics: Entry confirmation for trend-following strategies
Blue Diamond Signal
Trigger Conditions: amcBuySignal and score >= 4
Scoring Components: 11 different technical conditions
Key Requirements: AMC bullish + momentum rise + EMA expansion + volume confirmation
Visual: Blue diamond below price
Purpose: Bullish reversal or continuation signal
Characteristics: Multi-factor confirmation requiring 4+ technical alignments
Red Diamond Signal
Trigger Conditions: amcSellSignal and score >= 5
Scoring Components: 11 different technical conditions (stricter than Blue Diamond)
Key Requirements: AMC bearish + momentum crash + EMA compression + volume decline
Visual: Red diamond above price
Purpose: Potential bearish reversal or continuation signal
Characteristics: Requires higher threshold (5 vs 4) for more selective triggering
🔵 Specialized Detection Signals
Blue Dot Signal
Calculation: volumePulse and isCandleStrong and volIsHigh
Requirements: Volume > 2.0x MA, strong candle body > 35% of range, volume MA > 55
Purpose: Volume-confirmed momentum signal
Visual: Blue dot above price
Characteristics: Volume-centric signal for high-liquidity environments
Orange X Signal
Calculation: Complex multi-factor oversold reversal detection
Requirements: AMC oversold + wick trap + flash/blink + RSI-MFI oversold + bullish flip
Purpose: Oversold bounce signal with multiple confirmations
Visual: Orange X below price
Characteristics: Reversal signal requiring 5+ simultaneous conditions
VSS (Velocity Signal System)
Components: Volume spike + EMA angle + trend direction
Buy Signal: vssTrigger and vssTrendDir == 1
Sell Signal: vssTrigger and vssTrendDir == -1
Visual: Green/Red triangles
Purpose: Velocity-based momentum detection
Characteristics: Fast-response signal for momentum trading
⭐ Elite Composite Signals
Star Uprising Signal
Base Requirements: entryCompositeBuySignal and echoBodyLong and strongUpTrend and isAMCUp
Additional Confirmations: RSI hybrid strong + not high risk
Special Conditions: At bottom zone OR RSI bottom bounce OR strong volume bounce
Visual: Star symbol below price
Purpose: Bullish reversal signal from oversold conditions
Characteristics: Most selective bullish signal requiring multiple confirmations
Ultra Short Signal
Scoring System: 7-component scoring requiring 4+ points
Key Components: EMA trap + volume decline + RSI weakness + composite confirmation
Additional Requirements: Falling EMA structure + volume spike + flash confirmation
Visual: Explosion emoji above price
Purpose: Aggressive short entry for trend reversal or continuation
Characteristics: Complex multi-layered signal for experienced short selling
🎯 Composite Signal Architecture
Enhanced Composite Scoring
Long Composite: 15+ weighted components including structure, momentum, flash/blink, volume, price action, reversal triggers, trend alignment
Short Composite: Mirror structure with bearish bias
Threshold: 5.0 points required for signal activation
Conflict Resolution: If both long and short signals trigger simultaneously, both are disabled
Final Validation: Requires EMA momentum confirmation (ta.rising(emaFast_ATG, 2) for longs, ta.falling(emaFast_ATG, 2) for shorts)
Risk Assessment Integration
High Risk Long: RSI > 70 OR close > upper Bollinger Band 80%
High Risk Short: RSI < 30 OR close < lower Bollinger Band 80%
Zone Analysis: Top zone (95% of 50-bar high) vs Bottom zone (105% of 50-bar low)
Risk Penalty: High risk conditions subtract 1.5 points from composite scores
This signal architecture creates a multi-layered detection system where simple momentum signals provide foundation, technical analysis adds structure, visual indicators offer clarity, specialized detectors capture different market conditions, and composite signals identify potential opportunities while integrated risk assessment is designed to filter risky entries.
VISUAL FEATURES SHOWCASE
Ichimoku Cloud Visualization
Dynamic Color Intensity: Cloud transparency adapts to momentum strength - darker colors indicate stronger directional moves, while lighter transparency shows weakening momentum phases.
Gradient Color Mapping: Bullish momentum renders blue-purple spectrum with increasing opacity, while bearish momentum displays corresponding color gradients with intensity-based transparency.
Real-time Momentum Feedback: Color saturation provides immediate visual feedback on market structure strength, allowing traders to assess levels at a glance without additional indicators.
EMA Ribbon Bands
The 8-level exponential moving average system creates a comprehensive trend structure map with gradient color coding.
Signal Type Visualization
STRATEGY PROPERTIES & BACKTESTING DISCLOSURE
📊 Default Strategy Configuration:
✅ Initial Capital: 100,000 USD (realistic for average traders)
✅ Commission: 0.075% per trade (realistic exchange fees)
✅ Slippage: 3 ticks (market impact consideration)
✅ Position Size: 5% equity per trade (sustainable risk level)
✅ Pyramiding: Disabled (single position management)
✅ Sample Size: 185 trades over 12-month backtesting period
✅ Risk Management: Adaptive stop loss with maximum 1% risk per trade
COMPREHENSIVE BACKTESTING RESULTS
Testing Period & Market Conditions:
Backtesting Period: June 25, 2024 - June 25, 2025 (12 months)
Timeframe: 15-minute charts (MTF system active)
Market: BTCUSDT (Bitcoin/Tether)
Market Conditions: Full market cycle including volatility periods
Deep Backtesting: Enabled for maximum accuracy
📈 Performance Summary:
Total Return: +2.19% (+2,193.59 USDT)
Total Trades Executed: 185 trades
Win Rate: 34.05% (63 winning trades out of 185)
Profit Factor: 1.295 (gross profit ÷ gross loss)
Maximum Drawdown: 0.65% (653.17 USDT)
Risk-Adjusted Returns: Consistent with conservative risk management approach
📊 Detailed Trade Analysis:
Position Distribution:
Long Positions: 109 trades (58.9%) | Win Rate: 36.70%
Short Positions: 76 trades (41.1%) | Win Rate: 30.26%
Average Trade Duration: Optimized for 15-minute timeframe efficiency
Profitability Metrics:
Average Profit per Trade: 11.74 USDT (0.23%)
Average Winning Trade: 151.17 USDT (3.00%)
Average Losing Trade: 60.27 USDT (1.20%)
Win/Loss Ratio: 2.508 (winners are 2.5x larger than losses)
Largest Single Win: 436.02 USDT (8.69%)
Largest Single Loss: 107.41 USDT (controlled risk management)
💰 Financial Performance Breakdown:
Gross Profit: 9,523.93 USDT (9.52% of capital)
Gross Loss: 7,352.48 USDT (7.35% of capital)
Net Profit After Costs: 2,171.44 USDT (2.17%)
Commission Costs: 1,402.47 USDT (realistic trading expenses)
Maximum Equity Run-up: 2,431.66 USDT (2.38%)
⚖️ Risk Management Validation:
Maximum Drawdown: 0.65% showing controlled risk management
Drawdown Recovery: Consistent equity curve progression
Risk per Trade: Successfully maintained below 1.5% per position
Position Sizing: 5% equity allocation proved sustainable throughout testing period
📋 Strategy Performance Characteristics:
✅ Strengths Demonstrated:
Controlled Risk: Maximum drawdown well below industry standards (< 1%)
Positive Expectancy: Win/loss ratio of 2.5+ creates profitable edge
Consistent Performance: Steady equity curve without extreme volatility
Realistic Costs: Includes actual commission and slippage impacts
Sample Size: 185 trades during testing period
⚠️ Performance Considerations:
Win Rate: 34% win rate requires discipline to follow system signals
Market Dependency: Performance may vary significantly in different market conditions
Timeframe Sensitivity: Optimized for 15-minute charts; other timeframes may show different results
Slippage Impact: Real trading conditions may affect actual performance
📊 Benchmark Comparison:
Strategy Return: +2.19% over 12 months
Buy & Hold Bitcoin: +71.12% over same period
Strategy Advantage: Significantly lower drawdown and volatility
Risk-Adjusted Performance: Different risk profile compared to holding cryptocurrency
🎯 Real-World Application Insights:
Expected Trading Frequency:
Average: 15.4 trades per month (185 trades ÷ 12 months)
Weekly Frequency: Approximately 3-4 trades per week
Active Management: Requires regular monitoring during market hours
Capital Requirements:
Minimum Used in Testing: $10,000 for sustainable position sizing
Tested Range: $50,000-$100,000 for comfortable risk management
Commission Impact: 0.075% per trade totaled 1.4% of capital over 12 months
⚠️ IMPORTANT BACKTESTING DISCLAIMERS:
📈 Performance Reality:
Past performance does not guarantee future results. Backtesting results represent hypothetical performance and may not reflect actual trading outcomes due to market changes, execution differences, and emotional factors.
🔄 Market Condition Dependency:
This strategy's performance during the tested period may not be representative of performance in different market conditions, volatility regimes, or trending vs. sideways markets.
💸 Cost Considerations:
Actual trading costs may vary based on broker selection, market conditions, and trade size. Commission rates and slippage assumptions may differ from real-world execution.
🎯 Realistic Expectations:
The 34% win rate requires psychological discipline to continue following signals during losing streaks. Risk management and position sizing are critical for replicating these results.
⚡ Technology Dependencies:
Strategy performance assumes reliable internet connection, platform stability, and timely signal execution. Technical failures may impact actual results.
CONFIGURATION OPTIMIZATION
5-Minute Timeframe Optimization (Advanced Users Only)
⚠️ Important Warning: 5-minute timeframes operate without MTF confirmation, resulting in reduced signal quality and higher false signal rates.
Example 5-Minute Parameters:
Composite Thresholds: Long 6.5, Short 7.0 (vs 15M default 5.0/5.4)
Signal Lookback Bars: 12 (vs 15M default 8)
Volume Multiplier: 2.2 (vs 15M default 1.8)
MTF Timeframe: Disabled (automatic below 30M)
Risk Management Adjustments:
Position Size: Reduce to 3% (vs 5% default)
TP1: 0.8%, TP2: 1.2%, TP3: 2.0% (tighter targets)
SL: 0.8% (tighter stop loss)
Cooldown Minutes: 8 (vs 5 default)
Usage Notes for 5-Minute Trading:
- Wait for higher composite scores before entry
- Require stronger volume confirmation
- Monitor EMA structure more closely
15-Minute Scalping Setup:
TP1: 1.0%, TP2: 1.5%, TP3: 2.5%
Composite Threshold: 5.0 (higher filtering)
TP ATR Multiplier: 7.0
SL ATR Multiplier: 2.5
Volume Multiplier: 1.8 (requires stronger confirmation)
Hold Time: 2 bars minimum
3-Hour Swing Setup:
TP1: 2.0%, TP2: 4.0%, TP3: 8.0%
Composite Threshold: 4.5 (more signals)
TP ATR Multiplier: 8.0
SL ATR Multiplier: 3.2
Volume Multiplier: 1.2
Hold Time: 6 bars minimum
Market-Specific Adjustments
High Volatility Periods:
Increase ATR multipliers (TP: 2.0x, SL: 1.2x)
Raise composite thresholds (+0.5 points)
Reduce position size
Enable cooldown periods
Low Volatility Periods:
Decrease ATR multipliers (TP: 1.2x, SL: 0.8x)
Lower composite thresholds (-0.3 points)
Standard position sizing
Disable extended cooldowns
News Events:
Temporarily disable strategy 30 minutes before major releases
Increase volume requirements (2.0x multiplier)
Reduce position sizes by 50%
Monitor for unusual price action
RISK MANAGEMENT
Dual ROI System: Adaptive vs Fixed Mode
Adaptive RR Mode:
Uses ATR (Average True Range) for automatic adjustment
TP1: 1.0x ATR from entry price
TP2: 1.5x ATR from entry price
TP3: 2.0x ATR from entry price
Stop Loss: 1.0x ATR from entry price
Automatically adjusts to market volatility
Fixed Percentage Mode:
Uses predetermined percentage levels
TP1: 1.0% (default)
TP2: 1.5% (default)
TP3: 2.5% (default)
Stop Loss: 0.9% total (0.6% risk tolerance + 0.3% slippage buffer)(default)
Consistent levels regardless of volatility
Mode Selection: Enable "Use Adaptive RR" for ATR-based targets, disable for fixed percentages. Adaptive mode works better in varying volatility conditions, while fixed mode provides predictable risk/reward ratios.
Stop Loss Management
In Adaptive SL Mode:
Automatically scales with market volatility
Tight stops during low volatility (smaller ATR)
Wider stops during high volatility (larger ATR)
Include 0.3% slippage buffer in both modes
In Fixed Mode:
Consistent percentage-based stops
2% for crypto, 1.5% for forex, 1% for stocks
Manual adjustment needed for different market conditions
Trailing Stop System
Configuration:
Enable Trailing: Activates dynamic stop loss adjustment
Start Trailing %: Profit level to begin trailing (default 1.0%)
Trailing Offset %: Distance from current price (default 0.5%)
Close if Return to Entry: Optional immediate exit if price returns to entry level
Operation: Once position reaches trailing start level, stop loss automatically adjusts upward (longs) or downward (shorts) maintaining the offset distance from favorable price movement.
Timeframe-Specific Risk Considerations
15-Minute and Above (Tested):
✅ Full MTF system active
✅ Standard risk parameters apply
✅ Backtested performance metrics valid
✅ Standard position sizing (5%)
5-Minute Timeframes (Advanced Only):
⚠️ MTF system inactive - local signals only
⚠️ Higher false signal rate expected
⚠️ Reduced position sizing preferred (3%)
⚠️ Tighter stop losses required (0.8% vs 1.2%)
⚠️ Requires parameter optimization
⚠️ Monitor performance closely
1-Minute Timeframes (Limited Testing):
❌ Excessive noise levels
❌ Strategy not optimized for this frequency
Risk Management Practices
Allocate no more than 5% of your total investment portfolio to high-risk trading
Never trade with funds you cannot afford to lose
Thoroughly backtest and validate the strategy with small amounts before full implementation
Always maintain proper risk management and stop-loss settings
IMPORTANT DISCLAIMERS
Performance Disclaimer
Past performance does not guarantee future results. All trading involves substantial risk of loss. This strategy is provided for informational purposes and does not constitute financial advice.
Market Risk
Cryptocurrency and forex markets are highly volatile. Prices can move rapidly against positions, resulting in significant losses. Users should never risk more than they can afford to lose.
Strategy Limitations
This strategy relies on technical analysis and may not perform well during fundamental market shifts, news events, or unprecedented market conditions. No trading strategy can guarantee 100% success or eliminate the risk of loss.
Legal Compliance
You are responsible for compliance with all applicable regulations and laws in your jurisdiction. Consult with licensed financial professionals when necessary.
User Responsibility
Users are responsible for their own trading decisions, risk management, and compliance with applicable regulations in their jurisdiction.
AQPRO ScalperX📝 INTRODUCTION
AQPRO ScalperX is a trading indicator designed for fast-paced, intraday trading. It uses Donchian channel breakouts, combined with a proprietary filtering system, to catch buy and sell opportunities as close to the beginning as possible without losing quality of the signals.
On top of core signals, ScalperX includes a real-time max profit tracker, a multi-timeframe (MTF) dashboard, support and resistance zones, and risk management visualization tools like automatic rendering of TP and SL lines. The indicator is fully customizable for both its visuals and functional settings.
🎯 PURPOSE OF USAGE
This indicator was initially designed with the idea of trying to make such a tool, that would be able to catch trend reversal in the most safe way. In this particular situation term 'safe way' is very abstract and it is up to interpretation, but we decided that our definition will be 'trading with price breakouts' , meaning that we would like to capitalize on price breaking its previous structure in the direction opposite to the previous one.
You can clearly see on the chart how buy and sell signals are going one after another on the screenshot below:
This ensures that we follow trend consistently and without missing out on potential profits. Just like they say: " let the winners run ".
Even though indicator with similar goals already exist in the open market, we believe that our proprietary algorithms and filters for determining price breakouts can make a big difference to traders, which employ similar strategies on daily basis, by helping them understand where are the potential high-quality breakouts might be. We haven't found indicator with exact same functionality as ours, which means that traders will be able to leverage an actually new tool to generate new price insights.
In short, main goals of this indicator are as follows:
Catching high-quality price breakouts, filtered to reduce the amount of choppy moves and false signals;
Tracking potential profits in real-time, directly on trader's chart;
Organizing data visualization of data pf latest signals from chosen asset from multiple timeframe in one dashboard;
Automated highlighting of key support and resistance zones on the chart, which serve as confirmation for main signals;
⚙️ SETTINGS OVERVIEW
Options for customization of this indicator are straightforward, but let's review them to make things certainly clear:
🔑 ScalperX / Main Settings
Range — defines the "wideness" of the breakout boxes. Higher values create wider breakout zones and impact breakout sensitivity;
Filter — adjusts the spacing between breakout boxes, determining the strictness of signal filtering. Higher values lead to more selective and rarer signals;
Show Max Profit — displays a real-time line and label that updates when a trade achieves a new peak profit, measured in ticks.
⏰ MTF Signal / Main Settings
Show MTF Signals — enables the generation of buy/sell signals from selected higher timeframes, displayed as labels on the current chart;
Timeframe — specifies the higher timeframe to use for MTF signal detection, such as 1 hour (1h) or 4 hours (4h).
🗂️ MTF Dashboard / Main Settings
Show MTF Dashboard — activates a dashboard that tracks entries, TP, SL, and overall trade bias for one selected symbol across four customizable timeframes;
* Dashboard position ( Vertical ) — adjusts whether the dashboard appears on the Top, Middle, or Bottom of the chart;
* Dashboard position ( Horizontal ) — aligns the dashboard Left, Center, or Right within the chart window;
* the name of the parameter is hidden in the settings
🗂️ MTF Dashboard / Ticker
Ticker to Track — Allows you to choose the specific ticker symbol (e.g., BINANCE:BTCUSDT) for MTF tracking.
🗂️ MTF Dashboard / Timeframes
* Timeframe 1 — set the first timeframe for multi-timeframe analysis (e.g., 15 minutes);
* Timeframe 2 — set the second timeframe for multi-timeframe analysis (e.g., 30 minutes);
* Timeframe 3 — set the third timeframe for multi-timeframe analysis (e.g., 1 hour);
* Timeframe 4 — set the fourth timeframe for multi-timeframe analysis (e.g., 4 hours).
* the name of the parameter is hidden in the settings
🛡️ Risk Management / Main Settings
Show TP&SL — displays dynamic lines and labels for the entry, Take Profit (TP), and Stop Loss (SL) of the most recent signal, updated in real-time until a new signal triggers;
Risk-to-Reward Ratio (R:R) — defines the ratio for TP and SL calculation to control your risk and reward on every trade.
📐 Support & Resistance / Main Settings
Show Support & Resistance Zones — enables dynamic zones based on pivot points, colored bullish or bearish based on price context;
History Lookback — defines the number of bars to consider when calculating support and resistance levels. Increasing this results in zones derived from longer-term price structures.
🎨 Visual Settings / ScalperX
Bullish Box — defines the color for bullish breakout boxes;
Bearish Box — defines the color for bearish breakout boxes;
Max Profit — sets the color for the max profit line on the chart.
🎨 Visual Settings / S&R
Support — defines color used for standard support zones;
Resistance — defines color used for standard resistance zones;
Strong Support — defines special color for zones classified as "strong support";
Strong Resistance — defines special color for zones classified as "strong resistance".
🎨 Visual Settings / MTF Dashboard
Bullish — sets the color for bullish trade states in the MTF dashboard;
Bearish — sets the color for bearish trade states in the MTF dashboard.
🔔 Alerts / Main Settings
Buy & Sell — toggles alerts for buy and sell signals detected by the indicator in the current chart timeframe;
MTF Buy & Sell — toggles alerts for buy and sell signals detected across the selected MTF timeframes.
📈 APPLICATION GUIDE
Application flow of this indicator very easy to understand and get used to, because all of the necessary elements — analysis, drawing, alert — are already automated by our algorithms. Let's review how the indicator works.
Let's start with the most basic thing — how will your indicator look when you load it on your chart for the first time:
AQPRO ScalperX consists mainly of 6 logic blocks:
ScalperX signals;
Risk visualization;
Max Profit tracking;
MTF scalper signals;
MTF dashboard;
Support & Resistance zones.
Description of each logic block is provided in the corresponding sections below.
SCALPERX SIGNALS
Signals, generated by our indicator, are shown on the chart as coloured up/down triangle. When a signal appears on the chart, indicator also create a box of length equal to 'Range' parameter from "Main Settings" group of settings. This box is intended to show which area of the price was broken by current candle.
It also important to acknowledge, the breakout itself happens only when price closes beyond broken price area with its close (!) price . Breakouts with highs or lows are not counted. This reduces the amount of low-quality signals and ensures that only the strong breakout will appear on the chart.
VERY IMPORTANT NOTE: all signals are considered valid only on the close of the candle, which triggered the signal, so if you want to enter a trade by any signal, wait for its candle to close and open your trade right on the next candle.
Talking about scalper's settings, we need to shed a light on how the changes in them affect signal's quality.
Parameter 'Range' defines the amount of bars, that will be review prior to current candle to determine wether the price area of this bars is good enough to track and if current candle actually broke this price area.
👍 Rule of thumb : the higher the 'Range' is, the "wider" the boxes. Also the with the increase of this parameter rises the lag of the signals, so be carefully with setting high values to this parameter.
See the visual showcase of signals with different 'Range' parameters on the screenshot below:
The example above features two instancies of ScalperX with two different 'Range' parameter values: 15 (leftchart) and 5 (right chart). You can clearly see, that on left chart here are 2 signals in comparison to 6 signals on right chart. Also signals on the left side have bigger lag and they don't catch the start of the move in comparison to how quickly tops and bottoms are catched with low 'Range' . However, low 'Range' will lead to excessive amount of signals, quality of which during 'whipsaw' markets is not that great.
✉️ Our advice on how to optimally set 'Range' parameter:
Use low values to trade during the times, when there are a lot of clean up and down impulses. This way you will catch reversal opportunities sooner and the quality of the signals will still be great;
Use high values on the 'whipsaw' markets. This will filter out many bad signals, that you would get with low-value 'Range' , and will drastically reduces amount of losing trades.
Talking about the 'Filter' parameter, this particular setting defines the 'strictness' of rules which will be applied to price area validation process. Essentially, the higher this parameter is, the stronger price impulse has to be confirm the breakout. However, changes in this parameter will not impact the "wideness" of boxes at all.
👍 Rule of thumb : the higher the 'Filter' is, the more separated the signal will be. Setting this parameter to high value will lead to increase in lag and big reduction in amount of signals, so be careful this parameter to high values.
See the visual showcase of signals with different 'Filter' parameters on the screenshot below:
The example above features two instancies of ScalperX with two different 'Filter' parameter values: 20 (left chart) and 2.5 (right chart). You can clear see, that low 'Filter' generated 6 signals, while higher one generated only 4 signals. However if you look closer, you will see that 2 signals, that existing in the yellow dashed area on the right chart, don't exist in the same area on the left chart. This is because high value of this parameter requires price impulse to be very strong in order for the indicator to mark this breakout as a valid one. What is more important is that these 2 'missing' signals were actually bad and, technically, we actually cut our losses in this case with high value of 'Filter' . You can see that the leftmost sell signal on the left chart eventually closed in a nice profit, in comparison to the same trade being closed in a loss on the right chart because of the 2 signals that we were talking about above.
It is important to note, that setting 'Filter' to low values will not affect performance this much as it low value of 'Range' do, because the indicator already works on low values of this parameter by default and the signals on average are already good enough for trading.
✉️ Our advice on how to optimally set 'Filter' parameter:
Use low values to trade on the markets with clean up and down impulses. This way you avoid excessive filtering and leave a room for good signals to come right at you;
Use high values to trade on 'whipsaw' markets. Higher values of this parameter on these markets have same effect as high 'Range' parameter: filtering false signals and leaving room for actually strong price impulses, which you will later capitalize on.
RISK VISUALIZATION (TP&SL)
Rendering Take-Profits and Stop-Losses in our indicator works quite simple: for each new trade indicator creates new pairs of lines and labels for TP and SL, while lines & labels from previous trade are erased for aesthetics purposes. Each label shows price coordinates, so that each trader would be able to grap the numbers in seconds.
See the visual showcase of TP & SL visualization on the screenshot below:
Also, whenever TP or SL of the current trade is reached, drawing of both TP and SL stops. When the TP is reached, additional '✅' emoji on the TP price is shown as confirmation of Take-Profit.
However, while TP or SL has not been reached, TP&SL labels and lines will be prolonged until one of them will be reached or new signals will come.
See the visual showcase of TP & SL stopping being visualized & TP on the screenshot below:
MAX PROFIT TRACKING
This mechanic is not particularly a new one in field of trading, but people usually forgot that it can be a useful indicator of state of the market:
when lines and labels of Max Profit are far from entry points on consistent basis , it usually means that indicator's signals actually can catch a beginning of good price moves, which enables trader to capitalize on them;
when lines and labels of Max Profit are close to entry points on consistent basis , it means that either market is choppy or the indicator can't catch trading opportunities in time. To 'fix' this you can try to reconfigure scalper's parameters, which were described above.
Principles of Max Profit in this indicator are of industry-standard: when price updates its extremum and 'generates' more profit than it previously did, Max Profit label and line change their position to this extremum. Max Profit label displays the maximum potential amount of profit that a trader could have got during this trade in pips (!) .
See the visual showcase of Max Profit work on the screenshot below:
MTF SCALPER SIGNALS
The principles of these signals are exactly the same as principles for classic Scalper signals. Refer to 'Scalper Signals' section above to rehearse the knowledge.
Logic behind these signals is very simple:
We take classic Scalper signals;
We request the data about these latest signals from specific other timeframe ( user can choose it in the settings );
If such signals appeared, we display it on the chart as a big label with timeframe value inside of it. In comparison to classic signals, no additional boxes are created . TP&SL functionality doesn't cover MTF signals, so don't expect to see TP&SL lines and labels for MTF signals.
See the visual showcase of MTF Scalper signals on the screenshot below:
MTF DASHBOARD
The functionality of the dashboard is pretty simple, but it makes the dashboard itself a very powerful tool in a hands of experienced trader.
Let's review structure of MTF dashboard on the screenshot below:
The important feature of MTF dashboard is that its tracks latest trade's data from a particular ticker and its four timeframes, all of which any trader chooses in the settings. This means, that you can be on asset ABC , but track the data from asset XYZ . This allows for a quick scan of sentiment from different assets and their timeframes, which gives traders a clue on what is the trend on these assets both on lower and higher timeframes at the same moment and saves a lot of time from jumping from one asset & timeframe to another.
To see that this is exactly the case with our indicator, see the screenshot below:
Needless to say, that you can track current asset in the dashboard as well. This will have the same benefits, described in the paragraph above.
You can also customize colours for bullish and bearish patterns for MTF Dashboard in the settings.
SUPPORT & RESISTANCE ZONES
Support & resistance (S&R) zones are a great tool for confirming Scalper signals in complex situations. Using these zones to determine whether or a particular entry opportunity is good is a practice of professional traders, which we specifically added to our indicator for the reason of improving the quality of Scalper signals in long run.
The mechanics behind these zones is based on pivot points, the lookback for which you can customize in the parameter called 'History Lookback (Bars)' in "Support & Resistance / Main Settings" group of settings. Increasing this parameter will lead to a appearance of more 'global' zones, but they will appear much rarer, rather then zones, generated with low values of this parameter.
The quality of these zones doesn't change much when changing this parameter — it only changes the frequency of the zones on the chart. Zones, generated from high values of this parameter are more suitable for long-term trading, while zones, generated from low value of this parameter, are more suitable for short-term trading.
It also important to mention that any zone on the chart is considered active only until the moment its farther border ( top border for resistance zones and bottom border for support zones) is reached by price's high or low .
Take a look on the screenshot below to see which zones does the indicator draw:
Let's review the zones themselves now:
Classic Support/Resistance Zone — a standard zone, which on average has amedium success rate to reverse the price when collided with it;
High-buyer-volume/High-seller-volume Support/Resistance Zone — a stronger zone, which on average has much better success rate to reverse the price when collided with it. Classic zone is marked as high-volume only if the up/down volume near the pivot point of this zone is greater than a certain threshold ( not changeable );
Extreme Support/Resistance Zone — a zone, which appeared beyond price's least-possible-to-cross levels, and has to the highest success rate of reversing the price on encounter across the zones, mentioned previously. Classic zone, which appeared beyond certain price levels, calculated with our proprietary risk system, is considered extreme. Classic zone doesn't need to be high-volume to become an Extreme Zone!
High-buyer-volume/High-seller-volume Extreme Support/Resistance Zone — an Extreme Zone, which has also passed up/down volume evolution process, mentioned in the point 2 .
Trading with the zones, mentioned above, with highest-on-paper success rate — especially Extreme Zones — does NOT guarantee you a price reversal when the price will reach this zone. However, by conducting our own extensive research with this indicator, we have found that using these zone will actually help you increase your success rate on average, because using these zones as confirmation systems filter out quite a number of false signals on average.
It is also important to mention, that opacity (same as 'transparency') of S&R zones depends on the volume of around zone's pivot point:
if volume is high , zone has 'brighter' (less opacity) colour;
if volume is low , zone has 'darker' (more opacity) colour.
Let's review examples of Scalper signal, which 1) where filtered out by our S&R zones and 2) where confirmed by our S&R zones. See the screenshot below:
The example above clearly shows the importance of having an S&R zone confirming the signal. This kind of 'team work' between of Scalper signals and S&R zones results in filtering lots of bad signals and confirmation of truly strong ones.
🔔 ALERTS
This indicator employs alerts for an event when new signal occurs on the current timeframe or on MTF timeframe. While creating the alert below 'Condition' field choose 'any alert() function call'.
When this alert is triggered, it will generate this kind of message:
// Alerts for current timeframe
string msg_template = "EXCHANGE:ASSET, TIMEFRAME: BUY_OR_SELL"
string msg_example = "BINANCE:BTCUSDT, 15m: Buy"
// Alerts for MTF timeframe
string msg_template_mtf = "MTF / EXCHANGE:ASSET, TIMEFRAME: BUY_OR_SELL"
string msg_example_mtf = "MTF / BINANCE:BTCUSDT, 1h: Buy"
📌 NOTES
This indicators works best on assets with high liquidity; most suitable timeframes range from 1m to 4h (depends on your trading style) ;
Seriously consider using S&R zones as confirmation to main Scalper signals or any of your own signals. Confirmation process may filter out a lot of signals, but your PNL History will say "thank you" to you in the long-run and you will see yourself how good confirmed signals actually do work;
Don't forget to look at MTF dashboard from time to time to see global sentiment. This will help you time your entry moments better and will improve your performance in the long run;
This indicator can serve both as primary source of signals and as confirmation tool, but we advise to try to combine it with your own strategy frst to see if it will improve your performance.
🏁 AFTERWORD
AQPRO ScalperX was designed to help traders identify high-quality price breakouts and generate market insights based on them, which include signal generation. Main feature of this indicator is Scalper algorithm, which generate price-breakout-based signals directly on your chart.
Alongside these signals you can leverage 1) MTF Dashboard to track latest trade's data from chosen asset and its four timeframes, 2) risk visualization functionality (TP&SL) to improve understanding of current market risks and 3) Support & Resistance zones, which serve as a great confirmation tool for Scalper signals, but can also work with any other signal generation tool to enhance its performance.
ℹ️ If you have questions about this or any other our indicator, please leave it in the comments.
ICT Smart Money Trading Suite PRO [SwissAlgo]ICT SMC Trading Suite Pro
Structure Detection. Imbalance Tracking. Trade Planning. Contextual Alerts.
Why This Integrated System Was Built
The ICT/SMC methodology requires tracking multiple analytical components simultaneously - a process prone to manual errors, time inefficiency, and visual clutter . This indicator consolidates these elements into a single, unified system , providing rules-based validation for experienced ICT traders who may struggle with execution speed, consistency, and manual calculations.
-----------------------------------------------------------------
What This Indicator Does
ICT/SMC methodology involves tracking multiple analytical components simultaneously. This indicator consolidates them into a single system.
Common challenges when applying ICT manually:
1️⃣ Structure Identification
Determining which pivots qualify as external (macro) structure versus internal (micro) structure requires consistent rules. Inconsistent structure identification affects the detection of the relevant trading range for entries , Change of Character (ChoCH) , and Break of Structure (BoS) . Accurate structure identification is paramount ; a faulty reading invalidates the entire ICT thesis for the current swing. While no automated system can replace human judgment, the indicator provides you with a rules-based starting point for structural analysis. The key goal is to help you find and map the relevant structural leg to focus on.
2️⃣ Chart Organization
Drawing Fibonacci retracements, Fair Value Gaps, Order Blocks, and other imbalances manually creates visual complexity that can obscure the analysis. The indicator addresses this by striving to show all imbalances in a consistent, unified, and understandable visual way , using color coding and z-order layering to maintain clarity even when multiple components are active.
3️⃣ Imbalance Tracking
ICT methodology requires monitoring a vast array of institutional footprints : Fair Value Gaps (FVG), Order Blocks (OB), Breaker Blocks (BB), Liquidity Pools (LP), Volume Imbalances, Wick Imbalances, and Kill Zone ranges. Tracking all these simultaneously and manually monitoring their mitigation status is highly time-intensive and prone to oversight . The indicator constantly scans and tracks all key imbalance types for you, automatically updating their status and creating a dynamic, real-time visual heatmap of unmitigated institutional inefficiency.
4️⃣ Trade Calculation
Determining structure-based Stop Loss (SL) placement, calculating multiple Take Profit (TP) levels with accurate position-sizing splits, and computing the final blended Risk-to-Reward (R:R) ratio involves multiple time-sensitive, manual calculations per setup . The indicator automates this entire trade calculation process for you, instantly providing the necessary pricing (entry, SL, TP), sizing, and performance projections, and mitigating the risk of execution error .
5️⃣ Condition Monitoring
ICT setups often require specific technical conditions to align: price reaching discount Fibonacci levels (0.618-0.882 for shorts, 0.118-0.382 for longs), EMA crossovers confirming momentum, or structural shifts (ChoCH/BoS). Identifying these moments requires continuous chart observation across multiple assets and timeframes.
This indicator includes an alert system that monitors these technical conditions and sends notifications when they occur (real-time). The alert system is designed to minimize spam. This allows traders to review potential setups on demand rather than through continuous observation - particularly relevant for those monitoring multiple instruments or trading sessions outside their local timezone.
-----------------------------------------------------------------
Intended Use
This indicator is designed for traders who:
♦ Apply ICT/SMC methodology - Familiarity with concepts such as Fair Value Gaps, Order Blocks, Liquidity Pools, market structure, and discount/premium zones is assumed. The indicator does not teach these concepts but provides tools to apply them.
♦ Trade on intraday to swing timeframes - The structure detection and Fibonacci zone mapping work across multiple timeframes. Recommended primary timeframe: 1H (adjustable based on trading approach).
♦ Prefer systematic entry planning - The trade calculation feature computes stop loss, take profit levels, and risk-to-reward ratios based on structure and Fibonacci positioning. Suitable for traders who use defined entry criteria.
♦ Monitor multiple instruments or sessions - The alert functionality notifies when specific technical conditions occur (discount zone entries, EMA crossovers, structure changes), reducing the need for continuous manual monitoring.
♦ Use trade execution platforms - The trade summary table displays pre-formatted values (entry, SL, TP levels with quantity splits) that can be manually input into trading platforms or bot services like 3Commas.
-----------------------------------------------------------------
How To Use
Step 1: Structure Analysis
The indicator automatically detects external and internal market structure using pivot analysis. Structure lines are color-coded: red for bearish structure, green for bullish. External pivots are marked with larger triangles, internal pivots with smaller markers. The pivot length parameters (default: 20/20) can be adjusted in settings to align with your structural analysis approach and the asset you are analyzing.
Step 2: Define Your Trading Zone
Use the "Start Swing" and "End Swing" date inputs to mark the beginning and end of the (external) structural leg you wish to analyze. The indicator calculates Fibonacci retracement levels based on these points and color-codes the zones:
* Green zones: Discount area (0.618-0.882 for bearish / 0.118-0.382 for bullish)
* Yellow zones: Premium area (0.786-1.0 for bearish / 0.0-0.214 for bullish)
* Red zones: Extension area beyond structure (potential fake-out zones)
Step 3: Review Imbalances
The indicator identifies and displays multiple imbalance types:
🔥 Volume imbalances (from displacement candles based on PVSRA methodology)
🔥 Fair Value Gaps (FVG)
🔥 Order Blocks (OB) and Breaker Blocks (BB)
🔥 Liquidity Pools (LP) at equal highs/lows
🔥 Wick imbalances (exceptional wick formations)
🔥 Kill Zone liquidity from specific trading sessions (Asian, London, NY AM)
Volume Imbalances
Fair Value Gaps
Order Blocks
Liquidity Pools
Wick Imbalances
Kill Zone Imbalances
According to ICT methodology, imbalances act as price magnets - areas where price tends to return for mitigation. When multiple imbalances overlap at the same price level, this creates a confluence zone with a higher probability of price reaction .
Imbalances are displayed as gray boxes , creating a visual heatmap of institutional inefficiencies. When imbalances overlap, the zones appear darker due to layering, and labels combine to show confluence (e.g., "FVG + OB" or "Vol + LP").
Heatmap of Imbalances
User can view each type alone, or all together (heatmap)
Each imbalance type is tracked until mitigated by price according to ICT principles and can be toggled on/off independently in settings.
Step 4: Reference Levels & Sessions
The indicator displays additional reference data:
🔥 Daily Pivot Points (PP, R1-R3, S1-S3) calculated from previous day
🔥Average Daily Range (ADR) projected from the current day's extremes
🔥 Daily OHLC levels: Today's Open (DO), Previous Day High (PDH), Previous Day Low (PDL)
🔥Session backgrounds (optional): Color-coded boxes for Asian, London, NY AM, and NY PM sessions
Sessions
While these are not ICT-specific imbalances, they represent widely-watched price levels that often attract institutional activity and can act as additional reference points for support, resistance, and liquidity targeting.
All reference levels can be toggled independently in settings.
Step 5: Momentum Reference
EMA 14 and EMA 21 lines are displayed for momentum analysis. When EMA 14 enters discount zones and crosses EMA 21, a triangle marker appears on the chart. This indicates a potential alignment of structure and momentum conditions.
Step 6: Trade Planning
Input your intended entry price in the "Entry Price" field along with your margin and leverage parameters. The indicator automatically calculates all trade parameters:
* Stop loss level (based on Fibonacci structure - typically at 1.118 extension)
* Three take profit levels (TP1, TP2, TP3) with position quantity splits
* Risk-to-reward ratio (blended across all three targets)
* Projected profit/loss values in both dollars and percentage
All calculated values are displayed both visually on the chart (as horizontal lines with labels) and in a formatted Trade Summary table. The table organizes the information for quick reference: entry details, take profit levels with quantities, stop loss parameters, and performance projections.
This pre-calculated data can be manually copied into trading platforms or bot services (such as 3Commas Smart Trades) without requiring additional calculations.
Step 7: Alert Configuration
Create alerts using TradingView's alert system (select "Any alert() function call"). The indicator sends notifications when:
* Price reaches specific discount Fibonacci levels (0.618, 0.786, 0.882 for shorts / 0.382, 0.214, 0.118 for longs)
* EMA 14/21 crossovers occur within discount zones
* Change of Character (ChoCH) is detected
* Break of Structure (BoS) is detected
Note: Alerts require active TradingView alert functionality. Update alerts when changing your trading zone parameters.
-----------------------------------------------------------------
Key Features
Structure & Zone Analysis
* Automated structure detection with external/internal pivots and zig-zag visualization
* Fibonacci retracement mapping with color-coded discount/premium zones
* Visual zone classification: Green (optimal discount), Yellow (premium), Red (fake-out risk)
ICT Imbalances Heatmap
* Volume imbalances (PVSRA displacement candles)
* Fair Value Gaps (FVG)
* Order Blocks (OB) and Breaker Blocks (BB)
* Liquidity Pools (LP) at equal highs/lows
* Wick imbalances (exceptional wick formations)
* Kill Zone liquidity (Asian, London, NY AM sessions)
* Confluence detection with combined labels and visual layering
Reference Levels
* Daily Pivot Points (PP, R1-R3, S1-S3)
* Average Daily Range (ADR) projections
* Daily OHLC levels (DO, PDH, PDL)
* Session backgrounds for kill zones
Trade Planning Tools
* Automated stop loss calculation based on Fibonacci structure
* Three-tier take profit system with position quantity splits
* Risk-to-reward ratio calculation (blended across all targets)
* P&L projections in dollars and percentages
* Trade Summary table formatted for manual platform entry
Momentum & Signals
* EMA 14/21 overlay for momentum analysis
* Visual crossover markers (triangles) in discount zones
* Change of Character (ChoCH) detection and labels
* Break of Structure (BoS) detection and labels
Chart Enhancements
* Higher timeframe candle overlay (5m to Monthly)
* PVSRA candle coloring (volume-based)
* Symbol legend for quick reference
* Customizable visual elements (toggle all components independently)
Alert System
* Discount zone entry notifications (Fibonacci level monitoring)
* EMA crossover signals within discount zones
* Structure change alerts (ChoCH and BoS)
* Configurable via TradingView alert functionality
Alert Functionality
The indicator includes an alert system that monitors technical conditions continuously.
When configured, alerts notify users when specific events occur:
❗ Discount Zone Monitoring
When EMA 14 crosses into key Fibonacci levels (0.618, 0.786, 0.882 for bearish structure / 0.382, 0.214, 0.118 for bullish structure), an alert is triggered. Example: Trading BTC and ETH simultaneously - instead of monitoring both charts for zone entries, alerts notify when either asset reaches the specified level.
❗ Momentum Alignment
When EMA 14 crosses EMA 21 within discount zones, an alert is sent. Example: Monitoring setups across multiple timeframes (1H, 4H, Daily) - alerts indicate when momentum conditions align on any timeframe being tracked.
❗ Structure Changes
Change of Character (ChoCH) and Break of Structure (BoS) events trigger alerts. Example: Trading during the Asian session while located in a different timezone - alerts notify of structure changes occurring outside active monitoring hours.
Configuration
Alerts are set up through TradingView's native alert system. Select "Any alert() function call" when creating the alert.
⚠️ Note: Alert parameters are captured at creation time, so alerts must be updated when changing trading zone settings (Start/End Swing dates) or any other parameter.
How to Create Alerts
Step 1: Open Alert Creation
Click the "Alert" button (clock icon) in the top toolbar of TradingView, or right-click on the chart and select "Add Alert."
Step 2: Configure Alert Condition
* In the alert dialog, set the Condition dropdown to select this indicator
* Set the alert type to ⚠️ " Any alert() function call "
* This configuration allows the indicator to trigger alerts based on its internal logic
Step 3: Set Alert Timing
* Timeframe: Same as chart
* Expiration: Choose "Open-ended (when triggered)" to keep the alert active until conditions occur
* Message tab: choose a name for the alert
Step 4: Notification Settings
Configure how you want to receive notifications:
* Popup within TradingView
* Email notification
* Mobile app push notification (requires TradingView mobile app)
Step 5: Create
Important Notes:
* Alert parameters are captured at creation time . If you change your trading zone (Start/End Swing dates) or entry price, delete the old alert and create a new one .
* One alert per chart: Create separate alerts for each instrument and timeframe you're monitoring.
* TradingView alert limits apply based on your TradingView subscription tier.
What Triggers Alerts: This indicator sends alerts for four key event types:
1. Discount Zone Entry - EMA 14 crossing key Fibonacci levels
2. Momentum Crossover - EMA 14/21 crossovers within discount zones
3. Change of Character (ChoCH) - Structure reversal detected
4. Break of Structure (BoS) - Trend continuation confirmed
All four conditions are monitored by a single alert configuration .
-----------------------------------------------------------------
Recommended Settings
* Timeframe : 1H works well for most assets
* Theme : Dark mode recommended
* Structural Pivots : Default 20/20 captures reasonable structure; adjust to match your analysis
-----------------------------------------------------------------
Chart Elements Guide
♦ Structure Visualization
Zig-zag lines
Automated structure detection - green lines indicate bullish structure, red lines indicate bearish structure. Thick lines represent external structure , thin faded lines show internal structure .
Triangle markers
Large triangles mark external pivots (swing highs/lows), small triangles mark internal pivots.
Fibonacci Zones
* Green zones: Discount area - potential entry zones (0.618-0.882 for shorts / 0.118-0.382 for longs)
* Yellow zones: Premium area - higher extension zones (0.786-1.0 for shorts / 0.0-0.214 for longs)
* Red zones: Fake-out risk area - price beyond structural extremes (above 1.0 for shorts / below 0.0 for longs)
* White dashed lines: Individual Fibonacci levels (1.0, 0.882, 0.786, 0.618, 0.5, 0.382, 0.214, 0.118, 0.0)
♦ Imbalance Heatmap
Gray boxes with dotted midlines
Unmitigated imbalances create a visual heatmap. Overlapping imbalances appear darker due to layering.
Combined labels
When multiple imbalances overlap, labels show confluence (e.g., "FVG + OB", "Vol + LP + Wick")
Types displayed : Vol (Volume), FVG (Fair Value Gap), OB (Order Block), BB (Breaker Block), LP (Liquidity Pool), Wick, KZ (Kill Zone)
♦ Momentum Indicators
* Red line: EMA 14
* Yellow line: EMA 21
* Small triangles on price: Crossover signals - red triangle (bearish crossover), green triangle (bullish crossover) when occurring within discount zones
♦ Structure Change Markers
* Labels with checkmarks/crosses: ChoCH (Change of Character) and BoS (Break of Structure) events (Green label with ✓: Bullish ChoCH or BoS, Red label with ✗: Bearish ChoCH or BoS)
♦ Trade Planning Lines (when entry price is set)
* Blue horizontal line: Entry price
* Green dashed lines: TP1 and TP2
* Green solid line: TP3 (final target)
* Red horizontal line: Stop Loss level
TP levels and SL are calculated based on the structure range, entry price, and mapped trading zone, and aim to achieve a minimum risk: reward ratio of 1:1.5 (R:R)
♦ Colored background zones:
Green shading between entry and TP3 (profit zone), red shading between entry and SL (loss zone)
♦ Reference Levels
* Orange dotted lines with labels: Daily Pivot Points (PP, R1-R3, S1-S3)
* Purple dotted lines with labels: ADR High and ADR Low projections
* Cyan dotted lines with labels: DO (Daily Open), PDH (Previous Day High), PDL (Previous Day Low)
♦ Session Backgrounds (optional)
* Yellow shaded box: Asian session (19:00-00:00 NY time)
* Blue shaded box: London session (02:00-05:00 NY time)
* Green shaded box: NY AM session (09:30-11:00 NY time)
* Orange shaded box: NY PM session (13:30-16:00 NY time)
♦ Trade Summary Table (top-right corner)
Displays a complete trade plan with sections:
* Sanity Check: Plan validation status
* Setup: Trade type, leverage, entry price, position size
* Take Profit: TP1, TP2, TP3 with prices, percentages, and quantity splits
* Stop Loss: SL price and type
* Performance: Potential profit/loss, ROI, and risk-to-reward ratio
♦ HTF Candle Overlay (optional, displayed to the right of the current price)
* Larger candlesticks representing higher timeframe price action
* Green bodies: Bullish HTF candles
* Red bodies: Bearish HTF candles
* Label shows selected timeframe (e.g., "HTF→ D" for daily)
♦ Legend Table (bottom-right corner)
Quick reference guide explaining all symbol abbreviations and color codes used on the chart.
-----------------------------------------------------------------
Methodology & Calculation Details
This indicator consolidates multiple ICT/SMC analytical components into a single integrated system. While individual elements could be created separately, this integration provides automated coordination between components , consistency, and reduces chart complexity.
Structure Detection External and internal pivots
Are identified using fractal pivot analysis with configurable lookback periods (default: 20 bars for both). A pivot high is confirmed when the high at the pivot bar exceeds all highs within the lookback range on both sides. Pivot lows use inverse logic. Structure lines connect validated pivots, with color coding based on price direction (higher highs/higher lows = bullish, lower highs/lower lows = bearish).
Fibonacci Retracement Calculation
Users define two swing points via date/time inputs. The indicator calculates the price range between these points and applies standard Fibonacci ratios (0.0, 0.118, 0.214, 0.382, 0.5, 0.618, 0.786, 0.882, 1.0, plus extensions at 1.118, 1.272, -0.118, -0.272). Zone classification is based on ICT discount/premium principles: 0.618-1.0 range for bearish setups, 0.0-0.382 for bullish setups.
Imbalance Identification
Volume Imbalances : Detected using PVSRA (Price, Volume, Support, Resistance Analysis) methodology. Candles are classified based on the percentile ranking of volume and price range over a 1344-bar lookback period. Type 1 imbalances require ≥95th percentile in both volume and range; Type 2 requires ≥85th percentile. Additional filters include body-to-range ratio (≥50% for Type 1, ≥30% for Type 2) and ATR validation.
Fair Value Gaps (FVG) : Identified when a three-candle sequence shows a price gap: low > high for bullish FVG, high < low for bearish FVG. The middle candle must close beyond the gap edge. Mitigation occurs when the price retraces into the gap.
Order Blocks (OB) : Detected by identifying the last opposing candle before a significant price move. When price breaks a swing high/low, the algorithm scans backwards to find the candle with the highest high (bearish OB) or lowest low (bullish OB) before the breakout. When an OB is breached, it converts to a Breaker Block (BB).
Liquidity Pools (LP) : Identified by detecting equal highs or equal lows using a tolerance threshold based on ATR. Pivot highs/lows within this tolerance range are grouped. Equal highs create Buy-Side Liquidity (BSL) zones above the level; equal lows create Sell-Side Liquidity (SSL) zones below the level.
Wick Imbalances: Flagged when a candle's wick exceeds 1.0x ATR and comprises >50% of the total candle range. These represent rapid rejections or absorption events.
Kill Zone Liquidity: Tracks the high/low range during specific ICT-defined sessions (Asian: 19:00-00:00 NY, London: 02:00-05:00 NY, NY AM: 09:30-11:00 NY). At session close, BSL and SSL zones are created above/below the session range.
Change of Character (ChoCH) & Break of Structure (BoS)
ChoCH is detected when price breaks counter to the established structure (bearish structure broken upward = bullish ChoCH; bullish structure broken downward = bearish ChoCH). BoS occurs when price breaks in the direction of the established trend (bearish structure breaking lower = bearish BoS; bullish structure breaking higher = bullish BoS).
Trade Calculations
Stop Loss and Take Profit levels are calculated based on the entry position within the Fibonacci zone structure:
* Premium entries (0.786-1.0 for shorts / 0.0-0.214 for longs): SL at 1.118/-0.118 extension, TP structure weighted toward zone extremes
* Golden entries (0.618-0.786 for shorts / 0.214-0.382 for longs): SL at 1.0/0.0 boundary, TP structure balanced across range
Risk-to-reward ratios are calculated as blended values across all three take profit levels, weighted by position quantity splits.
Reference Level Calculations
* Pivot Points: Standard formula using previous day's high, low, and close: PP = (H + L + C) / 3
* Support/Resistance: R1 = 2×PP - L, S1 = 2×PP - H, with R2/S2 and R3/S3 calculated using range extensions
* ADR: 14-period simple moving average of daily high-low range, projected from current day's extremes
Momentum Analysis
EMA 14 and EMA 21 use standard exponential moving average calculations. Crossovers are detected when EMA 14 crosses EMA 21 within user-defined discount zones, with directional confirmation (cross under in bearish discount = short signal; cross over in bullish discount = long signal).
Why This Integration Matters
While components like EMA crossovers, pivot detection, or Fibonacci retracements exist as separate indicators, this system provides:
1. Coordinated Analysis : All components reference the same structural framework (user-defined trading zone)
2. Automated Mitigation Tracking : Imbalances are monitored continuously and removed when mitigated according to ICT principles
3. Contextual Alerts : Notifications are triggered only when conditions align within the defined structural context
4. Trade Parameter Automation : Stop loss and take profit calculations adjust dynamically based on entry positioning within the structure
5. Consistent Visual Display : All elements use a unified color scheme, labeling system, and z-order layering. This eliminates visual conflicts that occur when stacking multiple independent indicators (overlapping lines, label collisions, inconsistent transparency levels, conflicting color schemes).
This consolidation reduces the need to manually coordinate 8-10 separate indicators, eliminates redundant calculations across disconnected tools, and maintains visual clarity even when all components are displayed simultaneously.
-----------------------------------------------------------------
Disclaimer
1. Indicator Functionality and Purpose
This indicator is solely a technical analysis tool built upon established methodologies (Smart Money Concepts/ICT) and statistical calculations (Pivots, Fibonacci, EMAs). It is designed to assist experienced traders in visualizing complex data, streamlining the analytical workflow, and automating conditional alerting.
The indicator is NOT:
♦ Financial Advice: It does not provide personalized investment recommendations, solicited advice, or instruction on buying, selling, or holding any financial instrument.
♦ A Guarantee of Profit: The presence of a signal, alert, or trade plan output by this tool does not guarantee that any trade will be profitable.
♦ A Predictor of Future Prices: The tool calculates probabilities and potential scenarios based on historical data and current structure; it does not predict future market movements.
2. General Trading Risks and Capital Loss
♦ All trading involves substantial risk of loss. You may lose some or all of your initial capital. Leveraged products, such as futures, CFDs, and margin trading, carry a high degree of risk and are not suitable for all investors.
♦ Risk Acknowledgment: By using this indicator, you acknowledge and accept that you are solely responsible for all trading decisions, and you bear the full risk of any resulting profit or loss.
♦ Risk Management is Crucial: This indicator is an analytical tool only. You must employ independent risk management techniques (position sizing, stop-loss orders) tailored to your personal financial situation and risk tolerance.
3. Calculation Limitations and Non-Real-Time Data
The calculations performed by this indicator are based on the data provided by your charting platform (e.g., TradingView).
♦ Data Accuracy: The accuracy of the outputs (e.g., Price Delivery Arrays, Pivots, P&L projections) is dependent on the accuracy and real-time nature of the underlying market data feed.
♦ Latencies: Trade alerts and signals may be subject to minor delays due to server processing, internet connectivity, or charting platform performance. Do not rely solely on alerts for execution.
♦ Backtesting and Performance: Any depiction of past performance, including data visible on the chart, is not indicative of future results. Trading results will vary based on market conditions, liquidity, and execution speed.
4. Software and Platform Disclaimer
"As Is" Basis: The indicator is provided on an "as is" basis without warranties of any kind, whether express or implied. The author does not guarantee the script will be error-free or operate without interruption.
Third-Party Integration: This indicator is not affiliated with, endorsed by, or connected to TradingView, 3Commas, or any other broker or execution platform. All third-party names are trademarks of their respective owners. The formatting of the Trade Summary Table for 3Commas is for user convenience only.
5. Required Competency (User Responsibility)
This indicator is built on the assumption that the user is an experienced trader with a working understanding of the complex concepts being visualized (ICT/SMC, FVG, Order Blocks, Liquidity, etc.). The indicator does not teach these concepts.
You Must Always Do Your Own Research (DYOR) before making any trading decision based on signals or visualization provided by this tool.
By installing and using this indicator, you explicitly agree to these terms and assume full responsibility for all trading activity.
Lorentzian Harmonic Flow - Adaptive ML⚡ LORENTZIAN HARMONIC FLOW — ADAPTIVE ML COMPLETE SYSTEM
THEORETICAL FOUNDATION: TEMPORAL RELATIVITY MEETS MACHINE LEARNING
The Lorentzian Harmonic Flow Adaptive ML system represents a paradigm shift in technical analysis by addressing a fundamental limitation that plagues traditional indicators: they assume time flows uniformly across all market conditions. In reality, markets experience time compression during volatile breakouts and time dilation during consolidation. A 50-period moving average calculated during a quiet overnight session captures vastly different market information than the same calculation during a high-volume news event.
This indicator solves this problem through Lorentzian spacetime modeling , borrowed directly from Einstein's special relativity. By calculating a dynamic gamma factor (γ) that measures market velocity relative to a volatility-based "speed of light," every calculation adapts its effective lookback period to the market's intrinsic clock. Combined with a dual-memory architecture, multi-regime detection, and Bayesian strategy selection, this creates a system that genuinely learns which approaches work in which market conditions.
CRITICAL DISTINCTION: TRUE ADAPTIVE LEARNING VS STATIC CLASSIFICATION
Before diving into the system architecture, it's essential to understand how this indicator fundamentally differs from traditional "Lorentzian" implementations, particularly the well-known Lorentzian Classification indicator.
THE ORIGINAL LORENTZIAN CLASSIFICATION APPROACH:
The pioneering Lorentzian Classification indicator (Jdehorty, 2022) introduced the financial community to Lorentzian distance metrics for pattern matching. However, it used offline training methodology :
• External Training: Required Python scripts or external ML tools to train the model on historical data
• Static Model: Once trained, the model parameters remained fixed
• No Real-Time Learning: The indicator classified patterns but didn't learn from outcomes
• Look-Ahead Bias Risk: Offline training could inadvertently use future data
• Manual Retraining: To adapt to new market conditions, users had to retrain externally and reload parameters
This was groundbreaking for bringing ML concepts to Pine Script, but it wasn't truly adaptive. The model was a snapshot—trained once, deployed, static.
THIS SYSTEM: TRUE ONLINE LEARNING
The Lorentzian Harmonic Flow Adaptive ML system represents a complete architectural departure :
✅ FULLY SELF-CONTAINED:
• Zero External Dependencies: No Python scripts, no external training tools, no data exports
• 100% Pine Script: Entire learning pipeline executes within TradingView
• One-Click Deployment: Load indicator, it begins learning immediately
• No Manual Configuration: System builds its own training data in real-time
✅ GENUINE FORWARD-WALK LEARNING:
• Real-Time Adaptation: Every trade outcome updates the model
• Forward-Only Logic: System uses only past confirmed data—zero look-ahead bias
• Continuous Evolution: Parameters adapt bar-by-bar based on rolling performance
• Regime-Specific Memory: Learns which patterns work in which conditions independently
✅ GETS BETTER WITH TIME:
• Week 1: Bootstrap mode—gathering initial data across regimes
• Month 2-3: Statistical significance emerges, parameter adaptation begins
• Month 4+: Mature learning, regime-specific optimization, confident selection
• Year 2+: Deep pattern library, proven parameter sets, robust to regime shifts
✅ NO RETRAINING REQUIRED:
• Automatic Adaptation: When market structure changes, system detects via performance degradation
• Memory Refresh: Old patterns naturally decay, new patterns replace them
• Parameter Evolution: Thresholds and multipliers adjust to current conditions
• Regime Awareness: If new regime emerges, enters bootstrap mode automatically
THE FUNDAMENTAL DIFFERENCE:
Traditional Lorentzian Classification:
"Here are patterns from the past. Current state matches pattern X, which historically preceded move Y. Signal fired."
→ Static knowledge, fixed rules, periodic retraining required
LHF Adaptive ML:
"In Trending Bull regime, Strategy B has 58% win rate and 1.4 Sharpe over last 30 trades. In High Vol Range, Strategy C performs better with 61% win rate and 1.8 Sharpe. Current state is Trending Bull, so I select Strategy B. If Strategy B starts failing, I'll adapt parameters or switch strategies. I'm learning which patterns matter in which contexts, and I improve every trade."
→ Dynamic learning, contextual adaptation, self-improving system
WHY THIS MATTERS:
Markets are non-stationary. A model trained on 2023 data may fail in 2024 when Fed policy shifts, volatility regime changes, or market structure evolves. Static models require constant human intervention—retraining, re-optimization, parameter updates.
This system learns continuously . It doesn't need you to tell it when markets changed. It discovers regime shifts through performance feedback, adapts parameters accordingly, and rebuilds its pattern library organically. The system running in Month 12 is fundamentally smarter than the system in Month 1—not because you retrained it, but because it learned from 1,000+ real outcomes.
This is the difference between pattern recognition (static ML) and reinforcement learning (adaptive ML). One classifies, the other learns and improves.
PART 1: LORENTZIAN TEMPORAL DYNAMICS
Markets don't experience time uniformly. During explosive volatility, price can compress weeks of movement into minutes. During consolidation, time dilates. Traditional indicators ignore this, using fixed periods regardless of market state.
The Lorentzian approach models market time using the Lorentz factor from special relativity:
γ = 1 / √(1 - v²/c²)
Where:
• v (velocity): Trend momentum normalized by ATR, calculated as (close - close ) / (N × ATR)
• c (speed limit): Realized volatility + volatility bursts, multiplied by c_multiplier parameter
• γ (gamma): Time dilation factor that compresses or expands effective lookback periods
When trend velocity approaches the volatility "speed limit," gamma spikes above 1.0, compressing time. Every calculation length becomes: base_period / γ. This creates shorter, more responsive periods during explosive moves and longer, more stable periods during quiet consolidation.
The system raises gamma to an optional power (gamma_power parameter) for fine control over compression strength, then applies this temporal scaling to every calculation in the indicator. This isn't metaphor—it's quantitative adaptation to the market's intrinsic clock.
PART 2: LORENTZIAN KERNEL SMOOTHING
Traditional moving averages use uniform weights (SMA) or exponential decay (EMA). The Lorentzian kernel uses heavy-tailed weighting:
K(distance, γ) = 1 / (1 + (distance/γ)²)
This Cauchy-like distribution gives more influence to recent extremes than Gaussian assumptions suggest, capturing the fat-tailed nature of financial returns. For any calculation requiring smoothing, the system loops through historical bars, computes Lorentzian kernel weights based on temporal distance and current gamma, then produces weighted averages.
This creates adaptive smoothing that responds to local volatility structure rather than imposing rigid assumptions about price distribution.
PART 3: HARMONIC FLOW (Multi-Timeframe Momentum)
The core directional signal comes from Harmonic Flow (HFL) , which blends three gamma-compressed Lorentzian smooths:
• Short Horizon: base_period × short_ratio / γ (default: 34 × 0.5 / γ ≈ 17 bars, faster with high γ)
• Mid Horizon: base_period × mid_ratio / γ (default: 34 × 1.0 / γ ≈ 34 bars, anchor timeframe)
• Long Horizon: base_period × long_ratio / γ (default: 34 × 2.5 / γ ≈ 85 bars, structural trend)
Each produces a Lorentzian-weighted smooth, converted to a z-score (distance from smooth normalized by ATR). These z-scores are then weighted-averaged:
HFL = (w_short × z_short + w_mid × z_mid + w_long × z_long) / (w_short + w_mid + w_long)
Default weights (0.45, 0.35, 0.20) favor recent momentum while respecting longer structure. Scalpers can increase short weight; swing traders can emphasize long weight. The result is a directional momentum indicator that captures multi-timeframe flow in compressed time.
From HFL, the system derives:
• Flow Velocity: HFL - HFL (momentum acceleration)
• Flow Acceleration: Second derivative (turning points)
• Temporal Compression Index (TCI): base_period / compressed_length (shows how much time is compressed)
PART 4: DUAL MEMORY ARCHITECTURE
Markets have memory—current conditions resonate with past regimes. But memory operates on two timescales, inspiring this indicator's dual-memory design:
SHORT-TERM MEMORY (STM):
• Capacity: 100 patterns (configurable 50-200)
• Decay Rate: 0.980 (50% weight after ~35 bars)
• Update Frequency: Every 10 bars
• Purpose: Capture current regime's tactical patterns
• Storage: Recent market states with 10-bar forward outcomes
• Analogy: Hippocampus (rapid encoding, fast fade)
LONG-TERM MEMORY (LTM):
• Capacity: 512 patterns (configurable 256-1024)
• Decay Rate: 0.997 (50% weight after ~230 bars)
• Quality Gate: Only high-quality patterns admitted (adaptive threshold per regime)
• Purpose: Strategic pattern library validated across regimes
• Storage: Validated patterns from weeks/months of history
• Analogy: Neocortex (slow consolidation, persistent storage)
Each memory stores 6-dimensional feature vectors:
1. HFL (harmonic flow strength)
2. Flow Velocity (momentum)
3. Flow Acceleration (turning points)
4. Volatility (realized vol EMA)
5. Entropy (market uncertainty)
6. Gamma (time compression state)
Plus the actual outcome (10-bar forward return).
K-NEAREST NEIGHBORS (KNN) PATTERN MATCHING:
When evaluating current market state, the system queries both memories using Lorentzian distance :
distance = Σ (1 - K(|feature_current - feature_memory|, γ))
This calculates similarity across all 6 dimensions using the same Lorentzian kernel, weighted by current gamma. The system finds K nearest neighbors (default: 8), weights each by:
• Similarity: Lorentzian kernel distance
• Age: Exponential decay based on bars since pattern
• Regime: Only patterns from similar regimes count
The weighted average of these neighbors' outcomes becomes the prediction. High-confidence predictions require both high similarity and agreement between multiple neighbors.
REGIME-AWARE BLENDING:
STM and LTM predictions are blended adaptively:
• High Vol Range regime: Trust STM 70% (recent matters in chaos)
• Trending regimes: Trust LTM 70% (structure matters in trends)
• Normal regimes: 50/50 blend
Agreement metric: When STM and LTM strongly disagree, the system flags low confidence—often indicating regime transition or novel market conditions requiring caution.
PART 5: FIVE-REGIME MARKET CLASSIFICATION
Traditional regime detection stops at "trending vs ranging." This system detects five distinct market states using linear regression slope and volatility analysis:
REGIME 0: TRENDING BULL ↗
• Detection: LR slope > trend_threshold (default: 0.3)
• Characteristics: Sustained positive HFL, elevated gamma, low entropy
• Best Strategy: B (Flow Momentum)
• Trading Behavior: Follow momentum, trail stops, pyramid winners
REGIME 1: TRENDING BEAR ↘
• Detection: LR slope < -trend_threshold
• Characteristics: Sustained negative HFL, elevated gamma, low entropy
• Best Strategy: B (Flow Momentum)
• Trading Behavior: Follow momentum short, aggressive exits on reversal
REGIME 2: HIGH VOL RANGE ↔
• Detection: |slope| < threshold AND vol_ratio > vol_expansion_threshold (default: 1.5)
• Characteristics: Oscillating HFL, high gamma spikes, high entropy
• Best Strategies: A (Squeeze Breakout) or C (Memory Pattern)
• Trading Behavior: Fade extremes, tight stops, quick profits
REGIME 3: LOW VOL RANGE —
• Detection: |slope| < threshold AND vol_ratio < vol_expansion_threshold
• Characteristics: Low HFL magnitude, gamma ≈ 1, squeeze conditions
• Best Strategy: A (Squeeze Breakout)
• Trading Behavior: Wait for breakout, wide stops on breakout entry
REGIME 4: TRANSITION ⚡
• Detection: Trend reversal OR volatility spike > 1.5× threshold
• Characteristics: Erratic gamma, high entropy, conflicting signals
• Best Strategy: None (often unfavorable)
• Trading Behavior: Stand aside, wait for clarity
Each regime gets a confidence score (0-1) measuring how clearly defined it is. Low confidence indicates messy, ambiguous conditions.
PART 6: THREE INDEPENDENT TRADING STRATEGIES
Rather than one signal logic, the system implements three distinct approaches:
STRATEGY A: SQUEEZE BREAKOUT
• Logic: Bollinger Bands squeeze release + HFL direction + flow velocity confirmation
• Calculation: Compares BB width to Keltner Channel width; fires when BB expands beyond KC
• Strength Score: 70 + compression_strength × 0.3 (tighter squeeze = higher score)
• Best Regimes: Low Vol Range (3), Transition exit (4→0 or 4→1)
• Pattern: Volatility contraction → directional expansion
• Philosophy: Calm before the storm; compression precedes explosion
STRATEGY B: LORENTZIAN FLOW MOMENTUM
• Logic: Strong HFL (×flow_mult) + positive velocity + gamma > 1.1 + NOT squeezing
• Calculation: |HFL × flow_mult| > 0.12, velocity confirms direction, gamma shows acceleration
• Strength Score: |HFL × flow_mult| × 80 + gamma × 10
• Best Regimes: Trending Bull (0), Trending Bear (1)
• Pattern: Established momentum → acceleration in compressed time
• Philosophy: Trend is friend when spacetime curves
STRATEGY C: MEMORY PATTERN MATCHING
• Logic: Dual KNN prediction > threshold + high confidence + agreement + HFL confirms
• Calculation: |memory_pred| > 0.005, memory_conf > 1.0, agreement > 0.5, HFL direction matches
• Strength Score: |prediction| × 800 × agreement
• Best Regimes: High Vol Range (2), sometimes others with sufficient pattern library
• Pattern: Historical similarity → outcome resonance
• Philosophy: Markets rhyme; learn from validated patterns
Each strategy generates independent strength scores. In multi-strategy mode (enabled by default), the system selects one strategy per regime based on risk-adjusted performance. In weighted mode (multi-strategy disabled), all three fire simultaneously with configurable weights.
PART 7: ADAPTIVE LEARNING & BAYESIAN SELECTION
This is where machine learning meets trading. The system maintains 15 independent performance matrices :
3 strategies × 5 regimes = 15 tracking systems
For each combination, it tracks:
• Trade Count: Number of completed trades
• Win Count: Profitable outcomes
• Total Return: Sum of percentage returns
• Squared Returns: For variance/Sharpe calculation
• Equity Curve: Virtual P&L assuming 10% risk per trade
• Peak Equity: All-time high for drawdown calculation
• Max Drawdown: Peak-to-trough decline
RISK-ADJUSTED SCORING:
For current regime, the system scores each strategy:
Sharpe Ratio: (mean_return / std_dev) × √252
Calmar Ratio: total_return / max_drawdown
Win Rate: wins / trades
Combined Score = 0.6 × Sharpe + 0.3 × Calmar + 0.1 × Win_Rate
The strategy with highest score is selected. This is similar to Thompson Sampling (multi-armed bandits) but uses deterministic selection rather than probabilistic sampling due to Pine Script limitations.
BOOTSTRAP MODE (Critical for Understanding):
For the first min_regime_samples trades (default: 10) in each regime:
• Status: "🔥 BOOTSTRAP (X/10)" displayed in dashboard
• Behavior: All signals allowed (gathering data)
• Regime Filter: Disabled (can't judge with insufficient data)
• Purpose: Avoid cold-start problem, build statistical foundation
After reaching threshold:
• Status: "✅ FAVORABLE" (score > 0.5) or "⚠️ UNFAVORABLE" (score ≤ 0.5)
• Behavior: Only trade favorable regimes (if enable_regime_filter = true)
• Learning: Parameters adapt based on outcomes
This solves a critical problem: you can't know which strategy works in a regime without data, but you can't get data without trading. Bootstrap mode gathers initial data safely, then switches to selective mode once statistical confidence emerges.
PARAMETER ADAPTATION (Per Regime):
Three parameters adapt independently for each regime based on outcomes:
1. SIGNAL QUALITY THRESHOLD (30-90):
• Starts: base_quality_threshold (default: 60)
• Adaptation:
Win Rate < 45% → RAISE threshold by learning_rate × 10 (be pickier)
Win Rate > 55% → LOWER threshold by learning_rate × 5 (take more)
• Effect: System becomes more selective in losing regimes, more aggressive in winning regimes
2. LTM QUALITY GATE (0.2-0.8):
• Starts: 0.4 (if adaptive gate enabled)
• Adaptation:
Sharpe < 0.5 → RAISE gate by learning_rate (demand better patterns)
Sharpe > 1.5 → LOWER gate by learning_rate × 0.5 (accept more patterns)
• Effect: LTM fills with high-quality patterns from winning regimes
3. FLOW MULTIPLIER (0.5-2.0):
• Starts: 1.0
• Adaptation:
Strong win (+2%+) → MULTIPLY by (1 + learning_rate × 0.1)
Strong loss (-2%+) → MULTIPLY by (1 - learning_rate × 0.1)
• Effect: Amplifies signal strength in profitable regimes, dampens in unprofitable
Each regime evolves independently. Trending Bull might develop threshold=55, gate=0.35, mult=1.3 while High Vol Range develops threshold=70, gate=0.50, mult=0.9.
PART 8: SHADOW PORTFOLIO VALIDATION
To validate learning objectively, the system runs three virtual portfolios :
Shadow Portfolio A: Trades only Strategy A signals
Shadow Portfolio B: Trades only Strategy B signals
Shadow Portfolio C: Trades only Strategy C signals
When any signal fires:
1. Open virtual position for corresponding strategy
2. On exit, calculate P&L (10% risk per trade)
3. Update equity, win count, profit factor
Dashboard displays:
• Equity: Current virtual balance (starts $10,000)
• Win%: Overall win rate across all regimes
• PF: Profit Factor (gross_profit / gross_loss)
This transparency shows which strategies actually perform, validates the selection logic, and prevents overfitting. If Shadow C shows $12,500 equity while A and B show $9,800, it confirms Strategy C's edge.
PART 9: HISTORICAL PRE-TRAINING
The system includes historical pre-training to avoid cold-start:
On Chart Load (if enabled):
1. Scan past pretrain_bars (default: 200)
2. Calculate historical HFL, gamma, velocity, acceleration, volatility, entropy
3. Compute 10-bar forward returns as outcomes
4. Populate STM with recent patterns
5. Populate LTM with high-quality patterns (quality > 0.4)
Effect:
• Without pre-training: Memories empty, no predictions for weeks, pure bootstrap
• With pre-training: System starts with pattern library, predictions from day one
Pre-training uses only past data (no future peeking) and fills memories with validated outcomes. This dramatically accelerates learning without compromising integrity.
PART 10: COMPREHENSIVE INPUT SYSTEM
The indicator provides 50+ inputs organized into logical groups. Here are the key parameters and their market-specific guidance:
🧠 ADAPTIVE LEARNING SYSTEM:
Enable Adaptive Learning (true/false):
• Function: Master switch for regime-specific strategy selection and parameter adaptation
• Enabled: System learns which strategies work in which regimes (recommended)
• Disabled: All strategies fire simultaneously with fixed weights (simpler, less adaptive)
• Recommendation: Keep enabled for all markets; system needs 2-3 months to mature
Learning Rate (0.01-0.20):
• Function: Speed of parameter adaptation based on outcomes
• Stocks/ETFs: 0.03-0.05 (slower, more stable)
• Crypto: 0.05-0.08 (faster, adapts to volatility)
• Forex: 0.04-0.06 (moderate)
• Timeframes:
1-5min scalping: 0.08-0.10 (rapid adaptation)
15min-1H day trading: 0.05-0.07 (balanced)
4H-Daily swing: 0.03-0.05 (conservative)
• Tradeoff: Higher = responsive but may overfit; Lower = stable but slower to adapt
Min Samples Per Regime (5-30):
• Function: Trades required before exiting bootstrap mode
• Active trading (>5 signals/day): 8-10 trades
• Moderate (1-5 signals/day): 10-15 trades
• Swing (few signals/week): 5-8 trades
• Logic: Bootstrap mode until this threshold; then uses Sharpe/Calmar for regime filtering
• Tradeoff: Lower = faster exit (risky, less data); Higher = more validation (safer, slower)
🌍 REGIME DETECTION:
Regime Lookback Period (20-200):
• Function: Bars used for linear regression to classify regime
• By Timeframe:
1-5min: 30-50 bars (~2-4 hour context)
15min: 40-60 bars (daily context)
1H: 50-100 bars (weekly context)
4H: 100-150 bars (monthly context)
Daily: 50-75 bars (quarterly context)
• By Market:
Crypto: 40-60 (faster regime changes)
Forex: 50-75 (moderate stability)
Stocks: 60-100 (slower structural trends)
• Tradeoff: Shorter = more regime switches (reactive); Longer = fewer switches (stable)
Trend Strength Threshold (0.1-0.8):
• Function: Minimum normalized LR slope to classify as trending vs ranging
• Lower (0.1-0.2): More markets classified as trending
• Higher (0.4-0.6): Only strong trends qualify
• Recommendations:
Choppy markets (BTC, small caps): 0.25-0.35
Smooth trends (major FX pairs): 0.30-0.40
Strong trends (indices during bull): 0.20-0.30
• Effect: Controls sensitivity of trending vs ranging classification
Vol Expansion Factor (1.2-3.0):
• Function: Volatility ratio to classify high-vol regimes (current_vol / avg_vol)
• By Asset:
Bitcoin: 1.4-1.6 (frequent vol spikes)
Altcoins: 1.3-1.5 (very volatile)
Major FX (EUR/USD): 1.6-2.0 (stable baseline)
Stocks (SPY): 1.5-1.8 (moderate)
Penny stocks: 1.3-1.4 (always volatile)
• Impact: Higher = fewer "High Vol Range" classifications; Lower = more sensitive to volatility spikes
🎯 SIGNAL GENERATION:
Base Quality Threshold (30-90):
• Function: Starting signal strength requirement (adapts per regime)
• THIS IS YOUR MAIN SIGNAL FREQUENCY CONTROL
• Conservative (70-80): Fewer, higher-quality signals
• Balanced (55-65): Moderate signal flow
• Aggressive (40-50): More signals, more noise
• By Trading Style:
Scalping (1-5min): 50-60
Day trading (15min-1H): 60-70
Swing (4H-Daily): 65-75
• Adaptive Behavior: System raises this in losing regimes (pickier), lowers in winning regimes (take more)
Min Confidence (0.1-0.9):
• Function: Minimum confidence score to fire signal
• Calculation: (Signal_Strength / 100) × Regime_Confidence
• Recommendations:
High-frequency (scalping): 0.2-0.3 (permissive)
Day trading: 0.3-0.4 (balanced)
Swing/position: 0.4-0.6 (selective)
• Interaction: During Transition regime (low regime confidence), even strong signals may fail confidence check; creates natural regime filtering
Only Trade Favorable Regimes (true/false):
• Function: Block signals in unfavorable regimes (where all strategies have negative risk-adjusted scores)
• Enabled (Recommended): Only trades when best strategy has positive Sharpe in current regime; auto-disables during bootstrap; protects capital
• Disabled: Always allows signals regardless of historical performance; use for manual regime assessment
• Bootstrap: Auto-allows trading until min_regime_samples reached, then switches to performance-based filtering
Min Bars Between Signals (1-20):
• Function: Prevents signal spam by enforcing minimum spacing
• By Timeframe:
1min: 3-5 bars (3-5 minutes)
5min: 3-6 bars (15-30 minutes)
15min: 4-8 bars (1-2 hours)
1H: 5-10 bars (5-10 hours)
4H: 3-6 bars (12-24 hours)
Daily: 2-5 bars (2-5 days)
• Logic: After signal fires, no new signals for X bars
• Tradeoff: Lower = more reactive (may overtrade); Higher = more patient (may miss reversals)
🌀 LORENTZIAN CORE:
Base Period (10-100):
• Function: Core time period for flow calculation (gets compressed by gamma)
• THIS IS YOUR PRIMARY TIMEFRAME KNOB
• By Timeframe:
1-5min scalping: 20-30 (fast response)
15min-1H day: 30-40 (balanced)
4H swing: 40-55 (smooth)
Daily position: 50-75 (very smooth)
• By Market Character:
Choppy (crypto, small caps): 25-35 (faster)
Smooth (major FX, indices): 35-50 (moderate)
Slow (bonds, utilities): 45-65 (slower)
• Gamma Effect: Actual length = base_period / gamma; High gamma compresses to ~20 bars, low gamma expands to ~50 bars
• Default 34 (Fibonacci) works well across most assets
Velocity Period (5-50):
• Function: Window for trend velocity calculation: (price_now - price ) / (N × ATR)
• By Timeframe:
1-5min scalping: 8-12 (fast momentum)
15min-1H day: 12-18 (balanced)
4H swing: 14-21 (smooth trend)
Daily: 18-30 (structural trend)
• By Market:
Crypto (fast moves): 10-14
Stocks (moderate): 14-20
Forex (smooth): 18-25
• Impact: Feeds into gamma calculation (v/c ratio); shorter = more sensitive to velocity spikes → higher gamma
• Relationship: Typically vel_period ≈ base_period / 2 to 2/3
Speed-of-Market (c) (0.5-3.0):
• Function: "Speed limit" for gamma calculation: c = realized_vol + vol_burst × c_multiplier
• By Asset Volatility:
High vol (BTC, TSLA): 1.0-1.3 (lower c = more compression)
Medium vol (SPY, EUR/USD): 1.3-1.6 (balanced)
Low vol (bonds, utilities): 1.6-2.5 (higher c = less compression)
• What It Does:
Lower c → velocity hits "speed limit" sooner → higher gamma → more compression
Higher c → velocity rarely hits limit → gamma stays near 1 → less adaptation
• Effect on Signals: More compression (low c) = faster regime detection, more responsive; Less compression (high c) = smoother, less adaptive
• Tuning: Start at 1.4; if gamma always ~1.0, lower to 1.0-1.2; if gamma spikes >5 often, raise to 1.6-2.0
Gamma Power (0.5-2.0):
• Function: Exponent applied to gamma: final_gamma = gamma^power
• Compression Strength:
0.5-0.8: Softens compression (gamma 4 → 2)
1.0: Linear (gamma 4 → 4)
1.2-2.0: Amplifies compression (gamma 4 → 16)
• Use Cases:
Reduce power (<1.0) if adaptive lengths swing too wildly or getting whipsawed
Increase power (>1.0) for more aggressive regime adaptation in fast markets
• Most users should leave at 1.0; only adjust if gamma behavior needs tuning
Max Kernel Lookback (20-200):
• Function: Computational limit for Lorentzian smoothing (performance control)
• Recommendations:
Fast PC / simple chart: 80-100
Slow PC / complex chart: 40-60
Mobile / lots of indicators: 30-50
• Impact: Each kernel smoothing loops through this many bars; higher = more accurate but slower
• Default 60 balances accuracy and speed; lower to 40-50 if indicator is slow
🎼 HARMONIC FLOW:
Short Horizon (0.2-1.0):
• Function: Fast timeframe multiplier: short_length = base_period × short_ratio / gamma
• Default: 0.5 (captures 2× faster flow than base)
• By Style:
Scalping: 0.3-0.4 (very fast)
Day trading: 0.4-0.6 (moderate)
Swing: 0.5-0.7 (balanced)
• Effect: Lower = more weight on micro-moves; Higher = smooths out fast fluctuations
Mid Horizon (0.5-2.0):
• Function: Medium timeframe multiplier: mid_length = base_period × mid_ratio / gamma
• Default: 1.0 (equals base_period, anchor timeframe)
• Usually keep at 1.0 unless specific strategy needs fine-tuning
Long Horizon (1.0-5.0):
• Function: Slow timeframe multiplier: long_length = base_period × long_ratio / gamma
• Default: 2.5 (captures trend/structure)
• By Style:
Scalping: 1.5-2.0 (less long-term influence)
Day trading: 2.0-3.0 (balanced)
Swing: 2.5-4.0 (strong trend component)
• Effect: Higher = more emphasis on larger structure; Lower = more reactive to recent price action
Short Weight (0-1):
Mid Weight (0-1):
Long Weight (0-1):
• Function: Relative importance in HFL calculation (should sum to 1.0)
• Defaults: Short: 0.45, Mid: 0.35, Long: 0.20 (day trading balanced)
• Preset Configurations:
SCALPING (fast response):
Short: 0.60, Mid: 0.30, Long: 0.10
DAY TRADING (balanced):
Short: 0.45, Mid: 0.35, Long: 0.20
SWING (trend-following):
Short: 0.25, Mid: 0.35, Long: 0.40
• Effect: More short weight = responsive but noisier; More long weight = smoother but laggier
🧠 DUAL MEMORY SYSTEM:
Enable Pattern Memory (true/false):
• Function: Master switch for KNN pattern matching via dual memory
• Enabled (Recommended): Strategy C (Memory Pattern) can fire; memory predictions influence all strategies; prediction arcs shown; heatmaps available
• Disabled: Only Strategy A and B available; faster performance (less computation); pure technical analysis (no pattern matching)
• Keep enabled for full system capabilities; disable only if CPU-constrained or testing pure flow signals
STM Size (50-200):
• Function: Short-Term Memory capacity (recent pattern storage)
• Characteristics: Fast decay (0.980), captures current regime, updates every 10 bars, tactical pattern matching
• Sizing:
Active markets (crypto): 80-120
Moderate (stocks): 100-150
Slow (bonds): 50-100
• By Timeframe:
1-15min: 60-100 (captures few hours of patterns)
1H: 80-120 (captures days)
4H-Daily: 100-150 (captures weeks/months)
• Tradeoff: More = better recent pattern coverage; Less = faster computation
• Default 100 is solid for most use cases
LTM Size (256-1024):
• Function: Long-Term Memory capacity (validated pattern storage)
• Characteristics: Slow decay (0.997), only high-quality patterns (gated), regime-specific recall, strategic pattern library
• Sizing:
Fast PC: 512-768
Medium PC: 384-512
Slow PC/Mobile: 256-384
• By Data Needs:
High-frequency (lots of patterns): 512-1024
Moderate activity: 384-512
Low-frequency (swing): 256-384
• Performance Impact: Each KNN search loops through entire LTM; 512 = good balance of coverage and speed; if slow, drop to 256-384
• Fills over weeks/months with validated patterns
STM Decay (0.95-0.995):
• Function: Short-Term Memory age decay rate: age_weight = decay^bars_since_pattern
• Decay Rates:
0.950: Aggressive fade (50% weight after 14 bars)
0.970: Moderate fade (50% after 23 bars)
0.980: Balanced (50% after 35 bars)
0.990: Slow fade (50% after 69 bars)
• By Timeframe:
1-5min: 0.95-0.97 (fast markets, old patterns irrelevant)
15min-1H: 0.97-0.98 (balanced)
4H-Daily: 0.98-0.99 (slower decay)
• Philosophy: STM should emphasize RECENT patterns; lower decay = only very recent matters; 0.980 works well for most cases
LTM Decay (0.99-0.999):
• Function: Long-Term Memory age decay rate
• Decay Rates:
0.990: 50% weight after 69 bars
0.995: 50% weight after 138 bars
0.997: 50% weight after 231 bars
0.999: 50% weight after 693 bars
• Philosophy: LTM should retain value for LONG periods; pattern from 6 months ago might still matter
• Usage:
Fast-changing markets: 0.990-0.995
Stable markets: 0.995-0.998
Structural patterns: 0.998-0.999
• Warning: Be careful with very high decay (>0.998); market structure changes, old patterns may mislead
• 0.997 balances long-term memory with regime evolution
K Neighbors (3-21):
• Function: Number of similar patterns to query in KNN search
• By Sample Size:
Small dataset (<100 patterns): 3-5
Medium dataset (100-300): 5-8
Large dataset (300-1000): 8-13
Very large (>1000): 13-21
• Tradeoff:
Fewer K (3-5): More reactive to closest matches; noisier; outlier-sensitive; better when patterns very distinct
More K (13-21): Smoother, more stable predictions; may dilute strong signals; better when patterns overlap
• Rule of Thumb: K ≈ √(memory_size) / 3; For STM=100, LTM=512: K ≈ 8-10 ideal
Adaptive Quality Gate (true/false):
• Function: Adapts LTM entry threshold per regime based on Sharpe ratio
• Enabled: Quality gate adapts: Low Sharpe → RAISE gate (demand better patterns); High Sharpe → LOWER gate (accept more patterns); each regime has independent gate
• Disabled: Fixed quality gate (0.4 default) for all regimes
• Recommended: Keep ENABLED; helps LTM focus on proven pattern types per regime; prevents weak patterns from polluting memory
🎯 MULTI-STRATEGY SYSTEM:
Enable Strategy Learning (true/false):
• Function: Core learning feature for regime-specific strategy selection
• Enabled: Tracks 3 strategies × 5 regimes = 15 performance matrices; selects best strategy per regime via Sharpe/Calmar/WinRate; adaptive strategy switching
• Disabled: All strategies fire simultaneously (weighted combination); no regime-specific selection; simpler but less adaptive
• Recommended: ENABLED (this is the core of the adaptive system); disable only for testing or simplification
Strategy A Weight (0-1):
• Function: Weight for Strategy A (Squeeze Breakout) when multi-strategy disabled
• Characteristics: Fires on Bollinger squeeze release; best in Low Vol Range, Transition; compression → expansion pattern
• When Multi-Strategy OFF: Default 0.33 (equal weight); increase to 0.4-0.5 for choppy ranges with breakouts; decrease to 0.2-0.3 for trending markets
• When Multi-Strategy ON: This is ignored (system auto-selects based on performance)
Strategy B Weight (0-1):
• Function: Weight for Strategy B (Lorentzian Flow) when multi-strategy disabled
• Characteristics: Fires on strong HFL + velocity + gamma; best in Trending Bull/Bear; momentum → acceleration pattern
• When Multi-Strategy OFF: Default 0.33; increase to 0.4-0.5 for trending markets; decrease to 0.2-0.3 for choppy/ranging markets
• When Multi-Strategy ON: Ignored (auto-selected)
Strategy C Weight (0-1):
• Function: Weight for Strategy C (Memory Pattern) when multi-strategy disabled
• Characteristics: Fires when dual KNN predicts strong move; best in High Vol Range; requires memory system enabled + sufficient data
• When Multi-Strategy OFF: Default 0.34; increase to 0.4-0.6 if strong pattern repetition and LTM has >200 patterns; decrease to 0.2-0.3 if new to system; set to 0.0 if memory disabled
• When Multi-Strategy ON: Ignored (auto-selected)
📚 PRE-TRAINING:
Historical Pre-Training (true/false):
• Function: Bootstrap feature that fills memory on chart load
• Enabled: Scans past bars to populate STM/LTM before live trading; calculates historical outcomes (10-bar forward returns); builds initial pattern library; system starts with context, not blank slate
• Disabled: Memories only populate in real-time; takes weeks to build pattern library
• Recommended: ENABLED (critical for avoiding "cold start" problem); disable only for testing clean learning
Training Bars (50-500):
• Function: How many historical bars to scan on load (limited by available history)
• Recommendations:
1-5min charts: 200-300 (few hours of history)
15min-1H: 200-400 (days/weeks)
4H: 300-500 (months)
Daily: 200-400 (years)
• Performance:
100 bars: ~1 second
300 bars: ~2-3 seconds
500 bars: ~4-5 seconds
• Sweet Spot: 200-300 (enough patterns without slow load)
• If chart loads slowly: Reduce to 100-150
🎨 VISUALIZATION:
Show Regime Background (true/false):
• Function: Color-code background by current regime
• Colors: Trending Bull (green tint), Trending Bear (red tint), High Vol Range (orange tint), Low Vol Range (blue tint), Transition (purple tint)
• Helps visually track regime changes
Show Flow Bands (true/false):
• Function: Plot upper/lower bands based on HFL strength
• Shows dynamic support/resistance zones; green fill = bullish flow; red fill = bearish flow
• Useful for visual trend confirmation
Show Confidence Meter (true/false):
• Function: Plot signal confidence (0-100) in separate pane
• Calculation: (Signal_Strength / 100) × Regime_Confidence
• Gold line = current confidence; dashed line = minimum threshold
• Signals fire when confidence exceeds threshold
Show Prediction Arc (true/false):
• Function: Dashed line projecting expected price move based on memory prediction
• NOT a price target - a probability vector; steep arc = strong expected move; flat arc = weak/uncertain prediction
• Green = bullish prediction; red = bearish prediction
Show Signals (true/false):
• Function: Triangle markers at entry points
• ▲ Green = Long signal; ▼ Red = Short signal
• Markers show on bar close (non-repainting)
🏆 DASHBOARD:
Show Dashboard (true/false):
• Function: Main info panel showing all system metrics
• Sections: Lorentzian Core, Regime, Dual Memory, Adaptive Parameters, Regime Performance, Shadow Portfolios, Current Signal Status
• Essential for understanding system state
Dashboard Position: Top Left, Top Right, Bottom Left, Bottom Right
Individual Section Toggles:
• System Stats: Lorentzian Core section (Gamma, v/c, HFL, TCI)
• Memory Stats: Dual Memory section (STM/LTM predictions, agreement)
• Shadow Portfolios: Shadow Portfolio table (equity, win%, PF)
• Adaptive Params: Adaptive Parameters section (threshold, quality gate, flow mult)
🔥 HEATMAPS:
Show Dual Heatmaps (true/false):
• Function: Visual pattern density maps for STM and LTM
• Layout: X-axis = pattern age (left=recent, right=old); Y-axis = outcome direction (top=bearish, bottom=bullish); Color intensity = pattern count; Color hue = bullish (green) vs bearish (red)
• Warning: Can clutter chart; disable if not using
Heatmap Position: Screen position for heatmaps (STM at selected position, LTM offset)
Resolution (5-15):
• Function: Grid resolution (bins)
• Higher = more detailed but smaller cells; Lower = clearer but less granular
• 10 is good balance; reduce to 6-8 if hard to read
PART 11: DASHBOARD METRICS EXPLAINED
The comprehensive dashboard provides real-time transparency into every aspect of the adaptive system:
⚡ LORENTZIAN CORE SECTION:
Gamma (γ):
• Range: 1.0 to ~10.0 (capped)
• Interpretation:
γ ≈ 1.0-1.2: Normal market time, low velocity
γ = 1.5-2.5: Moderate compression, trending
γ = 3.0-5.0: High compression, explosive moves
γ > 5.0: Extreme compression, parabolic volatility
• Usage: High gamma = system operating in compressed time; expect shorter effective periods and faster adaptation
v/c (Velocity / Speed Limit):
• Range: 0.0 to 0.999 (approaches but never reaches 1.0)
• Interpretation:
v/c < 0.3: Slow market, low momentum
v/c = 0.4-0.7: Moderate trending
v/c > 0.7: Approaching "speed limit," high velocity
v/c > 0.9: Parabolic move, system at limit
• Color Coding: Red (>0.7), Gold (0.4-0.7), Green (<0.4)
• Usage: High v/c warns of extreme conditions where trend may exhaust
HFL (Harmonic Flow):
• Range: Typically -3.0 to +3.0 (can exceed in extremes)
• Interpretation:
HFL > 0: Bullish flow
HFL < 0: Bearish flow
|HFL| > 0.5: Strong directional bias
|HFL| < 0.2: Weak, indecisive
• Color: Green (positive), Red (negative)
• Usage: Primary directional indicator; strategies often require HFL confirmation
TCI (Temporal Compression Index):
• Calculation: base_period / compressed_length
• Interpretation:
TCI ≈ 1.0: No compression, normal time
TCI = 1.5-2.5: Moderate compression
TCI > 3.0: Significant compression
• Usage: Shows how much time is being compressed; mirrors gamma but more intuitive
╔═══ REGIME SECTION ═══╗
Current:
• Display: Regime name with icon (Trending Bull ↗, Trending Bear ↘, High Vol Range ↔, Low Vol Range —, Transition ⚡)
• Color: Gold for visibility
• Usage: Know which regime you're in; check regime performance to see expected strategy behavior
Confidence:
• Range: 0-100%
• Interpretation:
>70%: Very clear regime definition
40-70%: Moderate clarity
<40%: Ambiguous, mixed conditions
• Color: Green (>70%), Gold (40-70%), Red (<40%)
• Usage: High confidence = trust regime classification; low confidence = regime may be transitioning
Mode:
• States:
🔥 BOOTSTRAP (X/10): Still gathering data for this regime
✅ FAVORABLE: Best strategy has positive risk-adjusted score (>0.5)
⚠️ UNFAVORABLE: All strategies have negative scores (≤0.5)
• Color: Orange (bootstrap), Green (favorable), Red (unfavorable)
• Critical Importance: This tells you whether the system will trade or stand aside (if regime filter enabled)
╔═══ DUAL MEMORY KNN SECTION ═══╗
STM (Size):
• Display: Number of patterns currently in STM (0 to stm_size)
• Interpretation: Should fill to capacity within hours/days; if not filling, check that memory is enabled
STM Pred:
• Range: Typically -0.05 to +0.05 (representing -5% to +5% expected 10-bar move)
• Color: Green (positive), Red (negative)
• Usage: STM's prediction based on recent patterns; emphasis on current regime
LTM (Size):
• Display: Number of patterns in LTM (0 to ltm_size)
• Interpretation: Fills slowly (weeks/months); only validated high-quality patterns; check quality gate if not filling
LTM Pred:
• Range: Similar to STM pred
• Color: Green (positive), Red (negative)
• Usage: LTM's prediction based on long-term validated patterns; more strategic than tactical
Agreement:
• Display:
✅ XX%: Strong agreement (>70%) - both memories aligned
⚠️ XX%: Moderate agreement (40-70%) - some disagreement
❌ XX%: Conflict (<40%) - memories strongly disagree
• Color: Green (>70%), Gold (40-70%), Red (<40%)
• Critical Usage: Low agreement often precedes regime change or signals novel conditions; Strategy C won't fire with low agreement
╔═══ ADAPTIVE PARAMS SECTION ═══╗
Threshold:
• Display: Current regime's signal quality threshold (30-90)
• Interpretation: Higher = pickier; lower = more permissive
• Watch For: If steadily rising in a regime, system is struggling (low win rate); if falling, system is confident
• Default: Starts at base_quality_threshold (usually 60)
Quality:
• Display: Current regime's LTM quality gate (0.2-0.8)
• Interpretation: Minimum quality score for pattern to enter LTM
• Watch For: If rising, system demanding higher-quality patterns; if falling, accepting more diverse patterns
• Default: Starts at 0.4
Flow Mult:
• Display: Current regime's flow multiplier (0.5-2.0)
• Interpretation: Amplifies or dampens HFL for Strategy B
• Watch For: If >1.2, system found strong edge in flow signals; if <0.8, flow signals underperforming
• Default: Starts at 1.0
Learning:
• Display: ✅ ON or ❌ OFF
• Shows whether adaptive learning is enabled
• Color: Green (on), Red (off)
╔═══ REGIME PERFORMANCE SECTION ═══╗
This table shows ONLY the current regime's statistics:
S (Strategy):
• Display: A, B, or C
• Color: Gold if selected strategy; gray if not
• Shows which strategies have data in this regime
Trades:
• Display: Number of completed trades for this pair
• Interpretation: Blank or low numbers mean bootstrap mode; >10 means statistical significance building
Win%:
• Display: Win rate percentage
• Color: Green (>55%), White (45-55%), Red (<45%)
• Interpretation: 52%+ is good; 58%+ is excellent; <45% means struggling
• Note: Short-term variance is normal; judge after 20+ trades
Sharpe:
• Display: Annualized Sharpe ratio
• Color: Green (>1.0), White (0-1.0), Red (<0)
• Interpretation:
>2.0: Exceptional (rare)
1.0-2.0: Good
0.5-1.0: Acceptable
0-0.5: Marginal
<0: Losing
• Usage: Primary metric for strategy selection (60% weight in score)
╔═══ SHADOW PORTFOLIOS SECTION ═══╗
Shows virtual equity tracking across ALL regimes (not just current):
S (Strategy):
• Display: A, B, or C
• Color: Gold if currently selected strategy; gray otherwise
Equity:
• Display: Current virtual balance (starts $10,000)
• Color: Green (>$10,000), White ($9,500-$10,000), Red (<$9,500)
• Interpretation: Which strategy is actually making virtual money across all conditions
• Note: 10% risk per trade assumed
Win%:
• Display: Overall win rate across all regimes
• Color: Green (>55%), White (45-55%), Red (<45%)
• Interpretation: Aggregate performance; strategy may do well in some regimes and poorly in others
PF (Profit Factor):
• Display: Gross profit / gross loss
• Color: Green (>1.5), White (1.0-1.5), Red (<1.0)
• Interpretation:
>2.0: Excellent
1.5-2.0: Good
1.2-1.5: Acceptable
1.0-1.2: Marginal
<1.0: Losing
• Usage: Confirms win rate; high PF with moderate win rate means winners >> losers
╔═══ STATUS BAR ═══╗
Display States:
• 🟢 LONG: Currently in long position (green background)
• 🔴 SHORT: Currently in short position (red background)
• ⬆️ LONG SIGNAL: Long signal present but not yet confirmed (waiting for bar close)
• ⬇️ SHORT SIGNAL: Short signal present but not yet confirmed
• ⚪ NEUTRAL: No position, no signal (white background)
Usage: Immediate visual confirmation of system state; check before manually entering/exiting
PART 12: VISUAL ELEMENT INTERPRETATION
REGIME BACKGROUND COLORS:
Green Tint: Trending Bull regime - expect Strategy B (Flow) to dominate; focus on long momentum
Red Tint: Trending Bear regime - expect Strategy B (Flow) shorts; focus on short momentum
Orange Tint: High Vol Range - expect Strategy A (Squeeze) or C (Memory); trade breakouts or patterns
Blue Tint: Low Vol Range - expect Strategy A (Squeeze); wait for compression release
Purple Tint: Transition regime - often unfavorable; system may stand aside; high uncertainty
Usage: Quick visual regime identification without reading dashboard
FLOW BANDS:
Upper Band: close + HFL × ATR × 1.5
Lower Band: close - HFL × ATR × 1.5
Green Fill: HFL positive (bullish flow); bands act as dynamic support/resistance in uptrend
Red Fill: HFL negative (bearish flow); bands act as dynamic resistance/support in downtrend
Usage:
• Bullish flow: Price bouncing off lower band = trend continuation; breaking below = possible reversal
• Bearish flow: Price rejecting upper band = trend continuation; breaking above = possible reversal
CONFIDENCE METER (Separate Pane):
Gold Line: Current signal confidence (0-100)
Dashed Line: Minimum confidence threshold
Interpretation:
• Line above threshold: Signal likely to fire if strength sufficient
• Line below threshold: Even if signal logic met, won't fire (insufficient confidence)
• Gradual rise: Signal building strength
• Sharp spike: Sudden conviction (check if sustainable)
Usage: Real-time signal probability; helps anticipate upcoming entries
PREDICTION ARC:
Dashed Line: Projects from current close to expected price 8 bars forward
Green Arc: Bullish memory prediction
Red Arc: Bearish memory prediction
Steep Arc: High conviction (strong expected move)
Flat Arc: Low conviction (weak/uncertain move)
Important: NOT a price target; this is a probability vector based on KNN outcomes; actual price may differ
Usage: Directional bias from pattern matching; confirms or contradicts flow signals
SIGNAL MARKERS:
▲ Green Triangle (below bar):
• Long signal confirmed on bar close
• Entry on next bar open
• Non-repainting (appears after bar closes)
▼ Red Triangle (above bar):
• Short signal confirmed on bar close
• Entry on next bar open
• Non-repainting
Size: Tiny (unobtrusive)
Text: "L" or "S" in marker
Usage: Historical signal record; alerts should fire on these; verify against dashboard status
DUAL HEATMAPS (If Enabled):
STM HEATMAP:
• X-axis: Pattern age (left = recent, right = older, typically 0-50 bars)
• Y-axis: Outcome direction (top = bearish outcomes, bottom = bullish outcomes)
• Color Intensity: Brightness = pattern count in that cell
• Color Hue: Green tint (bullish), Red tint (bearish), Gray (neutral)
Interpretation:
• Dense bottom-left: Many recent bullish patterns (bullish regime)
• Dense top-left: Many recent bearish patterns (bearish regime)
• Scattered: Mixed outcomes, ranging regime
• Empty areas: Few patterns (low data)
LTM HEATMAP:
• Similar layout but X-axis spans wider age range (0-500+ bars)
• Shows long-term pattern distribution
• Denser = more validated patterns
Comparison Usage:
• If STM and LTM heatmaps look similar: Current regime matches historical patterns (high agreement)
• If STM bottom-heavy but LTM top-heavy: Recent bullish activity contradicts historical bearish patterns (low agreement, transition signal)
PART 13: DEVELOPMENT STORY
The creation of the Lorentzian Harmonic Flow Adaptive ML system represents over six months of intensive research, mathematical exploration, and iterative refinement. What began as a theoretical investigation into applying special relativity to market time evolved into a complete adaptive learning framework.
THE CHALLENGE:
The fundamental problem was this: markets don't experience time uniformly, yet every indicator treats a 50-period calculation the same whether markets are exploding or sleeping. Traditional adaptive indicators adjust parameters based on volatility, but this is reactive—by the time you measure high volatility, the explosive move is over. What was needed was a framework that measured the market's intrinsic velocity relative to its own structural limits, then compressed time itself proportionally.
THE LORENTZIAN INSIGHT:
Einstein's special relativity provides exactly this framework through the Lorentz factor. When an object approaches the speed of light, time dilates—but from the object's reference frame, it experiences time compression. By treating price velocity as analogous to relativistic velocity and volatility structure as the "speed limit," we could calculate a gamma factor that compressed lookback periods during explosive moves.
The mathematics were straightforward in theory but devilishly complex in implementation. Pine Script has no native support for dynamically-sized arrays or recursive functions, forcing creative workarounds. The Lorentzian kernel smoothing required nested loops through historical bars, calculating kernel weights on the fly—a computational nightmare. Early versions crashed or produced bizarre artifacts (negative gamma values, infinite loops during volatility spikes).
Optimization took weeks. Limiting kernel lookback to 60 bars while still maintaining smoothing quality. Pre-calculating gamma once per bar and reusing it across all calculations. Caching intermediate results. The final implementation balances mathematical purity with computational reality.
THE MEMORY ARCHITECTURE:
With temporal compression working, the next challenge was pattern memory. Simple moving average systems have no memory—they forget yesterday's patterns immediately. But markets are non-stationary; what worked last month may not work today. The solution: dual-memory architecture inspired by cognitive neuroscience.
Short-Term Memory (STM) would capture tactical patterns—the hippocampus of the system. Fast encoding, fast decay, always current. Long-Term Memory (LTM) would store validated strategic patterns—the neocortex. Slow consolidation, persistent storage, regime-spanning wisdom.
The KNN implementation nearly broke me. Calculating Lorentzian distance across 6 dimensions for 500+ patterns per query, applying age decay, filtering by regime, finding K nearest neighbors without native sorting functions—all while maintaining sub-second execution. The breakthrough came from realizing we could use destructive sorting (marking found neighbors as "infinite distance") rather than maintaining separate data structures.
Pre-training was another beast. To populate memory with historical patterns, the system needed to scan hundreds of past bars, calculate forward outcomes, and insert patterns—all on chart load without timing out. The solution: cap at 200 bars, optimize loops, pre-calculate features. Now it works seamlessly.
THE REGIME DETECTION:
Five-regime classification emerged from empirical observation. Traditional trending/ranging dichotomy missed too much nuance. Markets have at least four distinct states: trending up, trending down, volatile range, quiet range—plus a chaotic transition state. Linear regression slope quantifies trend; volatility ratio quantifies expansion; combining them creates five natural clusters.
But classification is useless without regime-specific learning. That meant tracking 15 separate performance matrices (3 strategies × 5 regimes), computing Sharpe ratios and Calmar ratios for sparse data, implementing Bayesian-like strategy selection. The bootstrap mode logic alone took dozens of iterations—too strict and you never get data, too permissive and you blow up accounts during learning.
THE ADAPTIVE LAYER:
Parameter adaptation was conceptually elegant but practically treacherous. Each regime needed independent thresholds, quality gates, and multipliers that adapted based on outcomes. But naive gradient descent caused oscillations—win a few trades, lower threshold, take worse signals, lose trades, raise threshold, miss good signals. The solution: exponential smoothing via learning rate (α) and separate scoring for selection vs adaptation.
Shadow portfolios provided objective validation. By running virtual accounts for all strategies simultaneously, we could see which would have won even when not selected. This caught numerous bugs where selection logic was sound but execution was flawed, or vice versa.
THE DASHBOARD & VISUALIZATION:
A learning system is useless if users can't understand what it's doing. The dashboard went through five complete redesigns. Early versions were information dumps—too much data, no hierarchy, impossible to scan. The final version uses visual hierarchy (section headers, color coding, strategic whitespace) and progressive disclosure (show current regime first, then performance, then parameters).
The dual heatmaps were a late addition but proved invaluable for pattern visualization. Seeing STM cluster in one corner while LTM distributed broadly immediately signals regime novelty. Traders grasp this visually faster than reading disagreement percentages.
THE TESTING GAUNTLET:
Testing adaptive systems is uniquely challenging. Static backtest results mean nothing—the system should improve over time. Early "tests" showed abysmal performance because bootstrap periods were included. The breakthrough: measure pre-learning baseline vs post-learning performance. A system going from 48% win rate (first 50 trades) to 56% win rate (trades 100-200) is succeeding even if absolute performance seems modest.
Edge cases broke everything repeatedly. What happens when a regime never appears in historical data? When all strategies fail simultaneously? When memory fills with only bearish patterns during a bull run? Each required careful handling—bootstrap modes, forced diversification, quality gates.
THE DOCUMENTATION:
This isn't an indicator you throw on a chart with default settings and trade immediately. It's a learning system that requires understanding. The input tooltips alone contain over 10,000 words of guidance—market-specific recommendations, timeframe-specific settings, tradeoff explanations. Every parameter needed not just a description but a philosophical justification and practical tuning guide.
The code comments span 500+ lines explaining theory, implementation decisions, edge cases. Future maintainers (including myself in six months) need to understand not just what the code does but why certain approaches were chosen over alternatives.
WHAT ALMOST DIDN'T WORK:
The entire project nearly collapsed twice. First, when initial Lorentzian smoothing produced complete noise—hours of debugging revealed a simple indexing error where I was accessing instead of in the kernel loop. One character, entire system broken.
Second, when memory predictions showed zero correlation with outcomes. Turned out the KNN distance metric was dominated by the gamma dimension (values 1-10) drowning out normalized features (values -1 to 1). Solution: apply kernel transformation to all dimensions, not just final distance. Obvious in retrospect, maddening at the time.
THE PHILOSOPHY:
This system embodies a specific philosophy: markets are learnable but non-stationary. No single strategy works forever, but regime-specific patterns persist. Time isn't uniform, memory isn't perfect, prediction isn't possible—but probabilistic edges exist for those willing to track them rigorously.
It rejects the premise that indicators should give universal advice. Instead, it says: "In this regime, based on similar past states, Strategy B has a 58% win rate and 1.4 Sharpe. Strategy A has 45% and 0.2 Sharpe. I recommend B. But we're still in bootstrap for Strategy C, so I'm gathering data. Check back in 5 trades."
That humility—knowing what it knows and what it doesn't—is what makes it robust.
PART 14: PROFESSIONAL USAGE PROTOCOL
PHASE 1: DEPLOYMENT (Week 1-4)
Initial Setup:
1. Load indicator on primary trading chart with default settings
2. Verify historical pre-training enabled (should see ~200 patterns in STM/LTM on first load)
3. Enable all dashboard sections for maximum transparency
4. Set alerts but DO NOT trade real money
Observation Checklist:
• Dashboard Validation:
✓ Lorentzian Core shows reasonable gamma (1-5 range, not stuck at 1.0 or spiking to 10)
✓ HFL oscillates with price action (not flat or random)
✓ Regime classifications make intuitive sense
✓ Confidence scores vary appropriately
• Memory System:
✓ STM fills within first few hours/days of real-time bars
✓ LTM grows gradually (few patterns per day, quality-gated)
✓ Predictions show directional bias (not always 0.0)
✓ Agreement metric fluctuates with regime changes
• Bootstrap Tracking:
✓ Dashboard shows "🔥 BOOTSTRAP (X/10)" for each regime
✓ Trade counts increment on regime-specific signals
✓ Different regimes reach threshold at different rates
Paper Trading:
• Take EVERY signal (ignore unfavorable warnings during bootstrap)
• Log each trade: entry price, regime, selected strategy, outcome
• Calculate your actual P&L assuming proper risk management (1-2% risk per trade)
• Do NOT judge system performance yet—focus on understanding behavior
Troubleshooting:
• No signals for days:
- Check base_quality_threshold (try lowering to 50-55)
- Verify enable_regime_filter not blocking all regimes
- Confirm signal confidence threshold not too high (try 0.25)
• Signals every bar:
- Raise base_quality_threshold to 65-70
- Increase min_bars_between to 8-10
- Check if gamma spiking excessively (raise c_multiplier)
• Memory not filling:
- Confirm enable_memory = true
- Verify historical pre-training completed (check STM size after load)
- May need to wait 10 bars for first real-time update
PHASE 2: VALIDATION (Week 5-12)
Statistical Emergence:
By week 5-8, most regimes should exit bootstrap. Look for:
✓ Regime Performance Clarity:
- At least 2-3 strategies showing positive Sharpe in their favored regimes
- Clear separation (Strategy B strong in Trending, Strategy A strong in Low Vol Range, etc.)
- Win rates stabilizing around 50-60% for winning strategies
✓ Shadow Portfolio Divergence:
- Virtual portfolios showing clear winners ($10K → $11K+) and losers ($10K → $9K-)
- Profit factors >1.3 for top strategy
- System selection aligning with best shadow portfolio
✓ Parameter Adaptation:
- Thresholds varying per regime (not stuck at initial values)
- Quality gates adapting (some regimes higher, some lower)
- Flow multipliers showing regime-specific optimization
Validation Questions:
1. Do patterns make intuitive sense?
- Strategy B (Flow) dominating Trending Bull/Bear? ✓ Expected
- Strategy A (Squeeze) succeeding in Low Vol Range? ✓ Expected
- Strategy C (Memory) working in High Vol Range? ✓ Expected
- Random strategy winning everywhere? ✗ Problem
2. Is unfavorable filtering working?
- Regimes with negative Sharpe showing "⚠️ UNFAVORABLE"? ✓ System protecting capital
- Transition regime often unfavorable? ✓ Expected
- All regimes perpetually unfavorable? ✗ Settings too strict or asset unsuitable
3. Are memories agreeing appropriately?
- High agreement during stable regimes? ✓ Expected
- Low agreement during transitions? ✓ Expected (novel conditions)
- Perpetual conflict? ✗ Check memory sizes or decay rates
Fine-Tuning (If Needed):
Too Many Signals in Losing Regimes:
→ Increase learning_rate to 0.07-0.08 (faster adaptation)
→ Raise base_quality_threshold by 5-10 points
→ Enable regime filter if disabled
Missing Profitable Setups:
→ Lower base_quality_threshold by 5-10 points
→ Reduce min_confidence to 0.25-0.30
→ Check if bootstrap mode blocking trades (let it complete)
Excessive Parameter Swings:
→ Reduce learning_rate to 0.03-0.04
→ Increase min_regime_samples to 15-20 (more data before adaptation)
Memory Disagreement Too Frequent:
→ Increase LTM size to 768-1024 (broader pattern library)
→ Lower adaptive_quality_gate requirement (allow more patterns)
→ Increase K neighbors to 10-12 (smoother predictions)
PHASE 3: LIVE TRADING (Month 4+)
Pre-Launch Checklist:
1. ✓ At least 3 regimes show positive Sharpe (>0.8)
2. ✓ Top shadow portfolio shows >53% win rate and >1.3 profit factor
3. ✓ Parameters have stabilized (not changing more than 10% per month)
4. ✓ You understand every dashboard metric and can explain regime/strategy behavior
5. ✓ You have proper risk management plan independent of this system
Position Sizing:
Conservative (Recommended for Month 4-6):
• Risk per trade: 0.5-1.0% of account
• Max concurrent positions: 1-2
• Total exposure: 10-25% of intended full size
Moderate (Month 7-12):
• Risk per trade: 1.0-1.5% of account
• Max concurrent positions: 2-3
• Total exposure: 25-50% of intended size
Full Scale (Year 2+):
• Risk per trade: 1.5-2.0% of account
• Max concurrent positions: 3-5
• Total exposure: 100% (still following risk limits)
Entry Execution:
On Signal Confirmation:
1. Verify dashboard shows signal type (▲ LONG or ▼ SHORT)
2. Check regime mode (avoid if "⚠️ UNFAVORABLE" unless testing)
3. Note selected strategy (A/B/C) and its regime Sharpe
4. Verify memory agreement if Strategy C selected (want >60%)
Entry Method:
• Market entry: Next bar open after signal (for exact backtest replication)
• Limit entry: Slight improvement (2-3 ticks) if confident in direction
Stop Loss Placement:
• Strategy A (Squeeze): Beyond opposite band or recent swing point
• Strategy B (Flow): 1.5-2.0 ATR from entry against direction
• Strategy C (Memory): Based on predicted move magnitude (tighter if pred > 2%)
Exit Management:
System Exit Signals:
• Opposite signal fires: Immediate exit, potential reversal entry
• 20 bars no exit signal: System implies position stale, consider exiting
• Regime changes to unfavorable: Tighten stop, consider partial exit
Manual Exit Conditions:
• Stop loss hit: Take loss, log for validation (system expects some losses)
• Profit target hit: If using fixed targets (2-3R typical)
• Major news event: Flatten during high-impact news (system can't predict these)
Warning Signs (Exit Criteria):
🚨 Stop Trading If:
1. All regimes show negative Sharpe for 4+ weeks (market structure changed)
2. Your results >20% worse than shadow portfolios (execution problem)
3. Parameters hitting extremes (thresholds >85 or <35 across all regimes)
4. Memory agreement <30% for extended periods (unprecedented conditions)
5. Account drawdown >20% (risk management failure, system or otherwise)
⚠️ Reduce Size If:
1. Win rate drops 10%+ from peak (temporary regime shift)
2. Selected strategy underperforming another by >30% (selection lag)
3. Consecutive losses >5 (variance or problem, reduce until clarity)
4. Major market regime change (Fed policy shift, war, etc. - let system re-adapt)
PART 15: THEORETICAL IMPLICATIONS & LIMITATIONS
WHAT THIS SYSTEM REPRESENTS:
Contextual Bandits:
The regime-specific strategy selection implements a contextual multi-armed bandit problem. Each strategy is an "arm," each regime is a "context," and we select arms to maximize expected reward given context. This is reinforcement learning applied to trading.
Experience Replay:
The dual-memory architecture mirrors DeepMind's DQN breakthrough. STM = recent experience buffer; LTM = validated experience replay. This prevents catastrophic forgetting while enabling rapid adaptation—a key challenge in neural network training.
Meta-Learning:
The system learns how to learn. Parameter adaptation adjusts the system's own sensitivity and selectivity based on outcomes. This is "learning to learn"—optimizing the optimization process itself.
Non-Stationary Optimization:
Traditional backtesting assumes stationarity (past patterns persist). This system assumes non-stationarity and continuously adapts. The goal isn't finding "the best parameters" but tracking the moving optimum.
Regime-Conditional Policies:
Rather than a single strategy for all conditions, this implements regime-specific policies. This is contextual decision-making—environment state determines action selection.
FINAL WISDOM:
"The market is a complex adaptive system. To trade it successfully, one must also adapt. This indicator provides the framework—memory, learning, regime awareness—but wisdom comes from understanding when to trade, when to stand aside, and when to defer to conditions the system hasn't yet learned. The edge isn't in the algorithm alone; it's in the partnership between mathematical rigor and human judgment."
— Inspired by the intersection of Einstein's relativity, Kahneman's behavioral economics, and decades of quantitative trading research
Taking you to school. — Dskyz, Trade with insight. Trade with anticipation.
ReversoReverso – Moving Average Touch Statistics Tracker
Reverso indicator is a technical analysis tool that tracks and visualizes how price interacts with a selected Exponential Moving Average (EMA). It provides detailed statistics about price behavior before, during, and after each EMA touch event.
This script is suitable for both trend-following and mean-reversion traders who want to study EMA reactions, understand market tendencies, and refine entry/exit strategies based on price-memory dynamics.
Features and Functionality
Supported MAs: EMA 9, 20, or 50
Timeframe Support: Uses the chart’s timeframe
Touch Detection: Triggered when the price range (high to low) crosses or touches the EMA
Automatic Data Tracking
Tables for Quick Visual Summary
Visual Overlay: Optional EMA line plotted on chart
Timeframe Support: Uses the chart’s timeframe
Capped history: Most recent 50 touches
Automatic Data Tracking:
Number of EMA touches
Time intervals between touches
Price distance from last touch
Maximum price deviation (above/below EMA) between touches
Time spent above/below EMA
Tables for Quick Visual Summary:
Info Table: Live details about last and first touches, distance from touch, bars above/below, peak movements since last touch
Stats Table: Averages and extreme values for price behavior patterns across recent history
Core Metrics Tracked
Last Touch Price: The last price level where price touched the EMA
Distance from Last Touch: Current % change from the last touch price
Time Between Touches: Average and maximum intervals (in bars or time) between touch events
Max Distance Above/Below: Peak movement above/below EMA between touches
Bars Above/Below: How long price stayed above/below the EMA since last touch
Peak This Cycle: Max deviation above/below in current cycle since last touch
How It Works
Reverso monitors each bar to check if price intersects the selected EMA.
When a new touch occurs, it records the touch price and time, and resets the tracking cycle.
From that point forward, it tracks how far and how long price drifts above or below the EMA.
This process repeats with each new touch, building a detailed profile of how price behaves around the moving average.
The result is a visual and statistical framework for understanding price memory, market rhythm, and mean-reversion opportunities.
Customization Options
EMA Length: Choose from EMA 9, 20, or 50
Show MA Line: Toggle the EMA plot on the chart
Show Info Table: Enable/disable the current-touch summary
Show Statistics Table: Show aggregate data over the history
Table Positioning: Customizable placement for both tables
MA Color: Select custom color for EMA plot
Intended Use Cases
Identify reversal or continuation setups near EMAs
Validate strategies relying on mean reversion
Backtest the consistency of price respect to EMAs
Detect periods of volatility clustering around EMAs
Notes and Disclaimers
This script does not repaint: calculations are made on confirmed bars.
This indicator is educational in nature and should be used alongside other forms of analysis.
Time durations in the tables are approximated using bar timing and may vary across markets/timeframes.
Momentum Pull Back Stratergy"Master Pull Back Strategy" is a highly detailed momentum and volume-based trading system designed for Trading View. It visually annotates the chart, detects buy/sell signals, tracks market phases, and evaluates retracements and confirmations. Below is a full breakdown of its logic and components:
🔷 1. Volume Profile Highlights (Arrow Emojis)
Purpose: Show volume strength vs. average using color-coded arrows.
Calculates average volume over a user-defined period (length = 10).
Divides current volume by average volume to get volRatio.
Based on volRatio, plots small arrows (acting like diamonds) in various colors:
Low volume (black, navy, blue...) to high volume (yellow, red, purple).
Visual Purpose: Give a quick sense of how "loud" or "quiet" a candle's volume is.
📈 2. Highs of Day Tracking
Purpose: Track the high price reached during different trading sessions.
Defines pre-market, regular, and post-market sessions.
Tracks the highest price (high) in each session.
Plots colored lines:
Orange: Pre-market high
Red: Regular market high
Blue: Post-market high
🟩 3. Green Candle Pattern Detection
Purpose: Detect bullish patterns formed by consecutive green candles.
Key Conditions:
Count green candles (greenCount) until a red candle appears or 10 candles max.
Require at least 1 silver-or-above volume candle (volRatio >= 1.0).
Must have ≥3% price gain during the green sequence.
Must accumulate >20,000 volume during the green run.
If Valid:
Locks the pattern.
Records important values:
patternStartPrice, patternEndPrice, totalPatternVolume, patternHigh, patternBars
Marks the bar after which red starts (redStartBar)
⬇️ 4. Retracement Monitoring
Purpose: Track retracement from the pattern high after it locks.
Defines retracement percentage:
(greenPatternHigh - low) / (greenPatternHigh - greenPatternLow)
If retracement exceeds 80%, it invalidates the pattern.
Buy signal is disabled if pattern retraces too far.
✅ 5. Buy Signal Logic
Purpose: Fire a buy signal after pattern lock if price breaks above local high.
Conditions:
Pattern is locked (patternLocked).
Price breaks above a short-term high (triggerBreak).
It's not the first red candle.
Price is within 8.5% above EMA9.
Buy signal fires and:
Sets buyActive = true
Tracks highest price after buy
Stores buyPrice = close
❌ 6. Sell Signal Logic
Purpose: Exit signal after retracement from post-buy high.
While buy is active:
If price retraces ≥3% from the post-buy high → sellSignal = true
Resets buyActive, trackedHigh, and buyPrice
Plots a red "SELL" label above the bar.
🎨 7. Buy Signal Visual Color Coding
Purpose: Color buy signal based on how deep the retracement is.
Uses retracement percentage:
≥65% → Red (high risk)
45–65% + MACD bullish → Yellow (moderate)
<45% + MACD bullish → Green (ideal)
Plots BUY label below bar in the respective color.
🔻 8. Retracement Triangle Visuals
Purpose: Shows retracement progression while pattern is locked.
If pattern is locked and not ready for buy:
Plots triangle below bar in the buyColor for visual tracking.
⭐ 9. Star Markers Above Lock Candle
Purpose: Confirmations when pattern locks.
First Star:
Plotted above the first red candle after green pattern lock.
Second Star (⭐⭐):
Additional confirmations:
Volume OK (less than previous)
MACD bullish
Price > VWAP
VolAtLock > 100K
Price up >6% from first green candle
Price below 75% of daily EMA200 or above EMA200
Third Star (⭐⭐⭐):
Even stricter confirmations:
Volume < 60% of previous
High <= previous high
VolAtLock > 500K
Price > $3
Gain >9% from first green
Price < 50% of daily EMA200 or above EMA200
📊 10. Bar Coloring
Purpose: Visually highlight bars based on pattern phase and MACD.
Gray: MACD Bearish
Light Green: Part of active green pattern
Blue: In locked phase but no buy triggered
🔄 11. Reset Logic
Purpose: Clears all tracking variables once a buy signal fires or pattern is invalidated.
Also resets if:
Retracement is too deep
10 candles pass post-lock without a trigger
⛰️ 12. Double Top Detection
Purpose: Basic visual marker when current high == previous high.
Plots a gray triangle if current and previous bar highs match.
📌 Summary: What This Strategy Shows
Buy Opportunities: Based on high-volume green runs and confirmed breakouts.
Sell Triggers: Once a retracement from peak exceeds 3%.
Visuals for Confirmation:
Diamonds for volume
Stars for lock confidence
Colors for retracement strength
Risk Management:
Retracement filtering
Time limits on locked phases
Volume filters
Market Context: Tracks pre/regular/post market highs and daily EMA 200.
Power RSI Segment Runner [CHE] Power RSI Segment Runner — Tracks RSI momentum across higher timeframe segments to detect directional switches for trend confirmation.
Summary
This indicator calculates a running Relative Strength Index adapted to segments defined by changes in a higher timeframe, such as daily closes, providing a smoothed view of momentum within each period. It distinguishes between completed segments, which fix the final RSI value, and ongoing ones, which update in real time with an exponential moving average filter. Directional switches between bullish and bearish momentum trigger visual alerts, including overlay lines and emojis, while a compact table displays current trend strength as a progress bar. This segmented approach reduces noise from intra-period fluctuations, offering clearer signals for trend persistence compared to standard RSI on lower timeframes.
Motivation: Why this design?
Standard RSI often generates erratic signals in choppy markets due to constant recalculation over fixed lookback periods, leading to false reversals that mislead traders during range-bound or volatile phases. By resetting the RSI accumulation at higher timeframe boundaries, this indicator aligns momentum assessment with broader market cycles, capturing sustained directional bias more reliably. It addresses the gap between short-term noise and long-term trends, helping users filter entries without over-relying on absolute overbought or oversold thresholds.
What’s different vs. standard approaches?
- Baseline Reference: Diverges from the classic Wilder RSI, which uses a fixed-length exponential moving average of gains and losses across all bars.
- Architecture Differences:
- Segments momentum resets at higher timeframe changes, isolating calculations per period instead of continuous history.
- Employs persistent sums for ups and downs within segments, with on-the-fly RSI derivation and EMA smoothing.
- Integrates switch detection logic that clears prior visuals on reversal, preventing clutter from outdated alerts.
- Adds overlay projections like horizontal price lines and dynamic percent change trackers for immediate trade context.
- Practical Effect: Charts show discrete RSI endpoints for past segments alongside a curved running trace, making momentum evolution visually intuitive. Switches appear as clean, extendable overlays, reducing alert fatigue and highlighting only confirmed directional shifts, which aids in avoiding whipsaws during minor pullbacks.
How it works (technical)
The indicator begins by detecting changes in the specified higher timeframe, such as a new daily bar, to define segment boundaries. At each boundary, it finalizes the prior segment's RSI by summing positive and negative price changes over that period and derives the value from the ratio of those sums, then applies an exponential moving average for smoothing. Within the active segment, it accumulates ongoing ups and downs from price changes relative to the source, recalculating the running RSI similarly and smoothing it with the same EMA length.
Points for the running RSI are collected into an array starting from the segment's onset, forming a curved polyline once sufficient bars accumulate. Comparisons between the running RSI and the last completed segment's value determine the current direction as long, short, or neutral, with switches triggering deletions of old visuals and creation of new ones: a label at the RSI pane, a vertical dashed line across the RSI range, an emoji positioned via ATR offset on the price chart, a solid horizontal line at the switch price, a dashed line tracking current close, and a midpoint label for percent change from the switch.
Initialization occurs on the first bar by resetting accumulators, and visualization gates behind a minimum bar count since the segment start to avoid early instability. The trend strength table builds vertically with filled cells proportional to the rounded RSI value, colored by direction. All drawing objects update or extend on subsequent bars to reflect live progress.
Parameter Guide
EMA Length — Controls the smoothing applied to the running RSI; higher values increase lag but reduce noise. Default: 10. Trade-offs: Shorter settings heighten sensitivity for fast markets but risk more false switches; longer ones suit trending conditions for stability.
Source — Selects the price data for change calculations, typically close for standard momentum. Default: close. Trade-offs: Open or high/low may emphasize gaps, altering segment intensity.
Segment Timeframe — Defines the higher timeframe for segment resets, like daily for intraday charts. Default: D. Trade-offs: Shorter frames create more frequent but shorter segments; longer ones align with major cycles but delay resets.
Overbought Level — Sets the upper threshold for potential overbought conditions (currently unused in visuals). Default: 70. Trade-offs: Adjust for asset volatility; higher values delay bearish warnings.
Oversold Level — Sets the lower threshold for potential oversold conditions (currently unused in visuals). Default: 30. Trade-offs: Lower values permit deeper dips before signaling bullish potential.
Show Completed Label — Toggles labels at segment ends displaying final RSI. Default: true. Trade-offs: Enables historical review but can crowd charts on dense timeframes.
Plot Running Segment — Enables the curved polyline for live RSI trace. Default: true. Trade-offs: Visualizes intra-segment flow; disable for cleaner panes.
Running RSI as Label — Displays current running RSI as a forward-projected label on the last bar. Default: false. Trade-offs: Useful for quick reads; may overlap in tight scales.
Show Switch Label — Activates RSI pane labels on directional switches. Default: true. Trade-offs: Provides context; omit to minimize pane clutter.
Show Switch Line (RSI) — Draws vertical dashed lines across the RSI range at switches. Default: true. Trade-offs: Marks reversal bars clearly; extends both ways for reference.
Show Solid Overlay Line — Projects a horizontal line from switch price forward. Default: true. Trade-offs: Acts as dynamic support/resistance; wider lines enhance visibility.
Show Dashed Overlay Line — Tracks a dashed line from switch to current close. Default: true. Trade-offs: Shows price deviation; thinner for subtlety.
Show Percent Change Label — Midpoint label tracking percent move from switch. Default: true. Trade-offs: Quantifies progress; centers dynamically.
Show Trend Strength Table — Displays right-side table with direction header and RSI bar. Default: true. Trade-offs: Instant strength gauge; fixed position avoids overlap.
Activate Visualization After N Bars — Delays signals until this many bars into a segment. Default: 3. Trade-offs: Filters immature readings; higher values miss early momentum.
Segment End Label — Color for completed RSI labels. Default: 7E57C2. Trade-offs: Purple tones for finality.
Running RSI — Color for polyline and running elements. Default: yellow. Trade-offs: Bright for live tracking.
Long — Color for bullish switch visuals. Default: green. Trade-offs: Standard for uptrends.
Short — Color for bearish switch visuals. Default: red. Trade-offs: Standard for downtrends.
Solid Line Width — Thickness of horizontal overlay line. Default: 2. Trade-offs: Bolder for emphasis on key levels.
Dashed Line Width — Thickness of tracking and vertical lines. Default: 1. Trade-offs: Finer to avoid dominance.
Reading & Interpretation
Completed segment RSIs appear as static points or labels in purple, indicating the fixed momentum at period close—values drifting toward the upper half suggest building strength, while lower half implies weakness. The yellow curved polyline traces the live smoothed RSI within the current segment, rising for accumulating gains and falling for losses. Directional labels and lines in green or red flag switches: green for running momentum exceeding the prior segment's, signaling potential uptrend continuation; red for the opposite.
The right table's header colors green for long, red for short, or gray for neutral/wait, with filled purple bars scaling from bottom (low RSI) to top (high), topped by the numeric value. Overlay elements project from switch bars: the solid green/red line as a price anchor, dashed tracker showing pullback extent, and percent label quantifying deviation—positive for alignment with direction, negative for counter-moves. Emojis (up arrow for long, down for short) float above/below price via ATR spacing for quick chart scans.
Practical Workflows & Combinations
- Trend Following: Enter long on green switch confirmation after a higher high in structure; filter with table strength above midpoint for conviction. Pair with volume surge for added weight.
- Exits/Stops: Trail stops to the solid overlay line on pullbacks; exit if percent change reverses beyond 2 percent against direction. Use wait bars to confirm without chasing.
- Multi-Asset/Multi-TF: Defaults suit forex/stocks on 1H-4H with daily segments; for crypto, shorten EMA to 5 for volatility. Scale segment TF to weekly for daily charts across indices.
- Combinations: Overlay on EMA clouds for confluence—switch aligning with cloud break strengthens signal. Add volatility filters like ATR bands to debounce in low-volume regimes.
Behavior, Constraints & Performance
Signals confirm on bar close within segments, with running polyline updating live but gated by minimum bars to prevent flicker. Higher timeframe changes may introduce minor repaints on timeframe switches, mitigated by relying on confirmed HTF closes rather than intrabar peeks. Resource limits cap at 500 labels/lines and 50 polylines, pruning old objects on switches to stay efficient; no explicit loops, but array growth ties to segment length—suitable for up to 500-bar histories without lag.
Known limits include delayed visualization in short segments and insensitivity to overbought/oversold levels, as thresholds are inputted but not actively visualized. Gaps in source data reset accumulators prematurely, potentially skewing early RSI.
Sensible Defaults & Quick Tuning
Start with EMA length 10, daily segments, and 3-bar wait for balanced responsiveness on hourly charts. For excessive switches in ranging markets, increase wait bars to 5 or EMA to 14 to dampen noise. If signals lag in trends, drop EMA to 5 and use 1H segments. For stable assets like indices, widen to weekly segments; tune colors for dark/light themes without altering logic.
What this indicator is—and isn’t
This tool serves as a momentum visualization and switch detector layered over price action, aiding trend identification and confirmation in segmented contexts. It is not a standalone trading system, predictive model, or risk calculator—always integrate with broader analysis, position sizing, and stop-loss discipline. View it as an enhancement for discretionary setups, not automated alerts without validation.
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Do not use this indicator on Heikin-Ashi, Renko, Kagi, Point-and-Figure, or Range charts, as these chart types can produce unrealistic results for signal markers and alerts.
Best regards and happy trading
Chervolino
taLibrary "ta"
█ OVERVIEW
This library holds technical analysis functions calculating values for which no Pine built-in exists.
Look first. Then leap.
█ FUNCTIONS
cagr(entryTime, entryPrice, exitTime, exitPrice)
It calculates the "Compound Annual Growth Rate" between two points in time. The CAGR is a notional, annualized growth rate that assumes all profits are reinvested. It only takes into account the prices of the two end points — not drawdowns, so it does not calculate risk. It can be used as a yardstick to compare the performance of two instruments. Because it annualizes values, the function requires a minimum of one day between the two end points (annualizing returns over smaller periods of times doesn't produce very meaningful figures).
Parameters:
entryTime : The starting timestamp.
entryPrice : The starting point's price.
exitTime : The ending timestamp.
exitPrice : The ending point's price.
Returns: CAGR in % (50 is 50%). Returns `na` if there is not >=1D between `entryTime` and `exitTime`, or until the two time points have not been reached by the script.
█ v2, Mar. 8, 2022
Added functions `allTimeHigh()` and `allTimeLow()` to find the highest or lowest value of a source from the first historical bar to the current bar. These functions will not look ahead; they will only return new highs/lows on the bar where they occur.
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `high`.
Returns: (float) The highest value tracked.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `low`.
Returns: (float) The lowest value tracked.
█ v3, Sept. 27, 2022
This version includes the following new functions:
aroon(length)
Calculates the values of the Aroon indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the Aroon-Up and Aroon-Down values.
coppock(source, longLength, shortLength, smoothLength)
Calculates the value of the Coppock Curve indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
longLength (simple int) : (simple int) Number of bars for the fast ROC value (length).
shortLength (simple int) : (simple int) Number of bars for the slow ROC value (length).
smoothLength (simple int) : (simple int) Number of bars for the weigted moving average value (length).
Returns: (float) The oscillator value.
dema(source, length)
Calculates the value of the Double Exponential Moving Average (DEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `source`.
dema2(src, length)
An alternate Double Exponential Moving Average (Dema) function to `dema()`, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `src`.
dm(length)
Calculates the value of the "Demarker" indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
ema2(src, length)
An alternate ema function to the `ta.ema()` built-in, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Number of bars (length).
Returns: (float) The exponentially weighted moving average of the `src`.
eom(length, div)
Calculates the value of the Ease of Movement indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
div (simple int) : (simple int) Divisor used for normalzing values. Optional. The default is 10000.
Returns: (float) The oscillator value.
frama(source, length)
The Fractal Adaptive Moving Average (FRAMA), developed by John Ehlers, is an adaptive moving average that dynamically adjusts its lookback period based on fractal geometry.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The fractal adaptive moving average of the `source`.
ft(source, length)
Calculates the value of the Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
ht(source)
Calculates the value of the Hilbert Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
ichimoku(conLength, baseLength, senkouLength)
Calculates values of the Ichimoku Cloud indicator, including tenkan, kijun, senkouSpan1, senkouSpan2, and chikou. NOTE: offsets forward or backward can be done using the `offset` argument in `plot()`.
Parameters:
conLength (int) : (series int) Length for the Conversion Line (Tenkan). The default is 9 periods, which returns the mid-point of the 9 period Donchian Channel.
baseLength (int) : (series int) Length for the Base Line (Kijun-sen). The default is 26 periods, which returns the mid-point of the 26 period Donchian Channel.
senkouLength (int) : (series int) Length for the Senkou Span 2 (Leading Span B). The default is 52 periods, which returns the mid-point of the 52 period Donchian Channel.
Returns: ( [float, float, float, float, float ]) A tuple of the Tenkan, Kijun, Senkou Span 1, Senkou Span 2, and Chikou Span values. NOTE: by default, the senkouSpan1 and senkouSpan2 should be plotted 26 periods in the future, and the Chikou Span plotted 26 days in the past.
ift(source)
Calculates the value of the Inverse Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
kvo(fastLen, slowLen, trigLen)
Calculates the values of the Klinger Volume Oscillator.
Parameters:
fastLen (simple int) : (simple int) Length for the fast moving average smoothing parameter calculation.
slowLen (simple int) : (simple int) Length for the slow moving average smoothing parameter calculation.
trigLen (simple int) : (simple int) Length for the trigger moving average smoothing parameter calculation.
Returns: ( [float, float ]) A tuple of the KVO value, and the trigger value.
pzo(length)
Calculates the value of the Price Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
rms(source, length)
Calculates the Root Mean Square of the `source` over the `length`.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The RMS value.
rwi(length)
Calculates the values of the Random Walk Index.
Parameters:
length (simple int) : (simple int) Lookback and ATR smoothing parameter length.
Returns: ( [float, float ]) A tuple of the `rwiHigh` and `rwiLow` values.
stc(source, fast, slow, cycle, d1, d2)
Calculates the value of the Schaff Trend Cycle indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
fast (simple int) : (simple int) Length for the MACD fast smoothing parameter calculation.
slow (simple int) : (simple int) Length for the MACD slow smoothing parameter calculation.
cycle (simple int) : (simple int) Number of bars for the Stochastic values (length).
d1 (simple int) : (simple int) Length for the initial %D smoothing parameter calculation.
d2 (simple int) : (simple int) Length for the final %D smoothing parameter calculation.
Returns: (float) The oscillator value.
stochFull(periodK, smoothK, periodD)
Calculates the %K and %D values of the Full Stochastic indicator.
Parameters:
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
stochRsi(lengthRsi, periodK, smoothK, periodD, source)
Calculates the %K and %D values of the Stochastic RSI indicator.
Parameters:
lengthRsi (simple int) : (simple int) Length for the RSI smoothing parameter calculation.
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
source (float) : (series int/float) Series of values to process. Optional. The default is `close`.
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
supertrend(factor, atrLength, wicks)
Calculates the values of the SuperTrend indicator with the ability to take candle wicks into account, rather than only the closing price.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is false.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
szo(source, length)
Calculates the value of the Sentiment Zone Oscillator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
t3(source, length, vf)
Calculates the value of the Tilson Moving Average (T3).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
t3Alt(source, length, vf)
An alternate Tilson Moving Average (T3) function to `t3()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
tema(source, length)
Calculates the value of the Triple Exponential Moving Average (TEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
tema2(source, length)
An alternate Triple Exponential Moving Average (TEMA) function to `tema()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
trima(source, length)
Calculates the value of the Triangular Moving Average (TRIMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `source`.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a "series int" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `src`.
trix(source, length, signalLength, exponential)
Calculates the values of the TRIX indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
signalLength (simple int) : (simple int) Length for smoothing the signal line.
exponential (simple bool) : (simple bool) Condition to determine whether exponential or simple smoothing is used. Optional. The default is `true` (exponential smoothing).
Returns: ( [float, float, float ]) A tuple of the TRIX value, the signal value, and the histogram.
uo(fastLen, midLen, slowLen)
Calculates the value of the Ultimate Oscillator.
Parameters:
fastLen (simple int) : (series int) Number of bars for the fast smoothing average (length).
midLen (simple int) : (series int) Number of bars for the middle smoothing average (length).
slowLen (simple int) : (series int) Number of bars for the slow smoothing average (length).
Returns: (float) The oscillator value.
vhf(source, length)
Calculates the value of the Vertical Horizontal Filter.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
vi(length)
Calculates the values of the Vortex Indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the viPlus and viMinus values.
vzo(length)
Calculates the value of the Volume Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
williamsFractal(period)
Detects Williams Fractals.
Parameters:
period (int) : (series int) Number of bars (length).
Returns: ( [bool, bool ]) A tuple of an up fractal and down fractal. Variables are true when detected.
wpo(length)
Calculates the value of the Wave Period Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
█ v7, Nov. 2, 2023
This version includes the following new and updated functions:
atr2(length)
An alternate ATR function to the `ta.atr()` built-in, which allows a "series float" `length` argument.
Parameters:
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The ATR value.
changePercent(newValue, oldValue)
Calculates the percentage difference between two distinct values.
Parameters:
newValue (float) : (series int/float) The current value.
oldValue (float) : (series int/float) The previous value.
Returns: (float) The percentage change from the `oldValue` to the `newValue`.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
highestSince(cond, source)
Tracks the highest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the highest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `high`.
Returns: (float) The highest `source` value since the last time the `cond` was `true`.
lowestSince(cond, source)
Tracks the lowest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the lowest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `low`.
Returns: (float) The lowest `source` value since the last time the `cond` was `true`.
relativeVolume(length, anchorTimeframe, isCumulative, adjustRealtime)
Calculates the volume since the last change in the time value from the `anchorTimeframe`, the historical average volume using bars from past periods that have the same relative time offset as the current bar from the start of its period, and the ratio of these volumes. The volume values are cumulative by default, but can be adjusted to non-accumulated with the `isCumulative` parameter.
Parameters:
length (simple int) : (simple int) The number of periods to use for the historical average calculation.
anchorTimeframe (simple string) : (simple string) The anchor timeframe used in the calculation. Optional. Default is "D".
isCumulative (simple bool) : (simple bool) If `true`, the volume values will be accumulated since the start of the last `anchorTimeframe`. If `false`, values will be used without accumulation. Optional. The default is `true`.
adjustRealtime (simple bool) : (simple bool) If `true`, estimates the cumulative value on unclosed bars based on the data since the last `anchor` condition. Optional. The default is `false`.
Returns: ( [float, float, float ]) A tuple of three float values. The first element is the current volume. The second is the average of volumes at equivalent time offsets from past anchors over the specified number of periods. The third is the ratio of the current volume to the historical average volume.
rma2(source, length)
An alternate RMA function to the `ta.rma()` built-in, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The rolling moving average of the `source`.
supertrend2(factor, atrLength, wicks)
An alternate SuperTrend function to `supertrend()`, which allows a "series float" `atrLength` argument.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is `false`.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
vStop(source, atrLength, atrFactor)
Calculates an ATR-based stop value that trails behind the `source`. Can serve as a possible stop-loss guide and trend identifier.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
vStop2(source, atrLength, atrFactor)
An alternate Volatility Stop function to `vStop()`, which allows a "series float" `atrLength` argument.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
Removed Functions:
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a
"series int" length argument.
Peak Traker by Futures.RobbyOverview
Peak Tracker is a specialized tool designed to assist traders in proprietary trading challenges. Its main purpose is to help you identify and track the maximum value (the "peak") within an active trade. This is crucial for keeping an eye on your trailing drawdown and avoiding rule violations. The indicator visualizes up to three separate trade windows and provides all necessary data in a clear table.
Key Features
Trailing Drawdown Tracking: The primary function of this indicator is to accurately track the peak value from your entry point to your exit. This helps you minimize the risk of violating drawdown rules in your funding challenge.
Visual Representation: It draws vertical lines for the entry (green) and exit (red) points directly on the chart. This clearly visualizes the exact time frames that are relevant for managing your drawdown.
Dynamic Real-Time Tracking: Within an active trade window, the indicator continuously tracks the highest price reached (Peak) while the entry price (Entry) remains fixed. This allows you to calculate your current drawdown at any moment.
Clear Data Table: A customizable table provides all relevant information at a glance: Trade ID, Entry/Peak prices, and exact timestamps for entry and exit. The numbers are formatted for easy reading using the German number style (e.g., 12.345,67).
Flexible Input: The indicator supports various date and time formats (17:47:00, 2025-08-30 17:14:00, 27.08.25 15:00). The time zone is automatically converted from your local time to the chart's time for precise line placement.
How to Use
Add the indicator to your chart.
Open the indicator's settings (⚙️).
Under "Datums- und Zeit-Eingaben," enter the desired time frames for your trades.
The indicator updates in real time, showing your trade's progress.
Conclusion
This indicator is an essential tool for any trader participating in prop firm challenges who needs a precise method to monitor their trailing drawdown. It provides clarity and visual support to help you avoid rule violations and maximize your chances of success.
TradeChartist PowerTracer ProTradeChartist PowerTracer Pro is an exceptionally well designed and a functional indicator, requiring minimal user input to trace the asset's Bull and Bear Power. The indicator makes it visually engaging with its intelligent positioning of the PowerTracer Bar, tracking not just the current trend, but also the developing trend using visually easy to understand Power plots. PowerTracer Pro can be used with PowerTrader Pro to generate Trade signals with several possible combinations of settings based on PowerTracer Pro Backtester Performance results.
What does ™TradeChartist PowerTracer Pro do?
1. Tracks Bull and Bear Power and plots the information visually on chart using one of the following 2 Power plot options based on Timeframe Multiplier and Smoothing Factor..
𝗣𝗼𝘄𝗲𝗿𝗧𝗿𝗮𝗰𝗲𝗿 - Plot of the Bull and Bear Power Oscillator, pivotal to this script that tracks the true Bull and Bear Power along with Bull/Bear oscillator reading, calculated dynamically using a unique and original formula. Values beyond 50 and -50 are quite rare, but theoretically, they can go beyond 80 and -80. 𝗣𝗼𝘄𝗲𝗿𝗧𝗿𝗮𝗰𝗲𝗿's highs and lows are also tracked and updated real-time using labels placed exactly at the Highs and Lows with their readings.
Bar-wise Power Holder - Absolute Bull and Bear power of each bar. It is plotted by calculating the difference between Bull and Bear Power of each bar. The values can swing between -100 and +100 even though values above 90 and below 90 are rare.
2. Visually displays the Balance of Power between the Bulls and the Bears using Power density background fill.
3. Uses an accompanying 𝗣𝗼𝘄𝗲𝗿𝗧𝗿𝗮𝗰𝗲𝗿 bar that helps spot the true bull and bear power using simple linear blocks, displaying the power level using power intensity colors.
4. Paints price bars and PowerTracer background using Power intensity colors, which helps spot the increase or decrease in Bull and Bear Power. Price bar color changes are based on increasing/decreasing power intensity of the price bar's power holder and may not be the same as the Power plots. This is designed specifically to spot price trends based on chart timeframe power trend.
5. Inverts bar colors, and PowerTracer bar color to help see price trend using the Opponent's Point of View.
What markets can this indicator be used on?
-- Forex
-- Stocks - works best with 4hr or above and prices calculated taking gaps into account.
-- Commodities
-- Cryptocurrencies
and almost any asset on Trading View
What time-frames can this indicator be used on?
This indicator can be used on all timeframes. If the asset has very little volume / volatility or is far low in comparative value against the base currency, power detection can be choppy, but with most assets, this won't be an issue.
Does this indicator repaint?
-- No. Real-time Power plots can change colors and values based on current bar close as values get calculated dynamically. Once the bar closes, plots and power intensity colors don't repaint.
-- This can be verified using Bar Replay to check if the plots and fills stay in the same bar in real time as the Bar Replay
Does the indicator generate trade signals based on Power shifts?
Yes. PowerTracer Pro can be connected to PowerTrader Pro to generate BUY and SELL signals with automatic/user specified targets on the main price chart along with Fixed or Trailing Stop Loss plots based on the Power Plot opted by the user. PowerTrader Pro is highly recommended for traders who would like signals based on power trend on the main price chart as it comes with real time Dashboard and Gains tracker with the option to plot past performance displaying Max gains and Max Drawdowns for each trade. It also includes SL/TP Plots and Alerts system that can be used to automate trades based on settings that result in high ROI on PowerTracer Pro Backtester performance report.
The charts below show how this indicator can be used with PowerTrader Pro to generate trade signals with TP and SL plots.
GBP-USD 1hr chart with SL and TP plots with real-time gains tracker. Timeframe MUltiplier - 2, Smoothing Factor - 8
LINK-BTC 4hr chart with SL and TP plots, real-time gains tracker and past performance results. Timeframe Multiplier - 3, Smoothing Factor - 1
XAU-USD Gold 1hr chart with SL and TP plots, real-time gains on Dashboard with Automatic Targets and past performance labels. Timeframe Multiplier - 2, Smoothing Factor - 1
===================================================================================================================
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to test the indicator)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
===================================================================================================================
Smart Money Concepts [Kodexius]Smart Money Concepts is a price action framework designed to integrate market structure, liquidity behavior, and inefficiencies into a single, readable view. Rather than acting as a signal generator, it serves as a live market map highlighting where price has displaced, where liquidity may be resting, which zones remain valid, and how that context updates as new candles print.
What separates this script from typical “SMC bundles” is not the presence of familiar concepts like swings, order blocks, FVGs or liquidity sweeps. The value is in the engine design and how the components are maintained together as a consistent state, with automatic pruning and prioritization so the chart stays usable over time. Many tools can draw boxes, but fewer tools manage the lifecycle of those zones, reduce overlap, rank relevance, and keep the display focused on what still matters near current price.
At the core is a structure model that tracks directional state and labels structural transitions as they happen. CHoCH and BoS are not just printed whenever price crosses a line. Each event is anchored to a swing reference and handled in a way that reduces repeated triggers from the same context, helping you see genuine transitions versus minor noise. This gives structure a “narrative” across time instead of a cluttered sequence of identical labels.
Order blocks are built from the most relevant candle within the post break window and displayed as true zones that extend forward while they remain valid. Beyond the zone itself, the script adds context that is usually missing in basic OB implementations: a volumetric pressure visualization and a displacement strength score that is normalized and ranked over a rolling window. In practice, this creates an information hierarchy. You can quickly see which zones carried more participation, whether the internal push was dominated by buying or selling pressure, and whether the move that created the zone had meaningful displacement relative to recent history. This is designed to help prioritization, not to claim prediction.
Imbalances are handled as a dedicated module with multiple detection modes (FVG, VI, OG, IFVG) and optional MTF logic so you can map inefficiencies from a higher timeframe while executing on a lower timeframe. Each imbalance is displayed as a zone with a midline reference, and mitigation behavior can be tuned (wick or close). IFVG adds lifecycle depth by tracking inversion behavior rather than simply deleting the zone, which can be useful for monitoring how price rebalances and flips inefficiencies over time. An optional sentiment style internal fill is available for visual context, but it is intentionally framed as informational rather than a “buy/sell meter.”
Liquidity is treated as an event driven layer. Pivot highs and lows are tracked as potential liquidity pools, then monitored for sweeps and rejection behavior. If you enable EQH/EQL logic, the script can label equal highs and lows during the sweep process to highlight common resting liquidity formations. A volume filter is available to reduce low quality levels, aiming to keep the liquidity map focused on swings that occurred with meaningful participation rather than every small fluctuation.
Swing Failure Patterns (SFP) are included as a separate confirmation style tool that focuses on rejection after liquidity is taken. The module supports optional volume validation using lower timeframe volume distribution outside the swing level, which helps filter some low quality SFPs on noisy instruments. The output is a cleaner set of events intended to complement structure, liquidity and zones, not replace discretionary decision making.
For higher timeframe context, the HTF candle projection panel can display a compact set of higher timeframe candles to the right of current price, with classic or Heikin Ashi style and configurable sizing, spacing and labels. This allows you to maintain HTF awareness without switching charts, which is especially helpful when structure and zones are being interpreted across multiple timeframes.
Finally, the alert framework is designed around well defined structural and zone states. Alerts cover structural shifts (CHoCH, BoS), liquidity sweeps, new and broken order blocks, breaker behavior (if enabled), new and approached imbalances, premium and discount entries, trendline events, and SFP detection. These alerts are intended as monitoring prompts so you can review context, not as automated trade execution signals.
Every major component is modular and configurable. You can run a minimal structure only layout or enable a full framework with zones, imbalances, liquidity, SFP and HTF projection. The guiding principle is chart clarity and relevance: keep the most important information visible, reduce overlap and stale objects, and maintain a consistent view of how price is interacting with liquidity and value over time.
🔹 Features
🔸 Market Structure Engine (CHoCH and BoS)
This script automatically tracks zigzag based market structure and differentiates between:
CHoCH (Change of Character) : the first meaningful structural shift that suggests the prior directional leg is weakening.
BoS (Break of Structure) : continuation breaks that confirm structure extension in the active direction.
Instead of relying on plain pivot dots, our market structure swings are built with a lightweight zigzag style engine that tracks direction and “locks in” the true leg extreme only when the leg flips. This produces cleaner, more consistent swing highs/lows for BOS/CHoCH than simple left/right pivot checks.
Bullish CHoCH:
Bearish CHoCH:
Bullish BoS:
Bearish BoS:
🔸 Order Blocks with Volumetric and Displacement Insight
The script identifies recent bullish and bearish order block zones around meaningful structural reactions and keeps the display focused on the most relevant areas. Instead of drawing a static rectangle and leaving it there forever, each zone is maintained as an active region on the chart and can be limited by a user defined visibility depth to avoid clutter. When enabled, the overlay also adds compact volume based context inside the block so you can quickly compare relative participation between recent zones and see whether the origin move showed strong follow through versus a softer transition. The intention is to provide structured context and cleaner prioritization on the chart, not to present a trade call or a guaranteed reaction level.
Bullish Order Block:
Bearish Order Block:
Order blocks are derived from the structure shifts, marking the institutional “origin zone” behind a decisive move and projecting it forward as a live area of interest. In practice, it highlights the candle cluster where price last rebalanced before expanding away, so you can track potential retests with context instead of guessing.
Inside each order block, the internal bars act as a compact strength meter green vs red summarizes the relative bullish vs bearish participation, while the blue segment reflects the “departure force” (displacement/momentum) away from the zone. It’s meant to help you scan which blocks left clean and strong versus those that moved out more slowly or with mixed pressure.
🔸 Breaker Blocks & Mitigation Tracking
Tracks when previously identified order blocks fail and converts them into breaker blocks, visually marking a change in how price is interacting with that zone.
Bullish Breaker Block :
Bearish Breaker Block :
Separate handling of bullish and bearish breakers with clear color differentiation.
Includes optional “mitigation” logic using either wick or close to determine when a block is considered broken or mitigated.
Breaker blocks are updated and removed dynamically as price trades through them, keeping the chart focused on current, active zones.
🔸 Imbalances
The imbalance module maps common price inefficiencies as zones, with support for multiple detection styles such as Fair Value Gaps, volume style imbalances, opening gaps, and an inverted gap mode. Each imbalance is drawn as a practical area on the chart with a midpoint reference, so you can quickly see where price may be revisiting unbalanced movement. You can also choose how mitigation is evaluated (wick or close) and optionally run imbalance detection on a separate timeframe for cleaner higher timeframe context while staying on your execution chart.
Fair Value Gaps:
Inverse Fair Value Gaps:
Opening Gaps:
🔸 Liquidity Sweeps, EQH/EQL, and Optional Volume Filter
Liquidity levels are derived from swing highs and lows and then monitored for sweep behavior, where price trades beyond a prior level and rejects back. If you enable EQH/EQL marking, the script can highlight equal highs and equal lows behavior around those liquidity areas to make common pool formations easier to spot. An optional volume filter can be used to reduce tracking of low participation swings, helping keep the liquidity layer focused and less noisy on instruments that produce frequent small pivots.
Sellside Liquidity Sweep Definition:
Buyside Liquidity Sweep Definition:
Highlights equal highs (EQH) and equal lows (EQL) when sweeps occur, marking where price probed above/below prior liquidity and then rejected.
Optional volume filter to ignore low volume swings and focus on more meaningful liquidity zones.
🔸 Premium, Discount, and Equilibrium
The premium and discount view provides a simple contextual map of where price is trading within a measured range, alongside an optional equilibrium line as a midpoint reference. This is intended as a higher level framing tool to help you avoid treating every price location the same, especially when combining structure with reaction zones. Price labels can be enabled for quick orientation, and the display updates as the underlying range evolves.
Projects premium and discount bands based on a dynamically measured range, offering a simple view of where price is trading relative to that range.
Draws separate Premium and Discount boxes with optional price labels for quick orientation.
Optional mid line (equilibrium) to visualize the “50%” of the current range, often used as a reference for balanced versus extended price.
Zones auto update as the underlying range evolves, with logic to prevent stale levels from cluttering the chart.
🔸 Trend Channels
When enabled, the trend module draws swing based diagonal structure using trendlines and a channel style visualization. You can tune sensitivity and choose whether the source should be depending on how you prefer to read trend behavior. The channel is maintained dynamically so you can keep directional context without manually drawing and constantly adjusting diagonal lines, and the script can highlight basic break behavior when price pushes beyond the active diagonal reference.
🔸 Swing Failure Pattern (SFP) Detector
The SFP module highlights common swing failure behavior, where price briefly trades beyond a swing level and then reclaims it, often reflecting a liquidity grab followed by rejection. Bullish and bearish SFPs can be enabled independently, and the display is designed to keep the key level and the rejection visible without excessive clutter. Optional volume validation can be used as a filter, so you can choose whether you want the detector to be more permissive or more selective based on participation characteristics.
🔸 HTF Candle Projection Panel
The HTF panel projects a compact set of higher timeframe candles to the right of price, giving you higher timeframe context without switching charts. You can select classic candles or Heikin Ashi style, adjust the scale and spacing, and optionally display reference lines and labels for OHLC values. This is a visual context tool intended to support multi timeframe reading, not a replacement for your own higher timeframe analysis.
In addition to projecting higher timeframe candles, the HTF panel can also detect and visualize higher timeframe liquidity sweeps directly within the projected candle set. The script monitors each completed HTF candle’s high and low and evaluates subsequent HTF candles for sweep behavior i.e., when price briefly trades beyond a prior HTF extreme but fails to hold acceptance beyond it (filtered using the later candle’s body positioning). When a sweep is detected, the panel draws a dotted sweep line and marks the event, allowing you to spot HTF stop runs and failed breaks without switching timeframes. Sweeps are dynamically invalidated if a later HTF candle shows genuine acceptance beyond that level, ensuring the display stays context relevant and avoids stale markings. This turns the HTF projection from a passive visualization into an actionable context layer for identifying HTF liquidity events while executing on lower timeframes.
🔸 Alerts
Alerts are included for the most practical events produced by the overlay, such as structure shifts (CHoCH and BoS), liquidity sweeps, new and invalidated zones, price approaching recent zones, imbalance creation and mitigation, premium or discount entries, trendline events, and SFP detections. The alerts are designed to function as a monitoring layer so you can be notified when something changes in your mapped context, rather than acting as standalone trade instructions.
🔸 Originality & Usefulness
This script is not a collection of separate SMC drawings layered on top of price. It is built as a unified price action engine where market structure, order blocks, inefficiencies, and liquidity are produced from the same evolving state. That matters because most SMC indicators treat these concepts as independent overlays, which often leads to contradictory markings and excessive clutter. Here, the design priority is consistency and readability: modules update in sync, older elements are managed, and the chart stays usable during live conditions.
A key differentiator is the internal swing logic, which functions like a compact zigzag style structure engine. Instead of reacting to every minor fluctuation, it aims to focus on meaningful swing decisions and treat structure as a sequence. This reduces repetitive labeling and makes structural transitions easier to follow. Structure events are anchored to the swing that defined them and are designed to trigger in a clean, non spammy way, which is critical for anyone who uses structure as a workflow backbone.
The structure layer is intentionally narrative oriented. It separates a transition event from continuation events, so CHoCH is used to highlight the first meaningful shift after an established leg, while BoS is used to mark follow through in the same direction. This is not a prediction claim. It is a clarity feature that helps users read “phase changes” versus “continuation” without constantly second guessing whether the script is just printing noise.
Order blocks are where this script becomes especially distinctive compared to typical SMC tools. Instead of drawing identical rectangles, each block is rendered with an internal gauge that communicates participation and directional dominance at a glance. The zone is visually segmented to reflect bullish and bearish pressure components, and it also carries a volume readout plus a relative weight compared to other recent blocks. This creates a ranked view of blocks rather than an unfiltered pile. In practice, you can prioritize zones faster because the script surfaces which blocks had more meaningful participation and whether the internal push looked one sided or mixed. The result is less subjective filtering and a cleaner chart.
Imbalances are handled as structured inefficiency zones with clear references and optional context. Beyond drawing the zone and midpoint, the script can overlay a sentiment style gauge that divides the imbalance into bullish and bearish portions and updates as new data comes in. The practical value is that you can see whether an inefficiency remains strongly one sided or is gradually being balanced. This turns imbalances from static boxes into a living context layer, which is particularly useful when you monitor reactions over time instead of treating every touch the same.
Liquidity is treated as an event driven tracking system rather than simple pivot plotting. Liquidity pools are identified from swing behavior and can be gated through a participation filter so the script focuses on levels that formed with meaningful activity rather than low quality noise. Once tracked, levels are monitored for outcomes like sweeps and equal high/low behavior, and then updated or retired when they are decisively resolved. This prevents the display from accumulating stale levels and keeps the liquidity layer focused on what is still relevant now.
Swing failure patterns are integrated as selective events rather than continuous spam. The intent is to produce fewer but more structurally meaningful SFPs, aligned with the liquidity narrative, instead of printing clusters around the same price area. This keeps the pattern readable and reinforces the “event based” design philosophy across the script.
Higher timeframe context is supported through a compact HTF projection panel that provides quick orientation without forcing constant timeframe switching. It lets you see where current price action sits inside a larger timeframe candle and range, which helps maintain consistency when you are executing on a lower timeframe but respecting higher timeframe structure.
Disclaimer: This indicator is for educational and analytical purposes only. It does not provide financial advice, and it does not guarantee results.
🔹 How to Use
This tool is designed to support multiple trading styles, but it is most effective when you treat it as a top down mapping and decision support tool. A practical workflow looks like this.
1) Establish higher timeframe bias and context
Start on your reference timeframe such as H4 or Daily and read the market’s dominant story first. Use the Market Structure Engine to identify whether the market is in continuation mode or transition mode. The goal is to avoid executing lower timeframe ideas that conflict with the larger structure narrative.
Use the HTF Candle Projection Panel as a fast orientation aid. It helps you judge whether current price is building acceptance near the highs of the larger candle, rotating back toward its open, or rejecting from its extremes. This is especially useful when you execute on lower timeframes but want to stay aligned with higher timeframe positioning.
Add Premium and Discount framing to understand location. When price is trading in premium, continuation longs are often more selective and require stronger confirmation, while shorts may have better location if structure supports it. When price is in discount, the opposite applies. Treat this as location context, not a rule.
2) Map your key reaction zones with prioritization
Next, build your map of where reactions are most likely to occur. Enable Order Blocks with Volumetric Insight to highlight the most relevant origin zones that form after important structure events. Keep your focus on the most recent blocks and adjust the visible depth so the chart stays clean.
Use the internal gauge and participation readouts to prioritize. Instead of treating every zone as equal, treat higher participation blocks as primary candidates and lower participation blocks as secondary. The bullish and bearish split inside the gauge helps you quickly judge whether the zone formed from a clearly one sided push or a more mixed move, which can inform how strict you want to be with confirmation on a retest.
If you use Breaker Blocks, treat them as role shift zones. They are especially useful when the market has clearly transitioned and you want to track where a previously defended origin area may become a meaningful retest level later.
3) Layer in inefficiencies only where they add clarity
If your workflow includes imbalances, add them selectively to avoid visual overload. Use Fair Value Gaps, Volume Imbalances, or Opening Gaps as secondary reaction areas that often sit inside, near, or between larger zones.
If you enable the internal sentiment gauge, read it as context rather than a signal. It is meant to help you see whether the imbalance remains one sided or has started to balance out as price develops. A strongly one sided presentation can support the idea of continuation through the zone, while a more balanced presentation can support the idea of deeper mitigation or chop. Use it to refine expectations, not to force entries.
4) Track liquidity as events, not as static levels
Enable Liquidity Sweeps and EQH/EQL tagging to highlight where resting liquidity is likely concentrated and when it gets taken. The main value here is narrative: you can see when price runs obvious highs or lows and whether it immediately rejects back into structure or accepts beyond the level.
If you use the volume filter, treat it as a quality gate. The point is to ignore small, low participation swings and keep the liquidity layer focused on levels that formed with meaningful activity. This tends to reduce noise and makes sweeps and equal level behavior more relevant.
Combine the liquidity layer with the Swing Failure Pattern detector to isolate moments where liquidity is taken and then rejected. The cleanest use is when SFPs occur at or near your pre mapped reaction zones, after a sweep, and in alignment with your higher timeframe bias.
5) Refine execution timing on your entry timeframe
Drop to your execution timeframe and use local structure shifts as timing tools. CHoCH and BoS on the lower timeframe can help you see when micro structure is flipping in your intended direction after price interacts with your mapped zone.
If you use the Trend Channel framework, treat it as diagonal context rather than strict support and resistance. A channel helps you see where price is riding the trend and where it is deviating. This can help you time entries by waiting for price to re enter the corridor, show rejection near a boundary, or confirm a shift by building structure outside the channel.
A common practical sequence is: price reaches a mapped OB or imbalance area, liquidity gets taken, price rejects, micro structure begins to flip, and then you execute with your own confirmation and risk rules. The tool helps you see each step clearly, but your plan determines what is sufficient confirmation.
6) Use alerts as monitoring, not as standalone signals
Set alerts only for events that are meaningful to your workflow, such as:
-fresh CHoCH or BoS in your preferred direction
-new or invalidated order blocks and breaker blocks
-price approaching the most recent priority zones
-liquidity sweeps and EQH/EQL interactions
-new SFP events
-entry into premium or discount and interaction with HTF projection levels
-imbalance creation, mitigation, or approach
Treat alerts as prompts to check the chart, not as automatic entries or exits. This script is designed as a mapping and decision support tool. Trade execution, confirmation, and risk management remain entirely dependent on your own strategy and discretion.
🔴 Price Action Practical Notes
💠 Market structure
Market structure is the framework used to describe how price organizes itself into swings. It is built from successive swing highs and swing lows, and it is used to decide whether the market is expanding upward, expanding downward, or transitioning. A practical structure model focuses on “meaningful” turning points rather than every minor fluctuation, because the goal is to capture intent and flow, not noise.
💠 Swing highs and swing lows
A swing high is a local peak where price stops advancing and begins to rotate lower, while a swing low is a local trough where selling pressure pauses and price rotates higher. Swings matter because many traders anchor risk, liquidity, and entries around them. The stronger the reaction away from a swing, the more likely it is to be referenced again as a decision point.
💠 Break of structure
A break of structure is the event where price decisively exceeds a prior swing in the direction of the prevailing move. In practice, it is used as confirmation that a directional leg is still active and that liquidity resting beyond the swing has been taken. This concept is less about predicting and more about validating continuation.
💠 Change of character
A change of character is a structural break that signals transition rather than continuation. Instead of breaking a swing in the same direction as the recent trend, price breaks a key swing in the opposite direction, suggesting that control may be shifting. It is often treated as an early warning that the market may be moving from continuation into reversal or deeper pullback conditions.
💠 Order blocks
An order block is commonly described as the last opposing candle or consolidation zone that precedes a strong directional expansion. The idea is that this area represents a footprint of aggressive execution and unfilled interest. When price revisits it later, it can act as a reaction zone because participants who missed the move may defend it, or because remaining orders may still exist there.
💠 Mitigation and invalidation of a zone
Mitigation describes the process of price returning to a zone and “consuming” the remaining interest there. A zone is typically considered invalidated when price trades through it in a way that implies the resting orders were absorbed and the area no longer has protective value. Some approaches treat a wick through the boundary as enough to invalidate, while others require a candle close beyond the boundary to confirm that the level has truly failed.
💠 Breaker blocks
A breaker block is an order block concept that changes role after being invalidated. When a previously respected zone fails, it can later become a reaction area in the opposite direction because trapped participants may use the retest to exit, or because the market may recognize it as a new supply or demand reference. Breakers are often treated as “failed zones that become liquidity magnets” and are closely watched on retests.
💠 Liquidity and liquidity pools
Liquidity is the availability of resting orders that allow large transactions to execute with minimal slippage. In chart terms, liquidity pools often form around obvious swing highs and lows, equal highs and lows, and clear ranges. These areas attract price because they contain clustered stops and entries that can be used to fuel continuation or trigger reversals through rapid order flow shifts.
💠 Liquidity sweeps
A liquidity sweep is a move where price briefly trades beyond a known liquidity pool and then returns back inside, often closing back within the prior range. The concept implies that stops were triggered and liquidity was captured, but that continuation beyond the swept level did not sustain. Sweeps are frequently used as context for reversals or for confirming that a “cleanout” occurred before a directional move.
💠 Equal highs and equal lows
Equal highs and equal lows describe repeated swing levels that form a flat or nearly flat top or bottom. They matter because they concentrate liquidity. Many traders place stops just beyond these repeated levels, and many breakout traders place entries around them. The result is a dense cluster of orders that can be targeted efficiently by price.
💠Imbalances and inefficiencies
Imbalances represent zones where price moved so quickly that it left behind inefficient trading, meaning fewer transactions occurred in that region compared to surrounding areas. The underlying idea is that markets often revisit these areas to rebalance, fill gaps, or complete unfinished business. Imbalances are treated as areas of interest for pullback entries, targets, or reaction zones.
💠 Fair value gap
A fair value gap is a specific form of imbalance commonly framed as a three candle displacement that leaves a gap between candles, indicating rapid repricing. Traders use it as a proxy for inefficiency: if price returns, it may partially or fully fill the gap before continuing. The midpoint of the gap is often treated as a particularly relevant reference, but whether price respects it depends on context.
💠 Inverted fair value gap
An inverted fair value gap is the idea that once an imbalance is “broken” in a meaningful way, the zone can flip its behavior. Instead of acting like a supportive zone, it may become resistive (or vice versa) on a later retest. Conceptually, this is similar to role reversal: what once behaved as a continuation aid can become a rejection zone after failure.
💠 Premium, discount, and equilibrium
Premium and discount describe where price sits relative to a defined recent range. Premium is the upper portion of that range and discount is the lower portion. Equilibrium is the midpoint. The concept is mainly used to align trade direction with location: buying is generally more attractive in discount and selling is generally more attractive in premium, assuming you are trading mean reversion within a range or seeking favorable risk placement within a broader trend.
💠 Swing failure pattern
A swing failure pattern is a reversal archetype where price breaks a known swing level, fails to hold beyond it, and returns back through the level. The logic is that the breakout attempt attracted orders and triggered stops, but the market rejected the extension. SFPs are often considered higher quality when the failure is followed by a decisive move away and when it aligns with a broader liquidity narrative.
💠 Higher timeframe context
Higher timeframe context means framing intraday or lower timeframe signals within the structure of a larger timeframe. This can include aligning trades with higher timeframe swings, using higher timeframe candles as reference for open/high/low behavior, and avoiding taking counter trend signals when the larger timeframe is strongly directional. The purpose is to improve signal quality by ensuring the smaller timeframe idea is not fighting a dominant larger flow.
💠 Trend channels
A trend channel is a structured way to visualize a market’s directional “lane” by framing price between two roughly parallel boundaries. The central idea is that trending price action often oscillates in a repeatable corridor: pullbacks tend to stall around one side of the lane, while impulses tend to extend toward the opposite side. Instead of treating trend as a single line, a channel treats trend as an area, which better reflects real market behavior where reactions occur in zones rather than at perfect prices.
A channel typically has three functional references: a guiding line that represents the prevailing slope, an upper boundary that approximates where bullish expansions tend to stretch before mean reversion, and a lower boundary that approximates where bearish pullbacks tend to terminate before continuation. The space between boundaries represents the market’s accepted path. When price stays inside this corridor, the trend is considered healthy. When price repeatedly fails to progress within it, the trend is weakening.
Channels are commonly used for timing and location. In an uptrend channel, pullbacks into the lower portion of the corridor are often treated as higher quality “location” for continuation attempts, while pushes into the upper portion are treated as extension territory where risk of a pause or retracement increases. In a downtrend channel, the logic is mirrored: rallies into the upper portion are often treated as sell side location, and moves into the lower portion are treated as extension territory. The channel does not predict direction by itself; it provides a disciplined map for where continuation is more likely versus where momentum is more likely to cool.
A key concept is acceptance versus deviation. If price briefly pierces a boundary and snaps back inside, that is often interpreted as a deviation, meaning the market tested outside the lane but did not accept it. If price holds outside the corridor and begins to build new swings there, that suggests acceptance and a potential regime change: either a new channel with a different slope, a shift into range, or a broader reversal context. This is why channels are most useful when you treat them as a framework for evaluating behavior, not as rigid support and resistance.
Luxy BIG beautiful Dynamic ORBThis is an advanced Opening Range Breakout (ORB) indicator that tracks price breakouts from the first 5, 15, 30, and 60 minutes of the trading session. It provides complete trade management including entry signals, stop-loss placement, take-profit targets, and position sizing calculations.
The ORB strategy is based on the concept that the opening range of a trading session often acts as support/resistance, and breakouts from this range tend to lead to significant moves.
What Makes This Different?
Most ORB indicators simply draw horizontal lines and leave you to figure out the rest. This indicator goes several steps further:
Multi-Stage Tracking
Instead of just one ORB timeframe, this tracks FOUR simultaneously (5min, 15min, 30min, 60min). Each stage builds on the previous one, giving you multiple trading opportunities throughout the session.
Active Trade Management
When a breakout occurs, the indicator automatically calculates and displays entry price, stop-loss, and multiple take-profit targets. These lines extend forward and update in real-time until the trade completes.
Cycle Detection
Unlike indicators that only show the first breakout, this tracks the complete cycle: Breakout → Retest → Re-breakout. You can see when price returns to test the ORB level after breaking out (potential re-entry).
Failed Breakout Warning
If price breaks out but quickly returns inside the range (within a few bars), the label changes to "FAILED BREAK" - warning you to exit or avoid the trade.
Position Sizing Calculator
Built-in risk management that tells you exactly how many shares to buy based on your account size and risk tolerance. No more guessing or manual calculations.
Advanced Filtering
Optional filters for volume confirmation, trend alignment, and Fair Value Gaps (FVG) to reduce false signals and improve win rate.
Core Features Explained
### 1. Multi-Stage ORB Levels
The indicator builds four separate Opening Range levels:
ORB 5 - First 5 minutes (fastest signals, most volatile)
ORB 15 - First 15 minutes (balanced, most popular)
ORB 30 - First 30 minutes (slower, more reliable)
ORB 60 - First 60 minutes (slowest, most confirmed)
Each level is drawn as a horizontal range on your chart. As time progresses, the ranges expand to include more price action. You can enable or disable any stage and assign custom colors to each.
How it works: During the opening minutes, the indicator tracks the highest high and lowest low. Once the time period completes, those levels become your ORB high and low for that stage.
### 2. Breakout Detection
When price closes outside the ORB range, a label appears:
BREAK UP (green label above price) - Price closed above ORB High
BREAK DOWN (red label below price) - Price closed below ORB Low
The label shows which ORB stage triggered (ORB5, ORB15, etc.) and the cycle number if tracking multiple breakouts.
Important: Signals appear on bar close only - no repainting. What you see is what you get.
### 3. Retest Detection
After price breaks out and moves away, if it returns to test the ORB level, a "RETEST" label appears (orange). This indicates:
The original breakout level is now acting as support/resistance
Potential re-entry opportunity if you missed the first breakout
Confirmation that the level is significant
The indicator requires price to move a minimum distance away before considering it a valid retest (configurable in settings).
### 4. Failed Breakout Detection
If price breaks out but returns inside the ORB range within a few bars (before the breakout is "committed"), the original label changes to "FAILED BREAK" in orange.
This warns you:
The breakout lacked conviction
Consider exiting if already in the trade
Wait for better setup
Committed Breakout: The indicator tracks how many bars price stays outside the range. Only after staying outside for the minimum number of bars does it become a committed breakout that can be retested.
### 5. TP/SL Lines (Trade Management)
When a breakout occurs, colored horizontal lines appear showing:
Entry Line (cyan for long, orange for short) - Your entry price (the ORB level)
Stop Loss Line (red) - Where to exit if trade goes against you
TP1, TP2, TP3 Lines (same color as entry) - Profit targets at 1R, 2R, 3R
These lines extend forward as new bars form, making it easy to track your trade. When a target is hit, the line turns green and the label shows a checkmark.
Lines freeze (stop updating) when:
Stop loss is hit
The final enabled take-profit is hit
End of trading session (optional setting)
### 6. Position Sizing Dashboard
The dashboard (bottom-left corner by default) shows real-time information:
Current ORB stage and range size
Breakout status (Inside Range / Break Up / Break Down)
Volume confirmation (if filter enabled)
Trend alignment (if filter enabled)
Entry and Stop Loss prices
All enabled Take Profit levels with percentages
Risk/Reward ratio
Position sizing: Max shares to buy and total risk amount
Position Sizing Example:
If your account is $25,000 and you risk 1% per trade ($250), and the distance from entry to stop loss is $0.50, the calculator shows you can buy 500 shares (250 / 0.50 = 500).
### 7. FVG Filter (Fair Value Gap)
Fair Value Gaps are price inefficiencies - gaps left by strong momentum where one candle's high doesn't overlap with a previous candle's low (or vice versa).
When enabled, this filter:
Detects bullish and bearish FVGs
Draws semi-transparent boxes around these gaps
Only allows breakout signals if there's an FVG near the breakout level
Why this helps: FVGs indicate institutional activity. Breakouts through FVGs tend to be stronger and more reliable.
Proximity setting: Controls how close the FVG must be to the ORB level. 2.0x means the breakout can be within 2 times the FVG size - a reasonable default.
### 8. Volume & Trend Filters
Volume Filter:
Requires current volume to be above average (customizable multiplier). High volume breakouts are more likely to sustain.
Set minimum multiplier (e.g., 1.5x = 50% above average)
Set "strong volume" multiplier (e.g., 2.5x) that bypasses other filters
Dashboard shows current volume ratio
Trend Filter:
Only shows breakouts aligned with a higher timeframe trend. Choose from:
VWAP - Price above/below volume-weighted average
EMA - Price above/below exponential moving average
SuperTrend - ATR-based trend indicator
Combined modes (VWAP+EMA, VWAP+SuperTrend) for stricter filtering
### 9. Pullback Filter (Advanced)
Purpose:
Waits for price to pull back slightly after initial breakout before confirming the signal.
This reduces false breakouts from immediate reversals.
How it works:
- After breakout is detected, indicator waits for a small pullback (default 2%)
- Once pullback occurs AND price breaks out again, signal is confirmed
- If no pullback within timeout period (5 bars), signal is issued anyway
Settings:
Enable Pullback Filter: Turn this filter on/off
Pullback %: How much price must pull back (2% is balanced)
Timeout (bars): Max bars to wait for pullback (5 is standard)
When to use:
- Choppy markets with many fake breakouts
- When you want higher quality signals
- Combine with Volume filter for maximum confirmation
Trade-off:
- Better signal quality
- May miss some valid fast moves
- Slight entry delay
How to Use This Indicator
### For Beginners - Simple Setup
Add the indicator to your chart (5-minute or 15-minute timeframe recommended)
Leave all default settings - they work well for most stocks
Watch for BREAK UP or BREAK DOWN labels to appear
Check the dashboard for entry, stop loss, and targets
Use the position sizing to determine how many shares to buy
Basic Trading Plan:
Wait for a clear breakout label
Enter at the ORB level (or next candle open if you're late)
Place stop loss where the red line indicates
Take profit at TP1 (50% of position) and TP2 (remaining 50%)
### For Advanced Traders - Customized Setup
Choose which ORB stages to track (you might only want ORB15 and ORB30)
Enable filters: Volume (stocks) or Trend (trending markets)
Enable FVG filter for institutional confirmation
Set "Track Cycles" mode to catch retests and re-breakouts
Customize stop loss method (ATR for volatile stocks, ORB% for stable ones)
Adjust risk per trade and account size for accurate position sizing
Advanced Strategy Example:
Enable ORB15 only (disable others for cleaner chart)
Turn on Volume filter at 1.5x with Strong at 2.5x
Enable Trend filter using VWAP
Set Signal Mode to "Track Cycles" with Max 3 cycles
Wait for aligned breakouts (Volume + Trend + Direction)
Enter on retest if you missed the initial break
### Timeframe Recommendations
5-minute chart: Scalping, very active trading, crypto
15-minute chart: Day trading, balanced approach (most popular)
30-minute chart: Swing entries, less screen time
60-minute chart: Position trading, longer holds
The indicator works on any intraday timeframe, but ORB is fundamentally a day trading strategy. Daily charts don't make sense for ORB.
DEFAULT CONFIGURATION
ON by Default:
• All 4 ORB stages (5/15/30/60)
• Breakout Detection
• Retest Labels
• All TP levels (1/1.5/2/3)
• TP/SL Lines (Detailed mode)
• Dashboard (Bottom Left, Dark theme)
• Position Size Calculator
OFF by Default (Optional Filters):
• FVG Filter
• Pullback Filter
• Volume Filter
• Trend Filter
• HTF Bias Check
• Alerts
Recommended for Beginners:
• Leave all defaults
• Session Mode: Auto-Detect
• Signal Mode: Track Cycles
• Stop Method: ATR
• Add Volume Filter if trading stocks
Recommended for Advanced:
• Enable ORB15 + ORB30 only (disable 5 & 60)
• Enable: Volume + Trend + FVG
• Signal Mode: Track Cycles, Max 3
• Stop Method: ATR or Safer
• Enable HTF Daily bias check
## Settings Guide
The settings are organized into logical groups. Here's what each section controls:
### ORB COLORS Section
Show Edge Labels: Display "ORB 5", "ORB 15" labels at the right edge of the levels
Background: Fill the area between ORB high/low with color
Transparency: How see-through the background is (95% is nearly invisible)
Enable ORB 5/15/30/60: Turn each stage on or off individually
Colors: Assign colors to each ORB stage for easy identification
### SESSION SETTINGS Section
Session Mode: Choose trading session (Auto-Detect works for most instruments)
Custom Session Hours: Define your own hours if needed (format: HHMM-HHMM)
Auto-Detect uses the instrument's natural hours (stocks use exchange hours, crypto uses 24/7).
### BREAKOUT DETECTION Section
Enable Breakout Detection: Master switch for signals
Show Retest Labels: Display retest signals
Label Size: Visual size for all labels (Small recommended)
Enable FVG Filter: Require Fair Value Gap confirmation
Show FVG Boxes: Display the gap boxes on chart
Signal Mode: "First Only" = one signal per direction per day, "Track Cycles" = multiple signals
Max Cycles: How many breakout-retest cycles to track (6 is balanced)
Breakout Buffer: Extra distance required beyond ORB level (0.1-0.2% recommended)
Min Distance for Retest: How far price must move away before retest is valid (2% recommended)
Min Bars Outside ORB: Bars price must stay outside for committed breakout (2 is balanced)
### TARGETS & RISK Section
Enable Targets & Stop-Loss: Calculate and show trade management
TP1/TP2/TP3 checkboxes: Select which profit targets to display
Stop Method: How to calculate stop loss placement
- ATR: Based on volatility (best for most cases)
- ORB %: Fixed % of ORB range
- Swing: Recent swing high/low
- Safer: Widest of all methods
ATR Length & Multiplier: Controls ATR stop distance (14 period, 1.5x is standard)
ORB Stop %: Percentage beyond ORB for stop (20% is balanced)
Swing Bars: Lookback period for swing high/low (3 is recent)
### TP/SL LINES Section
Show TP/SL Lines: Display horizontal lines on chart
Label Format: "Short" = minimal text, "Detailed" = shows prices
Freeze Lines at EOD: Stop extending lines at session close
### DASHBOARD Section
Show Info Panel: Display the metrics dashboard
Theme: Dark or Light colors
Position: Where to place dashboard on chart
Toggle rows: Show/hide specific information rows
Calculate Position Size: Enable the position sizing calculator
Risk Mode: Risk fixed $ amount or % of account
Account Size: Your total trading capital
Risk %: Percentage to risk per trade (0.5-1% recommended)
### VOLUME FILTER Section
Enable Volume Filter: Require volume confirmation
MA Length: Average period (20 is standard)
Min Volume: Required multiplier (1.5x = 50% above average)
Strong Volume: Multiplier that bypasses other filters (2.5x)
### TREND FILTER Section
Enable Trend Filter: Require trend alignment
Trend Mode: Method to determine trend (VWAP is simple and effective)
Custom EMA Length: If using EMA mode (50 for swing, 20 for day trading)
SuperTrend settings: Period and Multiplier if using SuperTrend mode
### HIGHER TIMEFRAME Section
Check Daily Trend: Display higher timeframe bias in dashboard
Timeframe: What TF to check (D = daily, recommended)
Method: Price vs MA (stable) or Candle Direction (reactive)
MA Period: EMA length for Price vs MA method (20 is balanced)
Min Strength %: Minimum strength threshold for HTF bias to be considered
- For "Price vs MA": Minimum distance (%) from moving average
- For "Candle Direction": Minimum candle body size (%)
- 0.5% is balanced - increase for stricter filtering
- Lower values = more signals, higher values = only strong trends
### ALERTS Section
Enable Alerts: Master switch (must be ON to use any alerts)
Breakout Alerts: Notify on ORB breakouts
Retest Alerts: Notify when price retests after breakout
Failed Break Alerts: Notify on failed breakouts
Stage Complete Alerts: Notify when each ORB stage finishes forming
After enabling desired alert types, click "Create Alert" button, select this indicator, choose "Any alert() function call".
## Tips & Best Practices
### General Trading Tips
ORB works best on liquid instruments (stocks with good volume, major crypto pairs)
First hour of the session is most important - that's when ORB is forming
Breakouts WITH the trend have higher success rates - use the trend filter
Failed breakouts are common - use the "Min Bars Outside" setting to filter weak moves
Not every day produces good ORB setups - be patient and selective
### Position Sizing Best Practices
Never risk more than 1-2% of your account on a single trade
Use the built-in calculator - don't guess your position size
Update your account size monthly as it grows
Smaller accounts: use $ Amount mode for simplicity
Larger accounts: use % of Account mode for scaling
### Take Profit Strategy
Most traders use: 50% at TP1, 50% at TP2
Aggressive: Hold through TP1 for TP2 or TP3
Conservative: Full exit at TP1 (1:1 risk/reward)
After TP1 hits, consider moving stop to breakeven
TP3 rarely hits - only on strong trending days
### Filter Combinations
Maximum Quality: Volume + Trend + FVG (fewest signals, highest quality)
Balanced: Volume + Trend (good quality, reasonable frequency)
Active Trading: No filters or Volume only (many signals, lower quality)
Trending Markets: Trend filter essential (indices, crypto)
Range-Bound: Volume + FVG (avoid trend filter)
### Common Mistakes to Avoid
Chasing breakouts - wait for the bar to close, don't FOMO into wicks
Ignoring the stop loss - always use it, move it manually if needed
Over-leveraging - the calculator shows MAX shares, you can buy less
Trading every signal - quality > quantity, use filters
Not tracking results - keep a journal to see what works for YOU
## Pros and Cons
### Advantages
Complete all-in-one solution - from signal to position sizing
Multiple timeframes tracked simultaneously
Visual clarity - easy to see what's happening
Cycle tracking catches opportunities others miss
Built-in risk management eliminates guesswork
Customizable filters for different trading styles
No repainting - what you see is locked in
Works across multiple markets (stocks, forex, crypto)
### Limitations
Intraday strategy only - doesn't work on daily charts
Requires active monitoring during first 1-2 hours of session
Not suitable for after-hours or extended sessions by default
Can produce many signals in choppy markets (use filters)
Dashboard can be overwhelming for complete beginners
Performance depends on market conditions (trends vs ranges)
Requires understanding of risk management concepts
### Best For
Day traders who can watch the first 1-2 hours of market open
Traders who want systematic entry/exit rules
Those learning proper position sizing and risk management
Active traders comfortable with multiple signals per day
Anyone trading liquid instruments with clear sessions
### Not Ideal For
Swing traders holding multi-day positions
Set-and-forget / passive investors
Traders who can't watch market open
Complete beginners unfamiliar with trading concepts
Low volume / illiquid instruments
## Frequently Asked Questions
Q: Why are no signals appearing?
A: Check that you're on an intraday timeframe (5min, 15min, etc.) and that the current time is within your session hours. Also verify that "Enable Breakout Detection" is ON and at least one ORB stage is enabled. If using filters, they might be blocking signals - try disabling them temporarily.
Q: What's the best ORB stage to use?
A: ORB15 (15 minutes) is most popular and balanced. ORB5 gives faster signals but more noise. ORB30 and ORB60 are slower but more reliable. Many traders use ORB15 + ORB30 together.
Q: Should I enable all the filters?
A: Start with no filters to see all signals. If too many false signals, add Volume filter first (stocks) or Trend filter (trending markets). FVG filter is most restrictive - use for maximum quality but fewer signals.
Q: How do I know which stop loss method to use?
A: ATR works for most cases - it adapts to volatility. Use ORB% if you want predictable stop placement. Swing is for respecting chart structure. Safer gives you the most room but largest risk.
Q: Can I use this for swing trading?
A: Not really - ORB is fundamentally an intraday strategy. The ranges reset each day. For swing trading, look at weekly support/resistance or moving averages instead.
Q: Why do TP/SL lines disappear sometimes?
A: Lines freeze (stop extending) when: stop loss is hit, the last enabled take-profit is hit, or end of session arrives (if "Freeze at EOD" is enabled). This is intentional - the trade is complete.
Q: What's the difference between "First Only" and "Track Cycles"?
A: "First Only" shows one breakout UP and one DOWN per day maximum - clean but might miss opportunities. "Track Cycles" shows breakout-retest-rebreak sequences - more signals but busier chart.
Q: Is position sizing accurate for options/forex?
A: The calculator is designed for shares (stocks). For options, ignore the share count and use the risk amount. For forex, you'll need to adapt the lot size calculation manually.
Q: How much capital do I need to use this?
A: The indicator works for any account size, but practical day trading typically requires $25,000 in the US due to Pattern Day Trader rules. Adjust the "Account Size" setting to match your capital.
Q: Can I backtest this strategy?
A: This is an indicator, not a strategy script, so it doesn't have built-in backtesting. You can visually review historical signals or code a strategy script using similar logic.
Q: Why does the dashboard show different entry price than the breakout label?
A: If you're looking at an old breakout, the ORB levels may have changed when the next stage completed. The dashboard always shows the CURRENT active range and trade setup.
Q: What's a good win rate to expect?
A: ORB strategies typically see 40-60% win rate depending on market conditions and filters used. The strategy relies on positive risk/reward ratios (2:1 or better) to be profitable even with moderate win rates.
Q: Does this work on crypto?
A: Yes, but crypto trades 24/7 so you need to define what "session start" means. Use Session Mode = Custom and set your preferred daily reset time (e.g., 0000-2359 UTC).
## Credits & Transparency
### Development
This indicator was developed with the assistance of AI technology to implement complex ORB trading logic.
The strategy concept, feature specifications, and trading logic were designed by the publisher. The implementation leverages modern development tools to ensure:
Clean, efficient, and maintainable code
Comprehensive error handling and input validation
Detailed documentation and user guidance
Performance optimization
### Trading Concepts
This indicator implements several public domain trading concepts:
Opening Range Breakout (ORB): Trading strategy popularized by Toby Crabel, Mark Fisher and many more talanted traders.
Fair Value Gap (FVG): Price imbalance concept from ICT methodology
SuperTrend: ATR-based trend indicator using public formula
Risk/Reward Ratio: Standard risk management principle
All mathematical formulas and technical concepts used are in the public domain.
### Pine Script
Uses standard TradingView built-in functions:
ta.ema(), ta.atr(), ta.vwap(), ta.highest(), ta.lowest(), request.security()
No external libraries or proprietary code from other authors.
## Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice.
Trading involves substantial risk of loss and is not suitable for every investor. Past performance shown in examples is not indicative of future results.
The indicator provides signals and calculations, but trading decisions are solely your responsibility. Always:
Test strategies on paper before using real money
Never risk more than you can afford to lose
Understand that all trading involves risk
Consider seeking advice from a licensed financial advisor
The publisher makes no guarantees regarding accuracy, profitability, or performance. Use at your own risk.
---
Version: 3.0
Pine Script Version: v6
Last Updated: October 2024
For support, questions, or suggestions, please comment below or send a private message.
---
Happy trading, and remember: consistent risk management beats perfect entry timing every time.
light_logLight Log - A Defensive Programming Library for Pine Script
Overview
The Light Log library transforms Pine Script development by introducing structured logging and defensive programming patterns typically found in enterprise languages like C#. This library addresses a fundamental challenge in Pine Script: the lack of sophisticated error handling and debugging tools that developers expect when building complex trading systems.
At its core, Light Log provides three transformative capabilities that work together to create more reliable and maintainable code. First, it wraps all native Pine Script types in error-aware containers, allowing values to carry validation state alongside their data. Second, it offers a comprehensive logging system with severity levels and conditional rendering. Third, it includes defensive programming utilities that catch errors early and make code self-documenting.
The Philosophy of Errors as Values
Traditional Pine Script error handling relies on runtime errors that halt execution, making it difficult to build resilient systems that can gracefully handle edge cases. Light Log introduces a paradigm shift by treating errors as first-class values that flow through your program alongside regular data.
When you wrap a value using Light Log's type system, you're not just storing data – you're creating a container that can carry both the value and its validation state. For example, when you call myNumber.INT() , you receive an INT object that contains both the integer value and a Log object that can describe any issues with that value. This approach, inspired by functional programming languages, allows errors to propagate through calculations without causing immediate failures.
Consider how this changes error handling in practice. Instead of a calculation failing catastrophically when it encounters invalid input, it can produce a result object that contains both the computed value (which might be na) and a detailed log explaining what went wrong. Subsequent operations can check has_error() to decide whether to proceed or handle the error condition gracefully.
The Typed Wrapper System
Light Log provides typed wrappers for every native Pine Script type: INT, FLOAT, BOOL, STRING, COLOR, LINE, LABEL, BOX, TABLE, CHART_POINT, POLYLINE, and LINEFILL. These wrappers serve multiple purposes beyond simple value storage.
Each wrapper type contains two fields: the value field v holds the actual data, while the error field e contains a Log object that tracks the value's validation state. This dual nature enables powerful programming patterns. You can perform operations on wrapped values and accumulate error information along the way, creating an audit trail of how values were processed.
The wrapper system includes convenient methods for converting between wrapped and unwrapped values. The extension methods like INT() , FLOAT() , etc., make it easy to wrap existing values, while the from_INT() , from_FLOAT() methods extract the underlying values when needed. The has_error() method provides a consistent interface for checking whether any wrapped value has encountered issues during processing.
The Log Object: Your Debugging Companion
The Log object represents the heart of Light Log's debugging capabilities. Unlike simple string concatenation for error messages, the Log object provides a structured approach to building, modifying, and rendering diagnostic information.
Each Log object carries three essential pieces of information: an error type (info, warning, error, or runtime_error), a message string that can be built incrementally, and an active flag that controls conditional rendering. This structure enables sophisticated logging patterns where you can build up detailed diagnostic information throughout your script's execution and decide later whether and how to display it.
The Log object's methods support fluent chaining, allowing you to build complex messages in a readable way. The write() and write_line() methods append text to the log, while new_line() adds formatting. The clear() method resets the log for reuse, and the rendering methods ( render_now() , render_condition() , and the general render() ) control when and how messages appear.
Defensive Programming Made Easy
Light Log's argument validation functions transform how you write defensive code. Instead of cluttering your functions with verbose validation logic, you can use concise, self-documenting calls that make your intentions clear.
The argument_error() function provides strict validation that halts execution when conditions aren't met – perfect for catching programming errors early. For less critical issues, argument_log_warning() and argument_log_error() record problems without stopping execution, while argument_log_info() provides debug visibility into your function's behavior.
These functions follow a consistent pattern: they take a condition to check, the function name, the argument name, and a descriptive message. This consistency makes error messages predictable and helpful, automatically formatting them to show exactly where problems occurred.
Building Modular, Reusable Code
Light Log encourages a modular approach to Pine Script development by providing tools that make functions more self-contained and reliable. When functions validate their inputs and return wrapped values with error information, they become true black boxes that can be safely composed into larger systems.
The void_return() function addresses Pine Script's requirement that all code paths return a value, even in error handling branches. This utility function provides a clean way to satisfy the compiler while making it clear that a particular code path should never execute.
The static log pattern, initialized with init_static_log() , enables module-wide error tracking. You can create a persistent Log object that accumulates information across multiple function calls, building a comprehensive diagnostic report that helps you understand complex behaviors in your indicators and strategies.
Real-World Applications
In practice, Light Log shines when building sophisticated trading systems. Imagine developing a complex indicator that processes multiple data streams, performs statistical calculations, and generates trading signals. With Light Log, each processing stage can validate its inputs, perform calculations, and pass along both results and diagnostic information.
For example, a moving average calculation might check that the period is positive, that sufficient data exists, and that the input series contains valid values. Instead of failing silently or throwing runtime errors, it can return a FLOAT object that contains either the calculated average or a detailed explanation of why the calculation couldn't be performed.
Strategy developers benefit even more from Light Log's capabilities. Complex entry and exit logic often involves multiple conditions that must all be satisfied. With Light Log, each condition check can contribute to a comprehensive log that explains exactly why a trade was or wasn't taken, making strategy debugging and optimization much more straightforward.
Performance Considerations
While Light Log adds a layer of abstraction over raw Pine Script values, its design minimizes performance impact. The wrapper objects are lightweight, containing only two fields. The logging operations only consume resources when actually rendered, and the conditional rendering system ensures that production code can run with logging disabled for maximum performance.
The library follows Pine Script best practices for performance, using appropriate data structures and avoiding unnecessary operations. The var keyword in init_static_log() ensures that persistent logs don't create new objects on every bar, maintaining efficiency even in real-time calculations.
Getting Started
Adopting Light Log in your Pine Script projects is straightforward. Import the library, wrap your critical values, add validation to your functions, and use Log objects to track important events. Start small by adding logging to a single function, then expand as you see the benefits of better error visibility and code organization.
Remember that Light Log is designed to grow with your needs. You can use as much or as little of its functionality as makes sense for your project. Even simple uses, like adding argument validation to key functions, can significantly improve code reliability and debugging ease.
Transform your Pine Script development experience with Light Log – because professional trading systems deserve professional development tools.
Light Log Technical Deep Dive: Advanced Patterns and Architecture
Understanding Errors as Values
The concept of "errors as values" represents a fundamental shift in how we think about error handling in Pine Script. In traditional Pine Script development, errors are events – they happen at a specific moment in time and immediately interrupt program flow. Light Log transforms errors into data – they become information that flows through your program just like any other value.
This transformation has profound implications. When errors are values, they can be stored, passed between functions, accumulated, transformed, and inspected. They become part of your program's data flow rather than exceptions to it. This approach, popularized by languages like Rust with its Result type and Haskell with its Either monad, brings functional programming's elegance to Pine Script.
Consider a practical example. Traditional Pine Script might calculate a momentum indicator like this:
momentum = close - close
If period is invalid or if there isn't enough historical data, this calculation might produce na or cause subtle bugs. With Light Log's approach:
calculate_momentum(src, period)=>
result = src.FLOAT()
if period <= 0
result.e.write("Invalid period: must be positive", true, ErrorType.error)
result.v := na
else if bar_index < period
result.e.write("Insufficient data: need " + str.tostring(period) + " bars", true, ErrorType.warning)
result.v := na
else
result.v := src - src
result.e.write("Momentum calculated successfully", false, ErrorType.info)
result
Now the function returns not just a value but a complete computational result that includes diagnostic information. Calling code can make intelligent decisions based on both the value and its associated metadata.
The Monad Pattern in Pine Script
While Pine Script lacks the type system features to implement true monads, Light Log brings monadic thinking to Pine Script development. The wrapped types (INT, FLOAT, etc.) act as computational contexts that carry both values and metadata through a series of transformations.
The key insight of monadic programming is that you can chain operations while automatically propagating context. In Light Log, this context is the error state. When you have a FLOAT that contains an error, operations on that FLOAT can check the error state and decide whether to proceed or propagate the error.
This pattern enables what functional programmers call "railway-oriented programming" – your code follows a success track when all is well but can switch to an error track when problems occur. Both tracks lead to the same destination (a result with error information), but they take different paths based on the validity of intermediate values.
Composable Error Handling
Light Log's design encourages composition – building complex functionality from simpler, well-tested components. Each component can validate its inputs, perform its calculation, and return a result with appropriate error information. Higher-level functions can then combine these results intelligently.
Consider building a complex trading signal from multiple indicators:
generate_signal(src, fast_period, slow_period, signal_period) =>
log = init_static_log(ErrorType.info)
// Calculate components with error tracking
fast_ma = calculate_ma(src, fast_period)
slow_ma = calculate_ma(src, slow_period)
// Check for errors in components
if fast_ma.has_error()
log.write_line("Fast MA error: " + fast_ma.e.message, true)
if slow_ma.has_error()
log.write_line("Slow MA error: " + slow_ma.e.message, true)
// Proceed with calculation if no errors
signal = 0.0.FLOAT()
if not (fast_ma.has_error() or slow_ma.has_error())
macd_line = fast_ma.v - slow_ma.v
signal_line = calculate_ma(macd_line, signal_period)
if signal_line.has_error()
log.write_line("Signal line error: " + signal_line.e.message, true)
signal.e := log
else
signal.v := macd_line - signal_line.v
log.write("Signal generated successfully")
else
signal.e := log
signal.v := na
signal
This composable approach makes complex calculations more reliable and easier to debug. Each component is responsible for its own validation and error reporting, and the composite function orchestrates these components while maintaining comprehensive error tracking.
The Static Log Pattern
The init_static_log() function introduces a powerful pattern for maintaining state across function calls. In Pine Script, the var keyword creates variables that persist across bars but are initialized only once. Light Log leverages this to create logging objects that can accumulate information throughout a script's execution.
This pattern is particularly valuable for debugging complex strategies where you need to understand behavior across multiple bars. You can create module-level logs that track important events:
// Module-level diagnostic log
diagnostics = init_static_log(ErrorType.info)
// Track strategy decisions across bars
check_entry_conditions() =>
diagnostics.clear() // Start fresh each bar
diagnostics.write_line("Bar " + str.tostring(bar_index) + " analysis:")
if close > sma(close, 20)
diagnostics.write_line("Price above SMA20", false)
else
diagnostics.write_line("Price below SMA20 - no entry", true, ErrorType.warning)
if volume > sma(volume, 20) * 1.5
diagnostics.write_line("Volume surge detected", false)
else
diagnostics.write_line("Normal volume", false)
// Render diagnostics based on verbosity setting
if debug_mode
diagnostics.render_now()
Advanced Validation Patterns
Light Log's argument validation functions enable sophisticated precondition checking that goes beyond simple null checks. You can implement complex validation logic while keeping your code readable:
validate_price_data(open_val, high_val, low_val, close_val) =>
argument_error(na(open_val) or na(high_val) or na(low_val) or na(close_val),
"validate_price_data", "OHLC values", "contain na values")
argument_error(high_val < low_val,
"validate_price_data", "high/low", "high is less than low")
argument_error(close_val > high_val or close_val < low_val,
"validate_price_data", "close", "is outside high/low range")
argument_log_warning(high_val == low_val,
"validate_price_data", "high/low", "are equal (no range)")
This validation function documents its requirements clearly and fails fast with helpful error messages when assumptions are violated. The mix of errors (which halt execution) and warnings (which allow continuation) provides fine-grained control over how strict your validation should be.
Performance Optimization Strategies
While Light Log adds abstraction, careful design minimizes overhead. Understanding Pine Script's execution model helps you use Light Log efficiently.
Pine Script executes once per bar, so operations that seem expensive in traditional programming might have negligible impact. However, when building real-time systems, every optimization matters. Light Log provides several patterns for efficient use:
Lazy Evaluation: Log messages are only built when they'll be rendered. Use conditional logging to avoid string concatenation in production:
if debug_mode
log.write_line("Calculated value: " + str.tostring(complex_calculation))
Selective Wrapping: Not every value needs error tracking. Wrap values at API boundaries and critical calculation points, but use raw values for simple operations:
// Wrap at boundaries
input_price = close.FLOAT()
validated_period = validate_period(input_period).INT()
// Use raw values internally
sum = 0.0
for i = 0 to validated_period.v - 1
sum += close
Error Propagation: When errors occur early, avoid expensive calculations:
process_data(input) =>
validated = validate_input(input)
if validated.has_error()
validated // Return early with error
else
// Expensive processing only if valid
perform_complex_calculation(validated)
Integration Patterns
Light Log integrates smoothly with existing Pine Script code. You can adopt it incrementally, starting with critical functions and expanding coverage as needed.
Boundary Validation: Add Light Log at the boundaries of your system – where user input enters and where final outputs are produced. This catches most errors while minimizing changes to existing code.
Progressive Enhancement: Start by adding argument validation to existing functions. Then wrap return values. Finally, add comprehensive logging. Each step improves reliability without requiring a complete rewrite.
Testing and Debugging: Use Light Log's conditional rendering to create debug modes for your scripts. Production users see clean output while developers get detailed diagnostics:
// User input for debug mode
debug = input.bool(false, "Enable debug logging")
// Conditional diagnostic output
if debug
diagnostics.render_now()
else
diagnostics.render_condition() // Only shows errors/warnings
Future-Proofing Your Code
Light Log's patterns prepare your code for Pine Script's evolution. As Pine Script adds more sophisticated features, code that uses structured error handling and defensive programming will adapt more easily than code that relies on implicit assumptions.
The type wrapper system, in particular, positions your code to take advantage of potential future features or more sophisticated type inference. By thinking in terms of wrapped values and error propagation today, you're building code that will remain maintainable and extensible tomorrow.
Light Log doesn't just make your Pine Script better today – it prepares it for the trading systems you'll need to build tomorrow.
Library "light_log"
A lightweight logging and defensive programming library for Pine Script.
Designed for modular and extensible scripts, this utility provides structured runtime validation,
conditional logging, and reusable `Log` objects for centralized error propagation.
It also introduces a typed wrapping system for all native Pine values (e.g., `INT`, `FLOAT`, `LABEL`),
allowing values to carry errors alongside data. This enables functional-style flows with built-in
validation tracking, error detection (`has_error()`), and fluent chaining.
Inspired by structured logging patterns found in systems like C#, it reduces boilerplate,
enforces argument safety, and encourages clean, maintainable code architecture.
method INT(self, error_type)
Wraps an `int` value into an `INT` struct with an optional log severity.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The raw `int` value to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: An `INT` object containing the value and a default Log instance.
method FLOAT(self, error_type)
Wraps a `float` value into a `FLOAT` struct with an optional log severity.
Namespace types: series float, simple float, input float, const float
Parameters:
self (float) : The raw `float` value to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `FLOAT` object containing the value and a default Log instance.
method BOOL(self, error_type)
Wraps a `bool` value into a `BOOL` struct with an optional log severity.
Namespace types: series bool, simple bool, input bool, const bool
Parameters:
self (bool) : The raw `bool` value to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `BOOL` object containing the value and a default Log instance.
method STRING(self, error_type)
Wraps a `string` value into a `STRING` struct with an optional log severity.
Namespace types: series string, simple string, input string, const string
Parameters:
self (string) : The raw `string` value to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `STRING` object containing the value and a default Log instance.
method COLOR(self, error_type)
Wraps a `color` value into a `COLOR` struct with an optional log severity.
Namespace types: series color, simple color, input color, const color
Parameters:
self (color) : The raw `color` value to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `COLOR` object containing the value and a default Log instance.
method LINE(self, error_type)
Wraps a `line` object into a `LINE` struct with an optional log severity.
Namespace types: series line
Parameters:
self (line) : The raw `line` object to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `LINE` object containing the value and a default Log instance.
method LABEL(self, error_type)
Wraps a `label` object into a `LABEL` struct with an optional log severity.
Namespace types: series label
Parameters:
self (label) : The raw `label` object to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `LABEL` object containing the value and a default Log instance.
method BOX(self, error_type)
Wraps a `box` object into a `BOX` struct with an optional log severity.
Namespace types: series box
Parameters:
self (box) : The raw `box` object to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `BOX` object containing the value and a default Log instance.
method TABLE(self, error_type)
Wraps a `table` object into a `TABLE` struct with an optional log severity.
Namespace types: series table
Parameters:
self (table) : The raw `table` object to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `TABLE` object containing the value and a default Log instance.
method CHART_POINT(self, error_type)
Wraps a `chart.point` value into a `CHART_POINT` struct with an optional log severity.
Namespace types: chart.point
Parameters:
self (chart.point) : The raw `chart.point` value to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `CHART_POINT` object containing the value and a default Log instance.
method POLYLINE(self, error_type)
Wraps a `polyline` object into a `POLYLINE` struct with an optional log severity.
Namespace types: series polyline, series polyline, series polyline, series polyline
Parameters:
self (polyline) : The raw `polyline` object to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `POLYLINE` object containing the value and a default Log instance.
method LINEFILL(self, error_type)
Wraps a `linefill` object into a `LINEFILL` struct with an optional log severity.
Namespace types: series linefill
Parameters:
self (linefill) : The raw `linefill` object to wrap.
error_type (series ErrorType) : Optional severity level to associate with the log. Default is `ErrorType.error`.
Returns: A `LINEFILL` object containing the value and a default Log instance.
method from_INT(self)
Extracts the integer value from an INT wrapper.
Namespace types: INT
Parameters:
self (INT) : The wrapped INT instance.
Returns: The underlying `int` value.
method from_FLOAT(self)
Extracts the float value from a FLOAT wrapper.
Namespace types: FLOAT
Parameters:
self (FLOAT) : The wrapped FLOAT instance.
Returns: The underlying `float` value.
method from_BOOL(self)
Extracts the boolean value from a BOOL wrapper.
Namespace types: BOOL
Parameters:
self (BOOL) : The wrapped BOOL instance.
Returns: The underlying `bool` value.
method from_STRING(self)
Extracts the string value from a STRING wrapper.
Namespace types: STRING
Parameters:
self (STRING) : The wrapped STRING instance.
Returns: The underlying `string` value.
method from_COLOR(self)
Extracts the color value from a COLOR wrapper.
Namespace types: COLOR
Parameters:
self (COLOR) : The wrapped COLOR instance.
Returns: The underlying `color` value.
method from_LINE(self)
Extracts the line object from a LINE wrapper.
Namespace types: LINE
Parameters:
self (LINE) : The wrapped LINE instance.
Returns: The underlying `line` object.
method from_LABEL(self)
Extracts the label object from a LABEL wrapper.
Namespace types: LABEL
Parameters:
self (LABEL) : The wrapped LABEL instance.
Returns: The underlying `label` object.
method from_BOX(self)
Extracts the box object from a BOX wrapper.
Namespace types: BOX
Parameters:
self (BOX) : The wrapped BOX instance.
Returns: The underlying `box` object.
method from_TABLE(self)
Extracts the table object from a TABLE wrapper.
Namespace types: TABLE
Parameters:
self (TABLE) : The wrapped TABLE instance.
Returns: The underlying `table` object.
method from_CHART_POINT(self)
Extracts the chart.point from a CHART_POINT wrapper.
Namespace types: CHART_POINT
Parameters:
self (CHART_POINT) : The wrapped CHART_POINT instance.
Returns: The underlying `chart.point` value.
method from_POLYLINE(self)
Extracts the polyline object from a POLYLINE wrapper.
Namespace types: POLYLINE
Parameters:
self (POLYLINE) : The wrapped POLYLINE instance.
Returns: The underlying `polyline` object.
method from_LINEFILL(self)
Extracts the linefill object from a LINEFILL wrapper.
Namespace types: LINEFILL
Parameters:
self (LINEFILL) : The wrapped LINEFILL instance.
Returns: The underlying `linefill` object.
method has_error(self)
Returns true if the INT wrapper has an active log entry.
Namespace types: INT
Parameters:
self (INT) : The INT instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the FLOAT wrapper has an active log entry.
Namespace types: FLOAT
Parameters:
self (FLOAT) : The FLOAT instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the BOOL wrapper has an active log entry.
Namespace types: BOOL
Parameters:
self (BOOL) : The BOOL instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the STRING wrapper has an active log entry.
Namespace types: STRING
Parameters:
self (STRING) : The STRING instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the COLOR wrapper has an active log entry.
Namespace types: COLOR
Parameters:
self (COLOR) : The COLOR instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the LINE wrapper has an active log entry.
Namespace types: LINE
Parameters:
self (LINE) : The LINE instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the LABEL wrapper has an active log entry.
Namespace types: LABEL
Parameters:
self (LABEL) : The LABEL instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the BOX wrapper has an active log entry.
Namespace types: BOX
Parameters:
self (BOX) : The BOX instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the TABLE wrapper has an active log entry.
Namespace types: TABLE
Parameters:
self (TABLE) : The TABLE instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the CHART_POINT wrapper has an active log entry.
Namespace types: CHART_POINT
Parameters:
self (CHART_POINT) : The CHART_POINT instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the POLYLINE wrapper has an active log entry.
Namespace types: POLYLINE
Parameters:
self (POLYLINE) : The POLYLINE instance to check.
Returns: True if an error or message is active in the log.
method has_error(self)
Returns true if the LINEFILL wrapper has an active log entry.
Namespace types: LINEFILL
Parameters:
self (LINEFILL) : The LINEFILL instance to check.
Returns: True if an error or message is active in the log.
void_return()
Utility function used when a return is syntactically required but functionally unnecessary.
Returns: Nothing. Function never executes its body.
argument_error(condition, function, argument, message)
Throws a runtime error when a condition is met. Used for strict argument validation.
Parameters:
condition (bool) : Boolean expression that triggers the runtime error.
function (string) : Name of the calling function (for formatting).
argument (string) : Name of the problematic argument.
message (string) : Description of the error cause.
Returns: Never returns. Halts execution if the condition is true.
argument_log_info(condition, function, argument, message)
Logs an informational message when a condition is met. Used for optional debug visibility.
Parameters:
condition (bool) : Boolean expression that triggers the log.
function (string) : Name of the calling function.
argument (string) : Argument name being referenced.
message (string) : Informational message to log.
Returns: Nothing. Logs if the condition is true.
argument_log_warning(condition, function, argument, message)
Logs a warning when a condition is met. Non-fatal but highlights potential issues.
Parameters:
condition (bool) : Boolean expression that triggers the warning.
function (string) : Name of the calling function.
argument (string) : Argument name being referenced.
message (string) : Warning message to log.
Returns: Nothing. Logs if the condition is true.
argument_log_error(condition, function, argument, message)
Logs an error message when a condition is met. Does not halt execution.
Parameters:
condition (bool) : Boolean expression that triggers the error log.
function (string) : Name of the calling function.
argument (string) : Argument name being referenced.
message (string) : Error message to log.
Returns: Nothing. Logs if the condition is true.
init_static_log(error_type, message, active)
Initializes a persistent (var) Log object. Ideal for global logging in scripts or modules.
Parameters:
error_type (series ErrorType) : Initial severity level (required).
message (string) : Optional starting message string. Default value of ("").
active (bool) : Whether the log should be flagged active on initialization. Default value of (false).
Returns: A static Log object with the given parameters.
method new_line(self)
Appends a newline character to the Log message. Useful for separating entries during chained writes.
Namespace types: Log
Parameters:
self (Log) : The Log instance to modify.
Returns: The updated Log object with a newline appended.
method write(self, message, flag_active, error_type)
Appends a message to a Log object without a newline. Updates severity and active state if specified.
Namespace types: Log
Parameters:
self (Log) : The Log instance being modified.
message (string) : The text to append to the log.
flag_active (bool) : Whether to activate the log for conditional rendering. Default value of (false).
error_type (series ErrorType) : Optional override for the severity level. Default value of (na).
Returns: The updated Log object.
method write_line(self, message, flag_active, error_type)
Appends a message to a Log object, prefixed with a newline for clarity.
Namespace types: Log
Parameters:
self (Log) : The Log instance being modified.
message (string) : The text to append to the log.
flag_active (bool) : Whether to activate the log for conditional rendering. Default value of (false).
error_type (series ErrorType) : Optional override for the severity level. Default value of (na).
Returns: The updated Log object.
method clear(self, flag_active, error_type)
Clears a Log object’s message and optionally reactivates it. Can also update the error type.
Namespace types: Log
Parameters:
self (Log) : The Log instance being cleared.
flag_active (bool) : Whether to activate the log after clearing. Default value of (false).
error_type (series ErrorType) : Optional new error type to assign. If not provided, the previous type is retained. Default value of (na).
Returns: The cleared Log object.
method render_condition(self, flag_active, error_type)
Conditionally renders the log if it is active. Allows overriding error type and controlling active state afterward.
Namespace types: Log
Parameters:
self (Log) : The Log instance to evaluate and render.
flag_active (bool) : Whether to activate the log after rendering. Default value of (false).
error_type (series ErrorType) : Optional error type override. Useful for contextual formatting just before rendering. Default value of (na).
Returns: The updated Log object.
method render_now(self, flag_active, error_type)
Immediately renders the log regardless of `active` state. Allows overriding error type and active flag.
Namespace types: Log
Parameters:
self (Log) : The Log instance to render.
flag_active (bool) : Whether to activate the log after rendering. Default value of (false).
error_type (series ErrorType) : Optional error type override. Allows dynamic severity adjustment at render time. Default value of (na).
Returns: The updated Log object.
render(self, condition, flag_active, error_type)
Renders the log conditionally or unconditionally. Allows full control over render behavior.
Parameters:
self (Log) : The Log instance to render.
condition (bool) : If true, renders only if the log is active. If false, always renders. Default value of (false).
flag_active (bool) : Whether to activate the log after rendering. Default value of (false).
error_type (series ErrorType) : Optional error type override passed to the render methods. Default value of (na).
Returns: The updated Log object.
Log
A structured object used to store and render logging messages.
Fields:
error_type (series ErrorType) : The severity level of the message (from the ErrorType enum).
message (series string) : The text of the log message.
active (series bool) : Whether the log should trigger rendering when conditionally evaluated.
INT
A wrapped integer type with attached logging for validation or tracing.
Fields:
v (series int) : The underlying `int` value.
e (Log) : Optional log object describing validation status or error context.
FLOAT
A wrapped float type with attached logging for validation or tracing.
Fields:
v (series float) : The underlying `float` value.
e (Log) : Optional log object describing validation status or error context.
BOOL
A wrapped boolean type with attached logging for validation or tracing.
Fields:
v (series bool) : The underlying `bool` value.
e (Log) : Optional log object describing validation status or error context.
STRING
A wrapped string type with attached logging for validation or tracing.
Fields:
v (series string) : The underlying `string` value.
e (Log) : Optional log object describing validation status or error context.
COLOR
A wrapped color type with attached logging for validation or tracing.
Fields:
v (series color) : The underlying `color` value.
e (Log) : Optional log object describing validation status or error context.
LINE
A wrapped line object with attached logging for validation or tracing.
Fields:
v (series line) : The underlying `line` value.
e (Log) : Optional log object describing validation status or error context.
LABEL
A wrapped label object with attached logging for validation or tracing.
Fields:
v (series label) : The underlying `label` value.
e (Log) : Optional log object describing validation status or error context.
BOX
A wrapped box object with attached logging for validation or tracing.
Fields:
v (series box) : The underlying `box` value.
e (Log) : Optional log object describing validation status or error context.
TABLE
A wrapped table object with attached logging for validation or tracing.
Fields:
v (series table) : The underlying `table` value.
e (Log) : Optional log object describing validation status or error context.
CHART_POINT
A wrapped chart point with attached logging for validation or tracing.
Fields:
v (chart.point) : The underlying `chart.point` value.
e (Log) : Optional log object describing validation status or error context.
POLYLINE
A wrapped polyline object with attached logging for validation or tracing.
Fields:
v (series polyline) : The underlying `polyline` value.
e (Log) : Optional log object describing validation status or error context.
LINEFILL
A wrapped linefill object with attached logging for validation or tracing.
Fields:
v (series linefill) : The underlying `linefill` value.
e (Log) : Optional log object describing validation status or error context.
Ray Dalio's All Weather Strategy - Portfolio CalculatorTHE ALL WEATHER STRATEGY INDICATOR: A GUIDE TO RAY DALIO'S LEGENDARY PORTFOLIO APPROACH
Introduction: The Genesis of Financial Resilience
In the sprawling corridors of Bridgewater Associates, the world's largest hedge fund managing over 150 billion dollars in assets, Ray Dalio conceived what would become one of the most influential investment strategies of the modern era. The All Weather Strategy, born from decades of market observation and rigorous backtesting, represents a paradigm shift from traditional portfolio construction methods that have dominated Wall Street since Harry Markowitz's seminal work on Modern Portfolio Theory in 1952.
Unlike conventional approaches that chase returns through market timing or stock picking, the All Weather Strategy embraces a fundamental truth that has humbled countless investors throughout history: nobody can consistently predict the future direction of markets. Instead of fighting this uncertainty, Dalio's approach harnesses it, creating a portfolio designed to perform reasonably well across all economic environments, hence the evocative name "All Weather."
The strategy emerged from Bridgewater's extensive research into economic cycles and asset class behavior, culminating in what Dalio describes as "the Holy Grail of investing" in his bestselling book "Principles" (Dalio, 2017). This Holy Grail isn't about achieving spectacular returns, but rather about achieving consistent, risk-adjusted returns that compound steadily over time, much like the tortoise defeating the hare in Aesop's timeless fable.
HISTORICAL DEVELOPMENT AND EVOLUTION
The All Weather Strategy's origins trace back to the tumultuous economic periods of the 1970s and 1980s, when traditional portfolio construction methods proved inadequate for navigating simultaneous inflation and recession. Raymond Thomas Dalio, born in 1949 in Queens, New York, founded Bridgewater Associates from his Manhattan apartment in 1975, initially focusing on currency and fixed-income consulting for corporate clients.
Dalio's early experiences during the 1970s stagflation period profoundly shaped his investment philosophy. Unlike many of his contemporaries who viewed inflation and deflation as opposing forces, Dalio recognized that both conditions could coexist with either economic growth or contraction, creating four distinct economic environments rather than the traditional two-factor models that dominated academic finance.
The conceptual breakthrough came in the late 1980s when Dalio began systematically analyzing asset class performance across different economic regimes. Working with a small team of researchers, Bridgewater developed sophisticated models that decomposed economic conditions into growth and inflation components, then mapped historical asset class returns against these regimes. This research revealed that traditional portfolio construction, heavily weighted toward stocks and bonds, left investors vulnerable to specific economic scenarios.
The formal All Weather Strategy emerged in 1996 when Bridgewater was approached by a wealthy family seeking a portfolio that could protect their wealth across various economic conditions without requiring active management or market timing. Unlike Bridgewater's flagship Pure Alpha fund, which relied on active trading and leverage, the All Weather approach needed to be completely passive and unleveraged while still providing adequate diversification.
Dalio and his team spent months developing and testing various allocation schemes, ultimately settling on the 30/40/15/7.5/7.5 framework that balances risk contributions rather than dollar amounts. This approach was revolutionary because it focused on risk budgeting—ensuring that no single asset class dominated the portfolio's risk profile—rather than the traditional approach of equal dollar allocations or market-cap weighting.
The strategy's first institutional implementation began in 1996 with a family office client, followed by gradual expansion to other wealthy families and eventually institutional investors. By 2005, Bridgewater was managing over $15 billion in All Weather assets, making it one of the largest systematic strategy implementations in institutional investing.
The 2008 financial crisis provided the ultimate test of the All Weather methodology. While the S&P 500 declined by 37% and many hedge funds suffered double-digit losses, the All Weather strategy generated positive returns, validating Dalio's risk-balancing approach. This performance during extreme market stress attracted significant institutional attention, leading to rapid asset growth in subsequent years.
The strategy's theoretical foundations evolved throughout the 2000s as Bridgewater's research team, led by co-chief investment officers Greg Jensen and Bob Prince, refined the economic framework and incorporated insights from behavioral economics and complexity theory. Their research, published in numerous institutional white papers, demonstrated that traditional portfolio optimization methods consistently underperformed simpler risk-balanced approaches across various time periods and market conditions.
Academic validation came through partnerships with leading business schools and collaboration with prominent economists. The strategy's risk parity principles influenced an entire generation of institutional investors, leading to the creation of numerous risk parity funds managing hundreds of billions in aggregate assets.
In recent years, the democratization of sophisticated financial tools has made All Weather-style investing accessible to individual investors through ETFs and systematic platforms. The availability of high-quality, low-cost ETFs covering each required asset class has eliminated many of the barriers that previously limited sophisticated portfolio construction to institutional investors.
The development of advanced portfolio management software and platforms like TradingView has further democratized access to institutional-quality analytics and implementation tools. The All Weather Strategy Indicator represents the culmination of this trend, providing individual investors with capabilities that previously required teams of portfolio managers and risk analysts.
Understanding the Four Economic Seasons
The All Weather Strategy's theoretical foundation rests on Dalio's observation that all economic environments can be characterized by two primary variables: economic growth and inflation. These variables create four distinct "economic seasons," each favoring different asset classes. Rising growth benefits stocks and commodities, while falling growth favors bonds. Rising inflation helps commodities and inflation-protected securities, while falling inflation benefits nominal bonds and stocks.
This framework, detailed extensively in Bridgewater's research papers from the 1990s, suggests that by holding assets that perform well in each economic season, an investor can create a portfolio that remains resilient regardless of which season unfolds. The elegance lies not in predicting which season will occur, but in being prepared for all of them simultaneously.
Academic research supports this multi-environment approach. Ang and Bekaert (2002) demonstrated that regime changes in economic conditions significantly impact asset returns, while Fama and French (2004) showed that different asset classes exhibit varying sensitivities to economic factors. The All Weather Strategy essentially operationalizes these academic insights into a practical investment framework.
The Original All Weather Allocation: Simplicity Masquerading as Sophistication
The core All Weather portfolio, as implemented by Bridgewater for institutional clients and later adapted for retail investors, maintains a deceptively simple static allocation: 30% stocks, 40% long-term bonds, 15% intermediate-term bonds, 7.5% commodities, and 7.5% Treasury Inflation-Protected Securities (TIPS). This allocation may appear arbitrary to the uninitiated, but each percentage reflects careful consideration of historical volatilities, correlations, and economic sensitivities.
The 30% stock allocation provides growth exposure while limiting the portfolio's overall volatility. Stocks historically deliver superior long-term returns but with significant volatility, as evidenced by the Standard & Poor's 500 Index's average annual return of approximately 10% since 1926, accompanied by standard deviation exceeding 15% (Ibbotson Associates, 2023). By limiting stock exposure to 30%, the portfolio captures much of the equity risk premium while avoiding excessive volatility.
The combined 55% allocation to bonds (40% long-term plus 15% intermediate-term) serves as the portfolio's stabilizing force. Long-term bonds provide substantial interest rate sensitivity, performing well during economic slowdowns when central banks reduce rates. Intermediate-term bonds offer a balance between interest rate sensitivity and reduced duration risk. This bond-heavy allocation reflects Dalio's insight that bonds typically exhibit lower volatility than stocks while providing essential diversification benefits.
The 7.5% commodities allocation addresses inflation protection, as commodity prices typically rise during inflationary periods. Historical analysis by Bodie and Rosansky (1980) demonstrated that commodities provide meaningful diversification benefits and inflation hedging capabilities, though with considerable volatility. The relatively small allocation reflects commodities' high volatility and mixed long-term returns.
Finally, the 7.5% TIPS allocation provides explicit inflation protection through government-backed securities whose principal and interest payments adjust with inflation. Introduced by the U.S. Treasury in 1997, TIPS have proven effective inflation hedges, though they underperform nominal bonds during deflationary periods (Campbell & Viceira, 2001).
Historical Performance: The Evidence Speaks
Analyzing the All Weather Strategy's historical performance reveals both its strengths and limitations. Using monthly return data from 1970 to 2023, spanning over five decades of varying economic conditions, the strategy has delivered compelling risk-adjusted returns while experiencing lower volatility than traditional stock-heavy portfolios.
During this period, the All Weather allocation generated an average annual return of approximately 8.2%, compared to 10.5% for the S&P 500 Index. However, the strategy's annual volatility measured just 9.1%, substantially lower than the S&P 500's 15.8% volatility. This translated to a Sharpe ratio of 0.67 for the All Weather Strategy versus 0.54 for the S&P 500, indicating superior risk-adjusted performance.
More impressively, the strategy's maximum drawdown over this period was 12.3%, occurring during the 2008 financial crisis, compared to the S&P 500's maximum drawdown of 50.9% during the same period. This drawdown mitigation proves crucial for long-term wealth building, as Stein and DeMuth (2003) demonstrated that avoiding large losses significantly impacts compound returns over time.
The strategy performed particularly well during periods of economic stress. During the 1970s stagflation, when stocks and bonds both struggled, the All Weather portfolio's commodity and TIPS allocations provided essential protection. Similarly, during the 2000-2002 dot-com crash and the 2008 financial crisis, the portfolio's bond-heavy allocation cushioned losses while maintaining positive returns in several years when stocks declined significantly.
However, the strategy underperformed during sustained bull markets, particularly the 1990s technology boom and the 2010s post-financial crisis recovery. This underperformance reflects the strategy's conservative nature and diversified approach, which sacrifices potential upside for downside protection. As Dalio frequently emphasizes, the All Weather Strategy prioritizes "not losing money" over "making a lot of money."
Implementing the All Weather Strategy: A Practical Guide
The All Weather Strategy Indicator transforms Dalio's institutional-grade approach into an accessible tool for individual investors. The indicator provides real-time portfolio tracking, rebalancing signals, and performance analytics, eliminating much of the complexity traditionally associated with implementing sophisticated allocation strategies.
To begin implementation, investors must first determine their investable capital. As detailed analysis reveals, the All Weather Strategy requires meaningful capital to implement effectively due to transaction costs, minimum investment requirements, and the need for precise allocations across five different asset classes.
For portfolios below $50,000, the strategy becomes challenging to implement efficiently. Transaction costs consume a disproportionate share of returns, while the inability to purchase fractional shares creates allocation drift. Consider an investor with $25,000 attempting to allocate 7.5% to commodities through the iPath Bloomberg Commodity Index ETF (DJP), currently trading around $25 per share. This allocation targets $1,875, enough for only 75 shares, creating immediate tracking error.
At $50,000, implementation becomes feasible but not optimal. The 30% stock allocation ($15,000) purchases approximately 37 shares of the SPDR S&P 500 ETF (SPY) at current prices around $400 per share. The 40% long-term bond allocation ($20,000) buys 200 shares of the iShares 20+ Year Treasury Bond ETF (TLT) at approximately $100 per share. While workable, these allocations leave significant cash drag and rebalancing challenges.
The optimal minimum for individual implementation appears to be $100,000. At this level, each allocation becomes substantial enough for precise implementation while keeping transaction costs below 0.4% annually. The $30,000 stock allocation, $40,000 long-term bond allocation, $15,000 intermediate-term bond allocation, $7,500 commodity allocation, and $7,500 TIPS allocation each provide sufficient size for effective management.
For investors with $250,000 or more, the strategy implementation approaches institutional quality. Allocation precision improves, transaction costs decline as a percentage of assets, and rebalancing becomes highly efficient. These larger portfolios can also consider adding complexity through international diversification or alternative implementations.
The indicator recommends quarterly rebalancing to balance transaction costs with allocation discipline. Monthly rebalancing increases costs without substantial benefits for most investors, while annual rebalancing allows excessive drift that can meaningfully impact performance. Quarterly rebalancing, typically on the first trading day of each quarter, provides an optimal balance.
Understanding the Indicator's Functionality
The All Weather Strategy Indicator operates as a comprehensive portfolio management system, providing multiple analytical layers that professional money managers typically reserve for institutional clients. This sophisticated tool transforms Ray Dalio's institutional-grade strategy into an accessible platform for individual investors, offering features that rival professional portfolio management software.
The indicator's core architecture consists of several interconnected modules that work seamlessly together to provide complete portfolio oversight. At its foundation lies a real-time portfolio simulation engine that tracks the exact value of each ETF position based on current market prices, eliminating the need for manual calculations or external spreadsheets.
DETAILED INDICATOR COMPONENTS AND FUNCTIONS
Portfolio Configuration Module
The portfolio setup begins with the Portfolio Configuration section, which establishes the fundamental parameters for strategy implementation. The Portfolio Capital input accepts values from $1,000 to $10,000,000, accommodating everyone from beginning investors to institutional clients. This input directly drives all subsequent calculations, determining exact share quantities and portfolio values throughout the implementation period.
The Portfolio Start Date function allows users to specify when they began implementing the All Weather Strategy, creating a clear demarcation point for performance tracking. This feature proves essential for investors who want to track their actual implementation against theoretical performance, providing realistic assessment of strategy effectiveness including timing differences and implementation costs.
Rebalancing Frequency settings offer two options: Monthly and Quarterly. While monthly rebalancing provides more precise allocation control, quarterly rebalancing typically proves more cost-effective for most investors due to reduced transaction costs. The indicator automatically detects the first trading day of each period, ensuring rebalancing occurs at optimal times regardless of weekends, holidays, or market closures.
The Rebalancing Threshold parameter, adjustable from 0.5% to 10%, determines when allocation drift triggers rebalancing recommendations. Conservative settings like 1-2% maintain tight allocation control but increase trading frequency, while wider thresholds like 3-5% reduce trading costs but allow greater allocation drift. This flexibility accommodates different risk tolerances and cost structures.
Visual Display System
The Show All Weather Calculator toggle controls the main dashboard visibility, allowing users to focus on chart visualization when detailed metrics aren't needed. When enabled, this comprehensive dashboard displays current portfolio value, individual ETF allocations, target versus actual weights, rebalancing status, and performance metrics in a professionally formatted table.
Economic Environment Display provides context about current market conditions based on growth and inflation indicators. While simplified compared to Bridgewater's sophisticated regime detection, this feature helps users understand which economic "season" currently prevails and which asset classes should theoretically benefit.
Rebalancing Signals illuminate when portfolio drift exceeds user-defined thresholds, highlighting specific ETFs that require adjustment. These signals use color coding to indicate urgency: green for balanced allocations, yellow for moderate drift, and red for significant deviations requiring immediate attention.
Advanced Label System
The rebalancing label system represents one of the indicator's most innovative features, providing three distinct detail levels to accommodate different user needs and experience levels. The "None" setting displays simple symbols marking portfolio start and rebalancing events without cluttering the chart with text. This minimal approach suits experienced investors who understand the implications of each symbol.
"Basic" label mode shows essential information including portfolio values at each rebalancing point, enabling quick assessment of strategy performance over time. These labels display "START $X" for portfolio initiation and "RBL $Y" for rebalancing events, providing clear performance tracking without overwhelming detail.
"Detailed" labels provide comprehensive trading instructions including exact buy and sell quantities for each ETF. These labels might display "RBL $125,000 BUY 15 SPY SELL 25 TLT BUY 8 IEF NO TRADES DJP SELL 12 SCHP" providing complete implementation guidance. This feature essentially transforms the indicator into a personal portfolio manager, eliminating guesswork about exact trades required.
Professional Color Themes
Eight professionally designed color themes adapt the indicator's appearance to different aesthetic preferences and market analysis styles. The "Gold" theme reflects traditional wealth management aesthetics, while "EdgeTools" provides modern professional appearance. "Behavioral" uses psychologically informed colors that reinforce disciplined decision-making, while "Quant" employs high-contrast combinations favored by quantitative analysts.
"Ocean," "Fire," "Matrix," and "Arctic" themes provide distinctive visual identities for traders who prefer unique chart aesthetics. Each theme automatically adjusts for dark or light mode optimization, ensuring optimal readability across different TradingView configurations.
Real-Time Portfolio Tracking
The portfolio simulation engine continuously tracks five separate ETF positions: SPY for stocks, TLT for long-term bonds, IEF for intermediate-term bonds, DJP for commodities, and SCHP for TIPS. Each position's value updates in real-time based on current market prices, providing instant feedback about portfolio performance and allocation drift.
Current share calculations determine exact holdings based on the most recent rebalancing, while target shares reflect optimal allocation based on current portfolio value. Trade calculations show precisely how many shares to buy or sell during rebalancing, eliminating manual calculations and potential errors.
Performance Analytics Suite
The indicator's performance measurement capabilities rival professional portfolio analysis software. Sharpe ratio calculations incorporate current risk-free rates obtained from Treasury yield data, providing accurate risk-adjusted performance assessment. Volatility measurements use rolling periods to capture changing market conditions while maintaining statistical significance.
Portfolio return calculations track both absolute and relative performance, comparing the All Weather implementation against individual asset classes and benchmark indices. These metrics update continuously, providing real-time assessment of strategy effectiveness and implementation quality.
Data Quality Monitoring
Sophisticated data quality checks ensure reliable indicator operation across different market conditions and potential data interruptions. The system monitors all five ETF price feeds plus economic data sources, providing quality scores that alert users to potential data issues that might affect calculations.
When data quality degrades, the indicator automatically switches to fallback values or alternative data sources, maintaining functionality during temporary market data interruptions. This robust design ensures consistent operation even during volatile market conditions when data feeds occasionally experience disruptions.
Risk Management and Behavioral Considerations
Despite its sophisticated design, the All Weather Strategy faces behavioral challenges that have derailed countless well-intentioned investment plans. The strategy's conservative nature means it will underperform growth stocks during bull markets, potentially by substantial margins. Maintaining discipline during these periods requires understanding that the strategy optimizes for risk-adjusted returns over absolute returns.
Behavioral finance research by Kahneman and Tversky (1979) demonstrates that investors feel losses approximately twice as intensely as equivalent gains. This loss aversion creates powerful psychological pressure to abandon defensive strategies during bull markets when aggressive portfolios appear more attractive. The All Weather Strategy's bond-heavy allocation will seem overly conservative when technology stocks double in value, as occurred repeatedly during the 2010s.
Conversely, the strategy's defensive characteristics provide psychological comfort during market stress. When stocks crash 30-50%, as they periodically do, the All Weather portfolio's modest losses feel manageable rather than catastrophic. This emotional stability enables investors to maintain their investment discipline when others capitulate, often at the worst possible times.
Rebalancing discipline presents another behavioral challenge. Selling winners to buy losers contradicts natural human tendencies but remains essential for the strategy's success. When stocks have outperformed bonds for several quarters, rebalancing requires selling high-performing stock positions to purchase seemingly stagnant bond positions. This action feels counterintuitive but captures the strategy's systematic approach to risk management.
Tax considerations add complexity for taxable accounts. Frequent rebalancing generates taxable events that can erode after-tax returns, particularly for high-income investors facing elevated capital gains rates. Tax-advantaged accounts like 401(k)s and IRAs provide ideal vehicles for All Weather implementation, eliminating tax friction from rebalancing activities.
Capital Requirements and Cost Analysis
Comprehensive cost analysis reveals the capital requirements for effective All Weather implementation. Annual expenses include management fees for each ETF, transaction costs from rebalancing, and bid-ask spreads from trading less liquid securities.
ETF expense ratios vary significantly across asset classes. The SPDR S&P 500 ETF charges 0.09% annually, while the iShares 20+ Year Treasury Bond ETF charges 0.20%. The iShares 7-10 Year Treasury Bond ETF charges 0.15%, the Schwab US TIPS ETF charges 0.05%, and the iPath Bloomberg Commodity Index ETF charges 0.75%. Weighted by the All Weather allocations, total expense ratios average approximately 0.19% annually.
Transaction costs depend heavily on broker selection and account size. Premium brokers like Interactive Brokers charge $1-2 per trade, resulting in $20-40 annually for quarterly rebalancing. Discount brokers may charge higher per-trade fees but offer commission-free ETF trading for selected funds. Zero-commission brokers eliminate explicit trading costs but often impose wider bid-ask spreads that function as hidden fees.
Bid-ask spreads represent the difference between buying and selling prices for each security. Highly liquid ETFs like SPY maintain spreads of 1-2 basis points, while less liquid commodity ETFs may exhibit spreads of 5-10 basis points. These costs accumulate through rebalancing activities, typically totaling 10-15 basis points annually.
For a $100,000 portfolio, total annual costs including expense ratios, transaction fees, and spreads typically range from 0.35% to 0.45%, or $350-450 annually. These costs decline as a percentage of assets as portfolio size increases, reaching approximately 0.25% for portfolios exceeding $250,000.
Comparing costs to potential benefits reveals the strategy's value proposition. Historical analysis suggests the All Weather approach reduces portfolio volatility by 35-40% compared to stock-heavy allocations while maintaining competitive returns. This volatility reduction provides substantial value during market stress, potentially preventing behavioral mistakes that destroy long-term wealth.
Alternative Implementations and Customizations
While the original All Weather allocation provides an excellent starting point, investors may consider modifications based on personal circumstances, market conditions, or geographic considerations. International diversification represents one potential enhancement, adding exposure to developed and emerging market bonds and equities.
Geographic customization becomes important for non-US investors. European investors might replace US Treasury bonds with German Bunds or broader European government bond indices. Currency hedging decisions add complexity but may reduce volatility for investors whose spending occurs in non-dollar currencies.
Tax-location strategies optimize after-tax returns by placing tax-inefficient assets in tax-advantaged accounts while holding tax-efficient assets in taxable accounts. TIPS and commodity ETFs generate ordinary income taxed at higher rates, making them candidates for retirement account placement. Stock ETFs generate qualified dividends and long-term capital gains taxed at lower rates, making them suitable for taxable accounts.
Some investors prefer implementing the bond allocation through individual Treasury securities rather than ETFs, eliminating management fees while gaining precise maturity control. Treasury auctions provide access to new securities without bid-ask spreads, though this approach requires more sophisticated portfolio management.
Factor-based implementations replace broad market ETFs with factor-tilted alternatives. Value-tilted stock ETFs, quality-focused bond ETFs, or momentum-based commodity indices may enhance returns while maintaining the All Weather framework's diversification benefits. However, these modifications introduce additional complexity and potential tracking error.
Conclusion: Embracing the Long Game
The All Weather Strategy represents more than an investment approach; it embodies a philosophy of financial resilience that prioritizes sustainable wealth building over speculative gains. In an investment landscape increasingly dominated by algorithmic trading, meme stocks, and cryptocurrency volatility, Dalio's methodical approach offers a refreshing alternative grounded in economic theory and historical evidence.
The strategy's greatest strength lies not in its potential for extraordinary returns, but in its capacity to deliver reasonable returns across diverse economic environments while protecting capital during market stress. This characteristic becomes increasingly valuable as investors approach or enter retirement, when portfolio preservation assumes greater importance than aggressive growth.
Implementation requires discipline, adequate capital, and realistic expectations. The strategy will underperform growth-oriented approaches during bull markets while providing superior downside protection during bear markets. Investors must embrace this trade-off consciously, understanding that the strategy optimizes for long-term wealth building rather than short-term performance.
The All Weather Strategy Indicator democratizes access to institutional-quality portfolio management, providing individual investors with tools previously available only to wealthy families and institutions. By automating allocation tracking, rebalancing signals, and performance analysis, the indicator removes much of the complexity that has historically limited sophisticated strategy implementation.
For investors seeking a systematic, evidence-based approach to long-term wealth building, the All Weather Strategy provides a compelling framework. Its emphasis on diversification, risk management, and behavioral discipline aligns with the fundamental principles that have created lasting wealth throughout financial history. While the strategy may not generate headlines or inspire cocktail party conversations, it offers something more valuable: a reliable path toward financial security across all economic seasons.
As Dalio himself notes, "The biggest mistake investors make is to believe that what happened in the recent past is likely to persist, and they design their portfolios accordingly." The All Weather Strategy's enduring appeal lies in its rejection of this recency bias, instead embracing the uncertainty of markets while positioning for success regardless of which economic season unfolds.
STEP-BY-STEP INDICATOR SETUP GUIDE
Setting up the All Weather Strategy Indicator requires careful attention to each configuration parameter to ensure optimal implementation. This comprehensive setup guide walks through every setting and explains its impact on strategy performance.
Initial Setup Process
Begin by adding the indicator to your TradingView chart. Search for "Ray Dalio's All Weather Strategy" in the indicator library and apply it to any chart. The indicator operates independently of the underlying chart symbol, drawing data directly from the five required ETFs regardless of which security appears on the chart.
Portfolio Configuration Settings
Start with the Portfolio Capital input, which drives all subsequent calculations. Enter your exact investable capital, ranging from $1,000 to $10,000,000. This input determines share quantities, trade recommendations, and performance calculations. Conservative recommendations suggest minimum capitals of $50,000 for basic implementation or $100,000 for optimal precision.
Select your Portfolio Start Date carefully, as this establishes the baseline for all performance calculations. Choose the date when you actually began implementing the All Weather Strategy, not when you first learned about it. This date should reflect when you first purchased ETFs according to the target allocation, creating realistic performance tracking.
Choose your Rebalancing Frequency based on your cost structure and precision preferences. Monthly rebalancing provides tighter allocation control but increases transaction costs. Quarterly rebalancing offers the optimal balance for most investors between allocation precision and cost control. The indicator automatically detects appropriate trading days regardless of your selection.
Set the Rebalancing Threshold based on your tolerance for allocation drift and transaction costs. Conservative investors preferring tight control should use 1-2% thresholds, while cost-conscious investors may prefer 3-5% thresholds. Lower thresholds maintain more precise allocations but trigger more frequent trading.
Display Configuration Options
Enable Show All Weather Calculator to display the comprehensive dashboard containing portfolio values, allocations, and performance metrics. This dashboard provides essential information for portfolio management and should remain enabled for most users.
Show Economic Environment displays current economic regime classification based on growth and inflation indicators. While simplified compared to Bridgewater's sophisticated models, this feature provides useful context for understanding current market conditions.
Show Rebalancing Signals highlights when portfolio allocations drift beyond your threshold settings. These signals use color coding to indicate urgency levels, helping prioritize rebalancing activities.
Advanced Label Customization
Configure Show Rebalancing Labels based on your need for chart annotations. These labels mark important portfolio events and can provide valuable historical context, though they may clutter charts during extended time periods.
Select appropriate Label Detail Levels based on your experience and information needs. "None" provides minimal symbols suitable for experienced users. "Basic" shows portfolio values at key events. "Detailed" provides complete trading instructions including exact share quantities for each ETF.
Appearance Customization
Choose Color Themes based on your aesthetic preferences and trading style. "Gold" reflects traditional wealth management appearance, while "EdgeTools" provides modern professional styling. "Behavioral" uses psychologically informed colors that reinforce disciplined decision-making.
Enable Dark Mode Optimization if using TradingView's dark theme for optimal readability and contrast. This setting automatically adjusts all colors and transparency levels for the selected theme.
Set Main Line Width based on your chart resolution and visual preferences. Higher width values provide clearer allocation lines but may overwhelm smaller charts. Most users prefer width settings of 2-3 for optimal visibility.
Troubleshooting Common Setup Issues
If the indicator displays "Data not available" messages, verify that all five ETFs (SPY, TLT, IEF, DJP, SCHP) have valid price data on your selected timeframe. The indicator requires daily data availability for all components.
When rebalancing signals seem inconsistent, check your threshold settings and ensure sufficient time has passed since the last rebalancing event. The indicator only triggers signals on designated rebalancing days (first trading day of each period) when drift exceeds threshold levels.
If labels appear at unexpected chart locations, verify that your chart displays percentage values rather than price values. The indicator forces percentage formatting and 0-40% scaling for optimal allocation visualization.
COMPREHENSIVE BIBLIOGRAPHY AND FURTHER READING
PRIMARY SOURCES AND RAY DALIO WORKS
Dalio, R. (2017). Principles: Life and work. New York: Simon & Schuster.
Dalio, R. (2018). A template for understanding big debt crises. Bridgewater Associates.
Dalio, R. (2021). Principles for dealing with the changing world order: Why nations succeed and fail. New York: Simon & Schuster.
BRIDGEWATER ASSOCIATES RESEARCH PAPERS
Jensen, G., Kertesz, A. & Prince, B. (2010). All Weather strategy: Bridgewater's approach to portfolio construction. Bridgewater Associates Research.
Prince, B. (2011). An in-depth look at the investment logic behind the All Weather strategy. Bridgewater Associates Daily Observations.
Bridgewater Associates. (2015). Risk parity in the context of larger portfolio construction. Institutional Research.
ACADEMIC RESEARCH ON RISK PARITY AND PORTFOLIO CONSTRUCTION
Ang, A. & Bekaert, G. (2002). International asset allocation with regime shifts. The Review of Financial Studies, 15(4), 1137-1187.
Bodie, Z. & Rosansky, V. I. (1980). Risk and return in commodity futures. Financial Analysts Journal, 36(3), 27-39.
Campbell, J. Y. & Viceira, L. M. (2001). Who should buy long-term bonds? American Economic Review, 91(1), 99-127.
Clarke, R., De Silva, H. & Thorley, S. (2013). Risk parity, maximum diversification, and minimum variance: An analytic perspective. Journal of Portfolio Management, 39(3), 39-53.
Fama, E. F. & French, K. R. (2004). The capital asset pricing model: Theory and evidence. Journal of Economic Perspectives, 18(3), 25-46.
BEHAVIORAL FINANCE AND IMPLEMENTATION CHALLENGES
Kahneman, D. & Tversky, A. (1979). Prospect theory: An analysis of decision under risk. Econometrica, 47(2), 263-292.
Thaler, R. H. & Sunstein, C. R. (2008). Nudge: Improving decisions about health, wealth, and happiness. New Haven: Yale University Press.
Montier, J. (2007). Behavioural investing: A practitioner's guide to applying behavioural finance. Chichester: John Wiley & Sons.
MODERN PORTFOLIO THEORY AND QUANTITATIVE METHODS
Markowitz, H. (1952). Portfolio selection. The Journal of Finance, 7(1), 77-91.
Sharpe, W. F. (1964). Capital asset prices: A theory of market equilibrium under conditions of risk. The Journal of Finance, 19(3), 425-442.
Black, F. & Litterman, R. (1992). Global portfolio optimization. Financial Analysts Journal, 48(5), 28-43.
PRACTICAL IMPLEMENTATION AND ETF ANALYSIS
Gastineau, G. L. (2010). The exchange-traded funds manual. 2nd ed. Hoboken: John Wiley & Sons.
Poterba, J. M. & Shoven, J. B. (2002). Exchange-traded funds: A new investment option for taxable investors. American Economic Review, 92(2), 422-427.
Israelsen, C. L. (2005). A refinement to the Sharpe ratio and information ratio. Journal of Asset Management, 5(6), 423-427.
ECONOMIC CYCLE ANALYSIS AND ASSET CLASS RESEARCH
Ilmanen, A. (2011). Expected returns: An investor's guide to harvesting market rewards. Chichester: John Wiley & Sons.
Swensen, D. F. (2009). Pioneering portfolio management: An unconventional approach to institutional investment. Rev. ed. New York: Free Press.
Siegel, J. J. (2014). Stocks for the long run: The definitive guide to financial market returns & long-term investment strategies. 5th ed. New York: McGraw-Hill Education.
RISK MANAGEMENT AND ALTERNATIVE STRATEGIES
Taleb, N. N. (2007). The black swan: The impact of the highly improbable. New York: Random House.
Lowenstein, R. (2000). When genius failed: The rise and fall of Long-Term Capital Management. New York: Random House.
Stein, D. M. & DeMuth, P. (2003). Systematic withdrawal from retirement portfolios: The impact of asset allocation decisions on portfolio longevity. AAII Journal, 25(7), 8-12.
CONTEMPORARY DEVELOPMENTS AND FUTURE DIRECTIONS
Asness, C. S., Frazzini, A. & Pedersen, L. H. (2012). Leverage aversion and risk parity. Financial Analysts Journal, 68(1), 47-59.
Roncalli, T. (2013). Introduction to risk parity and budgeting. Boca Raton: CRC Press.
Ibbotson Associates. (2023). Stocks, bonds, bills, and inflation 2023 yearbook. Chicago: Morningstar.
PERIODICALS AND ONGOING RESEARCH
Journal of Portfolio Management - Quarterly publication featuring cutting-edge research on portfolio construction and risk management
Financial Analysts Journal - Bi-monthly publication of the CFA Institute with practical investment research
Bridgewater Associates Daily Observations - Regular market commentary and research from the creators of the All Weather Strategy
RECOMMENDED READING SEQUENCE
For investors new to the All Weather Strategy, begin with Dalio's "Principles" for philosophical foundation, then proceed to the Bridgewater research papers for technical details. Supplement with Markowitz's original portfolio theory work and behavioral finance literature from Kahneman and Tversky.
Intermediate students should focus on academic papers by Ang & Bekaert on regime shifts, Clarke et al. on risk parity methods, and Ilmanen's comprehensive analysis of expected returns across asset classes.
Advanced practitioners will benefit from Roncalli's technical treatment of risk parity mathematics, Asness et al.'s academic critique of leverage aversion, and ongoing research in the Journal of Portfolio Management.
LE ScannerGENERAL OVERVIEW:
The LE Scanner is a multi-ticker dashboard that scans up to 20 tickers in real time and displays their current trend, price, volume, and key level conditions directly on your chart. It tracks how each ticker interacts with both the Previous Day’s High/Low (PDH/PDL) and Pre-Market High/Low (PMH/PML) to determine whether price is breaking above, below, or remaining inside those levels. The indicator automatically classifies each ticker as Bullish, Bearish, or Neutral based on these break conditions.
This indicator was developed by Flux Charts in collaboration with Ellis Dillinger (Ellydtrades).
What is the purpose of the indicator?:
The LE Scanner helps traders keep track of up to 20 tickers at once without switching between charts. It puts all the key information in one place, including price, daily percentage change, volume, and how each ticker is reacting around the previous day’s and pre-market highs and lows. The layout is simple and easy to read, with progress bars that show where price is relative to those levels. The goal is to save time and make it easier to understand market strength and weakness across your watchlist.
What’s the theory behind the indicator?:
The LE Scanner is built around the idea that key levels define bias. The previous day’s high and low show where the market traded most actively during the prior session, and the pre-market range reveals how price behaved before the open. When a ticker breaks both the previous day’s high and the pre-market high, it shows that buyers are in control. When it breaks both the previous day’s low and the pre-market low, sellers are in control. If neither side has full control, the bias is seen as neutral.
LE SCANNER FEATURES:
Multi-Ticker Dashboard
Key Level Tracking
Trend Classification
Sorting
Customization
Multi-Ticker Dashboard:
The LE Scanner can monitor up to 20 tickers at the same time. Each ticker has its own row in the dashboard showing:
Ticker Name
Current Price
Volume
Daily % Change
PDH Break
PDL Break
PMH Break
PML Break
Trend (bullish, bearish, or neutral)
You can enable or disable each ticker individually, so if you only want to track 5 or 10 tickers, you can simply toggle the rest off. Each ticker input lets you type in any valid ticker that’s available on TradingView.
Ticker Name:
Shows the ticker you selected in your input settings
Current Price:
Displays the latest price of that ticker based on your chart’s selected timeframe.
Volume:
Tracks the total trading volume for the current session.
Daily % Change:
Measures how much price has moved since the previous session’s close.
The remaining elements of the dashboard are explained in full detail throughout the remaining sections of this write-up.
Key Level Tracking:
The core of the LE Scanner is its ability to track and visualize how price interacts with four key levels for every ticker:
Previous Day High (PDH)
Previous Day Low (PDL)
Pre-Market High (PMH)
Pre-Market Low (PML)
These levels are updated automatically and compared to the current market price for each ticker inputted into the indicator. They show you whether the market is staying inside yesterday’s range or expanding beyond it.
🔹Previous Day High (PDH) & Previous Day Low (PDL)
The Previous Day High (PDH) marks where price reached its highest point during the last full trading session, while the Previous Day Low (PDL) marks the lowest point. Together, they define the previous day’s range and help traders understand where price is trading relative to that prior structure.
When the current price of a user-selected ticker moves above the PDH, it signals that buyers are taking control and that the ticker is now trading above yesterday’s range. In the dashboard, this change triggers a 🟢 icon under the “PDH Break” column. Once the PDH Break is confirmed, the opposite PDL Break column for that same ticker becomes blank.
When the current price of the user-selected ticker moves below the PDL, it shows that sellers are taking control and that the ticker is trading below yesterday’s range. In the dashboard, this change triggers a 🔴 icon under the “PDL Break” column. Once the PDL Break is confirmed, the opposite PDH Break column for that same ticker becomes blank.
🔹 Pre-Market High (PMH) & Pre-Market Low (PML)
The Pre-Market High (PMH) and Pre-Market Low (PML) show where price reached its highest and lowest points before the main trading session begins. On most U.S. exchanges, the pre-market session is from 4:00 AM to 9:29 AM Eastern Standard Time (EST), just before the New York session opens at 9:30 AM EST. These levels are important because they reflect how traders positioned themselves during the early morning hours. Many traders use the pre-market session to react to overnight news. The PMH and PML outline that entire pre-market range, showing where buyers and sellers fought for control and where the early balance between the two sides was established before the market opens.
When the current price of a ticker moves above the Pre-Market High, it means buyers are in control and that price has pushed through the top of the pre-market range. In the dashboard, this triggers a 🟢 icon under the “PMH Break” column. Once this break is confirmed, the opposite PML Break column for that ticker becomes blank.
When the current price moves below the Pre-Market Low, it means sellers are in control and that price has fallen beneath the pre-market range. In the dashboard, this triggers a 🔴 icon under the “PML Break” column. Once a PML Break is confirmed, the opposite PMH Break column for that ticker becomes blank.
🔹Progress Bars
The LE Scanner indicator includes progress bars that show how far the current price is from key levels.
When price is between the Previous Day High (PDH) and Previous Day Low (PDL), the progress bar measures price’s distance relative to those two points.
When price is between the Pre-Market High (PMH) and Pre-Market Low (PML), the bar tracks how far price is from those pre-market boundaries.
The closer price gets to either side, the more the bar fills, giving you a quick visual sense of how close a breakout or breakdown might be. A bar that’s nearly full means price is approaching one of the levels, while a shorter bar means it’s still far away from it. By seeing this relationship directly in the dashboard, you can see which tickers are getting ready to test key levels without flipping through multiple charts.
🔹PDH Progress Bar
The PDH progress bar measures how close price is to breaking above the previous day’s high.
When the bar is nearly full, it means the current price is trading just below yesterday’s high.
When the bar is low or mostly empty, it means price is far from the PDH and trading near the middle or lower end of the previous day’s range.
Once price breaks above the PDH, the progress bar is replaced with a green confirmation icon in the PDH Break column.
🔹Previous Day Low (PDL) Progress Bar
The PDL progress bar measures how close price is to breaking below the previous day’s low.
When the bar is nearly full, it means the current price is trading just above yesterday’s low.
When the bar is low or mostly empty, it means price is far from the PDL and trading near the middle or upper end of the previous day’s range.
Once price breaks below the PDL, the progress bar is replaced with a red confirmation icon in the PDL Break column.
🔹Pre-Market High (PMH) Progress Bar
The PMH progress bar shows how close price is to breaking above the pre-market high.
When the bar is nearly full, it means the current price is trading just below the pre-market high.
When the bar is low or mostly empty, it means price is far from the PMH and trading near the middle or lower end of the pre-market range.
Once price breaks above the PMH, the progress bar is replaced with a green confirmation icon in the PMH Break column.
🔹Pre-Market Low (PML) Progress Bar
The PML progress bar shows how close price is to breaking below the pre-market low.
When the bar is nearly full, it means the current price is trading just above the pre-market low.
When the bar is low or mostly empty, it means price is far from the PML and trading near the middle or upper end of the pre-market range.
Once price breaks below the PML, the progress bar is replaced with a red confirmation icon in the PML Break column.
Trend Classification:
The LE Scanner automatically classifies each user-inputted ticker as bullish, bearish, or neutral based on how price is interacting with its key levels.
Each trend type follows a specific set of conditions and is displayed in its own column under Trend on the dashboard.
🔹 Bullish Trend
A bullish trend occurs when price has broken above both the Previous Day High (PDH) and the Pre-Market High (PMH). This shows that buyers are in full control and that the ticker is trading firmly above the prior session’s and pre-market range.
When this condition is met, the Trend column displays a green background with an upward-facing triangle icon (▲).
🔹 Bearish Trend
A bearish trend occurs when price has broken below both the Previous Day Low (PDL) and the Pre-Market Low (PML). This indicates that sellers are in control and that the ticker is trading firmly below the prior session’s and pre-market range.
When this happens, the Trend column switches to a red background with a downward-facing triangle icon (▼).
🔹 Neutral Trend
A neutral trend occurs when price is trading inside the range, meaning it hasn’t broken above the PDH/PMH or below the PDL/PML. This indicates that neither bulls nor bears has clear control, and the ticker is consolidating between the prior session’s and pre-market range.
When this condition is active, the Trend column appears with a warning sign icon (⚠️). This helps distinguish tickers that are still forming setups from those that have already shown decisive strength or weakness.
Sorting:
The LE Scanner includes a built-in sorting feature that lets you reorder the dashboard in either descending or ascending order based on one of four metrics:
% Change
Volume
Price
Trend
Sorting is handled directly in the indicator settings, where you can toggle “Sort By” and then select your preferred Sort By criteria and Order (Ascending or Descending). When enabled, the dashboard automatically repositions every ticker to match the selected sorting method.
🔹 % Change Sorting
When you sort by % Change, the dashboard ranks tickers based on their daily percentage movement relative to the previous session’s close.
If you choose descending order, the biggest gainers appear at the top.
If you choose ascending order, the biggest decliners appear at the top.
🔹 Volume Sorting
When you sort by Volume, the dashboard arranges tickers based on their total traded volume for the current session.
If you choose descending order, the highest-volume tickers appear at the top.
If you choose ascending order, the lowest-volume tickers appear at the top.
🔹 Price Sorting
When you sort by Price, the dashboard arranges tickers by their current market price.
If you choose descending order, the highest-priced tickers appear at the top.
If you choose ascending order, the lowest-priced tickers appear at the top.
🔹 Trend Sorting
When you sort by Trend, the dashboard organizes tickers based on their directional classification.
If you choose descending order, bullish tickers appear first, followed by neutral and bearish.
If you choose ascending order, bearish tickers appear first, followed by neutral and bullish.
Customization:
The LE Scanner includes several settings that let you customize how the dashboard appears on your chart. All visual and positional elements can be adjusted to fit your personal layout preferences.
🔹 Dashboard Position
You can move the dashboard anywhere on your chart using the “Table Position” setting. Options include:
Bottom-Center
Bottom-Left
Bottom-Right
Middle-Center
Middle-Left
Middle-Right
Top-Center
Top-Left
Top-Right
🔹 Dashboard Size
The dashboard size can be adjusted to be larger or smaller. Users can choose between the following options:
Tiny
Small
Normal
Large
Huge
🔹 Color Customization
All color elements in the dashboard are customizable. You can change the following:
Background Color
Border Color
Frame Color
Text Color
Bullish Trend Color
Bearish Trend Color
Important Notes:
Because the LE Scanner tracks multiple tickers and updates all data in real time, it performs several background calculations at once. On rare occasions, this can cause the following issue:
Computation Error:
Scanning up to 20 tickers at the same time requires multiple request.security() calls. This process is resource-intensive and can sometimes trigger a calculation timeout message in TradingView. If this occurs, simply force the indicator to refresh by changing one of its settings (for example, toggling a ticker off and back on) or by removing and re-adding the indicator to your chart.
Uniqueness:
The LE Scanner is unique because it combines real-time multi-ticker tracking, sortable data, and visual feedback into one tool. It can track up to 20 tickers simultaneously, automatically sort them by % change, volume, price, or trend. The built-in progress bars provide a clear visual of how close price is to breaking key levels, while the trend classification instantly shows whether each ticker is bullish, bearish, or neutral.
AlgoCados x ICT ToolkitAlgoCados x ICT Toolkit is a TradingView tool designed to integrate ICT (Inner Circle Trader) Smart Money Concepts (SMC) into a structured trading framework.
It provides traders with institutional liquidity insights, precise price level tracking, and session-based analysis, making it an essential tool for intraday, swing, and position trading.
Optimized for Forex, Futures, and Crypto, this toolkit offers multi-timeframe liquidity tracking, killzone mapping, RTH analysis, standard deviation projections, and dynamic price level updates, ensuring traders stay aligned with institutional market behavior.
# Key Features
Multi-Timeframe Institutional Price Levels
The indicator provides a structured approach to analyzing liquidity and market structure across different time horizons, helping traders understand institutional order flow.
- Previous Day High/Low (PDH/PDL) – Tracks the Previous Day’s High/Low, crucial for intraday liquidity analysis.
- Previous Week High/Low (PWH/PWL) – Monitors the Previous Week’s High/Low, aiding in higher timeframe liquidity zone tracking.
- Previous Month High/Low (PMH/PML) – Highlights the Previous Month’s High/Low, critical for swing trading and long-term bias confirmation.
- True Day Open (TDO) – Marks the NY Midnight Opening Price, providing a reference point for intraday bias and liquidity movements.
- Automatic Level Cleanup – When enabled. pxHigh/pxLow levels gets automatically deleted when raided, keeping the chart clean and focused on valid liquidity zones.
- Monthly, Weekly, Daily Open Levels – Identifies HTF price action context, allowing traders to track institutional order flow and potential liquidity draws.
# Regular Trading Hours (RTH) High, Low & Mid-Equilibrium (EQ)
For futures traders, the toolkit accurately identifies RTH liquidity zones to align with institutional trading behavior.
- RTH High/Low (RTH H/L) – Defines the RTH Gap high and low dynamically, marking key liquidity levels.
- RTH Equilibrium (EQ) – Calculates the midpoint of the RTH range, acting as a mean reversion level where price often reacts.
# Killzones & Liquidity Mapping
The indicator provides a time-based liquidity structure that helps traders anticipate market movements during high-impact trading windows.
ICT Killzones (Visible on 30-minute timeframe or lower)
- Asia Killzone (Asia) – Tracks overnight liquidity accumulation.
- London Open Killzone (LOKZ) – Marks early European liquidity grabs.
- New York Killzone (NYKZ) – Captures US session volatility.
- New York PM Session (PMKZ) – Available only for futures markets, tracking late-day liquidity shifts.
Forex-Specific Killzones (Visible on 30-minute timeframe or lower)
- London Close Killzone (LCKZ) – Available only for Forex, marks the European end of Day liquidity Points of Interests (POI).
- Central Bank Dealers Range (CBDR) – Available only for Forex, providing a liquidity framework used by central banks.
- Flout (CBDR + Asian Range) – Available only for Forex, extending CBDR with Asian session liquidity behavior.
- Killzone History Option – When enabled, Killzones remain visible beyond the current day; otherwise, they reset daily.
- Customizable Killzone Boxes – Modify opacity, colors, and border styles for seamless integration into different trading styles.
CME_MINI:NQH2025 FOREXCOM:EURUSD
# Standard Deviation (STDV) Liquidity Projections
A statistical approach to forecasting price movements based on Standard Deviations of HOTD (High of the Day) and LOTD (Low of the Day).
- Asia, CBDR, and Flout STDV Calculations (Visible on 30-minute timeframe or lower) – Predicts liquidity grabs based on price expansion behavior.
- Customizable Display Modes – Choose between Compact (e.g., "+2.5") or Verbose (e.g., "Asia +2.5") labels.
- Real-Time STDV Updates – Projections dynamically adjust as new price data is formed, allowing traders to react to developing market conditions.
CME_MINI:NQH2025
# Daily Session Dividers
- Visualizes Trading Days (Visible on 1-hour timeframe or lower) – Helps segment the trading session for better structure analysis.
- Daily Divider History Option – When enabled, dividers remain visible beyond the current trading week; otherwise, they reset weekly.
# Customization & User Experience
- Flexible Label Options – Adjust label size, font type, and color for improved readability.
- Intraday-Optimized Data – Killzones (30m or lower), STDV (30m or lower), and Daily Dividers (1H or lower) ensure efficient use of chart space.
- Configurable Line Styles – Customize solid, dotted, or dashed styles for various levels, making charts aesthetically clean and data-rich.
# Usage & Configurations
The AlgoCados x ICT Toolkit is designed to seamlessly fit different trading methodologies.
Scalping & Intraday Trading
- Track PDH/PDL levels for liquidity sweeps and market reversals.
- Utilize Killzones & Session Open levels to identify high-probability entry zones.
- Analyze RTH High/Low & Mid-EQ for potential liquidity targets and reversals.
- Enable STDV projections for potential price expansion and reversals.
Swing & Position Trading
- Use PWH/PWL and PMH/PML levels to determine HTF liquidity shifts.
- Monitor RTH Gap, TDO, and session liquidity markers for trade confirmation.
- Combine HTF bias with LTF liquidity structures for optimized entries and exits.
# Inputs & Configuration Options
Customizable Parameters
- Offset Adjustment – Allows users to shift displayed data horizontally for better visibility.
- Killzone Box Styling – Customize colors, opacity, and border styles for session boxes.
- Session Dividers – Modify line styles and colors for better time segmentation.
- Killzone & Daily Divider History Toggle – Enables users to view past killzones and dividers instead of resetting them daily/weekly.
- Label Formatting – Toggle between Compact and Verbose display modes for streamlined analysis.
# Advanced Features
Real-Time Data Processing & Dynamic Object Management
- Auto Cleanup of pxLevels – Prevents clutter by removing invalidated levels upon liquidity raids.
- Session History Control – Users can toggle historical data for daily dividers and killzones to maintain a clean chart layout.
- Daily & Weekly Resets – Ensures accurate session tracking by resetting daily dividers at the start of each new trading week.
CME_MINI:NQH2025
# Example Use Cases
- Day Traders & Scalpers – Utilize Killzones, PDH/PDL, DO and TDO levels for precise liquidity-based trading opportunities.
- Swing Traders – Leverage HTF Open Levels, PWH/PWL liquidity mapping, and TDO for trend-based trade execution.
- Futures Traders – Optimize trading with RTH High/Low, Mid-EQ, and PMKZ for session liquidity tracking.
- Forex Traders – Use CBDR, Flout, and session liquidity mapping to align with institutional order flow.
CME_MINI:ESH2025
"By integrating institutional concepts, liquidity mapping, and smart money methodologies, the AlgoCados x ICT Toolkit empowers traders with a data-driven approach to market inefficiencies and liquidity pools."
# Disclaimer
This tool is designed to assist in trading decisions but should be used in conjunction with other analysis methods and proper risk management. Trading involves significant risk, and traders should ensure they understand market conditions before executing trades.
Fibonacci Optimal Entry Zone [OTE] (Zeiierman)█ Overview
Fibonacci Optimal Entry Zone (Zeiierman) is a high-precision market structure tool designed to help traders identify ideal entry zones during trending markets. Built on the principles of Smart Money Concepts (SMC) and Fibonacci retracements, this indicator highlights key areas where price is most likely to react — specifically within the "Golden Zone" (between the 50% and 61.8% retracement).
It tracks structural pivot shifts (CHoCH) and dynamically adjusts Fibonacci levels based on real-time swing tracking. Whether you're trading breakouts, pullbacks, or optimal entries, this tool brings unparalleled clarity to structure-based strategies.
Ideal for traders who rely on confluence, this indicator visually synchronizes swing highs/lows, market structure shifts, Fibonacci retracement levels, and trend alignment — all without clutter or lag.
⚪ The Structural Assumption
Price moves in waves, but key retracements often lead to continuation or reversal — especially when aligned with structure breaks and trend shifts.
The Optimal Entry Zone captures this behavior by anchoring Fibonacci levels between recent swing extremes. The most powerful area — the Golden Zone — marks where institutional re-entry is likely, providing traders with a sniper-like roadmap to structure-based entries.
█ How It Works
⚪ Structure Tracking Engine
At its core, the indicator detects pivots and classifies trend direction:
Structure Period – Determines the depth of pivots used to detect swing highs/lows.
CHoCH – Break of structure logic identifies where the trend shifts or continues, marked visually on the chart.
Bullish & Bearish Modes – Independently toggle uptrend and downtrend detection and styling.
⚪ Fibonacci Engine
Upon each confirmed structural shift, Fibonacci retracement levels are projected between swing extremes:
Custom Levels – Choose which retracements (0.50, 0.618, etc.) are shown.
Real-Time Adjustments – When "Swing Tracker" is enabled, levels and labels update dynamically as price forms new swings.
Example:
If you disable the Swing Tracker, the Golden Level is calculated using the most recent confirmed swing high and low.
If you enable the Swing Tracker, the Golden Level is calculated from the latest swing high or low, making it more adaptive as the trend evolves in real time.
█ How to Use
⚪ Structure-Based Entry
Wait for CHoCH events and use the resulting Fibonacci projection to identify entry points. Enter trades as price taps into the Golden Zone, especially when confluence forms with swing structure or order blocks.
⚪ Real-Time Reaction Tracking
Enable Swing Tracker to keep the tool live — constantly updating zones as price shifts. This is especially useful for scalpers or intraday traders who rely on fresh swing zones.
█ Settings
Structure Period – Number of bars used to define swing pivots. Larger values = stronger structure.
Swing Tracker – Auto-updates fib levels as new highs/lows form.
Show Previous Levels – Keep older fib zones on chart or reset with each structure shift.
-----------------
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.
8EMA/VWAP14 Oscillator w/ Trend Exhaustion Bands8EMA/VWAP14 Oscillator w/ Trend Exhaustion Bands + Performance Screener
Introducing the 8EMA/VWAP14 Oscillator with Trend Exhaustion Bands + Screener Suite - a comprehensive trading system that combines trend identification, momentum analysis, and real-time performance tracking all in one indicator. This system features a four-tier signal approach: early momentum warning dots before anything happens, confirmed entry/exit triangles when it's time to act, a dynamic trend ribbon on your price chart, and adaptive exhaustion bands that adjust to each asset's unique characteristics. The built-in performance tracker shows exactly how well your signals are working - success rates, average time to hit targets, and more - providing clear insight for confident trading decisions. Optimized for daily and weekly timeframes, this suite is suitable for both manual traders and automated strategies.
Aim of the Indicator
The 8EMA/VWAP14 Oscillator with Trend Exhaustion Bands is an advanced momentum oscillator system that combines trend identification, momentum analysis, and forward-looking performance validation. This comprehensive tool measures the percentage difference between an 8-period Exponential Moving Average and a 14-period Volume Weighted Average Price while providing multiple layers of signal confirmation through visual trend ribbons, momentum shift alerts, and adaptive exhaustion detection.
How to Interpret the Indicator
Visual Trend System: The indicator displays a dynamic ribbon between the 8EMA and 14VWAP lines on the price chart, automatically colored green when EMA8 is above VWAP14 (bullish trend) and red when below (bearish trend), providing instant trend context.
Four-Tier Signal System:
Tiny Green Dots (Below Bars): Early bullish momentum shifts when the oscillator crosses above its adaptive baseline
Green Triangles (Below Bars): Confirmed buy signals when EMA8 crosses above VWAP14
Tiny Red Dots (Above Bars): Early bearish momentum shifts when the oscillator crosses below its adaptive baseline
Red Triangles (Above Bars): Confirmed sell signals when EMA8 crosses below VWAP14
Oscillator Analysis: The separate pane displays the momentum oscillator with a dynamic zero line (thin blue) representing the recent average EMA8/VWAP14 relationship. Trend exhaustion is detected through adaptive bands - orange for potential upside exhaustion and purple for potential downside exhaustion, calculated dynamically based on the oscillator's historical range relative to its adaptive baseline.
Key Settings and Flexibility
Signal Source Customization: Choose from Open, High, Low, Close, OHLC Average, or HL Average to optimize signal sensitivity for different market conditions and trading styles.
Multi-Timeframe Capability: Enable higher timeframe analysis to use signals from longer periods while trading on shorter timeframes, significantly reducing noise and improving signal quality for more reliable entries.
Dynamic Baseline Controls: Adjust the adaptive zero line calculation period (5-100 bars) - shorter periods provide more responsive momentum detection, while longer periods offer smoother trend context and reduced false signals.
Entry Timing Options: "Bar Opening Only" mode ensures signals trigger only at confirmed bar close using realistic entry prices, eliminating mid-bar noise and providing accurate backtesting results for automated trading systems.
Adaptive Exhaustion Detection: Customize lookback periods and threshold multipliers to fine-tune exhaustion sensitivity for different volatility environments and asset classes.
Comprehensive Performance Tracking: Set custom profit targets (1-50%) and maximum holding periods to analyze forward-looking signal effectiveness with real-time success rate monitoring.
Advanced Features and Benefits
Forward-Looking Performance Analytics: Unlike traditional backtesting, this system tracks how often buy signals reach specified profit targets and measures average time to target, providing immediate validation of signal quality across different assets and timeframes.
Adaptive Baseline Technology: The dynamic zero line automatically adjusts to each asset's unique EMA8/VWAP14 relationship patterns, making momentum signals contextually relevant rather than using static thresholds that may not suit all market conditions.
Professional Entry/Exit Tracking: When "Bar Opening Only" is enabled, all performance calculations use actual tradeable prices (next bar's open) rather than theoretical mid-bar prices, ensuring realistic performance expectations.
Visual Performance Dashboard: Real-time table displaying success rate, average bars to target, fastest/slowest target achievement, and active position tracking with complete transparency about timeframe, signal source, and methodology being used.
Integrated Alert System: Comprehensive alerts for both early momentum shifts and confirmed crossover signals, enabling automated trading integration and timely manual intervention.
Best Practices for Timing Entries and Exits
Entry Timing Strategy:
Watch for Early Warning: Monitor tiny green dots as momentum builds - this is your preparation phase
Confirm with Ribbon: Ensure the ribbon color aligns with your intended direction (green for long positions)
Enter on Triangle Signal: Execute entries when confirmed buy triangles appear, using realistic bar opening prices
Avoid Exhaustion Zones: Be cautious entering when the oscillator is near orange (upper) exhaustion bands
Exit Timing Strategy:
Monitor Momentum Shifts: Red dots above bars provide early warning of potential reversals before actual sell signals
Use Exhaustion Bands: Consider partial profit-taking when oscillator reaches exhaustion zones (orange/purple bands)
Confirm with Sell Signals: Exit positions when red triangles appear, especially if preceded by bearish momentum dots
Time-Based Exits: Utilize the "Max Bars to Target" setting to avoid holding losing positions indefinitely
Risk Management Integration:
Position Sizing: Use success rate metrics to adjust position sizes - higher success rates may warrant larger positions
Multi-Timeframe Confluence: Combine daily signals with weekly context for highest probability setups
Avoid False Signals: Wait for momentum dots before triangles for stronger signal confirmation, reducing whipsaw trades
Optimal Market Conditions:
Trending Markets: Ribbon provides clear directional bias - trade in direction of ribbon color
Range-Bound Markets: Focus on exhaustion bands for reversal opportunities near dynamic support/resistance levels
Volatile Conditions: Use higher timeframe settings to filter noise and focus on more significant moves
Optimal Timeframe Usage
This indicator achieves exceptional performance on Daily timeframes and delivers superior results on Weekly timeframes. Weekly analysis is particularly powerful for position trading and swing strategies, as the adaptive exhaustion bands and momentum shifts have greater statistical significance over extended periods. The ribbon visualization becomes especially valuable on longer timeframes, clearly delineating major trend phases while filtering out intraday noise that can plague shorter-term analysis.
Alternative Applications
Multi-Timeframe Confluence System: Use weekly signals for trend direction while executing entries on daily timeframes, combining the indicator's momentum dots and triangles across different time horizons for high-probability setups.
Automated Trading Integration: The indicator's comprehensive alert system and realistic entry tracking make it ideal for automated trading platforms, with clear signal hierarchy and performance validation built into the system.
Risk-Adjusted Position Sizing: Utilize real-time success rate data and average holding period metrics to dynamically adjust position sizes based on current market effectiveness of the strategy.
Market Regime Detection: The ribbon color changes and exhaustion band interactions help identify when markets transition between trending and ranging conditions, allowing strategy adaptation accordingly.
Performance Validation Tool: Test signal effectiveness across different assets, timeframes, and market conditions before committing capital, using the forward-looking analytics to validate strategy assumptions.
Conclusion
The 8EMA/VWAP14 Oscillator with Trend Exhaustion Bands represents a comprehensive trading system that bridges the gap between manual analysis and automated execution. Its multi-layered approach provides both leading momentum indicators and lagging confirmation signals, while the adaptive baseline technology ensures relevance across different market conditions and asset classes. The integration of visual trend ribbons, performance analytics, and flexible timing controls makes it suitable for both discretionary traders seeking enhanced market insight and systematic traders requiring robust signal validation for automated strategies.






















