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.
Search in scripts for "track"
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.
Power Play Signal Indicator [Masky18]Power Play Signal Indicator
The Power Play Signal Indicator is a sophisticated custom trading strategy designed to identify high-probability breakout and breakdown opportunities by combining consolidation detection, trend alignment, volume analysis, and relative strength ranking. Unlike simple mashups of existing indicators, this script integrates multiple technical concepts into a cohesive strategy that helps traders capitalize on market momentum with precision.
What Makes This Indicator Unique?
The PowerPlay Signal Indicator is not just a combination of existing indicators; it is a custom-built strategy that uses original logic to filter out low-probability setups and focus on high-quality trading opportunities. Here’s how it works:
Consolidation Detection:
The script identifies consolidation zones by analyzing price action over a user-defined period (default: 6 bars). It calculates the high, low, and midpoint of the consolidation range and ensures the price stays within a specified percentage range (default: 13%).
Consolidations are classified as Tight, Loose, or Okay, helping traders gauge the strength of the potential breakout or breakdown.
Breakout & Breakdown Logic:
Breakouts and breakdowns are confirmed using a combination of:
Price Action: The script checks if the price closes above the consolidation high (breakout) or below the consolidation low (breakdown).
Volume Analysis: A significant volume spike (default: 20% increase) is required to confirm the move.
MACD & Moving Averages: The script uses MACD and moving averages (50-day and 200-day) to ensure the breakout/breakdown aligns with the prevailing trend.
Trend Alignment:
The script ensures trades are aligned with the long-term trend by using:
50-day SMA and 200-day SMA to confirm uptrends or downtrends.
150-day SMA as an additional filter to ensure the trend is strong.
52-week high/low conditions to ensure the price is in a favorable position relative to its historical range.
Relative Strength Ranking:
The script compares the asset’s performance against a benchmark asset (e.g., SPY) to ensure it is outperforming the market. This is done using a customizable Relative Strength (RS) Threshold (default: 70).
Golden Candle Signals:
For high-probability setups, the script identifies Golden Candles—strong breakout or breakdown candles with:
Large price movement (default: 7.5% to 12.5% candle size).
High volume (default: 2x the average consolidation volume).
Alignment with MACD and moving averages.
Risk Management:
The script provides stop loss, trailing stop, and take profit levels based on:
ATR (Average True Range): Dynamic stop loss levels are calculated using ATR (default: 14-period ATR with a 2x multiplier).
Trailing Stop Percentage: User-defined trailing stop (default: 2%).
Take Profit Percentage: User-defined take profit (default: 5%).
Performance Tracking:
The script includes a Performance Table that tracks:
Total breakouts and breakdowns.
Successful and failed trades.
Win rates for breakouts and breakdowns.
Golden candle signals.
How Does It Work?
The PowerPlay Signal Indicator combines the following key components to generate signals:
Consolidation Detection:
The script calculates the high, low, and midpoint of the consolidation range over a user-defined period.
It ensures the price stays within a specified percentage range (default: 13%) to confirm consolidation.
Breakout/Breakdown Confirmation:
A breakout is confirmed when:
The price closes above the consolidation high.
Volume increases by at least 20%.
MACD is positive and above the signal line.
The price is above the 50-day and 200-day SMAs.
A breakdown is confirmed when:
The price closes below the consolidation low.
Volume increases by at least 20%.
MACD is negative and below the signal line.
The price is below the 50-day and 200-day SMAs.
Golden Candle Signals:
Golden Candles are identified when:
The candle size is between 7.5% and 12.5%.
Volume is at least 2x the average consolidation volume.
The candle aligns with the prevailing trend and MACD.
Risk Management:
Stop loss levels are calculated using ATR (default: 14-period ATR with a 2x multiplier).
Trailing stop and take profit levels are based on user-defined percentages.
How to Use the Indicator
Input Parameters:
Consolidation Periods: Set the number of bars to analyze for consolidation (default: 6).
Maximum Consolidation Range: Define the maximum percentage range for consolidation (default: 13%).
Stop Loss Factor: Adjust the stop loss multiplier based on the midpoint of the consolidation range (default: 0.985).
RS Threshold: Set the relative strength threshold for trend alignment (default: 70).
Comparison Asset: Enable comparison with a benchmark asset (e.g., SPY) to ensure the asset is outperforming the market.
Trailing Stop Percentage: Set the trailing stop percentage (default: 2%).
Take Profit Percentage: Set the take profit percentage (default: 5%).
Time Exit Bars: Define the maximum number of bars to hold a trade (default: 10).
Interpreting Signals:
Breakout Signal: A green label ("BO") appears when a breakout is detected.
Breakdown Signal: A red label ("BD") appears when a breakdown is detected.
Golden Candle Signal: A gold medal icon (🥇) appears for high-probability setups.
Performance Table:
The performance table displays the number of trades, successful trades, failed trades, and win rates for breakouts and breakdowns.
Alerts:
Enable alerts for breakouts, breakdowns, and golden candles to stay informed about potential trading opportunities.
Why Choose the PowerPlay Signal Indicator?
Original Logic: Combines consolidation detection, trend alignment, volume analysis, and relative strength ranking into a unique strategy.
High-Probability Signals: Focuses on high-quality setups with strong volume and trend alignment.
Risk Management: Built-in stop loss, trailing stop, and take profit options help you manage risk effectively.
Performance Tracking: Tracks trade outcomes and win rates to help you refine your strategy.
Customizable: Fully adjustable inputs allow you to adapt the indicator to your trading style and market conditions.
Daily High/Low Levels with mitigationThis Pine Script script defines a TradingView indicator named "Daily High/Low Levels" designed to track and display the daily high and low levels of a trading session, with added functionality for marking levels as mitigated when certain conditions are met. Here's a breakdown of its functionality:
Key Features
Session Start Time: The script allows you to specify a custom session start time in 24-hour format. This ensures the levels align with your trading session preferences.
Daily Highs and Lows:
Tracks the high and low levels for each session.
Retains the highs and lows for a configurable number of previous days.
Visualization:
Creates horizontal lines for each session's high and low levels.
Supports customization of line colors and styles.
Mitigation Tracking:
Monitors whether a high or low level has been "mitigated" (touched or exceeded by subsequent price action).
Changes the line style and color to indicate mitigation.
Provides an alert when mitigation occurs.
Configurable Extensions:
Lines can be extended beyond mitigation or stopped at the bar index where mitigation occurs, depending on user preference.
Efficient Array Management:
Uses arrays to manage daily highs, lows, their respective indices, and lines.
Ensures the size of stored data does not exceed the configured limit (daysToTrack).
Alerts:
Sends alerts when high or low levels are mitigated, which can be used for trading decisions.
Inputs
Session Start Hour/Minute: Defines when a new session starts.
Days to Track: Sets the number of previous days to display high/low levels.
Colors: Allows customization of line colors for unmitigated and mitigated levels.
Extend Lines: Toggles whether lines should extend past the mitigation point.
Code Highlights
New Session Detection: The script detects the start of a new session based on the configured session start time and resets daily highs/lows.
Line Management: Horizontal rays are created for highs and lows, and mitigated lines are updated with a dashed style and faded color.
Mitigation Logic: The script checks whether current price action exceeds stored high or low levels and updates their status and appearance accordingly.
Memory Management: Ensures the size of the arrays (highs, lows, lines) does not exceed the configured daysToTrack, deleting the oldest elements as necessary.
This indicator is highly customizable and useful for traders who want to track and analyze daily support and resistance levels, incorporating mitigation as a dynamic feature.
Range Trading StrategyOVERVIEW
The Range Trading Strategy is a systematic trading approach that identifies price ranges
from higher timeframe candles or trading sessions, tracks pivot points, and generates
trading signals when range extremes are mitigated and confirmed by pivot levels.
CORE CONCEPT
The strategy is based on the principle that when a candle (or session) closes within the
range of the previous candle (or session), that previous candle becomes a "range" with
identifiable high and low extremes. When price breaks through these extremes, it creates
trading opportunities that are confirmed by pivot levels.
RANGE DETECTION MODES
1. HTF (Higher Timeframe) Mode:
Automatically selects a higher timeframe based on the current chart timeframe
Uses request.security() to fetch HTF candle data
Range is created when an HTF candle closes within the previous HTF candle's range
The previous HTF candle's high and low become the range extremes
2. Sessions Mode:
- Divides the trading day into 4 sessions (UTC):
* Session 1: 00:00 - 06:00 (6 hours)
* Session 2: 06:00 - 12:00 (6 hours)
* Session 3: 12:00 - 20:00 (8 hours)
* Session 4: 20:00 - 00:00 (4 hours, spans midnight)
- Tracks high, low, and close for each session
- Range is created when a session closes within the previous session's range
- The previous session's high and low become the range extremes
PIVOT DETECTION
Pivots are detected based on candle color changes (bullish/bearish transitions):
1. Pivot Low:
Created when a bullish candle appears after a bearish candle
Pivot low = minimum of the current candle's low and previous candle's low
The pivot bar is the actual bar where the low was formed (current or previous bar)
2. Pivot High:
Created when a bearish candle appears after a bullish candle
Pivot high = maximum of the current candle's high and previous candle's high
The pivot bar is the actual bar where the high was formed (current or previous bar)
IMPORTANT: There is always only ONE active pivot high and ONE active pivot low at any
given time. When a new pivot is created, it replaces the previous one.
RANGE CREATION
A range is created when:
(HTF Mode) An HTF candle closes within the previous HTF candle's range AND a new HTF
candle has just started
(Sessions Mode) A session closes within the previous session's range AND a new session
has just started
Or Range Can Be Created when the Extreme of Another Range Gets Mitigated and We Have a Pivot low Just Above the Range Low or Pivot High just Below the Range High
Range Properties:
rangeHigh: The high extreme of the range
rangeLow: The low extreme of the range
highStartTime: The timestamp when the range high was actually formed (found by looping
backwards through bars)
lowStartTime: The timestamp when the range low was actually formed (found by looping
backwards through bars)
highMitigated / lowMitigated: Flags tracking whether each extreme has been broken
isSpecial: Flag indicating if this is a "special range" (see Special Ranges section)
RANGE MITIGATION
A range extreme is considered "mitigated" when price interacts with it:
High is mitigated when: high >= rangeHigh (any interaction at or above the level)
Low is mitigated when: low <= rangeLow (any interaction at or below the level)
Mitigation can happen:
At the moment of range creation (if price is already beyond the extreme)
At any point after range creation when price touches the extreme
SIGNAL GENERATION
1. Pending Signals:
When a range extreme is mitigated, a pending signal is created:
a) BEARISH Pending Signal:
- Triggered when: rangeHigh is mitigated
- Confirmation Level: Current pivotLow
- Signal is confirmed when: close < pivotLow
- Stop Loss: Current pivotHigh (at time of confirmation)
- Entry: Short position
Signal Confirmation
b) BULLISH Pending Signal:
- Triggered when: rangeLow is mitigated
- Confirmation Level: Current pivotHigh
- Signal is confirmed when: close > pivotHigh
- Stop Loss: Current pivotLow (at time of confirmation)
- Entry: Long position
IMPORTANT: There is only ever ONE pending bearish signal and ONE pending bullish signal
at any given time. When a new pending signal is created, it replaces the previous one
of the same type.
2. Signal Confirmation:
- Bearish: Confirmed when price closes below the pivot low (confirmation level)
- Bullish: Confirmed when price closes above the pivot high (confirmation level)
- Upon confirmation, a trade is entered immediately
- The confirmation line is drawn from the pivot bar to the confirmation bar
TRADE EXECUTION
When a signal is confirmed:
1. Position Management:
- Any existing position in the opposite direction is closed first
- Then the new position is entered
2. Stop Loss:
- Bearish (Short): Stop at pivotHigh
- Bullish (Long): Stop at pivotLow
3. Take Profit:
- Calculated using Risk:Reward Ratio (default 2:1)
- Risk = Distance from entry to stop loss
- Target = Entry ± (Risk × R:R Ratio)
- Can be disabled with "Stop Loss Only" toggle
4. Trade Comments:
- "Range Bear" for short trades
- "Range Bull" for long trades
SPECIAL RANGES
Special ranges are created when:
- A range high is mitigated AND the current pivotHigh is below the range high
- A range low is mitigated AND the current pivotLow is above the range low
In these cases:
- The pivot value is stored in an array (storedPivotHighs or storedPivotLows)
- A "special range" is created with only ONE extreme:
* If pivotHigh < rangeHigh: Creates a range with rangeHigh = pivotLow, rangeLow = na
* If pivotLow > rangeLow: Creates a range with rangeLow = pivotHigh, rangeHigh = na
- Special ranges can generate signals just like normal ranges
- If a special range is mitigated on the creation bar or the next bar, it is removed
entirely without generating signals (prevents false signals)
Special Ranges
REVERSE ON STOP LOSS
When enabled, if a stop loss is hit, the strategy automatically opens a trade in the
opposite direction:
1. Long Stop Loss Hit:
- Detects when: position_size > 0 AND position_size <= 0 AND low <= longStopLoss
- Action: Opens a SHORT position
- Stop Loss: Current pivotHigh
- Trade Comment: "Reverse on Stop"
2. Short Stop Loss Hit:
- Detects when: position_size < 0 AND position_size >= 0 AND high >= shortStopLoss
- Action: Opens a LONG position
- Stop Loss: Current pivotLow
- Trade Comment: "Reverse on Stop"
The reverse trade uses the same R:R ratio and respects the "Stop Loss Only" setting.
VISUAL ELEMENTS
1. Range Lines:
- Drawn from the time when the extreme was formed to the mitigation point (or current
time if not mitigated)
- High lines: Blue (or mitigated color if mitigated)
- Low lines: Red (or mitigated color if mitigated)
- Style: SOLID
- Width: 1
2. Confirmation Lines:
- Drawn when a signal is confirmed
- Extends from the pivot bar to the confirmation bar
- Bearish: Red, solid line
- Bullish: Green, solid line
- Width: 1
- Can be toggled on/off
STRATEGY SETTINGS
1. Range Detection Mode:
- HTF: Uses higher timeframe candles
- Sessions: Uses trading session boundaries
2. Auto HTF:
- Automatically selects HTF based on current chart timeframe
- Can be disabled to use manual HTF selection
3. Risk:Reward Ratio:
- Default: 2.0 (2:1)
- Minimum: 0.5
- Step: 0.5
4. Stop Loss Only:
- When enabled: Trades only have stop loss (no take profit)
- Trades close on stop loss or when opposite signal confirms
5. Reverse on Stop Loss:
- When enabled: Hitting a stop loss opens opposite trade with stop at opposing pivot
6. Max Ranges to Display:
- Limits the number of ranges kept in memory
- Oldest ranges are purged when limit is exceeded
KEY FEATURES
1. Dynamic Pivot Tracking:
- Pivots update on every candle color change
- Always maintains one high and one low pivot
2. Range Lifecycle:
- Ranges are created when price closes within previous range
- Ranges are tracked until mitigated
- Mitigation creates pending signals
- Signals are confirmed by pivot levels
3. Signal Priority:
- Only one pending signal of each type at a time
- New signals replace old ones
- Confirmation happens on close of bar
4. Position Management:
- Closes opposite positions before entering new trades
- Tracks stop loss levels for reverse functionality
- Respects pyramiding = 1 (only one position per direction)
5. Time-Based Drawing:
- Uses time coordinates instead of bar indices for line drawing
- Prevents "too far from current bar" errors
- Lines can extend to any historical point
USAGE NOTES
- Best suited for trending and ranging markets
- Works on any timeframe, but HTF mode adapts automatically
- Sessions mode is ideal for intraday trading
- Pivot detection requires clear candle color changes
- Range detection requires price to close within previous range
- Signals are generated on bar close, not intra-bar
The strategy combines range identification, pivot tracking, and signal confirmation to
create a systematic approach to trading breakouts and reversals based on price structure, past performance does not in any way predict future performance
ZenAlgo - SessionsZenAlgo - Sessions is a robust TradingView indicator designed to analyze and visualize global trading sessions (Asian, European, and US). By combining session-specific price levels, volume and delta tracking, and historical performance metrics, it delivers actionable insights for session-based trading strategies, simplifying decision-making in dynamic markets.
Features
Session Highlighting: Distinguishes trading sessions with customizable colors for easy identification.
Session Levels: Dynamically calculates and projects five key levels (0%, 25%, 50%, 75%, 100%) to identify support and resistance zones.
Volume and Delta Tracking: Tracks session-specific total volume, inflows, outflows, and delta to assess market sentiment.
Interactive Performance Table: Summarizes recent session metrics, including win/loss percentages, volume, and delta, enabling trend analysis.
Historical Analysis: Retains session performance data for up to 100 sessions, providing insights into long-term trends.
Dynamic Range Projection: Extends session levels into subsequent sessions, maintaining market context.
Customizable Time Zones: Adapts session tracking to any trading environment.
Added Value: Why Is This Indicator Original/Why Shall You Pay for This Indicator?
1. Synergy Between Indicators
Session Levels: Highlight key market zones that guide entry/exit points.
Volume and Delta Metrics: Clarify price action at these levels by identifying buyer/seller dominance.
Performance Metrics: Aggregate historical session data, helping traders identify recurring patterns, sentiment shifts, and session-specific tendencies.
Together, these features amplify one another, creating actionable insights that exceed the value of standalone tools.
2. Comparison to Freely Available Indicators
Traditional indicators like Bollinger Bands, RSI, or Moving Averages operate on broad price action trends. ZenAlgo - Sessions focuses on session-specific patterns, volume dynamics, and real-time updates, delivering more context-specific insights.
By consolidating multiple functionalities into one tool, it eliminates the need for multiple separate indicators, streamlining analysis.
3. Why Pay for This Indicator?
Comprehensive Insights: Delivers session-specific metrics unavailable in standalone tools.
Real-Time Updates: Ensures metrics and levels reflect the latest market movements.
Seamless Integration: Combines price action, volume, and historical performance into a single, intuitive interface.
How It Works
1. Session Detection
Defines sessions for Asia, Europe, and the US based on fixed opening and closing times. Time zones ensure compatibility with global markets, excluding weekends and holidays for relevance.
2. Price Levels
Calculates five levels (0%, 25%, 50%, 75%, 100%) based on session high and low, projecting these into subsequent sessions for continued analysis.
3. Volume and Delta Metrics
Tracks session volume, separating inflows and outflows based on price movements.
Calculates delta to gauge net buying/selling activity.
4. Performance Metrics
Tracks win/loss rates and percentage changes across sessions.
Stores session metrics (volume, delta, win/loss) for up to 100 sessions.
5. Dynamic Visualization
Continuously updates session levels and metrics in real time for actionable insights.
Usage Examples
Support/Resistance Levels: Use session levels, especially the 50% midline, as potential pivot points for trades.
Breakout Analysis: Monitor price action beyond session highs or lows to confirm breakouts.
Volume Trends: Compare session volumes to identify high-activity periods.
Delta Shifts: Assess delta changes to determine market sentiment at key levels.
Session Comparison: Identify which session drives significant activity using the performance table.
Multi-Session Strategies: Plan trades based on extended session levels to anticipate reactions at previously tested zones.
Settings
Asia Session Color: Adjust the highlight color for the Asian session.
Europe Session Color: Customize the color for the European session.
US Session Color: Define the color for the US session.
Time Zone: Set the time zone for session tracking.
Line Transparency: Adjust session line opacity.
Number of Sessions for Total Count: Define how many sessions to analyze in the performance table.
Important Notes
This indicator is a technical analysis tool and does not guarantee trading success. Use it alongside other indicators and fundamental analysis for a comprehensive trading strategy.
Combine with Other Tools: Use complementary indicators such as RSI, Bollinger Bands, or ATR to filter out unreliable signals and improve accuracy.
Known Weaknesses and Mitigation Strategies
1. Extreme Volatility
Issue: During sudden, significant price movements (e.g., news-driven events), session levels and delta metrics may become less reliable as the market temporarily disregards historical patterns.
Mitigation: Combine ZenAlgo - Sessions with volatility indicators like ATR (Average True Range) or a news alert system to adjust expectations during these periods.
2. Low Liquidity Periods
Issue: During holidays or outside peak trading hours, session metrics may misrepresent actual market activity due to reduced participant involvement.
Mitigation: Focus on sessions with higher activity (e.g., overlapping US and European sessions) to ensure more accurate insights.
3. Non-Standard Trading Hours
Issue: Market-specific differences, such as extended hours or daylight saving adjustments, can misalign session boundaries.
Mitigation: Verify session times align with your market and adjust settings accordingly.
4. Historical Data Dependencies
Issue: Historical metrics rely on consistent session patterns; deviations (e.g., extended or shortened sessions) can impact trend accuracy.
Mitigation: Regularly review and interpret historical data alongside real-time metrics to ensure alignment.
Leverage Aware Trade OptimizerWelcome to the Leverage-Aware Trade Optimizer (LATO)! I’m thrilled to have you exploring this dynamic algorithm! LATO combines advanced market oscillation tracking, leverage-aware trade optimization, and real-time market analysis to help you make smarter, more informed trading decisions. Whether you're just starting or you’re an experienced trader, LATO provides powerful tools and insights to enhance your strategies. LATO is here to support you in optimizing your trades with precision, so feel free to dive in and explore all the features. Let’s make your trading experience as effective and rewarding as possible. Safe trading!
Leverage-Aware Trade Optimizer (LATO)
Short Title: LATO
Category: Trading Tools / Technical Analysis
Overview
The Leverage-Aware Trade Optimizer (LATO) is a powerful algorithm designed to track and analyze market oscillations, identify reversal zones, and provide dynamic trading levels for optimal decision-making. With built-in risk management features, LATO enhances traders’ ability to make well-informed decisions based on a comprehensive range of market indicators, including price oscillations, probabilities, and leverage-related risks.
Key Features
Comprehensive Market Oscillation Tracking: LATO utilizes advanced indicators such as the Indexed Position Oscillator (IPO), Candle Relative Percentage (CRP), and Oscillating Range Indicator (ORI) to track price fluctuations and detect key market oscillations, providing a detailed view of price movements.
Dynamic Price Levels for Trading Decisions: The script calculates critical price levels such as WAP, WBP, XAP, and XBP. These weighted and expanded prices help identify potential support and resistance zones for accurate trade entries and exits.
Reversal Detection and Trend Identification: LATO is designed to recognize top and bottom reversal zones using user-defined thresholds (e.g., upper_reversal, lower_reversal). The algorithm signals potential trend changes with event markers such as UP, DOWN, UIP, and DIP, enabling traders to anticipate market reversals.
Risk and Leverage Mapping: By estimating liquidation levels for various leverage values (5x, 10x, 20x, etc.), LATO assists in risk management, helping traders visualize leverage exposure and optimize their trades according to risk tolerance.
Integrated Visualization and Event Labels: LATO enhances visual analysis by plotting key levels, trend lines, and event markers on the chart. Custom labels summarize critical values, including SOD (Sell Odds), BOD (Buy Odds), ORI (Oscillating Range Indicator), and PVI (Price Volatility Index), offering a quick, actionable summary for traders.
User Inputs
Orders Deviation (order_deviation): Controls the deviation for calculating trade levels.
Top Reversal (upper_reversal): Sets the threshold for the upper reversal zone.
Bottom Reversal (lower_reversal): Sets the threshold for the lower reversal zone.
How It Works
LATO tracks market oscillations through the Indexed Position Oscillator (IPO) and Candle Relative Percentage (CRP), dynamically adjusting as the market fluctuates. The algorithm then identifies key levels using weighted prices (e.g., WAP, WBP) and generates reversal signals based on defined thresholds.
Once the Leverage-Aware Trade Optimizer (LATO) is applied to a chart, it automatically calculates dynamic support and resistance levels and identifies potential buying or selling opportunities. The script also plots liquidation zones based on different leverage levels and visualizes these areas through color-coded lines.
Use Case Scenarios
Trend Reversal Detection: Identify when the market is likely to reverse based on the ORI and price action.
Dynamic Price Levels: Use the weighted price levels and trend lines to pinpoint entry/exit points.
Leverage Risk Management: Monitor liquidation levels and use them for managing risk while trading with leverage.
Oscillation Tracking: Track key oscillations for detecting overbought or oversold conditions.
Alert Setup for LATO
You can set up alerts based on the key conditions like UP, DOWN, UIP, and DIP, as well as specific market movements.
Down Trend Alert (DOWN): Alerts when there’s a downtrend, triggered by a crossover of WBP and BL5, with specific conditions for ORI and SOD.
Up Trend Alert (UP): Alerts when there’s an uptrend, triggered by a crossunder of WAP and SL5, with ORI below -0.5.
Upper Reversal Alert (UIP): Alerts when ORI crosses below the lower_reversal threshold.
Downward Reversal Alert (DIP): Alerts when ORI crosses above the upper_reversal threshold.
Conclusion
The Leverage-Aware Trade Optimizer (LATO) is a comprehensive trading tool designed for traders seeking to optimize their trade entries and exits. By combining multiple indicators, dynamic price levels, and reversal zone detection, LATO offers an advanced approach to market analysis and decision-making. Whether you’re trading with leverage or simply looking for trend confirmation, LATO provides the insights you need to maximize your trading potential.
Notes
This script is designed to be used on any time frame.
Adjust the order_deviation parameter based on the asset volatility you are trading.
The reversal thresholds (upper and lower) should be fine-tuned depending on market conditions.
Uptrick: Oscillator SpectrumUptrick: Oscillator Spectrum is a versatile trading tool designed to bring together multiple aspects of technical analysis—oscillators, momentum signals, divergence checks, correlation insights, and more—into one script. It includes customizable overlays and alert conditions intended to address a wide range of market conditions and trading styles.
Developed in Pine Script™, Uptrick: Oscillator Spectrum represents an extended version of the classic Ultimate Oscillator concept. It consolidates short-, medium-, and long-term momentum readings, applies correlation analysis across different symbols, and offers optional table-based metrics to provide traders with a more structured overview of potential trade setups. Whether used alongside your existing charts or as a standalone toolkit, it aims to build on and enhance the functionality of the standard Ultimate Oscillator.
### A Few Key Features
- Momentum Insights: Multiple timeframes for oscillators, plus buy/sell signal modes for flexible identification of overbought/oversold situations or crossovers.
- Divergence Detection: Automated checks for bullish/bearish divergences, aiming to help traders spot potential shifts in momentum.
- Correlation Meter: A visual histogram summarizing how selected assets are collectively trending. It is useful for tracking the bigger market picture.
- Gradient Overlays & Bar Coloring: Dynamic color transitions designed to emphasize changes in momentum, trend shifts, and overall sentiment without cluttering the chart.
- Money Flow Tracker: Tracks the flow of money into and out of the market using a smoothed Money Flow Index (MFI). Highlights overbought/oversold conditions with dynamic bar coloring and visual gradient fills, helping traders assess volume-driven sentiment shifts.
- Advanced Table Metrics: An optional table showing return on investment (ROI), collateral risk, and other contextual metrics for supported assets.
- Alerts & Automation: Configurable alerts covering divergence events, crossing of critical levels, and more, helping to keep traders informed of developments in real time.
### Intended Usage
- For Multiple Markets: Works on various markets (cryptocurrencies, forex pairs, stocks) to deliver a consistent view of momentum, potential entry/exit signals, and correlation.
- Adaptable Trading Styles: With customizable input settings, you can enable or disable specific features to align with your preferred strategies—intraday scalping, swing trading, or position holding.
By combining these elements under one indicator, Uptrick: Oscillator Spectrum allows traders to streamline analysis workflows, helping them stay focused on interpreting market moves and making informed decisions rather than juggling multiple scripts.
Purpose
Purpose of the “Uptrick: Oscillator Spectrum” Indicator
The “Uptrick: Oscillator Spectrum” indicator is intended to bring together several technical analysis elements into one tool. It combines oscillator-based momentum readings across different lookback periods, checks for potential divergences, provides optional buy/sell signal triggers, and offers correlation-based insights across multiple symbols. Additionally, it includes features such as bar coloring, gradient visualization, and user-configurable alerts to help highlight various market conditions.
By consolidating these functions, the script aims to help users systematically observe changing momentum, identify when prices reach user-defined overbought or oversold levels, detect when oscillator movements diverge from price, and examine whether different assets are aligning or diverging in their trends. The indicator also allows for optional advanced metric tables, which can supply further context on risk, ROI calculations, or other factors for supported assets. Overall, the script’s purpose is to organize multiple layers of technical analysis so that users have a structured way to evaluate potential trade opportunities and market behavior.
## Usage Guide
Below is an outline of how you can utilize the various components and features of Uptrick: Oscillator Spectrum in your charting workflow.
---
### 1. Using the Core Oscillator
- Basic View: By default, the script calculates a multi-timeframe oscillator (commonly displayed as the “Ultimate Oscillator”). This oscillator combines short-, medium-, and long-term measurements of buying pressure and true range.
- Overbought/Oversold Zones: You can configure thresholds (e.g., 70 for overbought, 30 for oversold) to help identify potential turning points. When the oscillator crosses these levels, it may indicate that price is extended in one direction.
- You can use the colors of the main oscillator to help you take short-term trades as well: cyan : Buy , red: Sell
- Alerts: If you enable alerts, the indicator can notify you when the oscillator crosses above or below your chosen overbought/oversold boundaries or when you get buy/sell signals.
---
### 2. Buy/Sell Signals in Overlay Modes
Uptrick: Oscillator Spectrum provides several signal modes and a choice between overlay true and overlay false or both. Additionally, you can pick which “line” (data source) the script uses to generate signals. This is set in the “Line to Analyze” dropdown, which includes Oscillator, HMA of Oscillator, and Moving Average. The following sections describe how each piece fits together.
---
#### Line to Analyze - Overlay Flase: Oscillator / HMA of Oscillator / Moving Average
1. Oscillator
- The core momentum reading, reflecting short-, medium-, and long-term periods combined.
2. HMA of Oscillator
- Applies a Hull Moving Average to the oscillator, creating a smoother but still responsive curve.
- Signals will be derived from this smoothed line. Some traders find it filters out minor fluctuations while remaining quicker to react than standard averages.
3. Moving Average
- Uses a user-selected MA type (SMA, EMA, WMA, etc.) over the oscillator values, rather than the raw oscillator itself.
- Tends to be more stable than the raw oscillator, but might delay signals more depending on the chosen MA settings.
---
#### Signal Modes
Regardless of which line you choose to analyze, you can use one of the following seven signal modes in overlay being true:
1. Overbought/Oversold (Pyramiding)
- What It Does:
- Buy signal when the chosen line crosses below the oversold threshold.
- Sell signal when it crosses above the overbought threshold.
- Pyramiding:
- Allows multiple triggers within the same overbought/oversold event.
2. Overbought/Oversold (Non Pyramiding)
- What It Does:
- Same thresholds but only one signal per oversold or overbought event.
- Use Case:
- Prevents repeated signals and chart clutter.
3. Smoothed MA Middle Crossover
- What It Does:
- Uses an MA defined by the user.
- Buy when crossing above the midpoint (50), Sell when crossing below.
- Use Case:
- Generates fewer signals, focusing on broader momentum shifts. There is no pyramiding.
In this image ,for example, the VWMA is used with length of 14 to identify buy sell signals.
4. Crossing Above Overbought/Below Oversold (Non Pyramiding)
- What It Does:
- Buy occurs if the line exits oversold territory by crossing back above it.
- Sell occurs if the line exits overbought territory by crossing back below it.
- Non Pyramiding:
- Restricts repeated signals until conditions reset.
5. Crossing Above Overbought/Below Oversold (Pyramiding)
- What It Does:
- Same thresholds, but allows multiple signals if the line repeatedly dips in and out of overbought or oversold.
- Use Case:
- More frequent entries/exits for active traders.
6. Divergence (Non Pyramiding)
- What It Does:
- Identifies bullish or bearish divergences using the chosen line vs. price.
- Buy for bullish divergence (higher low on the line vs. lower low on price), Sell for bearish divergence.
- Single Trigger:
- Only one signal per identified divergence event. (non pyramiding)
7. Divergence (Pyramiding)
- What It Does:
- Same divergence logic but triggers multiple times if the script sees repeated divergence in the same direction.
- Use Case:
- Could suit traders who layer positions during sustained divergence scenarios.
#### Overlay Modes: True vs. False
1. Overlay True
- Buy/sell arrows or labels plot directly on the main price chart, often at or near candlesticks.
- Bar Coloring:
- Can turn the candlestick bars green (buy) or red (sell), with intensity reflecting signal recency if bar coloring is enabled for this mode. (read below.)
- Advantage:
- Everything (price, signals, bar colors) is in one spot, making it straightforward to associate signals with current market action. You can adjust the periods of the main oscillator or lookback periods of divergences or overbought/oversold thresholds, to play around with your signals.
2. Overlay False
- Signal Placement:
- Signals appear in a sub-window or oscillator panel, leaving the main price chart uncluttered.
- Bar Coloring:
- You may still enable bar colors on the main chart (green for buy, red for sell) if desired.
- Alternatively, you can keep them neutral if you prefer a completely separate display of signals.
- Advantage:
- Clear separation of price action from signals, useful for cleaner charts or if using multiple overlay-based tools.
At the bottom are the signals for overlay being false and on the chart are the signals for overlay being true:
#### Bar Color Adjustments
1. Coloring Logic
- Bars typically go green on buy signals, red on sell signals.
- The opacity or brightness can vary to indicate signal freshness. When a new signal is formed, the color gets brighter. When there is no signal for a longer period of time, then the color slowly fades.
2. Enabling Bar Coloring
- In the indicator’s settings, turn on Bar Coloring.
- Choose “Signals Overlay True” or “Signals Overlay False” from the “Color should depend on:” dropdown, depending on which overlay approach you want to drive your bar colors. You can also chose the cloud fill in overlay false, correlation meter and smoothed HMA to color bars. Read more below:
### Bar Color Options:
When you enable bar coloring in Uptrick: Oscillator Spectrum, you can select which component or signal logic drives the color changes. Below are the five available choices:
---
#### Option 1: Overlay True Signals
- What It Does:
- Uses signals generated under the Overlay True mode to color the bars on your main chart.
- If a buy signal is triggered, bars turn green. If a sell signal occurs, bars turn red.
- Color Intensity:
- Bars appear brighter (more opaque) immediately after a new signal fires, then gradually fade over subsequent bars if no new signal appears.
---
#### Option 2: Overlay False Signals
- What It Does:
- Links bar coloring to signals generated when Overlay False mode is active.
- Buy/sell labels typically plot in a separate sub-window instead of the main chart, but your price bars can still change color based on these signals.
- Color Intensity:
- Similar to Overlay True, new buy/sell signals yield stronger color intensity, which fades over time.
- Use Case:
- Helps maintain a clean main chart (with signals off-chart) while still providing an immediate color-coded indication of a buy or sell state.
- Particularly useful if you prefer less clutter from signal markers on your price chart yet still want a visual representation of signal timing.
In this example normal divergence Pyramiding Signals are used in the overlay being true and the signals in overlay false are signals that analyze the HMA. This can help clear out noise (using a combo of both).
Option 3: Money Flow Tracker
What It Does:
The Money Flow Tracker uses the Money Flow Index (MFI), a volume-weighted oscillator, to measure the strength of money flowing into or out of an asset. The script smooths the raw MFI data using an EMA for a more responsive and visually intuitive output.
The feature also includes dynamic color gradients and bar coloring that highlight whether money flow is positive or negative.
Green Fill/Bar Color: Indicates positive money flow, suggesting potential accumulation.
Red Fill/Bar Color: Indicates negative money flow, signaling potential distribution.
Overbought and oversold thresholds are dynamically emphasized with transparency, making it easier to identify high-confidence zones.
Use Case:
Ideal for traders focusing on volume-driven sentiment to identify turning points or confirm existing trends.
Suitable for assessing broader market conditions when used alongside other indicators like oscillators or correlation analysis.
Provides additional clarity in spotting areas of accumulation or distribution, making it a valuable complement to price action and momentum studies.
---
#### Option 4: Correlation Meter
- What It Does:
- Colors the bars based on the indicator’s Correlation Meter output. The script checks multiple chosen tickers and sums up how many are trending positively or negatively.
- If the meter indicates an overall bullish bias (e.g., more than three assets in uptrend), bars turn green; if it’s bearish, bars turn red.
- Trend Readings:
- The correlation meter typically plots a histogram of bullish/neutral/bearish states. The bar color option links your chart’s candlestick coloring to that higher-level market sentiment.
- Use Case:
- Useful for traders wanting a quick visual prompt of whether the broader market (or a selection of related assets) is bullish or bearish at any given time.
- Helps avoid signals that conflict with the market majority.
#### Option 5: Smoothed HMA
- What It Does:
- Bar colors are driven by the slope or state of the Hull Moving Average (HMA) of the oscillator, rather than individual buy/sell triggers or correlation data.
- If the HMA indicates a strong upward slope (possibly darkening), bars may turn green; if the slope is downward (purple in the HMA line), bars turn red.
- Use Case:
- Ideal for those who focus on momentum continuity rather than discrete signals like overbought/oversold or divergence.
- May help identify smoother, more sustained moves, as the HMA filters out minor oscillations.
---
### 3. Using the Hull Moving Average (HMA) of the Oscillator
- HMA Calculation: You can enable a dedicated Hull Moving Average (HMA) for the oscillator. This creates a smoother line of the same underlying momentum reading, typically responding more quickly than classic moving averages.
- Color Intensity: As the HMA sustains an uptrend or downtrend, the script can adjust the line’s color. When slope momentum persists in one direction, the color appears more opaque. This intensification can hint that the existing direction may be well-established.
- Reversal Potential: If you observe the HMA color shifting or darkening after multiple bars of slope in the same direction, it may indicate increasing momentum. Conversely, a sudden flattening or change in color can be a clue that momentum is waning.
---
### 4. Moving Average Overlays & Gradient Cloud
- Oscillator MA: The script allows you to apply moving average types (SMA, EMA, SMMA, WMA, or VWMA) to the core oscillator, rather than to price. This can smooth out noise in the oscillator, potentially highlighting more consistent momentum shifts.
- Gradient Cloud: You can also enable a cloud in overlay true between two moving averages (for instance, a Hull MA and a Double EMA) on the price chart. The cloud fills with different colors, depending on which MA is above the other. This can provide a quick visual reference to bullish or bearish areas.
---
### 5. Divergence Detection
- Bullish & Bearish Divergence: By toggling “Calculate Divergence,” the script looks for oscillator pivots that contrast with price pivots (e.g., price making a lower low while the oscillator makes a higher low).
- A divergence is when the price makes an opposite pivot to the indicator value. E.g. Price makes lower low but indicator does higher low - This suggests a bullish divergence. THe opposite is for a bearish divergence.
- Visual Labels: When a divergence is found, labels (such as “Bull” or “Bear”) appear on the oscillator. This helps you see if the oscillator’s momentum patterns differ from the price movement.
- Filtering Signals: You can combine divergence signals with other features like overbought/oversold or the HMA slope to refine potential entries or exits.
---
### 6. Correlation & Multi-Ticker Analysis
- Correlation Meter: You can select up to five tickers in the settings. The script calculates a slope-based metric for each, then combines those metrics to show an overall bullish or bearish tendency (displayed as a histogram).
- Bar Coloring & Overlay: If you activate correlation-based bar coloring, it will reflect the broader trend alignment among the selected assets, potentially indicating when most are trending in the same direction.
- Use Case: If you trade multiple markets, the correlation histogram can help you quickly see if several major assets support the same market bias or are diverging from one another.
—
### 7. Money Flow Tracker
Money Flow Calculation: The Money Flow Tracker calculates the Money Flow Index (MFI) based on price and volume data, factoring in buying pressure and selling pressure. The output is smoothed using a low-lag EMA to reduce noise and enhance usability.
Visual Features:
Dynamic Gradient Fill:
The space between the smoothed MFI line and the midline (set at 50) is filled with a gradient.
Above 50: Green gradient, with intensity increasing as the MFI moves further above the midline.
Below 50: Red gradient, with intensity increasing as the MFI moves further below the midline.
This gradient provides a clear visual representation of money flow strength and direction, making it easier to assess sentiment shifts at a glance.
Overbought/Oversold Levels: Default thresholds are set at 70 (overbought) and 30 (oversold). When the MFI crosses these levels, it signals potential reversals or trend continuations.
Bar Coloring:
Bars turn green for positive money flow and red for negative money flow.
Color intensity fades over time, ensuring recent signals stand out while older ones remain visible without dominating the chart.
Alerts:
Alerts are triggered when the Money Flow Tracker crosses into overbought or oversold zones, keeping traders informed of critical conditions without constant monitoring.
Practical Applications:
Trend Confirmation: Use the Money Flow Tracker alongside the oscillator or HMA to confirm trends or identify potential reversals.
Volume-Based Reversal Signals: Spot turning points where price action aligns with shifts in money flow direction.
Sentiment Analysis: Gauge whether market participants are accumulating (positive flow) or distributing (negative flow) assets, offering an additional layer of insight into price movement.
(Space for an example chart: “Money Flow Tracker with gradient fills and overbought/oversold levels”)
### 8. Putting It All Together
- Combining Signals: A practical approach might be to watch for a bullish divergence in the oscillator, confirm it with a shift in the HMA slope color, and then wait for the price to be near or below oversold conditions. The correlation histogram may further confirm if the broader market is also leaning bullish at that time.
- Visual Cues: Bar coloring adds another layer, making your chart easier to interpret at a glance. You can also set alerts to ensure you don’t miss key events like divergences, crossovers, or moving average flips.
- Flexibility: Not every feature needs to be used simultaneously. You might opt to focus on divergences and overbought/oversold signals, or you could emphasize the correlation histogram and bar colors. The settings let you enable or disable each module to suit your style.
---
### 9. Tips for Customization
- Adjust Periods: Shorter periods can yield more signals but also more noise. Longer periods may provide steadier, but fewer, signals.
- Set Appropriate Alert Conditions: Only alert on events most relevant to your strategy to avoid overload.
- Explore Different MAs: Depending on the instrument, some moving average types may give a smoother or more responsive indication.
- Monitor Risk Management: As with any tool, these signals do not guarantee performance, so consider position sizing and stop-loss strategies.
---
By toggling and experimenting with the features described above—buy/sell signals, divergences, moving averages, dynamic gradient clouds, and correlation analysis—you can tailor Uptrick: Oscillator Spectrum to your specific trading approach. Each module is designed to give you a clearer, structured view of potential momentum shifts, overbought or oversold states, and the alignment or divergence of multiple assets.
## Features Explanation
Below is a detailed overview of key features in Uptrick: Oscillator Spectrum. Each component is designed to provide different angles of market analysis, allowing you to customize the tool to your preferences.
---
### 1. Main Oscillator
- Purpose: The primary oscillator in this script merges short-, medium-, and long-term views of buying pressure and true range into a single line.
- Calculation: It weights each period’s contribution (e.g., a heavier focus on the short period if desired) and normalizes the result on a 0–100 scale, where higher readings may suggest more robust momentum. (like from the classic Ultimate Oscillator)
- Practical Use:
- Traders can watch for overbought/oversold conditions at user-defined thresholds (e.g., 70/30).
- It can also provide a straightforward momentum reading for those who prefer to see if momentum is rising, falling, or leveling off.
---
### 2. HMA of the Smoothed Oscillator
- What It Is: A Hull Moving Average (HMA) applied to the main oscillator values. The HMA is often more responsive than standard MAs, offering smoother lines while preserving relatively quick reaction to changes.
- How It Works:
- The script takes the oscillator’s output and processes it through a Hull MA calculation.
- The HMA’s slope and color can change more dynamically, highlighting sharper momentum shifts.
- Why It’s Useful:
- By smoothing out minor fluctuations, the HMA can highlight trends in the oscillator’s trajectory.
- If you see an extended run in the HMA slope, it may indicate a more persistent trend in momentum.
- Color Intensity:
- As the HMA continues in one direction for several bars, the script can intensify the color, signaling stronger or more sustained momentum in that direction.
- Sudden changes in color or slope can signal the start of a new momentum swing.
---
### 3. Gradient Fill
This script uses two gradient-based visual elements:
1. Shining/Layered Gradient on the Main Oscillator
- Purpose: Adds multiple layers around the oscillator line (above and below) to emphasize slope changes and highlight how quickly the oscillator is moving up or down.
- Color Changes:
- When the oscillator rises, it uses a color scheme (e.g., aqua/blue) that intensifies as the slope grows.
- When the oscillator declines, it uses a distinct color (e.g., red/pink).
- User Benefit: Makes it easier to see at a glance if momentum is accelerating or decelerating, beyond just the numerical reading.
2. Dynamic Cloud Fill (Between MAs)
- Purpose: Allows you to plot two moving averages (for example, a short-term Hull MA and a longer-term DEMA) and fill the area between them with a color gradient.
- Bullish vs. Bearish:
- When the short MA is above the long MA, the cloud might appear in a greenish hue.
- When the short MA is below the long MA, the cloud can switch to red or another color.
- Transparency/Intensity:
- The fill can get more opaque if the difference between the two MAs is large, indicating a stronger trend but a higher probability of a reversal.
- User Benefit: Helps visualize changes in trend or momentum across multiple time horizons, all within a single chart overlay.
---
### 4. Correlation Meter & Symbol Inputs
- What It Is: This feature looks at multiple user-selected symbols (e.g., BTC, ETH, BNB, etc.) and computes each symbol’s short-term slope. It then aggregates these slopes into an overall “trend” score.
- Inputs Configuration:
1. Ticker Inputs: You can specify up to five different tickers.
2. Timeframe: Decide whether to pull data from different chart timeframes for each symbol.
3. Slope Calculation: The script may compute, for instance, a 5-period SMA minus a 20-period SMA to gauge if each symbol is trending up or down.
- Market Trend Histogram:
- Displays a column that goes above/below zero depending on how many symbols are bullish or bearish.
- If more than three (out of five) symbols are bullish, the histogram can show a green bar at +1; if fewer than three are bullish, it can show red at –1.
- How to Use:
- Quick Glance: Lets you know if most correlated assets are aligning or diverging.
- Bar Coloring (Optional): If enabled, your main chart’s bars can reflect the aggregated correlation, turning green or red depending on the meter’s reading.
---
### 5. Advanced Metrics Table
- What It Is: An optional table displaying additional metrics for several cryptocurrencies (or any symbols you define).
- Metrics Included:
1. ROI (30D): Calculates return relative to the lowest price in a 30-day period.
2. Collateral Risk: Uses standard deviation to assess volatility (higher risk if standard deviation is large).
3. Liquidity Recovery: A rolling average of volume, aiming to show how liquidity flows might recover over time.
4. Weakening (Rate of Change): Reflects how quickly price is changing compared to previous bars.
5. Monetary Bias (SMA): A simple average of recent prices. If price is below this SMA, it might be seen as undervalued relative to the short term.
6. Risk Phase: Categorizes risk as low, medium, or high based on the standard deviation figure.
7. DCA Signal: Suggests “Accumulate” or “Do Not Accumulate” by checking if the current price is below or above the SMA.
- Why It’s Useful:
- Offers a concise view of multiple assets in one place—helpful for portfolio-level insight.
- DCA (Dollar-Cost Averaging) suggestions can guide longer-term strategies, while volatility (collateral risk) helps gauge how aggressive the price swings might be.
---
### 6. Other Vital Aspects
- Alerts & Notifications:
- The script can trigger alerts for various conditions—crossovers, divergence detections, overbought/oversold transitions, or correlation-based signals.
- Useful for automating watchlists or ensuring you don’t miss a key setup while away from the screen.
- Customization:
- Each module (oscillator settings, divergence detection, correlation meter, advanced metrics table, etc.) can be enabled or disabled based on your preferences.
- You can fine-tune parameters (e.g., periods, smoothing lengths, alert triggers) to align the indicator with different trading styles—scalping, swing, or position trading.
- Combining Features:
- One might watch the main oscillator for momentum extremes, confirm via the HMA slope, check if correlation supports the same bias, and look at the table for risk-phase validation.
- This multi-layer approach can help develop a more structured and informed trading view.
(Space for an example chart: “A fully configured layout showing oscillator, HMA, gradient cloud, correlation meter, and table all in use.”)
7. Money Flow Tracker
Purpose: The Money Flow Tracker adds a volume-based perspective to the indicator suite by incorporating the Money Flow Index (MFI), which assesses buying and selling pressure over a defined period. By smoothing the MFI using an exponential moving average (EMA), the feature highlights the directional flow of capital into and out of the market with greater clarity and reduced noise.
Dynamic Gradient Visualization:
The Money Flow Tracker enhances visual analysis with gradient fills that reflect the MFI’s relationship to the midline (50).
Above 50: A green gradient emerges, intensifying as the MFI moves higher, indicating stronger positive money flow.
Below 50: A red gradient appears, with deeper shades signifying increasing selling pressure.
Transparency dynamically adjusts based on the MFI’s proximity to the midline, making high-confidence zones (closer to 0 or 100) visually distinct.
Directional Sensitivity:
The Tracker emphasizes the importance of overbought (above 70) and oversold (below 30) zones. These thresholds help traders identify when an asset might be overextended, signaling potential reversals or trend continuations.
The inclusion of a midline (50) as a neutral zone helps gauge shifts between accumulation (money flowing in) and distribution (money flowing out).
Bar Integration:
By enabling bar coloring linked to the Money Flow Tracker, traders can visualize its impact directly on price bars.
Green bars reflect positive money flow (above 50), signaling bullish conditions.
Red bars indicate negative money flow (below 50), highlighting bearish sentiment.
Intensity adjustments ensure that recent signals are more visually prominent, while older signals gradually fade for a clean, non-cluttered chart.
Key Advantages:
Volume-Informed Context: Traditional oscillators often focus solely on price; the Money Flow Tracker incorporates volume, adding a crucial dimension for analyzing market behavior.
Adaptive Filtering: The EMA-smoothing feature ensures that sudden, insignificant spikes in volume don’t trigger false signals, providing a clearer and more actionable representation of money flow trends.
Early Warning System: Divergences between price movement and the Money Flow Tracker’s trends can signal potential turning points, helping traders anticipate reversals before they occur.
Practical Use Cases:
Trend Confirmation: Pair the Money Flow Tracker with the oscillator or HMA to confirm bullish or bearish trends. For example, a rising oscillator with positive money flow indicates strong buying interest.
Identifying Entry/Exit Zones: Use overbought/oversold conditions as entry/exit points, particularly when combined with other features like divergence detection.
Market Sentiment Analysis: The Tracker’s ability to dynamically assess buying and selling pressure provides a clear picture of market sentiment, helping traders adjust their strategies to align with broader trends.
By understanding these features—main oscillator readings, the HMA’s smoothing capabilities, gradient-based visual highlights, correlation insights, advanced metrics, and the money flow tracker—you can tailor Uptrick: Oscillator Spectrum to your specific needs, whether you’re focusing on quick trades, longer-term market moves, or broad portfolio health.
Originality of the “Uptrick: Oscillator Spectrum” Indicator
While it includes elements of standard momentum analysis, Uptrick: Oscillator Spectrum sets itself apart by adding an array of features that broaden the typical oscillator’s scope:
1. Slope Coloring & Layered Gradient Effects
- Beyond just plotting a single line, the indicator visually highlights momentum shifts using color changes and gradient fills.
- As the oscillator’s slope becomes steeper or flatter, these gradients intensify or fade, helping users see at a glance when momentum is accelerating, slowing, or reversing.
2. Mean Reversion & Divergence Detection
- The script offers optional logic for marking potential mean reversion points (e.g., overbought/oversold crossovers) and flagging divergences between price and the oscillator line.
- These divergence signals come with adjustable lookback parameters, giving traders control over how recent or extended the pivots should be for detection.
- This functionality can reveal subtle momentum discrepancies that a basic oscillator might overlook.
3. Integrated Multi-Asset Correlation Meter
- In addition to monitoring a single symbol, the indicator can fetch data for multiple tickers. It aggregates each symbol’s slope into a histogram showing whether the broader market (or a group of assets) leans bullish or bearish.
- This cross-market insight moves beyond standard “one-symbol, one-oscillator” usage, adding a bigger-picture perspective in one tool.
4. Advanced Metrics Table
- Users can enable a table that covers ROI calculations, volatility-based risk (“Collateral Risk”), liquidity checks, DCA signals, and more.
- Rather than just seeing an oscillator value, traders can view additional metrics for selected assets in one place, helping them judge overall market conditions or assess multiple instruments simultaneously.
5. Flexible Overlay & Bar Coloring
- Signals can be displayed directly on the price chart (Overlay True) or in a sub-window (Overlay False).
- Bars themselves may change color (e.g., green for bullish or red for bearish) according to different rules—signals, dynamic cloud fill, correlation meter states, etc.
- This adaptability allows traders to keep the chart as simple or as info-rich as they prefer.
6. Custom Smoothing Options & HMA Extensions
- The oscillator can be processed further with a Hull Moving Average (HMA) to reduce noise while still reacting quickly to market changes.
- Slope-based coloring on the HMA provides an additional layer of visual feedback, which is not common in a standard oscillator.
By blending traditional momentum checks with slope-based color feedback, mean reversion triggers, divergence signals, correlation analysis, and an optional metrics table, Uptrick: Oscillator Spectrum offers a more rounded approach than a typical oscillator. It integrates multiple market insights—both visual and analytical—into one script, giving users a broader toolkit for studying potential reversals, gauging momentum strength, and assessing multi-asset trends.
## Conclusion
Uptrick: Oscillator Spectrum brings together multiple layers of analysis—oscillator momentum, divergence detection, correlation insights, HMA smoothing, and more—into one adaptable toolkit. It aims to streamline your charting process by offering meaningful visual cues (such as gradient fills and bar color shifts), advanced tables for broader market data, and flexible alerts to keep you informed of potential setups.
Traders can choose the specific features that suit their style, whether they prefer to focus on raw oscillator signals, multi-ticker correlation, or smooth trend cues from the HMA. By centralizing these different methods in one place, Uptrick: Oscillator Spectrum can help users build more structured approaches to spotting trend shifts and extended conditions, while also remaining compatible with additional analysis techniques.
---
### Disclaimer
This script is provided for informational purposes only and does not constitute financial or investment advice. Past performance is not indicative of future results, and all trading involves risk. You should carefully consider your objectives, risk tolerance, and financial situation before making any trading decisions.
IBD Market School [tradeviZion]IBD Market School Indicator: User Guide and Settings Reference
A comprehensive guide to configuring and using the IBD Market School indicator for TradingView
Introduction
The IBD Market School indicator is an advanced market analysis tool that implements Investor's Business Daily's methodology for identifying optimal trading opportunities. By tracking key market indexes and analyzing price and volume patterns, it provides actionable buy and sell signals based on the CANSLIM investment system.
The indicator offers a comprehensive set of features:
Complete Signal System
10 primary buy signals (B1-B10)
Additional buy-side indicators (HH - Higher High, ED - Expired Days)
14 sell signals (S1-S14)
Index Rise 6% signal for Distribution/Stalling Day expiration
Market Health Tracking
Distribution Day detection and counting
Stalling Day identification and validation
Automatic 25-day signal expiration
6% price rise monitoring for signal clearing
Market Condition Analysis
Rally Day detection (major and minor)
Follow-Through Day confirmation
Dynamic market exposure management (0-100%)
Power Trend analysis with multiple states
Risk Management Features
Circuit Breaker system for major declines
Buy Switch system for exposure control
Customizable volume analysis (Nasdaq/S&P 500)
Distribution day clustering detection
Visual Analysis Tools
IBD-style candle display option
Power Trend state visualization
Signal line drawing system
Customizable tooltips and alerts
Proper configuration of the indicator's settings is essential as it affects:
Signal detection sensitivity and accuracy
Market exposure calculations and adjustments
Volume confirmation requirements
Visual display of market conditions and signals
Alert system behavior and notifications
This guide provides detailed explanations of each component and setting to help you optimize the indicator for your trading strategy while maintaining adherence to IBD's proven methodology.
📊 General Settings
This section controls the indicator's tooltip display, alert behavior, and candle visualization preferences.
The General Settings panel allows you to configure tooltip modes, alert types, and candle appearance.
Tooltip Display Mode
Select how detailed the tooltips should be when hovering over signals and indicators:
The three tooltip display modes: Simple (left), Detailed (center), and Market Analysis (right).
Simple Mode
Displays concise signal definitions
Shows basic entry and exit conditions
Focuses on essential trigger points
Perfect for experienced traders
Detailed Mode
Provides in-depth explanations of each buy/sell signal
Shows complete validation criteria and conditions
Includes volume requirements and percentage thresholds
Explains the context and significance of each signal
Market Analysis Mode
Focuses on broad market health metrics
Shows market exposure percentage and trend
Displays buy switch and power trend status
Tracks distribution days and signal buffers
Note: Choose the tooltip mode based on your needs:
- Simple: Provides quick, essential information on signals for fast decision-making
- Detailed: Breaks down conditions for each buy/sell signal, ideal for users wanting in-depth explanations
- Market Analysis: Focuses on broad market health, including exposure, buy switch, distribution days, and trends
Market Exposure Alert System
The indicator alerts you when market exposure levels change, helping you adjust your positions accordingly.
Alert Types
On Close (Recommended)
Triggers only after bar closes
More reliable signals as price action is confirmed
Real-Time
Triggers immediately when conditions are met
Note: Signals may change by bar close
Setting Up Alerts
Click the "..." (More) button on the indicator label "$tradeviZion - IBD Market School"
Select "Add alert on $tradeviZion - IBD Market School..."
In the Create Alert dialog:
Settings tab:
Verify the symbol and timeframe (e.g., NASDAQ:IXIC , 1D)
Condition: Select "$tradeviZion - IBD Market School"
Alert function: Choose "Any alert() function call"
Expiration: Set to "Open-ended alert"
Alert name will auto-populate
Switch to Notifications tab:
Enable "Notify in app" for push notifications in the mobile app
Enable "Show toast notification" for on-screen alerts
Enable "Play sound" and customize duration (e.g., Thin, 10 seconds)
Optional settings:
Send email (requires profile settings configuration)
Webhook URL for POST requests
Send plain text for alternative email format
Click Create to activate the alert
Alert Messages
Message format: "Market exposure change for : Market exposure from % to %"
Example: "Market exposure change for NASDAQ:IXIC : 📈 Market exposure reduced from 100% to 75%"
📈 Arrow indicates exposure increase
📉 Arrow indicates exposure decrease
Messages include previous and new exposure percentages
Note: These alerts specifically track changes in market exposure levels, helping you stay aligned with market conditions. They are essential for maintaining proper position sizing and risk management.
Chart Style Options
IBD-style Candles
Enable to match Investor's Business Daily chart style
For MarketSmith style setup, right-click on chart and go to Settings
Navigate to Symbol tab
Uncheck Body, Borders, and Wicks
Press Alt+R to restore chart view if zoom affects display
To revert to original style, right-click on chart and go to Settings
Navigate to Symbol tab
Check Body, Borders, and Wicks
Color Based on Previous Close
Colors bars based on close vs. previous close
When enabled, determines colors by comparing current close to previous close
Use blue color for closes above previous
Use pink color for closes below previous
📈 Market Exposure Table Settings
Configure how the market exposure information is displayed on your chart.
The Market Exposure Table Settings panel allows you to customize the appearance and layout of the market status display.
Layout Options
• Hide Table
Completely hides the market status display
• Basic (2 Columns)
Shows main indicators in two columns
Compact view without signal list
Ideal for minimalist chart view
• Detailed (2 Columns with Signals)
Displays main indicators plus signal panel
Shows Buy and Sell signals in separate columns
Provides comprehensive market overview
• Stacked (1 Column, Compact)
Vertical layout with single column
Most space-efficient option
Ideal for smaller chart windows
Color Settings
Background : Dark gray background for the table
Text : White text for general information
Buy Signal : Green highlighting for buy signals
Sell Signal : Red highlighting for sell signals
Additional Options
Show Trading Wisdom: Enable rotating trading messages
Displays empowering trading messages
Helps reinforce disciplined trading practices
Updates every 5 bars with new wisdom
Includes tooltips with comprehensive trading guidance
Customizable yellow text color for messages
💹 Buy Signals Settings
This section controls the visibility and behavior of buy signals and related indicators.
The Buy Signals Settings panel allows you to configure signal visibility, volatility calculations, and visual appearance of buy signals.
Signal Display Options
Buy Signals Display : Choose display mode
Show Selected Signals
Hide All
Compact Signals
Individual Signal Toggles
Primary Buy Signals (B1-B10)
Special Indicators (HH, ED)
Understanding Buy Signals
B1: Follow-Through Day (FTD)
Buy on the initial FTD with volume higher than the previous day. You may use an FTD from an index other than the NASDAQ:IXIC , but if you do, you must stay within that index for future Buy and Sell Signals.
B2: Additional Follow-Through
Buy on all additional follow-through days within 25 days from a rally day that closes above the low of the initial follow-through day.
B3: Low Above EMA21
Buy on an up or flat day when the intraday low is at or above the EMA21. Note: Once you have a B3 or B4, you can't have another until it is reset by an S5.
Special Buy Indicators
HH: Higher High (No FTD after Rally)
Triggers when current close exceeds highest point since last confirmed rally. Must not have a Follow-Through Day (FTD). Buy switch turns on when close exceeds last rally's high and turns off if close drops below that high.
ED: Expired Days
Tracks Distribution and Stalling days that have aged out. Days are tracked for a specific trading period and expired days are removed from the count.
Index Rise Settings
Index Rise 6% from DD & SD
Toggle to enable/disable monitoring of price rises above Distribution and Stalling Days. Default value of 6% (adjustable) for monitoring rises above these days.
Understanding Index Rise
This feature tracks significant market recoveries by monitoring when the index rises substantially above Distribution Days (DD) or Stalling Days (SD). When the index rises 6% or more above the closing price of any DD or SD, it indicates a strong market recovery. This is an important signal because it helps identify when the market has shown enough strength to potentially overcome previous distribution periods. When triggered, this signal reduces the distribution day count, effectively acknowledging that the previous distribution pattern may no longer be as relevant due to the market's strong recovery.
B1 Signal Configuration
Volatility Settings
B1 Auto Volatility: Calculates FTD price requirement based on 200-day volatility
B1 Manual Volatility: Fixed value (default 1.245) when auto is disabled
Visual Settings
Label Size: Small (options: Tiny, Small, Normal, Large)
Signal Color: Light green background for buy signals
Text Color: Customizable text color for signal labels
Important Notes
Signal visibility affects both chart display and calculations
Auto volatility is recommended for most users
Manual volatility should only be adjusted by experienced users
Visual settings apply to all enabled buy signals
Confirmation Rules
Price Requirements
Follow-Through Day (B1) thresholds based on 200-day volatility:
Below 0.4% volatility: 0.7% gain required
0.4% to 0.55% volatility: 0.85% gain required
0.55% to 1% volatility: 1% gain required
Above 1% volatility: 1.245% gain required
EMA Breaks (S5/S6): 0.2% threshold below 21 EMA
Downside Reversal (B9): 1.75% high-to-low spread required
Volume Requirements
Distribution Days: Volume > previous day, with -0.20% or more price decline
Stalling Days: Volume ≥ 95% of previous day
Follow-Through Days (B1/B2): Volume > previous day
Accumulation Days (B7): Volume > previous day, close in upper 25% range
Sell Signals Settings
This section controls the visibility and behavior of sell signals and market weakness indicators.
The Sell Signals Settings panel allows you to configure signal visibility and visual appearance of sell signals and market health indicators.
Signal Display Options
Sell Signals Display: Dropdown with options to control signal visibility:
Show Selected Signals
Hide All
Compact Signals
Individual Signal Toggles
Primary Sell Signals: S1-S14 and CB (Circuit Breaker)
Market Health Indicators:
Distribution Days (DD): Indicative of institutional selling. Occurs when:
Market closes down by at least 0.2%
Volume greater than or equal to prior day
Tracked for 25 trading days
Stalling Days (SD): Sign of heavy volume without upside progress. Occurs when:
Market at/near new highs
Closes with small gain (0% to 0.4%)
High volume in lower half of day's range
Understanding Sell Signals
S1: Follow-Through Day Undercut
Sell if the index closes below the low of the initial follow-through day.
S2: Failed Rally Attempt
Sell if the index undercuts the major low of the rally attempt. Market exposure is reduced to zero and the Buy Switch is turned off.
S2ml: Minor Low Undercut
Minor Low undercut of rally attempt. Market exposure is reduced by two. This does not turn off the Buy Switch.
S3: Full Distribution Minus One
Sell after the distribution count increases to one less than the full distribution count.
S4: Full Distribution
Sell after reaching the full distribution count.
S5: Break Below EMA21
Sell if the index closes 0.2% or more below the EMA21. Note: Once you have an S5, S6, or S7, you can't have another until it is reset by a B3.
S6: Overdue Break Below EMA21
Sell if the index closes down 0.2% or more below the EMA21 after 30 days have passed since the last B3 without triggering an S5.
S7: Trending Below EMA21
Sell after S5 on the 5th consecutive day that the high is below the EMA21 and a down day.
S8: Living Below EMA21
Sell after S5 on the 10th and every 5th consecutive day after that (15th, 20th, 25th, etc.) that the high is below the EMA21.
S9: Break Below 50-Day MA
Sell if the index closes below the 50-Day Moving Average. Triggers only if a B6 signal was previously printed.
S10: Bad Break
Sell if the close is down 2.25% or greater in the bottom 25% of the range. Close below the MA50 or intraday high below EMA21.
S11: Downside Reversal
Sell after a Downside Reversal Day, which occurs with:
New High within 13 weeks
Close in bottom quartile of range
Close Down for the day
Spread of 1.75% or greater
S12: Lower Low
Sell after closing below the last marked low as defined by MarketSmith.
S13: Distribution Cluster
Distribution and stalling days increase to four up to eight days within a rolling eight-day period.
S14: Break Below Higher High
Sell after closing below the last marked high that printed a B8 (Higher High).
CB: Circuit Breaker
Triggers when the index drops 10% from the highest high since the FTD (B1) and falls 5% or more below the 50-Day MA intraday.
Buy/Sell Undercut Lines
This section controls the visibility and appearance of important price level lines on your chart.
The Buy/Sell Undercut Lines panel allows you to configure which signal lines are displayed and their visual appearance.
Line Visibility
Buy Signal Lines :
B8 Line: First high above the last pivot high
HH Line: Close above the prior high since last confirmed rally without FTD
Sell Signal Lines :
S1 Line: Close below the initial follow-through day
S2 Line: Undercut of major low
S2ml Line: Minor low undercut
S12 Line: Close below last marked low
S14 Line: Close below last marked high
Line Appearance
Color Settings :
B8: Green (Buy signal)
HH: Green (Buy signal)
S1: Red (Sell signal)
S2: Red (Sell signal)
S2ml: Orange (Modified sell signal)
S12: Purple (Pivot low signal)
S14: Blue (Close below pivot)
Line Style : Dashed (options: solid, dotted, dashed)
Line Width : 1 (adjustable)
📈 Rally Signal Settings
The Rally Signal Settings panel allows you to configure Rally Day detection and visualization.
Rally Day:
Toggle to enable/disable Rally Day signals. These mark the beginning of potential market uptrends when the market closes higher than the previous day, following a significant decline.
Visual Settings:
Label Size: small (options: tiny, small, normal, large)
Background Color: Customizable background for Rally Day labels
Text Color: Customizable text color for Rally Day labels
Distribution Day Settings:
Use Manual FullDDcount: Option to manually set the minimum combined number of Distribution and Stalling Days
Count Value: Default is 6 days (adjustable when manual mode is enabled)
This setting determines how many Distribution/Stalling Days are required to trigger a new rally
Pivot Point Settings
The Pivot Point Settings panel allows you to configure the display of high/low points and percentage changes between pivots.
Display Options
Display H/L Points
Toggle to show or hide pivot levels (high and low points) on the chart
%Change
Toggle to display percentage changes between pivot points
Color Settings
Positive % Color : Blue (customizable) - Used for positive percentage changes
Negative % Color : Pink (customizable) - Used for negative percentage changes
Precision Settings
Decimal Places: Set the number of decimal places (default: 2) for:
Pivot point price levels
Percentage change calculations
⚡ Power Trend Settings
This section controls how Power Trend information is visualized on your chart.
The Power Trend Settings panel allows you to configure how trend states are displayed and customize their visual appearance.
Example of Power Trend visualization showing both boxes (green background) and trend lines. The boxes indicate trend state while lines show trend transitions.
Display Options
Show Power Trend Line : Display trend states as lines on the chart
Show Boxes : Display trend states as boxes
Show Background : Display trend states as background colors
Power Trend Color Settings
On : Light green - Full power trend active
Resume : Light green - Power trend resuming
Off : Gray - Power trend inactive
With Floor : Yellow - Under pressure with support
No Floor : Orange - Under pressure without support
Power Trend Line Settings
Line Width : Set line thickness (default: 1)
Line Offset : Adjust line position (default: 5)
Power Trend Box Settings
Text Align : Set text alignment (left, center, right)
Text Position : Set vertical position (top, middle, bottom)
Size : Set box size (tiny, small, normal, large)
Color : Customize box background color
Power Trend States
Full Power (On)
Represents strongest market condition with maximum exposure of +7
Base maximum exposure of 5 plus 2 buffer signals
Buffer allows maintaining high exposure during normal pullbacks
2 sell signals reduce count from 7 to 5 without affecting base
Indicates very healthy market that can absorb normal profit-taking
Resume State
Shows successful market recovery after pressure period
Requires 10+ days without S2 minor, S9, or S13 signals
Must reestablish all initial strength conditions
Maintains same benefits as Full Power (+7 max, +2 floor)
Shows as light green in visualization
Under Pressure With Floor
First warning stage triggered by S2 minor or S13 signals
Reduces maximum exposure to +5
Maintains minimal protection with +1 floor
Suggests defensive positioning while keeping core positions
Shows as yellow in visualization
Under Pressure No Floor
Severe warning stage triggered by S9 signal
Maintains +5 maximum exposure but removes floor protection
Indicates higher risk of continued market decline
Requires careful position management
Shows as orange in visualization
Power Trend Off
Triggered by EMA/MA crossdowns with declining price
Can also be activated by S2 or Circuit Breaker signals
Maximum exposure limited to +5 with no buffer signals
Suggests focus on capital preservation
Shows as gray in visualization
Power Trend System Rules
Each state enforces strict exposure limits with automatic floor and ceiling adjustments
Power Trend can activate Buy Switch when entering Full Power state
Restraint Rule limits exposure to +2 until significant progress or B4 signal when starting from zero exposure
State transitions immediately update exposure limits and Buy Switch status
Distribution Cluster (S13) can move Power Trend to Under Pressure With Floor state
System maintains exposure floors to prevent panic selling while allowing flexibility below floor levels
Weekly SMAs Settings
The Weekly SMAs Settings panel allows you to configure the weekly moving averages display and calculations.
SMA 1: 10 periods (enabled), Red
Length: 10
Optional EMA toggle
Width: 1
SMA 2: 20 periods, Pink
Length: 20
Optional EMA toggle
Width: 1
SMA 3: 30 periods, Green
Length: 30
Optional EMA toggle
Width: 1
SMA 4: 40 periods (enabled), White
Length: 40
Optional EMA toggle
Width: 1
SMAs Settings
The SMAs Settings panel allows you to configure the daily moving averages display and calculations.
MA 1: 10 periods, Optional EMA, Pink
Length: 10
Optional EMA toggle
Width: 1
MA 2: 21 periods (enabled), EMA, Green
Length: 21
EMA enabled
Width: 1
MA 3: 50 periods (enabled), SMA, Red
Length: 50
EMA disabled
Width: 1
MA 4: 200 periods (enabled), SMA, White
Length: 200
EMA disabled
Width: 1
Volume Settings (NASDAQ & S&P 500)
This section controls volume data sources for market analysis. Proper volume settings are crucial for confirming market signals and analyzing institutional participation.
The Volume Settings panel allows you to configure volume data sources and custom ticker options for accurate market analysis.
Important Volume Source Information
TradingView's default volume data differs from IBD's Yahoo Finance data source
Current default settings (IXIC and TVOL) provide the most accurate results compared to IBD signals
Volume differences between TradingView and IBD are expected due to different data sources
Custom ticker options are provided for future compatibility with Yahoo Finance volume data
Volume Configuration
Nasdaq Volume Settings
Default Source: NASDAQ:IXIC (Nasdaq Composite Index)
Custom Ticker Option: USI:TVOL.NQ
Enable custom source by checking "Use Custom Nasdaq Ticker?"
Note: Custom ticker must be price-based for accurate volume analysis
S&P 500 Volume Settings
Default Source: TVOL (S&P 500 Total Volume)
Custom Ticker Option: USI:TVOL.NY
Enable custom source by checking "Use Custom S&P 500 Ticker?"
Note: Custom ticker must be price-based for accurate volume analysis
Volume Analysis Impact
Used for Distribution Day confirmation
Required for Follow-Through Day validation
Helps identify institutional buying/selling
Critical for Stalling Day detection
Recommendations
Keep default settings for most accurate current results
Only use custom tickers if you have confirmed price-based volume sources
Be aware that volume-based signals might slightly differ from IBD due to data source differences
Future updates may add Yahoo Finance volume compatibility
Market Status Table
The Market Status Table provides a real-time visual overview of current market conditions and signal status. Users can customize the table's appearance through the Market Exposure Table Settings.
The Market Status Table can be displayed in three different layouts: Basic (left), Detailed (center), and Stacked (right).
Layout Options
Hide Table
Completely hides the market status display
Basic (2 Columns)
Shows main indicators in two columns
Compact view without signal list
Ideal for minimalist chart view
Detailed (2 Columns with Signals)
Displays main indicators plus signal panel
Shows Buy and Sell signals in separate columns
Provides comprehensive market overview
Stacked (1 Column, Compact)
Vertical layout with single column
Most space-efficient option
Ideal for smaller chart windows
Main Indicators
• Market Exposure
Displayed as colored dots: 🟠 🟢 🟢 🟢 🟢
Shows current exposure level (0-100%)
(⚪ ⚪ ⚪ ⚪ ⚪): 0% exposure
(🟠 ⚪ ⚪ ⚪ ⚪): 30% exposure
(🟠 🟡 ⚪ ⚪ ⚪): 55% exposure
(🟠 🟡 🟢 ⚪ ⚪): 75% exposure
(🟠 🟡 🟢 🟢 ⚪): 90% exposure
(🟠 🟡 🟢 🟢 🟢): 100% exposure
• Key Status Indicators
Buy Switch: Shows ON (forced) or OFF status
Power Trend: Displays current state with floor and maximum values
Restraint Rule: Indicates ON or OFF status
Count / Signals Buffer: Shows current count and available buffer (e.g., "7 / (+0)")
Dist. Days / Cluster: Displays distribution day count and cluster status (e.g., "1 / 0")
• Signal Panel (Available in Detailed layout)
Lists all active Buy and Sell signals
Highlighted signals indicate currently active conditions
Green highlighting shows confirmed signals
Provides quick reference for all available signals
Status Indicator Colors
🟢 indicates "ON" or positive conditions (e.g., Buy Switch ON, Power Trend Full Power)
🟡 indicates "Under Pressure" or caution (e.g., Power Trend Under Pressure With Floor)
🟠 indicates "Under Pressure No Floor" or increased caution
🔴 indicates "OFF" or negative conditions (e.g., Buy Switch OFF, Power Trend OFF)
• Signal Colors
Green background for buy signals
Red background for sell signals
Black text on signal backgrounds for better visibility
• Number Formats
Count / Buffer signals shown as "7 / (+2)"
Distribution Days / Cluster count shown as "1 / 0"
Exposure percentage shown with dots (e.g., "90%")
Trading Wisdom - Market Risk Management
"The key to successful trading is not just knowing when to enter, but managing your exposure based on market health. Always check two critical indicators before any trade:
1. Market Exposure Levels
100% (5 dots): Full positions in strong market
90% (4 dots): Slightly reduced positions
75% (3 dots): Moderate positions, more cautious
55% (2 dots): Half positions only
30% (1 dot): Small positions only
0% (0 dots): Stay in cash
2. Distribution Days Risk Levels
1-2 Days: Normal market behavior
3 Days: Caution - reduce new positions
4+ Days: High risk - defensive positioning
5-6 Days: Consider moving to cash
Remember: It's better to miss an opportunity than to catch a falling market. Let the Market Exposure Table be your guide to smart position sizing."
Pro Tip: Make checking these two indicators part of your daily routine. They're your first line of defense against major drawdowns.
Conclusion
The IBD Market School indicator brings William O'Neil's proven methodology to TradingView, providing a comprehensive system for market analysis and risk management. This tool automates the complex task of tracking market signals while maintaining strict adherence to IBD's time-tested principles.
Key Features
Follows IBD's core methodology for identifying market direction
Automates tracking of Distribution Days, Follow-Through Days, and market signals
Provides clear market exposure guidance through the Power Trend system
Helps maintain discipline through systematic Buy Switch control
Offers multiple layers of risk management
Best Practices
Always check Market Exposure and Distribution Day count before making trades
Let the Buy Switch guide your market participation
Follow Power Trend states for proper position sizing
Use the default volume settings for most accurate signal generation
Monitor all confirmation rules for proper signal validation
Remember: This indicator is designed to replicate IBD's methodology as closely as possible within TradingView's environment. While it automates signal detection and exposure management, successful trading still requires discipline, patience, and strict adherence to risk management principles.
"The goal is not to be right about the market - it's to make money by following the market's signals and managing risk."






















