SigmaKernel - AdaptiveSigmaKernel - Adaptive Self-Optimizing Multi-Factor Trading System
SigmaKernel - Adaptive is a self-learning algorithmic trading strategy that combines four distinct analytical dimensions—momentum, market structure, volume flow, and reversal patterns—within a machine-learning-inspired framework that continuously adjusts its own parameters based on realized trading performance. Unlike traditional fixed-parameter strategies that maintain static weightings regardless of market conditions or results, this system implements a feedback loop that tracks which signal types, directional biases, and market conditions produce profitable outcomes, then mathematically adjusts component weightings, minimum score thresholds, position sizing multipliers, and trade spacing requirements to optimize future performance.
The strategy is designed for futures traders operating on prop firm accounts or live capital, incorporating realistic execution mechanics including configurable entry modes (stop breakout orders, limit pullback entries, or market-on-open), commission structures calibrated to retail futures contracts ($0.62 per contract default), one-tick slippage modeling, and professional risk controls including trailing drawdown guards, daily loss limits, and weekly profit targets. The system features universal futures compatibility—it automatically detects and adapts to any futures contract by reading the instrument's tick size and point value directly from the chart, eliminating the need for manual configuration across different markets.
What Makes This Approach Different
Adaptive Weight Optimization System
The core differentiation is the adaptive learning architecture. The strategy maintains four independent scoring components: momentum analysis (using RSI multi-timeframe, MACD histogram, and DMI/ADX), market structure detection (breakout identification via pivot-based support/resistance and moving average positioning), volume flow analysis (Volume Price Trend indicator with standard deviation confirmation), and reversal pattern recognition (oversold/overbought conditions combined with structural levels).
Each component generates a directional score that is multiplied by its current weight. After every closed trade, the system performs a retrospective analysis on the last N trades (configurable Learning Period, default 15 trades) to calculate win rates for each signal type independently. For example, if momentum-driven trades won 65% of the time while reversal trades won only 35%, the adaptive algorithm increases the momentum weight and decreases the reversal weight proportionally. The adjustment formula is:
New_Weight = Current_Weight + (Component_Win_Rate - Average_Win_Rate) × Adaptation_Speed
This creates a self-correcting mechanism where successful signal generators receive more influence in future composite scores, while underperforming components are de-emphasized. The system separately tracks long versus short win rates and applies directional bias corrections—if shorts consistently outperform longs, the strategy applies a 10% reduction to bullish signals to prevent fighting the prevailing market character.
Dynamic Parameter Adjustment
Beyond component weightings, three critical strategy parameters self-adjust based on performance:
Minimum Signal Score: The threshold required to trigger a trade. If overall win rate falls below 45%, the system increments this threshold by 0.10 per adjustment cycle, making the strategy more selective. If win rate exceeds 60%, the threshold decreases to allow more opportunities. This prevents the strategy from overtrading during unfavorable conditions and capitalizes on high-probability environments.
Risk Multiplier: Controls position sizing aggression. When drawdown exceeds 5%, risk per trade reduces by 10% per cycle. When drawdown falls below 2%, risk increases by 5% per cycle. This implements the professional risk management principle of "bet small when losing, bet bigger when winning" algorithmically.
Bars Between Trades: Spacing filter to prevent overtrading. Base value (default 9 bars) multiplies by drawdown factor and losing streak factor. During drawdown or consecutive losses, spacing expands up to 2x to allow market conditions to change before re-entering.
All adaptation operates during live forward-testing or real trading—there is no in-sample optimization applied to historical data. The system learns solely from its own realized trades.
Universal Futures Compatibility
The strategy implements universal futures instrument detection that automatically adapts to any futures contract without requiring manual configuration. Instead of hardcoding specific contract specifications, the system reads three critical values directly from TradingView's symbol information:
Tick Size Detection: Uses `syminfo.mintick` to obtain the minimum price increment for the current instrument. This value varies widely across markets—ES trades in 0.25 ticks, crude oil (CL) in 0.01 ticks, gold (GC) in 0.10 ticks, and treasury futures (ZB) in increments of 1/32nds. The strategy adapts all entry buffer calculations and stop placement logic to the detected tick size.
Point Value Detection: Uses `syminfo.pointvalue` to determine the dollar value per full point of price movement. For ES, one point equals $50; for crude oil, one point equals $1,000; for gold, one point equals $100. This automatic detection ensures accurate P&L calculations and risk-per-contract measurements across all instruments.
Tick Value Calculation: Combines tick size and point value to compute dollar value per tick: Tick_Value = Tick_Size × Point_Value. This derived value drives all position sizing calculations, ensuring the risk management system correctly accounts for each instrument's economic characteristics.
This universal approach means the strategy functions identically on emini indices (ES, MES, NQ, MNQ), micro indices, energy contracts (CL, NG, RB), metals (GC, SI, HG), agricultural futures (ZC, ZS, ZW), treasury futures (ZB, ZN, ZF), currency futures (6E, 6J, 6B), and any other futures contract available on TradingView. No parameter adjustments or instrument-specific branches exist in the code—the adaptation happens automatically through symbol information queries.
Stop-Out Rate Monitoring System
The strategy includes an intelligent stop-out rate tracking system that monitors the percentage of your last 20 trades (or available trades if fewer than 20) that were stopped out. This metric appears in the dashboard's Performance section with color-coded guidance:
Green (<30% stop-out rate): Very few trades are being stopped out. This suggests either your stops are too loose (giving back profits on reversals) or you're in an exceptional trending market. Consider tightening your Stop Loss ATR multiplier to lock in profits more efficiently.
Orange (30-65% stop-out rate): Healthy range. Your stop placement is appropriately sized for current market conditions and the strategy's risk-reward profile. No adjustment needed.
Red (>65% stop-out rate): Too many trades are being stopped out prematurely. Your stops are likely too tight for the current volatility regime. Consider widening your Stop Loss ATR multiplier to give trades more room to develop.
Critical Design Philosophy: Unlike some systems that automatically adjust stops based on performance statistics, this strategy intentionally keeps stop-loss control in the user's hands. Automatic stop adjustment creates dangerous feedback loops—widening stops increases risk per contract, which forces position size reduction, which distorts performance metrics, leading to incorrect adaptations. Instead, the dashboard provides visibility into stop performance, empowering you to make informed manual adjustments when warranted. This preserves the integrity of the adaptive system while giving you the critical data needed for stop optimization.
Execution Kernel Architecture
The entry system offers three distinct execution modes to match trader preference and market character:
StopBreakout Mode: Places buy-stop orders above the prior bar's high (for longs) or sell-stop orders below the prior bar's low (for shorts), plus a 2-tick buffer. This ensures entries only occur when price confirms directional momentum by breaking recent structure. Ideal for trending and momentum-driven markets.
LimitPullback Mode: Places limit orders at a pullback price calculated as: Entry_Price = Close - (ATR × Pullback_Multiplier) for longs, or Close + (ATR × Pullback_Multiplier) for shorts. Default multiplier is 0.5 ATR. This waits for mean-reversion before entering in the signal direction, capturing better prices in volatile or oscillating markets.
MarketNextOpen Mode: Executes at market on the bar immediately following signal generation. This provides fastest execution but sacrifices the filtering effect of requiring price confirmation.
All pending entry orders include a configurable Time-To-Live (TTL, default 6 bars). If an order is not filled within the TTL period, it cancels automatically to prevent stale signals from executing in changed market conditions.
Professional Exit Management
The exit system implements a three-stage progression: initial stop loss, breakeven adjustment, and dynamic trailing stop.
Initial Stop Loss: Calculated as entry price ± (ATR × User_Stop_Multiplier × Volatility_Adjustment). Users have direct control via the Stop Loss ATR multiplier (default 1.25). The system then applies volatility regime adjustments: ×1.2 in high-volatility environments (stops automatically widen), ×0.8 in low volatility (stops tighten), ×1.0 in normal conditions. This ensures stops adapt to market character while maintaining user control over baseline risk tolerance.
Breakeven Trigger: When profit reaches a configurable multiple of initial risk (default 1.0R), the stop loss automatically moves to breakeven (entry price). This locks in zero-loss status once the trade demonstrates favorable movement.
Trailing Stop Activation: When profit reaches the Trail_Trigger_R multiple (default 1.2R), the system cancels the fixed stop and activates a dynamic trailing stop. The trail uses Step and Offset parameters defined in R-multiples. For example, with Trail_Offset_R = 1.0 and Trail_Step_R = 1.5, the stop trails 1.0R behind price and moves in 1.5R increments. This captures extended moves while protecting accumulated profit.
Additional failsafes include maximum time-in-trade (exits after N bars if specified) and end-of-session flatten (automatically closes all positions X minutes before session end to avoid overnight exposure).
Core Calculation Methodology
Signal Component Scoring
Momentum Component:
- Calculates 14-period DMI (Directional Movement Index) with ADX strength filter (trending when ADX > 25)
- Computes three RSI timeframes: fast (7-period), medium (14-period), slow (21-period)
- Analyzes MACD (12/26/9) histogram for directional acceleration
- Bullish momentum: uptrend (DI+ > DI- with ADX > 25) + MACD histogram rising above zero + RSI fast between 50-80 = +1.6 score
- Bearish momentum: downtrend (DI- > DI+ with ADX > 25) + MACD histogram falling below zero + RSI fast between 20-50 = -1.6 score
- Score multiplies by volatility adjustment factor: ×0.8 in high volatility (momentum less reliable), ×1.2 in low volatility (momentum more persistent)
Structure Component:
- Identifies swing highs and lows using 10-bar pivot lookback on both sides
- Maintains most recent swing high as dynamic resistance, most recent swing low as dynamic support
- Detects breakouts: bullish when close crosses above resistance with prior bar below; bearish when close crosses below support with prior bar above
- Breakout score: ±1.0 for confirmed break
- Moving average alignment: +0.5 when price > SMA20 > SMA50 (bullish structure); -0.5 when price < SMA20 < SMA50 (bearish structure)
- Total structure range: -1.5 to +1.5
Volume Component:
- Calculates Volume Price Trend: VPT = Σ [(Close - Close ) / Close × Volume]
- Compares VPT to its 10-period EMA as signal line (similar to MACD logic)
- Computes 20-period volume moving average and standard deviation
- High volume event: current volume > (volume_average + 1× std_dev)
- Bullish volume: VPT > VPT_signal AND high_volume = +1.0
- Bearish volume: VPT < VPT_signal AND high_volume = -1.0
- No score if volume is not elevated (filters out low-conviction moves)
Reversal Component:
- Identifies extreme RSI conditions: RSI slow < 30 (oversold) or > 70 (overbought)
- Requires structural confluence: price at or below support level for bullish reversal; at or above resistance for bearish reversal
- Requires momentum shift: RSI fast must be rising (for bull) or falling (for bear) to confirm reversal in progress
- Bullish reversal: RSI < 30 AND price ≤ support AND RSI rising = +1.0
- Bearish reversal: RSI > 70 AND price ≥ resistance AND RSI falling = -1.0
Composite Score Calculation
Final_Score = (Momentum × Weight_M) + (Structure × Weight_S) + (Volume × Weight_V) + (Reversal × Weight_R)
Initial weights: Momentum = 1.0, Structure = 1.2, Volume = 0.8, Reversal = 0.6
These weights adapt after each trade based on component-specific performance as described above.
The system also applies directional bias adjustment: if recent long trades have significantly lower win rate than shorts, bullish scores multiply by 0.9 to reduce aggressive long entries. Vice versa for underperforming shorts.
Position Sizing Algorithm
The position sizing calculation incorporates multiple confidence factors and automatically scales to any futures contract:
1. Base risk amount = Account_Size × Base_Risk_Percent × Adaptive_Risk_Multiplier
2. Stop distance in price units = ATR × User_Stop_Multiplier × Volatility_Regime_Multiplier × Entry_Buffer
3. Risk per contract = Stop_Distance × Dollar_Per_Point (automatically detected from instrument)
4. Raw position size = Risk_Amount / Risk_Per_Contract
Then applies confidence scaling:
- Signal confidence = min(|Weighted_Score| / Min_Score_Threshold, 2.0) — higher scores receive larger size, capped at 2×
- Direction confidence = Long_Win_Rate (for bulls) or Short_Win_Rate (for bears)
- Type confidence = Win_Rate of dominant signal type (momentum/structure/volume/reversal)
- Total confidence = (Signal_Confidence + Direction_Confidence + Type_Confidence) / 3
Adjusted size = Raw_Size × Total_Confidence × Losing_Streak_Reduction
Losing streak reduction = 0.5 if losing_streak ≥ 5, otherwise 1.0
Universal Maximum Position Calculation: Instead of hardcoded limits per instrument, the system calculates maximum position size as: Max_Contracts = Account_Size / 25000, clamped between 1 and 10 contracts. This means a $50,000 account allows up to 2 contracts, a $100,000 account allows up to 4 contracts, regardless of which futures contract is being traded. This universal approach maintains consistent risk exposure across different instruments while preventing overleveraging.
Final size is rounded to integer and bounded by the calculated maximum.
Session and Risk Management System
Timezone-Aware Session Control
The strategy implements timezone-correct session filtering. Users specify session start hour, end hour, and timezone from 12 supported zones (New York, Chicago, Los Angeles, London, Frankfurt, Moscow, Tokyo, Hong Kong, Shanghai, Singapore, Sydney, UTC). The system converts bar timestamps to the selected timezone before applying session logic.
For split sessions (e.g., Asian session 18:00-02:00), the logic correctly handles time wraparound. Weekend trading can be optionally disabled (default: disabled) to avoid low-liquidity weekend price action.
Multi-Layer Risk Controls
Daily Loss Limit: Strategy ceases all new entries when daily P&L reaches negative threshold (default $2,000). This prevents catastrophic drawdown days. Resets at timezone-corrected day boundary.
Weekly Profit Target: Strategy ceases trading when weekly profit reaches target (default $10,000). This implements the professional principle of "take the win and stop pushing luck." Resets on timezone-corrected Monday.
Maximum Daily Trades: Hard cap on entries per day (default 20) to prevent overtrading during volatile conditions when many signals may generate.
Trailing Drawdown Guard: Optional prop-firm-style trailing stop on account equity. When enabled, if equity drops below (Peak_Equity - Trailing_DD_Amount), all trading halts. This simulates the common prop firm rule where exceeding trailing drawdown results in account termination.
All limits display status in the real-time dashboard, showing "MAX LOSS HIT", "WEEKLY TARGET MET", or "ACTIVE" depending on current state.
How To Use This Strategy
Initial Setup
1. Apply the strategy to your desired futures chart (tested on 5-minute through daily timeframes)
2. The strategy will automatically detect your instrument's specifications—no manual configuration needed for different contracts
3. Configure your account size and risk parameters in the Core Settings section
4. Set your trading session hours and timezone to match your availability
5. Adjust the Stop Loss ATR multiplier based on your risk tolerance (0.8-1.2 for tighter stops, 1.5-2.5 for wider stops)
6. Select your preferred entry execution mode (recommend StopBreakout for beginners)
7. Enable adaptation (recommended) or disable for fixed-parameter operation
8. Review the strategy's Properties in the Strategy Tester settings and verify commission/slippage match your broker's actual costs
The universal futures detection means you can switch between ES, NQ, CL, GC, ZB, or any other futures contract without changing any strategy parameters—the system will automatically adapt its calculations to each instrument's unique specifications.
Dashboard Interpretation
The strategy displays a comprehensive real-time dashboard in the top-right corner showing:
Market State Section:
- Trend: Shows UPTREND/DOWNTREND/CONSOLIDATING/NEUTRAL based on ADX and DMI analysis
- ADX Value: Current trend strength (>25 = strong trend, <20 = consolidating)
- Momentum: BULL/BEAR/NEUTRAL classification with current momentum score
- Volatility: HIGH/LOW/NORMAL regime with ATR percentage of price
Volume Profile Section (Large dashboard only):
- VPT Flow: Directional bias from volume analysis
- Volume Status: HIGH/LOW/NORMAL with relative volume multiplier
Performance Section:
- Daily P&L: Current day's profit/loss with color coding
- Daily Trades: Number of completed trades today
- Weekly P&L: Current week's profit/loss
- Target %: Progress toward weekly profit target
- Stop-Out Rate: Percentage of last 20 trades (or available trades if <20) that were stopped out. Includes all stop types: initial stops, breakeven stops, trailing stops, timeout exits, and EOD flattens. Color coded with actionable guidance:
- Green (<30%): Shows "TIGHTEN" guidance. Very few stop-outs suggests stops may be too loose or exceptional market conditions. Consider reducing Stop Loss ATR multiplier.
- Orange (30-65%): Shows "OK" guidance. Healthy stop-out rate indicating appropriate stop placement for current conditions.
- Red (>65%): Shows "WIDEN" guidance. Too many premature stop-outs. Consider increasing Stop Loss ATR multiplier to give trades more room.
- Status: Overall trading status (ACTIVE/MAX LOSS HIT/WEEKLY TARGET MET/FILTERS ACTIVE)
Adaptive Engine Section:
- Min Score: Current minimum threshold for trade entry (higher = more selective)
- Risk Mult: Current position sizing multiplier (adjusts with performance)
- Bars BTW: Current minimum bars required between trades
- Drawdown: Current drawdown percentage from equity peak
- Weights: M/S/V/R showing current component weightings
Win Rates Section:
- Type: Win rates for Momentum, Structure, Volume, Reversal signal types
- Direction: Win rates for Long vs Short trades
Color coding shows green for >50% win rate, red for <50%
Session Info Section:
- Session Hours: Active trading window with timezone
- Weekend Trading: ENABLED/DISABLED status
- Session Status: ACTIVE/INACTIVE based on current time
Signal Generation and Entry
The strategy generates entries when the weighted composite score exceeds the adaptive minimum threshold (initial value configurable, typically 1.5 to 2.5). Entries display as layered triangle markers on the chart:
- Long Signal: Three green upward triangles below the entry bar
- Short Signal: Three red downward triangles above the entry bar
Triangle tooltip shows the signal score and dominant signal type (MOMENTUM/STRUCTURE/VOLUME/REVERSAL).
Position Management and Stop Optimization
Once entered, the strategy automatically manages the position through its three-stage exit system. Monitor the Stop-Out Rate metric in the dashboard to optimize your stop placement:
If Stop-Out Rate is Green (<30%): You're rarely being stopped out. This could mean:
- Your stops are too loose, allowing trades to give back too much profit on reversals
- You're in an exceptional trending market where tight stops would work better
- Action: Consider reducing your Stop Loss ATR multiplier by 0.1-0.2 to tighten stops and lock in profits more efficiently
If Stop-Out Rate is Orange (30-65%): Optimal range. Your stops are appropriately sized for the strategy's risk-reward profile and current market volatility. No adjustment needed.
If Stop-Out Rate is Red (>65%): You're being stopped out too frequently. This means:
- Your stops are too tight for current market volatility
- Trades need more room to develop before reaching profit targets
- Action: Increase your Stop Loss ATR multiplier by 0.1-0.3 to give trades more breathing room
Remember: The stop-out rate calculation includes all exit types (initial stops, breakeven stops, trailing stops, timeouts, EOD flattens). A trade that reaches breakeven and gets stopped out at entry price counts as a stop-out, even though it didn't lose money. This is intentional—it indicates the stop placement didn't allow the trade to develop into profit.
Optimization Workflow
For traders wanting to customize the strategy for their specific instrument and timeframe:
Week 1-2: Run with defaults, adaptation enabled
Allow the system to execute at least 30-50 trades (the Learning Period plus additional buffer). Monitor which session periods, signal types, and market conditions produce the best results. Observe your stop-out rate—if it's consistently red or green, plan to adjust Stop Loss ATR multiplier after the learning period. Do not adjust parameters yet—let the adaptive system establish baseline performance data.
Week 3-4: Analyze adaptation behavior and optimize stops
Review the dashboard's adaptive weights and win rates. If certain signal types consistently show <40% win rate, consider slightly reducing their base weight. If a particular entry mode produces better fill quality and win rate, switch to that mode. If you notice the minimum score threshold has climbed very high (>3.0), market conditions may not suit the strategy's logic—consider switching instruments or timeframes.
Based on your Stop-Out Rate observations:
- Consistently <30%: Reduce Stop Loss ATR multiplier by 0.2-0.3
- Consistently >65%: Increase Stop Loss ATR multiplier by 0.2-0.4
- Oscillating between zones: Leave stops at default and let volatility regime adjustments handle it
Ongoing: Fine-tune risk and execution
Adjust the following based on your risk tolerance and account type:
- Base Risk Per Trade: 0.5% for conservative, 0.75% for moderate, 1.0% for aggressive
- Stop Loss ATR Multiplier: 0.8-1.2 for tight stops (scalping), 1.5-2.5 for wide stops (swing trading)
- Bars Between Trades: Lower (5-7) for more opportunities, higher (12-20) for more selective
- Entry Mode: Experiment between modes to find best fit for current market character
- Session Hours: Narrow to specific high-performance session windows if certain hours consistently underperform
Never adjust: Do not manually modify the adaptive weights, minimum score, or risk multiplier after the system has begun learning. These parameters are self-optimizing and manual interference defeats the adaptive mechanism.
Parameter Descriptions and Optimization Guidelines
Adaptive Intelligence Group
Enable Self-Optimization (default: true): Master switch for the adaptive learning system. When enabled, component weights, minimum score, risk multiplier, and trade spacing adjust based on realized performance. Disable to run the strategy with fixed parameters (useful for comparing adaptive vs non-adaptive performance).
Learning Period (default: 15 trades): Number of most recent trades to analyze for performance calculations. Shorter values (10-12) adapt more quickly to recent conditions but may overreact to variance. Longer values (20-30) produce more stable adaptations but respond slower to regime changes. For volatile markets, use shorter periods. For stable trends, use longer periods.
Adaptation Speed (default: 0.25): Controls the magnitude of parameter adjustments per learning cycle. Lower values (0.05-0.15) make gradual, conservative changes. Higher values (0.35-0.50) make aggressive adjustments. Faster adaptation helps in rapidly changing markets but increases parameter instability. Start with default and increase only if you observe the system failing to adapt quickly enough to obvious performance patterns.
Performance Memory (default: 100 trades): Maximum number of historical trades stored for analysis. This array size does not affect learning (which uses only Learning Period trades) but provides data for future analytics features including stop-out rate tracking. Higher values consume more memory but provide richer historical dataset. Typical users should not need to modify this.
Core Settings Group
Account Size (default: $50,000): Starting capital for position sizing calculations. This should match your actual account size for accurate risk per trade. The strategy uses this value to calculate dollar risk amounts and determine maximum position size (1 contract per $25,000).
Weekly Profit Target (default: $10,000): When weekly P&L reaches this value, the strategy stops taking new trades for the remainder of the week. This implements a "quit while ahead" rule common in professional trading. Set to a realistic weekly goal—20% of account size per week ($10K on $50K) is very aggressive; 5-10% is more sustainable.
Max Daily Loss (default: $2,000): When daily P&L reaches this negative threshold, strategy stops all new entries for the day. This is your maximum acceptable daily loss. Professional traders typically set this at 2-4% of account size. A $2,000 loss on a $50,000 account = 4%.
Base Risk Per Trade % (default: 0.5%): Initial percentage of account to risk on each trade before adaptive multiplier and confidence scaling. 0.5% is conservative, 0.75% is moderate, 1.0-1.5% is aggressive. Remember that actual risk per trade = Base Risk × Adaptive Risk Multiplier × Confidence Factors, so the realized risk will vary.
Trade Filters Group
Base Minimum Signal Score (default: 1.5): Initial threshold that composite weighted score must exceed to generate a signal. Lower values (1.0-1.5) produce more trades with lower average quality. Higher values (2.0-3.0) produce fewer, higher-quality setups. This value adapts automatically when adaptive mode is enabled, but the base sets the starting point. For trending markets, lower values work well. For choppy markets, use higher values.
Base Bars Between Trades (default: 9): Minimum bars that must elapse after an entry before another signal can trigger. This prevents overtrading and allows previous trades time to develop. Lower values (3-6) suit scalping on lower timeframes. Higher values (15-30) suit swing trading on higher timeframes. This value also adapts based on drawdown and losing streaks.
Max Daily Trades (default: 20): Hard limit on total trades per day regardless of signal quality. This prevents runaway trading during extremely volatile days when many signals may generate. For 5-minute charts, 20 trades/day is reasonable. For 1-hour charts, 5-10 trades/day is more typical.
Session Group
Session Start Hour (default: 5): Hour (0-23 format) when trading is allowed to begin, in the timezone specified. For US futures trading in Chicago time, session typically starts at 5:00 or 6:00 PM (17:00 or 18:00) Sunday evening.
Session End Hour (default: 17): Hour when trading stops and no new entries are allowed. For US equity index futures, regular session ends at 4:00 PM (16:00) Central Time.
Allow Weekend Trading (default: false): Whether strategy can trade on Saturday/Sunday. Most futures have low volume on weekends; keeping this disabled is recommended unless you specifically trade Sunday evening open.
Session Timezone (default: America/Chicago): Timezone for session hour interpretation. Select your local timezone or the timezone of your instrument's primary exchange. This ensures session logic aligns with your intended trading hours.
Prop Guards Group
Trailing Drawdown Guard (default: false): Enables prop-firm-style trailing maximum drawdown. When enabled, if equity drops below (Peak Equity - Trailing DD Amount), all trading halts for the remainder of the backtest/live session. This simulates rules used by funded trader programs where exceeding trailing drawdown terminates the account.
Trailing DD Amount (default: $2,500): Dollar amount of drawdown allowed from equity peak. If your equity reaches $55,000, the trailing stop sets at $52,500. If equity then drops to $52,499, the guard triggers and trading ceases.
Execution Kernel Group
Entry Mode (default: StopBreakout):
- StopBreakout: Places stop orders above/below signal bar requiring price confirmation
- LimitPullback: Places limit orders at pullback prices seeking better fills
- MarketNextOpen: Executes immediately at market on next bar
Limit Offset (default: 0.5x ATR): For LimitPullback mode, how far below/above current price to place the limit order. Smaller values (0.3-0.5) seek minor pullbacks. Larger values (0.8-1.2) wait for deeper retracements but may miss trades.
Entry TTL (default: 6 bars, 0=off): Bars an entry order remains pending before cancelling. Shorter values (3-4) keep signals fresh. Longer values (8-12) allow more time for fills but risk executing stale signals. Set to 0 to disable TTL (orders remain active indefinitely until filled or opposite signal).
Exits Group
Stop Loss (default: 1.25x ATR): Base stop distance as a multiple of the 14-period ATR. This is your primary risk control parameter and directly impacts your stop-out rate. Lower values (0.8-1.0) create tighter stops that reduce risk per trade but may get stopped out prematurely in volatile conditions—expect stop-out rates above 65% (red zone). Higher values (1.5-2.5) give trades more room to breathe but increase risk per contract—expect stop-out rates below 30% (green zone). The system applies additional volatility regime adjustments on top of this base: ×1.2 in high volatility environments (stops widen automatically), ×0.8 in low volatility (stops tighten), ×1.0 in normal conditions. For scalping on lower timeframes, use 0.8-1.2. For swing trading on higher timeframes, use 1.5-2.5. Monitor the Stop-Out Rate metric in the dashboard and adjust this parameter to keep it in the healthy 30-65% orange zone.
Move to Breakeven at (default: 1.0R): When profit reaches this multiple of initial risk, stop moves to breakeven. 1.0R means after price moves in your favor by the distance you risked, you're protected at entry price. Lower values (0.5-0.8R) lock in breakeven faster. Higher values (1.5-2.0R) allow more room before protection.
Start Trailing at (default: 1.2R): When profit reaches this multiple, the fixed stop transitions to a dynamic trailing stop. This should be greater than the BE trigger. Values typically range 1.0-2.0R depending on how much profit you want secured before trailing activates.
Trail Offset (default: 1.0R): How far behind price the trailing stop follows. Tighter offsets (0.5-0.8R) protect profit more aggressively but may exit prematurely. Wider offsets (1.5-2.5R) allow more room for profit to run but risk giving back more on reversals.
Trail Step (default: 1.5R): How far price must move in profitable direction before the stop advances. Smaller steps (0.5-1.0R) move the stop more frequently, tightening protection continuously. Larger steps (2.0-3.0R) move the stop less often, giving trades more breathing room.
Max Bars In Trade (default: 0=off): Maximum bars allowed in a position before forced exit. This prevents trades from "going stale" during periods of no meaningful price action. For 5-minute charts, 50-100 bars (4-8 hours) is reasonable. For daily charts, 5-10 bars (1-2 weeks) is typical. Set to 0 to disable.
Flatten near Session End (default: true): Whether to automatically close all positions as session end approaches. Recommended to avoid carrying positions into off-hours with low liquidity.
Minutes before end (default: 5): How many minutes before session end to flatten. 5-15 minutes provides buffer for order execution before the session boundary.
Visual Effects Configuration Group
Dashboard Size (default: Normal): Controls information density in the dashboard. Small shows only critical metrics (excludes stop-out rate). Normal shows comprehensive data including stop-out rate. Large shows all available metrics including weights, session info, and volume analysis. Larger sizes consume more screen space but provide complete visibility.
Show Quantum Field (default: true): Displays animated grid pattern on the chart indicating market state. Disable if you prefer cleaner charts or experience performance issues on lower-end hardware.
Show Wick Pressure Lines (default: true): Draws dynamic lines from bars with extreme wicks, indicating potential support/resistance or liquidity absorption zones. Disable for simpler visualization.
Show Morphism Energy Beams (default: true): Displays directional beams showing momentum energy flow. Beams intensify during strong trends. Disable if you find this visually distracting.
Show Order Flow Clouds (default: true): Draws translucent boxes representing volume flow bullish/bearish bias. Disable for cleaner price action visibility.
Show Fractal Grid (default: true): Displays multi-timeframe support/resistance levels based on fractal price structure at 10/20/30/40/50 bar periods. Disable if you only want to see primary pivot levels.
Glow Intensity (default: 4): Controls the brightness and thickness of visual effects. Lower values (1-2) for subtle visualization. Higher values (7-10) for maximum visibility but potentially cluttered charts.
Color Theme (default: Cyber): Visual color scheme. Cyber uses cyan/magenta futuristic colors. Quantum uses aqua/purple. Matrix uses green/red terminal style. Aurora uses pastel pink/purple gradient. Choose based on personal preference and monitor calibration.
Show Watermark (default: true): Displays animated watermark at bottom of chart with creator credit and current P&L. Disable if you want completely clean charts or need screen space.
Performance Characteristics and Best Use Cases
Optimal Conditions
This strategy performs best in markets exhibiting:
Trending phases with periodic pullbacks: The combination of momentum and structure components excels when price establishes directional bias but provides retracement opportunities for entries. Markets with 60-70% trending bars and 30-40% consolidation produce the highest win rates.
Medium to high volatility: The ATR-based stop sizing and dynamic risk adjustment require sufficient price movement to generate meaningful profit relative to risk. Instruments with 2-4% daily ATR relative to price work well. Extremely low volatility (<1% daily ATR) generates too many scratch trades.
Clear volume patterns: The VPT volume component adds significant edge when volume expansions align with directional moves. Instruments and timeframes where volume data reflects actual transaction flow (versus tick volume proxies) perform better.
Regular session structure: Futures markets with defined opening and closing hours, consistent liquidity throughout the session, and clear overnight/day session separation allow the session controls and time-based failsafes to function optimally.
Sufficient liquidity for stop execution: The stop breakout entry mode requires that stop orders can fill without significant slippage. Highly liquid contracts work better than illiquid instruments where stop orders may face adverse fills.
Suboptimal Conditions
The strategy may struggle with:
Extreme chop with no directional persistence: When ADX remains below 15 for extended periods and price oscillates rapidly without establishing trends, the momentum component generates conflicting signals. Win rate typically drops below 40% in these conditions, triggering the adaptive system to increase minimum score thresholds until conditions improve. Stop-out rates may also spike into the red zone.
Gap-heavy instruments: Markets with frequent overnight gaps disrupt the continuous price assumptions underlying ATR stops and EMA-based structure analysis. Gaps can also cause stop orders to fill at prices far from intended levels, distorting stop-out rate metrics.
Very low timeframes with excessive noise: On 1-minute or tick charts, the signal components react to micro-structure noise rather than meaningful price swings. The strategy works best on 5-minute through daily timeframes where price movements reflect actual order flow shifts.
Extended low-volatility compression: During historically low volatility periods, profit targets become difficult to reach before mean-reversion occurs. The trail offset, even when set to minimum, may be too wide for the compressed price environment. Stop-out rates may drop to green zone indicating stops should be tightened.
Parabolic moves or climactic exhaustion: Vertical price advances or selloffs where price moves multiple ATRs in single bars can trigger momentum signals at exhaustion points. The structure and reversal components attempt to filter these, but extreme moves may override normal logic.
The adaptive learning system naturally reduces signal frequency and position sizing during unfavorable conditions. If you observe multiple consecutive days with zero trades and "FILTERS ACTIVE" status, this indicates the strategy has self-adjusted to avoid poor conditions rather than forcing trades.
Instrument Recommendations
Emini Index Futures (ES, MES, NQ, MNQ, YM, RTY): Excellent fit. High liquidity, clear volatility patterns, strong volume signals, defined session structure. These instruments have been extensively tested and the universal detection handles all contract specifications automatically.
Micro Index Futures (MES, MNQ, M2K, MYM): Excellent fit for smaller accounts. Same market characteristics as the standard eminis but with reduced contract sizes allowing proper risk management on accounts below $50,000.
Energy Futures (CL, NG, RB, HO): Good to mixed fit. Crude oil (CL) works well due to strong trends and reasonable volatility. Natural gas (NG) can be extremely volatile—consider reducing Base Risk to 0.3-0.4% and increasing Stop Loss ATR multiplier to 1.8-2.2 for NG. The strategy automatically detects the $10/tick value for CL and adjusts position sizing accordingly.
Metal Futures (GC, SI, HG, PL): Good fit. Gold (GC) and silver (SI) exhibit clear trending behavior and work well with the momentum/structure components. The strategy automatically handles the different point values ($100/point for gold, $5,000/point for silver).
Agricultural Futures (ZC, ZS, ZW, ZL): Good fit. Grain futures often trend strongly during seasonal periods. The strategy handles the unique tick sizes (1/4 cent increments) and point values ($50/point for corn/wheat, $60/point for soybeans) automatically.
Treasury Futures (ZB, ZN, ZF, ZT): Good fit for trending rates environments. The strategy automatically handles the fractional tick sizing (32nds for ZB/ZN, halves of 32nds for ZF/ZT) through the universal detection system.
Currency Futures (6E, 6J, 6B, 6A, 6C): Good fit. Major currency pairs exhibit smooth trending behavior. The strategy automatically detects point values which vary significantly ($12.50/tick for 6E, $12.50/tick for 6J, $6.25/tick for 6B).
Cryptocurrency Futures (BTC, ETH, MBT, MET): Mixed fit. These markets have extreme volatility requiring parameter adjustment. Increase Base Risk to 0.8-1.2% and Stop Loss ATR multiplier to 2.0-3.0 to account for wider stop distances. Enable 24-hour trading and weekend trading as these markets have no traditional sessions.
The universal futures compatibility means you can apply this strategy to any of these markets without code modification—simply open the chart of your desired contract and the strategy will automatically configure itself to that instrument's specifications.
Important Disclaimers and Realistic Expectations
This is a sophisticated trading strategy that combines multiple analytical methods within an adaptive framework designed for active traders who will monitor performance and market conditions. It is not a "set and forget" fully automated system, nor should it be treated as a guaranteed profit generator.
Backtesting Realism and Limitations
The strategy includes realistic trading costs and execution assumptions:
- Commission: $0.62 per contract per side (accurate for many retail futures brokers)
- Slippage: 1 tick per entry and exit (conservative estimate for liquid futures)
- Position sizing: Realistic risk percentages and maximum contract limits based on account size
- No repainting: All calculations use confirmed bar data only—signals do not change retroactively
However, backtesting cannot fully capture live trading reality:
- Order fill delays: In live trading, stop and limit orders may not fill instantly at the exact tick shown in backtest
- Volatile periods: During high volatility or low liquidity (news events, rollover days, pre-holidays), slippage may exceed the 1-tick assumption significantly
- Gap risk: The backtest assumes stops fill at stop price, but gaps can cause fills far beyond intended exit levels
- Psychological factors: Seeing actual capital at risk creates emotional pressures not present in backtesting, potentially leading to premature manual intervention
The strategy's backtest results should be viewed as best-case scenarios. Real trading will typically produce 10-30% lower returns than backtest due to the above factors.
Risk Warnings
All trading involves substantial risk of loss. The adaptive learning system can improve parameter selection over time, but it cannot predict future price movements or guarantee profitable performance. Past wins do not ensure future wins.
Losing streaks are inevitable. Even with a 60% win rate, you will encounter sequences of 5, 6, or more consecutive losses due to normal probability distributions. The strategy includes losing streak detection and automatic risk reduction, but you must have sufficient capital to survive these drawdowns.
Market regime changes can invalidate learned patterns. If the strategy learns from 50 trades during a trending regime, then the market shifts to a ranging regime, the adapted parameters may initially be misaligned with the new environment. The system will re-adapt, but this transition period may produce suboptimal results.
Prop firm traders: understand your specific rules. Every prop firm has different rules regarding maximum drawdown, daily loss limits, consistency requirements, and prohibited trading behaviors. While this strategy includes common prop guardrails, you must verify it complies with your specific firm's rules and adjust parameters accordingly.
Never risk capital you cannot afford to lose. This strategy can produce substantial drawdowns, especially during learning periods or market regime shifts. Only trade with speculative capital that, if lost, would not impact your financial stability.
Recommended Usage
Paper trade first: Run the strategy on a simulated account for at least 50 trades or 1 month before committing real capital. Observe how the adaptive system behaves, identify any patterns in losing trades, monitor your stop-out rate trends, and verify your understanding of the entry/exit mechanics.
Start with minimum position sizing: When transitioning to live trading, reduce the Base Risk parameter to 0.3-0.4% initially (vs 0.5-1.0% in testing) to reduce early impact while the system learns your live broker's execution characteristics.
Monitor daily, but do not micromanage: Check the dashboard daily to ensure the strategy is operating normally and risk controls have not triggered unexpectedly. Pay special attention to the Stop-Out Rate metric—if it remains in the red or green zones for multiple days, adjust your Stop Loss ATR multiplier accordingly. However, resist the urge to manually adjust adaptive weights or disable trades based on short-term performance. Allow the adaptive system at least 30 trades to establish patterns before making manual changes.
Combine with other analysis: While this strategy can operate standalone, professional traders typically use systematic strategies as one component of a broader approach. Consider using the strategy for trade execution while applying your own higher-timeframe analysis or fundamental view for trade filtering or sizing adjustments.
Keep a trading journal: Document each week's results, note market conditions (trending vs ranging, high vs low volatility), record stop-out rates and any Stop Loss ATR adjustments you made, and document any manual interventions. Over time, this journal will help you identify conditions where the strategy excels versus struggles, allowing you to selectively enable or disable trading during certain environments.
Technical Implementation Notes
All calculations execute on closed bars only (`calc_on_every_tick=false`) ensuring that signals and values do not repaint. Once a bar closes and a signal generates, that signal is permanent in the history.
The strategy uses fixed-quantity position sizing (`default_qty_type=strategy.fixed, default_qty_value=1`) with the actual contract quantity determined by the position sizing function and passed to the entry commands. This approach provides maximum control over risk allocation.
Order management uses Pine Script's native `strategy.entry()` and `strategy.exit()` functions with appropriate parameters for stops, limits, and trailing stops. All orders include explicit from_entry references to ensure they apply to the correct position.
The adaptive learning arrays (trade_returns, trade_directions, trade_types, trade_hours, trade_was_stopped) are maintained as circular buffers capped at PERFORMANCE_MEMORY size (default 100 trades). When a new trade closes, its data is added to the beginning of the array using `array.unshift()`, and the oldest trade is removed using `array.pop()` if capacity is exceeded. The stop-out tracking system analyzes the trade_was_stopped array to calculate the rolling percentage displayed in the dashboard.
Dashboard rendering occurs only on the confirmed bar (`barstate.isconfirmed`) to minimize computational overhead. The table is pre-created with sufficient rows for the selected dashboard size and cells are populated with current values each update.
Visual effects (fractal grid, wick pressure, morphism beams, order flow clouds, quantum field) recalculate on each bar for real-time chart updates. These are computationally intensive—if you experience chart lag, disable these visual components. The core strategy logic continues to function identically regardless of visual settings.
Timezone conversions use Pine Script's built-in timezone parameter on the `hour()`, `minute()`, and `dayofweek()` functions. This ensures session logic and daily/weekly resets occur at correct boundaries regardless of the chart's default timezone or the server's timezone.
The universal futures detection queries `syminfo.mintick` and `syminfo.pointvalue` on each strategy initialization to obtain the current instrument's specifications. These values remain constant throughout the strategy's execution on a given chart but automatically update when the strategy is applied to a different instrument.
The strategy has been tested on TradingView across timeframes from 5-minute through daily and across multiple futures instrument types including equity indices, energy, metals, agriculture, treasuries, and currencies. It functions identically on all instruments due to the percentage-based risk model and ATR-relative calculations which adapt automatically to price scale and volatility, combined with the universal futures detection system that handles contract-specific specifications.
스크립트에서 "track"에 대해 찾기
ICT Sessions With BOS [TradeWithRon]
WITH BOS
This version includes BOS with filter for each session.
NONE,FVG,CISD Filter preset
you can choose how many BOS per session, style etc.
ICT Sessions and killzones maps three intraday sessions on your chart (Asia, London, NY), tracks each session’s live high/low, draws optional session range boxes, and projects ICT OTE zones in real time—with granular styling, touch/mitigation logic, and alerting.
What it does
*Live Session high/low tracking.
Historical session lines:
When a session ends, its final High/Low are preserved as tracked lines (with optional labels) for a configurable number of recent sessions.
Session boxes (ranges):
Draws a shaded box from session start to end that expands with new highs/lows. Limit how many recent boxes remain on chart.
ICT OTE zones (live):
For the currently active session, projects user-defined Fibonacci OTE levels (e.g., 61.8%, 70.5%, 78.6) between the session’s running high and low. Zones update tick-by-tick and can show labels. You can retain a history of recent sessions’ OTE levels.
snapshot
Break visualization (mitigation):
Optionally color the bar when price breaks a stored session High/Low. You can:
Require a body close through the level (vs. any touch)
Auto-remove the line and/or label on touch/close
Use custom break colors per session and side (high/low)
Timestamps:
Add up to two recurring vertical timestamp markers (e.g., 08:00, 09:30), plus an opening horizontal marker (e.g., 09:30) with label that extends until the next occurrence.
Alerts:
Built-in alerts for:
Touch of Session 1/2/3 High/Low (Asia/London/NY)
Touch of OTE levels (per session)
Key inputs:
Time & Limits
Timezone (e.g., GMT-4)
Timeframe limit: hide all drawings on and above a specified TF
Sessions
Session windows (default):
Session 1 (Asia): 18:00–00:00
Session 2 (London): 00:00–06:00
Session 3 (NY): 08:00–12:00
How many to keep (lines/boxes)
Line width, colors, and label suffixes (“High”/“Low”)
Labels: toggle, text (“Asia”, “London”, “NY”), size, and colors
Boxes: toggle per session and background colors
ICT OTE Zones
Toggle per session (Asia/London/NY)
Levels (comma-separated %s, e.g., 61.8,70.5,78.6)
History: number of past sessions to retain
Opacity, line width/style, and label size
Custom label text per session (e.g., “Asia OTE”)
Break/Mitigation Behavior:
Enable Mitigated Candles (bar color on break)
Remove line on touch and/or remove label on touch
Require body close (vs. wick touch)
Custom break colors by session and side
Timestamps
Opening horizontal line (time, style, width, color, label text/size, drawing limit)
Two vertical timestamps (times, style, width, color, drawing limit)
Alerts
Master Enable Alerts
Per-session toggles for High/Low touches
OTE touch alerts
How it works (under the hood)
Detects session state via input.session() windows in the chosen timezone.
Live session High/Low lines and labels update in real time; on session end, final levels are stored with optional labels and tracked length.
OTE zones are live-computed from current session High↔Low and refreshed every bar; a compact rolling history is enforced.
Bar coloring reacts to break events (touch or body-close, per your setting) and uses session-specific colors when enabled.
Timestamp lines/labels are created on each occurrence and trimmed to a drawing limit for performance.
Tips:
To hide session lines but keep boxes, set line color opacity to 0.
Use Timeframe Limit to keep higher-TF charts clean.
Fine-tune OTE Levels and History to balance clarity and performance.
For stricter break logic, enable Require Body Close.
Note: The script reserves high limits for lines/labels/boxes to keep recent context visible while managing cleanup automatically. Adjust “Session Number” and “Number Of Boxes” to suit your workflow.
— © TradeWithRon
ICT Sessions [TradeWithRon]
ICT Sessions and killzones maps three intraday sessions on your chart (Asia, London, NY), tracks each session’s live high/low, draws optional session range boxes, and projects ICT OTE zones in real time—with granular styling, touch/mitigation logic, and alerting.
What it does
Live Session high/low tracking.
Historical session lines:
When a session ends, its final High/Low are preserved as tracked lines (with optional labels) for a configurable number of recent sessions.
Session boxes (ranges):
Draws a shaded box from session start to end that expands with new highs/lows. Limit how many recent boxes remain on chart.
ICT OTE zones (live):
For the currently active session, projects user-defined Fibonacci OTE levels (e.g., 61.8%, 70.5%, 78.6) between the session’s running high and low. Zones update tick-by-tick and can show labels. You can retain a history of recent sessions’ OTE levels.
Break visualization (mitigation):
Optionally color the bar when price breaks a stored session High/Low. You can:
Require a body close through the level (vs. any touch)
Auto-remove the line and/or label on touch/close
Use custom break colors per session and side (high/low)
Timestamps:
Add up to two recurring vertical timestamp markers (e.g., 08:00, 09:30), plus an opening horizontal marker (e.g., 09:30) with label that extends until the next occurrence.
Alerts:
Built-in alerts for:
Touch of Session 1/2/3 High/Low (Asia/London/NY)
Touch of OTE levels (per session)
Key inputs:
Time & Limits
Timezone (e.g., GMT-4)
Timeframe limit: hide all drawings on and above a specified TF
Sessions
Session windows (default):
Session 1 (Asia): 18:00–00:00
Session 2 (London): 00:00–06:00
Session 3 (NY): 08:00–12:00
How many to keep (lines/boxes)
Line width, colors, and label suffixes (“High”/“Low”)
Labels: toggle, text (“Asia”, “London”, “NY”), size, and colors
Boxes: toggle per session and background colors
ICT OTE Zones
Toggle per session (Asia/London/NY)
Levels (comma-separated %s, e.g., 61.8,70.5,78.6)
History: number of past sessions to retain
Opacity, line width/style, and label size
Custom label text per session (e.g., “Asia OTE”)
Break/Mitigation Behavior:
Enable Mitigated Candles (bar color on break)
Remove line on touch and/or remove label on touch
Require body close (vs. wick touch)
Custom break colors by session and side
Timestamps
Opening horizontal line (time, style, width, color, label text/size, drawing limit)
Two vertical timestamps (times, style, width, color, drawing limit)
Alerts
Master Enable Alerts
Per-session toggles for High/Low touches
OTE touch alerts
How it works (under the hood)
Detects session state via input.session() windows in the chosen timezone.
Live session High/Low lines and labels update in real time; on session end, final levels are stored with optional labels and tracked length.
OTE zones are live-computed from current session High↔Low and refreshed every bar; a compact rolling history is enforced.
Bar coloring reacts to break events (touch or body-close, per your setting) and uses session-specific colors when enabled.
Timestamp lines/labels are created on each occurrence and trimmed to a drawing limit for performance.
Tips:
To hide session lines but keep boxes, set line color opacity to 0.
Use Timeframe Limit to keep higher-TF charts clean.
Fine-tune OTE Levels and History to balance clarity and performance.
For stricter break logic, enable Require Body Close.
Note: The script reserves high limits for lines/labels/boxes to keep recent context visible while managing cleanup automatically. Adjust “Session Number” and “Number Of Boxes” to suit your workflow.
— © TradeWithRon
Squeeze Hour Frequency [CHE]Squeeze Hour Frequency (ATR-PR) — Standalone — Tracks daily squeeze occurrences by hour to reveal time-based volatility patterns
Summary
This indicator identifies periods of unusually low volatility, defined as squeezes, and tallies their frequency across each hour of the day over historical trading sessions. By aggregating counts into a sortable table, it helps users spot hours prone to these conditions, enabling better scheduling of trading activity to avoid or target specific intraday regimes. Signals gain robustness through percentile-based detection that adapts to recent volatility history, differing from fixed-threshold methods by focusing on relative lowness rather than absolute levels, which reduces false positives in varying market environments.
Motivation: Why this design?
Traders often face uneven intraday volatility, with certain hours showing clustered low-activity phases that precede or follow breakouts, leading to mistimed entries or overlooked calm periods. The core idea of hourly squeeze frequency addresses this by binning low-volatility events into 24 hourly slots and counting distinct daily occurrences, providing a historical profile of when squeezes cluster. This reveals time-of-day biases without relying on real-time alerts, allowing proactive adjustments to session focus.
What’s different vs. standard approaches?
- Reference baseline: Classical volatility tools like simple moving average crossovers or fixed ATR thresholds, which flag squeezes uniformly across the day.
- Architecture differences:
- Uses persistent arrays to track one squeeze per hour per day, preventing overcounting within sessions.
- Employs custom sorting on ratio arrays for dynamic table display, prioritizing top or bottom performers.
- Handles timezones explicitly to ensure consistent binning across global assets.
- Practical effect: Charts show a persistent table ranking hours by squeeze share, making intraday patterns immediately visible—such as a top hour capturing over 20 percent of total events—unlike static overlays that ignore temporal distribution, which matters for avoiding low-liquidity traps in crypto or forex.
How it works (technical)
The indicator first computes a rolling volatility measure over a specified lookback period. It then derives a relative ranking of the current value against recent history within a window of bars. A squeeze is flagged when this ranking falls below a user-defined cutoff, indicating the value is among the lowest in the recent sample.
On each bar, the local hour is extracted using the selected timezone. If a squeeze occurs and the bar has price data, the count for that hour increments only if no prior mark exists for the current day, using a persistent array to store the last marked day per hour. This ensures one tally per unique trading day per slot.
At the final bar, arrays compile counts and ratios for all 24 hours, where the ratio represents each hour's share of total squeezes observed. These are sorted ascending or descending based on display mode, and the top or bottom subset populates the table. Background shading highlights live squeezes in red for visual confirmation. Initialization uses zero-filled arrays for counts and negative seeds for day tracking, with state persisting across bars via variable declarations.
No higher timeframe data is pulled, so there is no repaint risk from external fetches; all logic runs on confirmed bars.
Parameter Guide
ATR Length — Controls the lookback for the volatility measure, influencing sensitivity to short-term fluctuations; shorter values increase responsiveness but add noise, longer ones smooth for stability — Default: 14 — Trade-offs/Tips: Use 10-20 for intraday charts to balance quick detection with fewer false squeezes; test on historical data to avoid over-smoothing in trending markets.
Percentile Window (bars) — Sets the history depth for ranking the current volatility value, affecting how "low" is defined relative to past; wider windows emphasize long-term norms — Default: 252 — Trade-offs/Tips: 100-300 bars suit daily cycles; narrower for fast assets like crypto to catch recent regimes, but risks instability in sparse data.
Squeeze threshold (PR < x) — Defines the cutoff for flagging low relative volatility, where values below this mark a squeeze; lower thresholds tighten detection for rarer events — Default: 10.0 — Trade-offs/Tips: 5-15 percent for conservative signals reducing false positives; raise to 20 for more frequent highlights in high-vol environments, monitoring for increased noise.
Timezone — Specifies the reference for hourly binning, ensuring alignment with market sessions — Default: Exchange — Trade-offs/Tips: Set to "America/New_York" for US assets; mismatches can skew counts, so verify against chart timezone.
Show Table — Toggles the results display, essential for reviewing frequencies — Default: true — Trade-offs/Tips: Disable on mobile for performance; pair with position tweaks for clean overlays.
Pos — Places the table on the chart pane — Default: Top Right — Trade-offs/Tips: Bottom Left avoids candle occlusion on volatile charts.
Font — Adjusts text readability in the table — Default: normal — Trade-offs/Tips: Tiny for dense views, large for emphasis on key hours.
Dark — Applies high-contrast colors for visibility — Default: true — Trade-offs/Tips: Toggle false in light themes to prevent washout.
Display — Filters table rows to focus on extremes or full list — Default: All — Trade-offs/Tips: Top 3 for quick scans of risky hours; Bottom 3 highlights safe low-squeeze periods.
Reading & Interpretation
Red background shading appears on bars meeting the squeeze condition, signaling current low relative volatility. The table lists hours as "H0" to "H23", with columns for daily squeeze counts, percentage share of total squeezes (summing to 100 percent across hours), and an arrow marker on the top hour. A summary row above details the peak count, its share, and the leading hour. A label at the last bar recaps total days observed, data-valid days, and top hour stats. Rising shares indicate clustering, suggesting regime persistence in that slot.
Practical Workflows & Combinations
- Trend following: Scan for hours with low squeeze shares to enter during stable regimes; confirm with higher highs or lower lows on the 15-minute chart, avoiding top-share hours post-news like tariff announcements.
- Exits/Stops: Tighten stops in high-share hours to guard against sudden vol spikes; use the table to shift to conservative sizing outside peak squeeze times.
- Multi-asset/Multi-TF: Defaults work across crypto pairs on 5-60 minute timeframes; for stocks, widen percentile window to 500 bars. Combine with volume oscillators—enter only if squeeze count is below average for the asset.
Behavior, Constraints & Performance
Logic executes on closed bars, with live bars updating counts provisionally but finalizing on confirmation; table refreshes only at the last bar, avoiding intrabar flicker. No security calls or higher timeframes, so no repaint from external data. Resources include a 5000-bar history limit, loops up to 24 iterations for sorting and totals, and arrays sized to 24 elements; labels and table are capped at 500 each for efficiency. Known limits: Skips hours without bars (e.g., weekends), assumes uniform data availability, and may undercount in sparse sessions; timezone shifts can alter profiles without warning.
Sensible Defaults & Quick Tuning
Start with ATR Length at 14, Percentile Window at 252, and threshold at 10.0 for broad crypto use. If too many squeezes flag (noisy table), raise threshold to 15.0 and narrow window to 100 for stricter relative lowness. For sluggish detection in calm markets, drop ATR Length to 10 and threshold to 5.0 to capture subtler dips. In high-vol assets, widen window to 500 and threshold to 20.0 for stability.
What this indicator is—and isn’t
This is a historical frequency tracker and visualization layer for intraday volatility patterns, best as a filter in multi-tool setups. It is not a standalone signal generator, predictive model, or risk manager—pair it with price action, news filters, and position sizing rules.
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
Thanks to Duyck
for the ma sorter
BOCS Channel Scalper Indicator - Mean Reversion Alert System# BOCS Channel Scalper Indicator - Mean Reversion Alert System
## WHAT THIS INDICATOR DOES:
This is a mean reversion trading indicator that identifies consolidation channels through volatility analysis and generates alert signals when price enters entry zones near channel boundaries. **This indicator version is designed for manual trading with comprehensive alert functionality.** Unlike automated strategies, this tool sends notifications (via popup, email, SMS, or webhook) when trading opportunities occur, allowing you to manually review and execute trades. The system assumes price will revert to the channel mean, identifying scalp opportunities as price reaches extremes and preparing to bounce back toward center.
## INDICATOR VS STRATEGY - KEY DISTINCTION:
**This is an INDICATOR with alerts, not an automated strategy.** It does not execute trades automatically. Instead, it:
- Displays visual signals on your chart when entry conditions are met
- Sends customizable alerts to your device/email when opportunities arise
- Shows TP/SL levels for reference but does not place orders
- Requires you to manually enter and exit positions based on signals
- Works with all TradingView subscription levels (alerts included on all plans)
**For automated trading with backtesting**, use the strategy version. For manual control with notifications, use this indicator version.
## ALERT CAPABILITIES:
This indicator includes four distinct alert conditions that can be configured independently:
**1. New Channel Formation Alert**
- Triggers when a fresh BOCS channel is identified
- Message: "New BOCS channel formed - potential scalp setup ready"
- Use this to prepare for upcoming trading opportunities
**2. Long Scalp Entry Alert**
- Fires when price touches the long entry zone
- Message includes current price, calculated TP, and SL levels
- Notification example: "LONG scalp signal at 24731.75 | TP: 24743.2 | SL: 24716.5"
**3. Short Scalp Entry Alert**
- Fires when price touches the short entry zone
- Message includes current price, calculated TP, and SL levels
- Notification example: "SHORT scalp signal at 24747.50 | TP: 24735.0 | SL: 24762.75"
**4. Any Entry Signal Alert**
- Combined alert for both long and short entries
- Use this if you want a single alert stream for all opportunities
- Message: "BOCS Scalp Entry: at "
**Setting Up Alerts:**
1. Add indicator to chart and configure settings
2. Click the Alert (⏰) button in TradingView toolbar
3. Select "BOCS Channel Scalper" from condition dropdown
4. Choose desired alert type (Long, Short, Any, or Channel Formation)
5. Set "Once Per Bar Close" to avoid false signals during bar formation
6. Configure delivery method (popup, email, webhook for automation platforms)
7. Save alert - it will fire automatically when conditions are met
**Alert Message Placeholders:**
Alerts use TradingView's dynamic placeholder system:
- {{ticker}} = Symbol name (e.g., NQ1!)
- {{close}} = Current price at signal
- {{plot_1}} = Calculated take profit level
- {{plot_2}} = Calculated stop loss level
These placeholders populate automatically, creating detailed notification messages without manual configuration.
## KEY DIFFERENCE FROM ORIGINAL BOCS:
**This indicator is designed for traders seeking higher trade frequency.** The original BOCS indicator trades breakouts OUTSIDE channels, waiting for price to escape consolidation before entering. This scalper version trades mean reversion INSIDE channels, entering when price reaches channel extremes and betting on a bounce back to center. The result is significantly more trading opportunities:
- **Original BOCS**: 1-3 signals per channel (only on breakout)
- **Scalper Indicator**: 5-15+ signals per channel (every touch of entry zones)
- **Trade Style**: Mean reversion vs trend following
- **Hold Time**: Seconds to minutes vs minutes to hours
- **Best Markets**: Ranging/choppy conditions vs trending breakouts
This makes the indicator ideal for active day traders who want continuous alert opportunities within consolidation zones rather than waiting for breakout confirmation. However, increased signal frequency also means higher potential commission costs and requires disciplined trade selection when acting on alerts.
## TECHNICAL METHODOLOGY:
### Price Normalization Process:
The indicator normalizes price data to create consistent volatility measurements across different instruments and price levels. It calculates the highest high and lowest low over a user-defined lookback period (default 100 bars). Current close price is normalized using: (close - lowest_low) / (highest_high - lowest_low), producing values between 0 and 1 for standardized volatility analysis.
### Volatility Detection:
A 14-period standard deviation is applied to the normalized price series to measure price deviation from the mean. Higher standard deviation values indicate volatility expansion; lower values indicate consolidation. The indicator uses ta.highestbars() and ta.lowestbars() to identify when volatility peaks and troughs occur over the detection period (default 14 bars).
### Channel Formation Logic:
When volatility crosses from a high level to a low level (ta.crossover(upper, lower)), a consolidation phase begins. The indicator tracks the highest and lowest prices during this period, which become the channel boundaries. Minimum duration of 10+ bars is required to filter out brief volatility spikes. Channels are rendered as box objects with defined upper and lower boundaries, with colored zones indicating entry areas.
### Entry Signal Generation:
The indicator uses immediate touch-based entry logic. Entry zones are defined as a percentage from channel edges (default 20%):
- **Long Entry Zone**: Bottom 20% of channel (bottomBound + channelRange × 0.2)
- **Short Entry Zone**: Top 20% of channel (topBound - channelRange × 0.2)
Long signals trigger when candle low touches or enters the long entry zone. Short signals trigger when candle high touches or enters the short entry zone. Visual markers (arrows and labels) appear on chart, and configured alerts fire immediately.
### Cooldown Filter:
An optional cooldown period (measured in bars) prevents alert spam by enforcing minimum spacing between consecutive signals. If cooldown is set to 3 bars, no new long alert will fire until 3 bars after the previous long signal. Long and short cooldowns are tracked independently, allowing both directions to signal within the same period.
### ATR Volatility Filter:
The indicator includes a multi-timeframe ATR filter to avoid alerts during low-volatility conditions. Using request.security(), it fetches ATR values from a specified timeframe (e.g., 1-minute ATR while viewing 5-minute charts). The filter compares current ATR to a user-defined minimum threshold:
- If ATR ≥ threshold: Alerts enabled
- If ATR < threshold: No alerts fire
This prevents notifications during dead zones where mean reversion is unreliable due to insufficient price movement. The ATR status is displayed in the info table with visual confirmation (✓ or ✗).
### Take Profit Calculation:
Two TP methods are available:
**Fixed Points Mode**:
- Long TP = Entry + (TP_Ticks × syminfo.mintick)
- Short TP = Entry - (TP_Ticks × syminfo.mintick)
**Channel Percentage Mode**:
- Long TP = Entry + (ChannelRange × TP_Percent)
- Short TP = Entry - (ChannelRange × TP_Percent)
Default 50% targets the channel midline, a natural mean reversion target. These levels are displayed as visual lines with labels and included in alert messages for reference when manually placing orders.
### Stop Loss Placement:
Stop losses are calculated just outside the channel boundary by a user-defined tick offset:
- Long SL = ChannelBottom - (SL_Offset_Ticks × syminfo.mintick)
- Short SL = ChannelTop + (SL_Offset_Ticks × syminfo.mintick)
This logic assumes channel breaks invalidate the mean reversion thesis. SL levels are displayed on chart and included in alert notifications as suggested stop placement.
### Channel Breakout Management:
Channels are removed when price closes more than 10 ticks outside boundaries. This tolerance prevents premature channel deletion from minor breaks or wicks, allowing the mean reversion setup to persist through small boundary violations.
## INPUT PARAMETERS:
### Channel Settings:
- **Nested Channels**: Allow multiple overlapping channels vs single channel
- **Normalization Length**: Lookback for high/low calculation (1-500, default 100)
- **Box Detection Length**: Period for volatility detection (1-100, default 14)
### Scalping Settings:
- **Enable Long Scalps**: Toggle long alert generation on/off
- **Enable Short Scalps**: Toggle short alert generation on/off
- **Entry Zone % from Edge**: Size of entry zone (5-50%, default 20%)
- **SL Offset (Ticks)**: Distance beyond channel for stop (1+, default 5)
- **Cooldown Period (Bars)**: Minimum spacing between alerts (0 = no cooldown)
### ATR Filter:
- **Enable ATR Filter**: Toggle volatility filter on/off
- **ATR Timeframe**: Source timeframe for ATR (1, 5, 15, 60 min, etc.)
- **ATR Length**: Smoothing period (1-100, default 14)
- **Min ATR Value**: Threshold for alert enablement (0.1+, default 10.0)
### Take Profit Settings:
- **TP Method**: Choose Fixed Points or % of Channel
- **TP Fixed (Ticks)**: Static distance in ticks (1+, default 30)
- **TP % of Channel**: Dynamic target as channel percentage (10-100%, default 50%)
### Appearance:
- **Show Entry Zones**: Toggle zone labels on channels
- **Show Info Table**: Display real-time indicator status
- **Table Position**: Corner placement (Top Left/Right, Bottom Left/Right)
- **Long Color**: Customize long signal color (default: darker green for readability)
- **Short Color**: Customize short signal color (default: red)
- **TP/SL Colors**: Customize take profit and stop loss line colors
- **Line Length**: Visual length of TP/SL reference lines (5-200 bars)
## VISUAL INDICATORS:
- **Channel boxes** with semi-transparent fill showing consolidation zones
- **Colored entry zones** labeled "LONG ZONE ▲" and "SHORT ZONE ▼"
- **Entry signal arrows** below/above bars marking long/short alerts
- **TP/SL reference lines** with emoji labels (⊕ Entry, 🎯 TP, 🛑 SL)
- **Info table** showing channel status, last signal, entry/TP/SL prices, risk/reward ratio, and ATR filter status
- **Visual confirmation** when alerts fire via on-chart markers synchronized with notifications
## HOW TO USE:
### For 1-3 Minute Scalping with Alerts (NQ/ES):
- ATR Timeframe: "1" (1-minute)
- ATR Min Value: 10.0 (for NQ), adjust per instrument
- Entry Zone %: 20-25%
- TP Method: Fixed Points, 20-40 ticks
- SL Offset: 5-10 ticks
- Cooldown: 2-3 bars to reduce alert spam
- **Alert Setup**: Configure "Any Entry Signal" for combined long/short notifications
- **Execution**: When alert fires, verify chart visuals, then manually place limit order at entry zone with provided TP/SL levels
### For 5-15 Minute Day Trading with Alerts:
- ATR Timeframe: "5" or match chart
- ATR Min Value: Adjust to instrument (test 8-15 for NQ)
- Entry Zone %: 20-30%
- TP Method: % of Channel, 40-60%
- SL Offset: 5-10 ticks
- Cooldown: 3-5 bars
- **Alert Setup**: Configure separate "Long Scalp Entry" and "Short Scalp Entry" alerts if you trade directionally based on bias
- **Execution**: Review channel structure on alert, confirm ATR filter shows ✓, then enter manually
### For 30-60 Minute Swing Scalping with Alerts:
- ATR Timeframe: "15" or "30"
- ATR Min Value: Lower threshold for broader market
- Entry Zone %: 25-35%
- TP Method: % of Channel, 50-70%
- SL Offset: 10-15 ticks
- Cooldown: 5+ bars or disable
- **Alert Setup**: Use "New Channel Formation" to prepare for setups, then "Any Entry Signal" for execution alerts
- **Execution**: Larger timeframes allow more analysis time between alert and entry
### Webhook Integration for Semi-Automation:
- Configure alert webhook URL to connect with platforms like TradersPost, TradingView Paper Trading, or custom automation
- Alert message includes all necessary order parameters (direction, entry, TP, SL)
- Webhook receives structured data when signal fires
- External platform can auto-execute based on alert payload
- Still maintains manual oversight vs full strategy automation
## USAGE CONSIDERATIONS:
- **Manual Discipline Required**: Alerts provide opportunities but execution requires judgment. Not all alerts should be taken - consider market context, trend, and channel quality
- **Alert Timing**: Alerts fire on bar close by default. Ensure "Once Per Bar Close" is selected to avoid false signals during bar formation
- **Notification Delivery**: Mobile/email alerts may have 1-3 second delay. For immediate execution, use desktop popups or webhook automation
- **Cooldown Necessity**: Without cooldown, rapidly touching price action can generate excessive alerts. Start with 3-bar cooldown and adjust based on alert volume
- **ATR Filter Impact**: Enabling ATR filter dramatically reduces alert count but improves quality. Track filter status in info table to understand when you're receiving fewer alerts
- **Commission Awareness**: High alert frequency means high potential trade count. Calculate if your commission structure supports frequent scalping before acting on all alerts
## COMPATIBLE MARKETS:
Works on any instrument with price data including stock indices (NQ, ES, YM, RTY), individual stocks, forex pairs (EUR/USD, GBP/USD), cryptocurrency (BTC, ETH), and commodities. Volume-based features are not included in this indicator version. Multi-timeframe ATR requires higher-tier TradingView subscription for request.security() functionality on timeframes below chart timeframe.
## KNOWN LIMITATIONS:
- **Indicator does not execute trades** - alerts are informational only; you must manually place all orders
- **Alert delivery depends on TradingView infrastructure** - delays or failures possible during platform issues
- **No position tracking** - indicator doesn't know if you're in a trade; you must manage open positions independently
- **TP/SL levels are reference only** - you must manually set these on your broker platform; they are not live orders
- **Immediate touch entry can generate many alerts** in choppy zones without adequate cooldown
- **Channel deletion at 10-tick breaks** may be too aggressive or lenient depending on instrument tick size
- **ATR filter from lower timeframes** requires TradingView Premium/Pro+ for request.security()
- **Mean reversion logic fails** in strong breakout scenarios - alerts will fire but trades may hit stops
- **No partial closing capability** - full position management is manual; you determine scaling out
- **Alerts do not account for gaps** or overnight price changes; morning alerts may be stale
## RISK DISCLOSURE:
Trading involves substantial risk of loss. This indicator provides signals for educational and informational purposes only and does not constitute financial advice. Past performance does not guarantee future results. Mean reversion strategies can experience extended drawdowns during trending markets. Alerts are not guaranteed to be profitable and should be combined with your own analysis. Stop losses may not fill at intended levels during extreme volatility or gaps. Never trade with capital you cannot afford to lose. Consider consulting a licensed financial advisor before making trading decisions. Always verify alerts against current market conditions before executing trades manually.
## ACKNOWLEDGMENT & CREDITS:
This indicator is built upon the channel detection methodology created by **AlgoAlpha** in the "Smart Money Breakout Channels" indicator. Full credit and appreciation to AlgoAlpha for pioneering the normalized volatility approach to identifying consolidation patterns. The core channel formation logic using normalized price standard deviation is AlgoAlpha's original contribution to the TradingView community.
Enhancements to the original concept include: mean reversion entry logic (vs breakout), immediate touch-based alert generation, comprehensive alert condition system with customizable notifications, multi-timeframe ATR volatility filtering, cooldown period for alert management, dual TP methods (fixed points vs channel percentage), visual TP/SL reference lines, and real-time status monitoring table. This indicator version is specifically designed for manual traders who prefer alert-based decision making over automated execution.
Bar Index & TimeLibrary to convert a bar index to a timestamp and vice versa.
Utilizes runtime memory to store the 𝚝𝚒𝚖𝚎 and 𝚝𝚒𝚖𝚎_𝚌𝚕𝚘𝚜𝚎 values of every bar on the chart (and optional future bars), with the ability of storing additional custom values for every chart bar.
█ PREFACE
This library aims to tackle some problems that pine coders (from beginners to advanced) often come across, such as:
I'm trying to draw an object with a 𝚋𝚊𝚛_𝚒𝚗𝚍𝚎𝚡 that is more than 10,000 bars into the past, but this causes my script to fail. How can I convert the 𝚋𝚊𝚛_𝚒𝚗𝚍𝚎𝚡 to a UNIX time so that I can draw visuals using xloc.bar_time ?
I have a diagonal line drawing and I want to get the "y" value at a specific time, but line.get_price() only accepts a bar index value. How can I convert the timestamp into a bar index value so that I can still use this function?
I want to get a previous 𝚘𝚙𝚎𝚗 value that occurred at a specific timestamp. How can I convert the timestamp into a historical offset so that I can use 𝚘𝚙𝚎𝚗 ?
I want to reference a very old value for a variable. How can I access a previous value that is older than the maximum historical buffer size of 𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎 ?
This library can solve the above problems (and many more) with the addition of a few lines of code, rather than requiring the coder to refactor their script to accommodate the limitations.
█ OVERVIEW
The core functionality provided is conversion between xloc.bar_index and xloc.bar_time values.
The main component of the library is the 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 object, created via the 𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊() function which basically stores the 𝚝𝚒𝚖𝚎 and 𝚝𝚒𝚖𝚎_𝚌𝚕𝚘𝚜𝚎 of every bar on the chart, and there are 3 more overloads to this function that allow collecting and storing additional data. Once a 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 object is created, use any of the exported methods:
Methods to convert a UNIX timestamp into a bar index or bar offset:
𝚝𝚒𝚖𝚎𝚜𝚝𝚊𝚖𝚙𝚃𝚘𝙱𝚊𝚛𝙸𝚗𝚍𝚎𝚡(), 𝚐𝚎𝚝𝙽𝚞𝚖𝚋𝚎𝚛𝙾𝚏𝙱𝚊𝚛𝚜𝙱𝚊𝚌𝚔()
Methods to retrieve the stored data for a bar index:
𝚝𝚒𝚖𝚎𝙰𝚝𝙱𝚊𝚛𝙸𝚗𝚍𝚎𝚡(), 𝚝𝚒𝚖𝚎𝙲𝚕𝚘𝚜𝚎𝙰𝚝𝙱𝚊𝚛𝙸𝚗𝚍𝚎𝚡(), 𝚟𝚊𝚕𝚞𝚎𝙰𝚝𝙱𝚊𝚛𝙸𝚗𝚍𝚎𝚡(), 𝚐𝚎𝚝𝙰𝚕𝚕𝚅𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜𝙰𝚝𝙱𝚊𝚛𝙸𝚗𝚍𝚎𝚡()
Methods to retrieve the stored data at a number of bars back (i.e., historical offset):
𝚝𝚒𝚖𝚎(), 𝚝𝚒𝚖𝚎𝙲𝚕𝚘𝚜𝚎(), 𝚟𝚊𝚕𝚞𝚎()
Methods to retrieve all the data points from the earliest bar (or latest bar) stored in memory, which can be useful for debugging purposes:
𝚐𝚎𝚝𝙴𝚊𝚛𝚕𝚒𝚎𝚜𝚝𝚂𝚝𝚘𝚛𝚎𝚍𝙳𝚊𝚝𝚊(), 𝚐𝚎𝚝𝙻𝚊𝚝𝚎𝚜𝚝𝚂𝚝𝚘𝚛𝚎𝚍𝙳𝚊𝚝𝚊()
Note: the library's strong suit is referencing data from very old bars in the past, which is especially useful for scripts that perform its necessary calculations only on the last bar.
█ USAGE
Step 1
Import the library. Replace with the latest available version number for this library.
//@version=6
indicator("Usage")
import n00btraders/ChartData/
Step 2
Create a 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 object to collect data on every bar. Do not declare as `var` or `varip`.
chartData = ChartData.collectChartData() // call on every bar to accumulate the necessary data
Step 3
Call any method(s) on the 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 object. Do not modify its fields directly.
if barstate.islast
int firstBarTime = chartData.timeAtBarIndex(0)
int lastBarTime = chartData.time(0)
log.info("First `time`: " + str.format_time(firstBarTime) + ", Last `time`: " + str.format_time(lastBarTime))
█ EXAMPLES
• Collect Future Times
The overloaded 𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊() functions that accept a 𝚋𝚊𝚛𝚜𝙵𝚘𝚛𝚠𝚊𝚛𝚍 argument can additionally store time values for up to 500 bars into the future.
//@version=6
indicator("Example `collectChartData(barsForward)`")
import n00btraders/ChartData/1
chartData = ChartData.collectChartData(barsForward = 500)
var rectangle = box.new(na, na, na, na, xloc = xloc.bar_time, force_overlay = true)
if barstate.islast
int futureTime = chartData.timeAtBarIndex(bar_index + 100)
int lastBarTime = time
box.set_lefttop(rectangle, lastBarTime, open)
box.set_rightbottom(rectangle, futureTime, close)
box.set_text(rectangle, "Extending box 100 bars to the right. Time: " + str.format_time(futureTime))
• Collect Custom Data
The overloaded 𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊() functions that accept a 𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜 argument can additionally store custom user-specified values for every bar on the chart.
//@version=6
indicator("Example `collectChartData(variables)`")
import n00btraders/ChartData/1
var map variables = map.new()
variables.put("open", open)
variables.put("close", close)
variables.put("open-close midpoint", (open + close) / 2)
variables.put("boolean", open > close ? 1 : 0)
chartData = ChartData.collectChartData(variables = variables)
var fgColor = chart.fg_color
var table1 = table.new(position.top_right, 2, 9, color(na), fgColor, 1, fgColor, 1, true)
var table2 = table.new(position.bottom_right, 2, 9, color(na), fgColor, 1, fgColor, 1, true)
if barstate.isfirst
table.cell(table1, 0, 0, "ChartData.value()", text_color = fgColor)
table.cell(table2, 0, 0, "open ", text_color = fgColor)
table.merge_cells(table1, 0, 0, 1, 0)
table.merge_cells(table2, 0, 0, 1, 0)
for i = 1 to 8
table.cell(table1, 0, i, text_color = fgColor, text_halign = text.align_left, text_font_family = font.family_monospace)
table.cell(table2, 0, i, text_color = fgColor, text_halign = text.align_left, text_font_family = font.family_monospace)
table.cell(table1, 1, i, text_color = fgColor)
table.cell(table2, 1, i, text_color = fgColor)
if barstate.islast
for i = 1 to 8
float open1 = chartData.value("open", 5000 * i)
float open2 = i < 3 ? open : -1
table.cell_set_text(table1, 0, i, "chartData.value(\"open\", " + str.tostring(5000 * i) + "): ")
table.cell_set_text(table2, 0, i, "open : ")
table.cell_set_text(table1, 1, i, str.tostring(open1))
table.cell_set_text(table2, 1, i, open2 >= 0 ? str.tostring(open2) : "Error")
• xloc.bar_index → xloc.bar_time
The 𝚝𝚒𝚖𝚎 value (or 𝚝𝚒𝚖𝚎_𝚌𝚕𝚘𝚜𝚎 value) can be retrieved for any bar index that is stored in memory by the 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 object.
//@version=6
indicator("Example `timeAtBarIndex()`")
import n00btraders/ChartData/1
chartData = ChartData.collectChartData()
if barstate.islast
int start = bar_index - 15000
int end = bar_index - 100
// line.new(start, close, end, close) // !ERROR - `start` value is too far from current bar index
start := chartData.timeAtBarIndex(start)
end := chartData.timeAtBarIndex(end)
line.new(start, close, end, close, xloc.bar_time, width = 10)
• xloc.bar_time → xloc.bar_index
Use 𝚝𝚒𝚖𝚎𝚜𝚝𝚊𝚖𝚙𝚃𝚘𝙱𝚊𝚛𝙸𝚗𝚍𝚎𝚡() to find the bar that a timestamp belongs to.
If the timestamp falls in between the close of one bar and the open of the next bar,
the 𝚜𝚗𝚊𝚙 parameter can be used to determine which bar to choose:
𝚂𝚗𝚊𝚙.𝙻𝙴𝙵𝚃 - prefer to choose the leftmost bar (typically used for closing times)
𝚂𝚗𝚊𝚙.𝚁𝙸𝙶𝙷𝚃 - prefer to choose the rightmost bar (typically used for opening times)
𝚂𝚗𝚊𝚙.𝙳𝙴𝙵𝙰𝚄𝙻𝚃 (or 𝚗𝚊) - copies the same behavior as xloc.bar_time uses for drawing objects
//@version=6
indicator("Example `timestampToBarIndex()`")
import n00btraders/ChartData/1
startTimeInput = input.time(timestamp("01 Aug 2025 08:30 -0500"), "Session Start Time")
endTimeInput = input.time(timestamp("01 Aug 2025 15:15 -0500"), "Session End Time")
chartData = ChartData.collectChartData()
if barstate.islastconfirmedhistory
int startBarIndex = chartData.timestampToBarIndex(startTimeInput, ChartData.Snap.RIGHT)
int endBarIndex = chartData.timestampToBarIndex(endTimeInput, ChartData.Snap.LEFT)
line1 = line.new(startBarIndex, 0, startBarIndex, 1, extend = extend.both, color = color.new(color.green, 60), force_overlay = true)
line2 = line.new(endBarIndex, 0, endBarIndex, 1, extend = extend.both, color = color.new(color.green, 60), force_overlay = true)
linefill.new(line1, line2, color.new(color.green, 90))
// using Snap.DEFAULT to show that it is equivalent to drawing lines using `xloc.bar_time` (i.e., it aligns to the same bars)
startBarIndex := chartData.timestampToBarIndex(startTimeInput)
endBarIndex := chartData.timestampToBarIndex(endTimeInput)
line.new(startBarIndex, 0, startBarIndex, 1, extend = extend.both, color = color.yellow, width = 3)
line.new(endBarIndex, 0, endBarIndex, 1, extend = extend.both, color = color.yellow, width = 3)
line.new(startTimeInput, 0, startTimeInput, 1, xloc.bar_time, extend.both, color.new(color.blue, 85), width = 11)
line.new(endTimeInput, 0, endTimeInput, 1, xloc.bar_time, extend.both, color.new(color.blue, 85), width = 11)
• Get Price of Line at Timestamp
The pine script built-in function line.get_price() requires working with bar index values. To get the price of a line in terms of a timestamp, convert the timestamp into a bar index or offset.
//@version=6
indicator("Example `line.get_price()` at timestamp")
import n00btraders/ChartData/1
lineStartInput = input.time(timestamp("01 Aug 2025 08:30 -0500"), "Line Start")
chartData = ChartData.collectChartData()
var diagonal = line.new(na, na, na, na, force_overlay = true)
if time <= lineStartInput
line.set_xy1(diagonal, bar_index, open)
if barstate.islastconfirmedhistory
line.set_xy2(diagonal, bar_index, close)
if barstate.islast
int timeOneWeekAgo = timenow - (7 * timeframe.in_seconds("1D") * 1000)
// Note: could also use `timetampToBarIndex(timeOneWeekAgo, Snap.DEFAULT)` and pass the value directly to `line.get_price()`
int barsOneWeekAgo = chartData.getNumberOfBarsBack(timeOneWeekAgo)
float price = line.get_price(diagonal, bar_index - barsOneWeekAgo)
string formatString = "Time 1 week ago: {0,number,#}\n - Equivalent to {1} bars ago\n\n𝚕𝚒𝚗𝚎.𝚐𝚎𝚝_𝚙𝚛𝚒𝚌𝚎(): {2,number,#.##}"
string labelText = str.format(formatString, timeOneWeekAgo, barsOneWeekAgo, price)
label.new(timeOneWeekAgo, price, labelText, xloc.bar_time, style = label.style_label_lower_right, size = 16, textalign = text.align_left, force_overlay = true)
█ RUNTIME ERROR MESSAGES
This library's functions will generate a custom runtime error message in the following cases:
𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊() is not called consecutively, or is called more than once on a single bar
Invalid 𝚋𝚊𝚛𝚜𝙵𝚘𝚛𝚠𝚊𝚛𝚍 argument in the 𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊() function
Invalid 𝚟𝚊𝚛𝚒𝚊𝚋𝚕𝚎𝚜 argument in the 𝚌𝚘𝚕𝚕𝚎𝚌𝚝𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊() function
Invalid 𝚕𝚎𝚗𝚐𝚝𝚑 argument in any of the functions that accept a number of bars back
Note: there is no runtime error generated for an invalid 𝚝𝚒𝚖𝚎𝚜𝚝𝚊𝚖𝚙 or 𝚋𝚊𝚛𝙸𝚗𝚍𝚎𝚡 argument in any of the functions. Instead, the functions will assign 𝚗𝚊 to the returned values.
Any other runtime errors are due to incorrect usage of the library.
█ NOTES
• Function Descriptions
The library source code uses Markdown for the exported functions. Hover over a function/method call in the Pine Editor to display formatted, detailed information about the function/method.
//@version=6
indicator("Demo Function Tooltip")
import n00btraders/ChartData/1
chartData = ChartData.collectChartData()
int barIndex = chartData.timestampToBarIndex(timenow)
log.info(str.tostring(barIndex))
• Historical vs. Realtime Behavior
Under the hood, the data collector for this library is declared as `var`. Because of this, the 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 object will always reflect the latest available data on realtime updates. Any data that is recorded for historical bars will remain unchanged throughout the execution of a script.
//@version=6
indicator("Demo Realtime Behavior")
import n00btraders/ChartData/1
var map variables = map.new()
variables.put("open", open)
variables.put("close", close)
chartData = ChartData.collectChartData(variables)
if barstate.isrealtime
varip float initialOpen = open
varip float initialClose = close
varip int updateCount = 0
updateCount += 1
float latestOpen = open
float latestClose = close
float recordedOpen = chartData.valueAtBarIndex("open", bar_index)
float recordedClose = chartData.valueAtBarIndex("close", bar_index)
string formatString = "# of updates: {0}\n\n𝚘𝚙𝚎𝚗 at update #1: {1,number,#.##}\n𝚌𝚕𝚘𝚜𝚎 at update #1: {2,number,#.##}\n\n"
+ "𝚘𝚙𝚎𝚗 at update #{0}: {3,number,#.##}\n𝚌𝚕𝚘𝚜𝚎 at update #{0}: {4,number,#.##}\n\n"
+ "𝚘𝚙𝚎𝚗 stored in memory: {5,number,#.##}\n𝚌𝚕𝚘𝚜𝚎 stored in memory: {6,number,#.##}"
string labelText = str.format(formatString, updateCount, initialOpen, initialClose, latestOpen, latestClose, recordedOpen, recordedClose)
label.new(bar_index, close, labelText, style = label.style_label_left, force_overlay = true)
• Collecting Chart Data for Other Contexts
If your use case requires collecting chart data from another context, avoid directly retrieving the 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 object as this may exceed memory limits .
//@version=6
indicator("Demo Return Calculated Results")
import n00btraders/ChartData/1
timeInput = input.time(timestamp("01 Sep 2025 08:30 -0500"), "Time")
var int oneMinuteBarsAgo = na
// !ERROR - Memory Limits Exceeded
// chartDataArray = request.security_lower_tf(syminfo.tickerid, "1", ChartData.collectChartData())
// oneMinuteBarsAgo := chartDataArray.last().getNumberOfBarsBack(timeInput)
// function that returns calculated results (a single integer value instead of an entire `ChartData` object)
getNumberOfBarsBack() =>
chartData = ChartData.collectChartData()
chartData.getNumberOfBarsBack(timeInput)
calculatedResultsArray = request.security_lower_tf(syminfo.tickerid, "1", getNumberOfBarsBack())
oneMinuteBarsAgo := calculatedResultsArray.size() > 0 ? calculatedResultsArray.last() : na
if barstate.islast
string labelText = str.format("The selected timestamp occurs 1-minute bars ago", oneMinuteBarsAgo)
label.new(bar_index, hl2, labelText, style = label.style_label_left, size = 16, force_overlay = true)
• Memory Usage
The library's convenience and ease of use comes at the cost of increased usage of computational resources. For simple scripts, using this library will likely not cause any issues with exceeding memory limits. But for large and complex scripts, you can reduce memory issues by specifying a lower 𝚌𝚊𝚕𝚌_𝚋𝚊𝚛𝚜_𝚌𝚘𝚞𝚗𝚝 amount in the indicator() or strategy() declaration statement.
//@version=6
// !ERROR - Memory Limits Exceeded using the default number of bars available (~20,000 bars for Premium plans)
//indicator("Demo `calc_bars_count` parameter")
// Reduce number of bars using `calc_bars_count` parameter
indicator("Demo `calc_bars_count` parameter", calc_bars_count = 15000)
import n00btraders/ChartData/1
map variables = map.new()
variables.put("open", open)
variables.put("close", close)
variables.put("weekofyear", weekofyear)
variables.put("dayofmonth", dayofmonth)
variables.put("hour", hour)
variables.put("minute", minute)
variables.put("second", second)
// simulate large memory usage
chartData0 = ChartData.collectChartData(variables)
chartData1 = ChartData.collectChartData(variables)
chartData2 = ChartData.collectChartData(variables)
chartData3 = ChartData.collectChartData(variables)
chartData4 = ChartData.collectChartData(variables)
chartData5 = ChartData.collectChartData(variables)
chartData6 = ChartData.collectChartData(variables)
chartData7 = ChartData.collectChartData(variables)
chartData8 = ChartData.collectChartData(variables)
chartData9 = ChartData.collectChartData(variables)
log.info(str.tostring(chartData0.time(0)))
log.info(str.tostring(chartData1.time(0)))
log.info(str.tostring(chartData2.time(0)))
log.info(str.tostring(chartData3.time(0)))
log.info(str.tostring(chartData4.time(0)))
log.info(str.tostring(chartData5.time(0)))
log.info(str.tostring(chartData6.time(0)))
log.info(str.tostring(chartData7.time(0)))
log.info(str.tostring(chartData8.time(0)))
log.info(str.tostring(chartData9.time(0)))
if barstate.islast
result = table.new(position.middle_right, 1, 1, force_overlay = true)
table.cell(result, 0, 0, "Script Execution Successful ✅", text_size = 40)
█ EXPORTED ENUMS
Snap
Behavior for determining the bar that a timestamp belongs to.
Fields:
LEFT : Snap to the leftmost bar.
RIGHT : Snap to the rightmost bar.
DEFAULT : Default `xloc.bar_time` behavior.
Note: this enum is used for the 𝚜𝚗𝚊𝚙 parameter of 𝚝𝚒𝚖𝚎𝚜𝚝𝚊𝚖𝚙𝚃𝚘𝙱𝚊𝚛𝙸𝚗𝚍𝚎𝚡().
█ EXPORTED TYPES
Note: users of the library do not need to worry about directly accessing the fields of these types; all computations are done through method calls on an object of the 𝙲𝚑𝚊𝚛𝚝𝙳𝚊𝚝𝚊 type.
Variable
Represents a user-specified variable that can be tracked on every chart bar.
Fields:
name (series string) : Unique identifier for the variable.
values (array) : The array of stored values (one value per chart bar).
ChartData
Represents data for all bars on a chart.
Fields:
bars (series int) : Current number of bars on the chart.
timeValues (array) : The `time` values of all chart (and future) bars.
timeCloseValues (array) : The `time_close` values of all chart (and future) bars.
variables (array) : Additional custom values to track on all chart bars.
█ EXPORTED FUNCTIONS
collectChartData()
Collects and tracks the `time` and `time_close` value of every bar on the chart.
Returns: `ChartData` object to convert between `xloc.bar_index` and `xloc.bar_time`.
collectChartData(barsForward)
Collects and tracks the `time` and `time_close` value of every bar on the chart as well as a specified number of future bars.
Parameters:
barsForward (simple int) : Number of future bars to collect data for.
Returns: `ChartData` object to convert between `xloc.bar_index` and `xloc.bar_time`.
collectChartData(variables)
Collects and tracks the `time` and `time_close` value of every bar on the chart. Additionally, tracks a custom set of variables for every chart bar.
Parameters:
variables (simple map) : Custom values to collect on every chart bar.
Returns: `ChartData` object to convert between `xloc.bar_index` and `xloc.bar_time`.
collectChartData(barsForward, variables)
Collects and tracks the `time` and `time_close` value of every bar on the chart as well as a specified number of future bars. Additionally, tracks a custom set of variables for every chart bar.
Parameters:
barsForward (simple int) : Number of future bars to collect data for.
variables (simple map) : Custom values to collect on every chart bar.
Returns: `ChartData` object to convert between `xloc.bar_index` and `xloc.bar_time`.
█ EXPORTED METHODS
method timestampToBarIndex(chartData, timestamp, snap)
Converts a UNIX timestamp to a bar index.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
timestamp (series int) : A UNIX time.
snap (series Snap) : A `Snap` enum value.
Returns: A bar index, or `na` if unable to find the appropriate bar index.
method getNumberOfBarsBack(chartData, timestamp)
Converts a UNIX timestamp to a history-referencing length (i.e., number of bars back).
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
timestamp (series int) : A UNIX time.
Returns: A bar offset, or `na` if unable to find a valid number of bars back.
method timeAtBarIndex(chartData, barIndex)
Retrieves the `time` value for the specified bar index.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
barIndex (int) : The bar index.
Returns: The `time` value, or `na` if there is no `time` stored for the bar index.
method time(chartData, length)
Retrieves the `time` value of the bar that is `length` bars back relative to the latest bar.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
length (series int) : Number of bars back.
Returns: The `time` value `length` bars ago, or `na` if there is no `time` stored for that bar.
method timeCloseAtBarIndex(chartData, barIndex)
Retrieves the `time_close` value for the specified bar index.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
barIndex (series int) : The bar index.
Returns: The `time_close` value, or `na` if there is no `time_close` stored for the bar index.
method timeClose(chartData, length)
Retrieves the `time_close` value of the bar that is `length` bars back from the latest bar.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
length (series int) : Number of bars back.
Returns: The `time_close` value `length` bars ago, or `na` if there is none stored.
method valueAtBarIndex(chartData, name, barIndex)
Retrieves the value of a custom variable for the specified bar index.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
name (series string) : The variable name.
barIndex (series int) : The bar index.
Returns: The value of the variable, or `na` if that variable is not stored for the bar index.
method value(chartData, name, length)
Retrieves a variable value of the bar that is `length` bars back relative to the latest bar.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
name (series string) : The variable name.
length (series int) : Number of bars back.
Returns: The value `length` bars ago, or `na` if that variable is not stored for the bar index.
method getAllVariablesAtBarIndex(chartData, barIndex)
Retrieves all custom variables for the specified bar index.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
barIndex (series int) : The bar index.
Returns: Map of all custom variables that are stored for the specified bar index.
method getEarliestStoredData(chartData)
Gets all values from the earliest bar data that is currently stored in memory.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
Returns: A tuple:
method getLatestStoredData(chartData, futureData)
Gets all values from the latest bar data that is currently stored in memory.
Namespace types: ChartData
Parameters:
chartData (series ChartData) : The `ChartData` object.
futureData (series bool) : Whether to include the future data that is stored in memory.
Returns: A tuple:
BTC Momentum Detector 1h# BTC Momentum Detector 1h
This indicator is designed to detect significant momentum movements in Bitcoin price on the 1-hour timeframe. It identifies candles with percentage changes within a specific range, which often precede larger price movements.
## How It Works
The indicator analyzes price movements to detect potential momentum shifts:
- Identifies candles with percentage changes between configurable thresholds (default: 1.7% - 2.8%)
- Requires neutral or inverse movement in the prior candle to avoid false signals
- Optional volume filter ensures signals are confirmed by above-average trading activity
- Tracks price continuation to calculate success rates and average returns
## Key Features
- **Signal Detection**: Green triangles below price bars indicate upward momentum signals; red triangles above price bars indicate downward momentum signals
- **Continuation Tracking**: Dashed horizontal lines show the entry price levels of active signals being tracked
- **Statistics Panel**: Displays real-time metrics including signal counts, success rates, and average returns
- **Current Status**: Shows the current price change percentage and active signals being monitored
## Parameters
- **Minimum Percentage Threshold**: Minimum price change to trigger a signal (default: 1.7%)
- **Maximum Percentage Threshold**: Maximum price change to filter out extreme moves (default: 2.8%)
- **Continuation Periods**: Number of periods to track after signal (default: 2)
- **Require Prior Neutral/Inverse**: Filters signals by requiring neutral or opposite prior movement
- **Neutral Threshold**: Defines what's considered a neutral movement (default: 0.1%)
- **Volume Filter**: Option to require above-average volume for confirmation
- **Volume Multiplier**: Volume must exceed average by this factor (default: 2x)
## Strategy Concept
The underlying strategy is based on the concept that when Bitcoin makes a controlled, significant move (not too small, not too large) after a period of neutral or opposite movement, it often continues in that direction for the next few periods. This pattern reflects the early stages of momentum development in the market.
Advanced Market Structure & Order Blocks (fadi)Advanced Market Structure & Order Blocks indicator provides a new approach to understanding price action using ICT (Inner Circle Trader) concepts related to candle blocks to analyze the market behavior and eliminate much of the noise created by the price action.
This indicator is not intended to provide trade signals, it is designed to provide the traders with to support their trading strategies and add clarity where possible.
There are currently three main elements to this indicator:
Market Structure
Order Blocks
Liquidity Voids
Market Structure
In trading, market structure is often identified by observing higher highs and higher lows. An uptrend is characterized by a series of higher highs, where each peak surpasses the previous one, and higher lows, where each trough is higher than the preceding one. Conversely, a downtrend is marked by lower highs and lower lows.
Other indicators usually determine these peaks by calculating the highest or lowest levels within a predefined number of candles. For example, identifying the highest price level within the last 15 candles and marking it as a higher high or a lower high. While this approach offers some structure to price action, it can be arbitrary and random due to price fluctuations and the lack of proper structure analysis beyond finding the highest peaks and valleys within candle ranges.
In his 2022 mentorship, episode 12, ICT introduced an alternative approach focusing on three-candle pivots called Short Term High and Low (STH/STL), which are then used to calculate the Intermediate Term High and Low (ITH/ITL), and in turn, the Long Term High and Low (LTH/LTL). ICT’s approach provides better structure than the traditional method mentioned above. However, it can be confusing and difficult to track. There are great indicators that track and label ICT’s levels, but traders still find it challenging to follow and understand.
The Advanced Market Structure indicator takes a unique approach by analyzing candle formations, using ICT concepts, to identify possible turning points that mimic a real trader’s analysis of price action as closely as possible. However, it should be expected that Market Makers may use market manipulation to induce traders to make failed trades, and no tooling can eliminate these situations.
Advanced Market Structure tracks true Peaks and Valleys as they form, confirms them, and marks the chart with corresponding labels using traditional labeling methods (HH/HL/LH/LL), as such labeling makes it easier for traders to follow and understand. The indicator also draws levels to help identify possible liquidity areas and trade targets.
The indicator uses different calculation methods for the different type of market structure length, however all calculations are based on the same ICT candle blocks concepts.
Market Structure Settings
Other than the display settings, there are four (4) settings, mainly under the Level Settings section.
Allow Nested Candles
This option is only available on the Short Market Structure due to the methods used in calculating highs and lows. When used, the indicator will attempt to detect smaller fluctuations in price by tracking smaller candle moves, if any.
Level Settings
Level Settings allows the trader to decide two main calculations:
1. A new pivot point will form when a candle’s is crossed by the following candle’s
2. For a liquidity sweep and marking a level as mitigated, a candle’s must cross that level
Order Blocks
ICT (Inner Circle Trader) defines an Order Block as the last down-closing candle, or series of candles, before a significant upward price move or the last up-closing candle, or series of candles, before a significant downward price move. These key price levels, marked by substantial buy or sell orders from institutional traders or "smart money," create a block or zone on the price chart. When the price revisits these levels, it often leads to a strong market reaction. Order Blocks can consist of one or multiple consecutive candles of the same color, signaling areas of significant buying or selling interest. ICT's approach to Order Blocks provides traders with a structured method to identify potential areas of support or resistance, where price movements are more likely to change direction. Although ICT has shared some criteria for identifying Order Blocks publicly, the full details are reserved for his upcoming books. This indicator leverages the publicly available information to provide traders with valuable insights into these crucial price levels.
The Advanced Market Structure indicator is designed to be highly flexible, allowing traders to define their own combination of rules for identifying Order Blocks, thus customizing it to fit their unique trading strategies.
Order Block Configuration
Can be nested
An Order Block is defined as the last down candle or candles before a strong move higher, and vice versa for bearish Order Blocks. However, larger-than-usual candles resulting from news events or price action may not qualify as Order Blocks and can mute any Order Block within their range.
The "Can be nested" flag ensures that each Order Block is treated as an independent entity, even if it appears within the body of another Order Block.
Forms at swing point
Order Blocks formed at swing points typically have higher probabilities but are less frequent, assuming the same rules are applied. Additionally, Order Blocks at swing points may become Breaker and Mitigation blocks if they fail, providing more trading opportunities.
Forms a simple pivot point
A simple pivot point corresponds to ICT Short Term High and Low (STH/STL). Order Blocks using simple pivot points can occur in the middle of a move, not just at swing points. These are useful for identifying IOFED setups and supporting blocks that can bolster the price move.
Causes Market Structure Shift
Order Blocks that result in a break above or below a short swing point can help narrow down target order blocks, but they are less frequent. An Order Block causing a break above or below a pivot point does not necessarily indicate a strong Order Block. For example, an Order Block formed at a Lower Low is more likely to fail in a downtrend.
A clean close above order block
When the first candle breaks above an Order Block and closes above its high, this indicates a stronger Order Block. On the other hand, if a candle merely wicks through the Order Block without a solid close above it, it suggests a weaker Order Block. This may indicate hesitation or an impending reversal, as the wick represents a temporary and unsustained price movement.
Has displacement more than X the body
While some traders may capitalize on the initial break above an Order Block's CISD level, others prefer to focus on the return to an Order Block after displacement. Displacement is determined by the body size of the Order Block, and an Order Block cannot be tested until this level has been achieved.
Has a Fair Value Gap
When an Order Block is combined with a Fair Value Gap (FVG), it signifies a strong Order Block. The Fair Value Gap indicates a strong price movement away from the Order Block.
Has a liquidity void
A Liquidity Void occurs when two consecutive candles of the same color do not overlap, creating a gap similar to a Fair Value Gap, but involving one or more middle candles. Liquidity Voids can be utilized in combination with, or as an alternative to, the displacement setting.
Maximum number of OBs
The maximum number of Order Blocks to display.
Mitigated at block’s
An Order Block is considered mitigated when price reaches one of the main Order Block levels.
Liquidity Void
Liquidity Void refers to areas on a price chart where there is one-sided trading activity. This phenomenon occurs when the price of an asset moves sharply in one direction, leaving gaps where two consecutive candles of the same color do not overlap. These gaps can comprise one or more middle candles and indicates a pronounced lack of trading within that price range. Liquidity Voids are important because they highlight areas of minimal resistance, where price is more likely to return to fill the void and balance the market.
Liquidity Void vs Fair Value Gap
While both concepts are related to gaps in price action, they are distinct. A Fair Value Gap is a specific three-candle pattern where the middle candle creates a gap between the first and third candles. In contrast, a Liquidity Void represents a broader area on the chart where there is little to no trading activity, often encompassing multiple candles and indicating a more pronounced imbalance between buy and sell orders.
A FVG can be part of a Liquidity Void, a Liquidity Void can exist without necessarily including an FVG. Both concepts highlight areas of minimal resistance and potential price movement, but they differ in their formation and implications.
Advanced Market Structure and Order Blocks indicator focus on liquidity voids since a liquidity void can substitute for a FVG and it is usually less addressed by other indicators.
DVWAP Overlay IndicatorThe DVWAP Overlay is a custom TradingView indicator designed to track Volume-Weighted Average Price (VWAP) levels over different time periods and visualize untapped VWAP levels on the price chart. It also includes historical VWAP tracking, which helps traders identify key support and resistance levels.
Key Features & Functionality
1. User Inputs & Settings
Text Size Selection: Allows users to choose the text size for labels (Tiny, Small, Normal, Large).
VWAP Display Options:
Option to show/hide VWAP levels.
Option to display Naked VWAP levels, meaning VWAP levels that have not been touched by price yet.
Color Customization: Users can configure colors for VWAP lines and labels.
2. VWAP Calculation & Plotting
Daily VWAP Calculation: The script calculates the VWAP for each daily session, adjusting at the start of a new day.
Standard Deviation Bands: The script also calculates the VWAP deviation (similar to Bollinger Bands).
Plotting VWAP: A line is drawn on the chart to visualize VWAP levels for the current and past sessions.
3. Untapped VWAP Level Tracking
The indicator keeps track of VWAP levels that have not yet been touched by price.
If price crosses a previous VWAP level, it is removed from the chart.
These untouched levels are highlighted and labeled on the chart.
4. Historical VWAP Levels
The indicator stores and plots previous VWAP levels, helping traders identify key historical price zones.
Two types of historical VWAPs are displayed:
Previous day VWAP (pdVWAP)
Historical Naked VWAP levels (nVWAP)
How Traders Can Use This Indicator
✅ Support & Resistance Identification: Helps traders find key VWAP levels that can act as support/resistance.
✅ Breakout & Rejection Trades: If price approaches an untouched VWAP, it could indicate a potential reaction.
✅ Institutional Order Flow Tracking: VWAP is often used by institutions for volume-based trade execution.
TrendPredator ESThe TrendPredator Essential (ES)
Stacey Burke, a seasoned trader and mentor, developed his trading system over the years, drawing insights from influential figures such as George Douglas Taylor, Tony Crabel, Steve Mauro, and Robert Schabacker. His popular system integrates select concepts from these experts into a consistent framework. While powerful, it is highly discretionary, requiring significant real-time analysis, which can be challenging for novice traders.
The TrendPredator ES indicator supports this approach by automating the essential analysis required to trade the system effectively and incorporating a mechanical bias and multi-timeframe concept.
It provides value to traders by significantly reducing the time needed for session preparation and offering relevant chart analysis and signals for live trading through real-time updates and a unique consolidated table format.
The Stacey Burke Master Pattern
Inspired by Taylor’s 3-day cycle and Steve Mauro’s work with “Beat the Market Maker,” Burke’s system views markets as cyclical, driven by the manipulative patterns of market makers. These patterns often trap traders at the extremes of moves above or below significant levels with peak formations, then reverse to utilize their liquidity, initiating the next phase. Breakouts away from these traps often lead to range expansions, as described by Tony Crabel and Robert Schabacker. After multiple consecutive breakouts, especially after the psychological number three, overextension might develop. A break in structure may then lead to reversals or pullbacks. Burke’s system is designed to track these cycles on the daily timeframe and provides signals and trade setups to navigate along them.
Bias Logic and Multi-Timeframe Concept
The indicator covers the basic signals of his system:
- First Red Day (FRD): Bearish break in structure, signalling weak longs in the market.
- First Green Day (FGD): Bullish break in structure signalling weak shorts in the markt.
- Three Days of Longs (3DL): Overextension signalling potential weak longs in the market.
- Three Days of Shorts (3DS): Overextension signalling potential weak shorts in the market.
- Inside Day (ID): Contraction, signalling potential impulsive reversal or range expansion move.
It enhances the original system by introducing:
Structured Bias Logic:
Tracks bias by following how price trades concerning the last previous candle high or low that was hit. For example if the high was hit, we are bullish above and bearish below.
- Bullish state: Breakout (BO), Fakeout Low (FOL)
- Bearish state: Breakdown (BD), Fakeout High (FOH)
Multi-Timeframe Perspective:
- Tracks all signals across H4, H8, D, W, and M timeframes, to look for alignment and follow trends and momentum in a mechanical way.
The indicator monitors the bias and signals of the system across all relevant timeframes and automates the related graphical chart analysis to generate the information needed for the trader to identify key setups. Additional to the SB pattern, the system helps to identify the higher timeframe situation and follow the moves driven by other timeframe traders.
Example: Full Bullish Cycle on the Daily Timeframe with Signals
- The Trap/Peak Formation
The market breaks down from a previous day’s and maybe week’s low—potentially after multiple breakdowns—but fails to move lower and pulls back up to form a peak formation low and closes as a first green day.
Signal: Bullish daily and weekly fakeout low; three consecutive breakdown days (1W Curr FOL, 1D Curr FOL, BO 3S).
- Pullback and Consolidation
The next day pulls further up after first green day signal, potentially consolidates inside the previous day’s range.
Signal: Fakeout low and first green day closing as an inside day (1D Curr IS, Prev FOL, First G).
- Range Expansion/Trend
The following day breaks up through the previous day’s high, launching a range expansion away from the trap.
Signal: Bullish daily breakout of an inside day (1D Curr BO, Prev IS).
- Overextension
After multiple consecutive breakouts, the market reaches a state of overextension, signalling a possible reversal or pullback.
Signal: Three days of breakout longs (1D Curr BO, Prev BO, BO 3L).
Note: This is only one possible scenario; there are many variations and combinations.
Example Chart: Full Bullish Cycle with Correlated Signals
Note: The signals shown along the move are manually added illustrations. The indicator shows these in realtime in the table at the bottom right. This is only one possible scenario; there are many variations and combinations.
Due to the fractal nature of markets, this cycle can be observed across timeframes. The strongest setups show multi-timeframe alignment. For example, a peak formation and potential reversal on the daily timeframe has high probability and follow-through if it also aligns with bearish signals on higher timeframes (e.g., weekly/monthly BD/FOH) and confirmation on lower timeframes (H4/H8 FOH/BD). With this perspective the system enables the trader to follow the trend and momentum and identify rollover points in a very differentiated way.
Detailed Features and Options
1. Historic Highs and Lows
Displays historic highs and lows per timeframe for added context, enabling users to track sequences over time.
Timeframes: H4, H8, D, W, M
Options: Customize for timeframes shown, number of historic candles per timeframe, colors, formats, and labels.
2. Previous High and Low Extensions
Displays extended previous levels (high, low, and close) for each timeframe to assess how price trades relative to these levels.
H4: P4H, P4L, P4C
H8: P8H, P8L, P8C
Daily: PDH, PDL, PDC
Weekly: PWH, PWL, PWC
Monthly: PMH, PML, PMC
Options: Fully customizable for timeframes shown, colors, formats, and labels.
3. Breach Lines
Tracks live market reactions (e.g., breakouts or fakeouts) per timeframe for the last previous high or low that was hit, highlighting these levels originating at the breached candle to indicate bias (color-coded).
Red: Bearish below
Green: Bullish above
H4: 4FOL, 4FOH, 4BO, 4BD
H8: 8FOL, 8FOH, 8BO, 8BD
D: dFOL, dFOH, dBO, dBD
W: wFOL, wFOH, wBO, wBD
M: mFOL, mFOH, mBO, mBD
Options: Fully customizable for timeframes shown, colors, formats, and labels.
4. Multi-Timeframe Table
Provides a real-time view of system signals, including:
Current Timeframe (Curr): Bias states.
- Breakout (green BO): Bullish after breaking above the previous high.
- Fakeout High (red FOH): Bearish after breaking above the previous high but pulling back down.
- Breakdown (red BD): Bearish after breaking below the previous low.
- Fakeout Low (green FOL): Bullish after breaking below the previous low but pulling back up.
- Inside (IS): Price trading neutral inside the previous range, taking the previous bias (color indicates the previous bias).
Previous Timeframe (Prev): Tracks last candle bias state and transitions dynamically.
- Bias for last candle: BO, FOH, BD, FOL in respective colors.
- Inside bar (yellow IS): Indicated as standalone signal.
Note: Also previous timeframes get constantly updated in real time to track the bias state in relation to the level that was hit. This means a BO can still lose the level and become a FOH, and vice versa, and a BD can still become a FOL, and vice versa. This is critical to see for example if traders that are trapped in that timeframe with a FOH or FOL are released. An inside bar stays fixed, though, since no level was hit in that timeframe.
Breakouts (BO): Breakout count 3 longs and 3 shorts.
- 3 Longs (red 3L): Bearish after three breakouts without hitting a previous low.
- 3 Shorts (green 3S): Bullish after three breakdowns without hitting a previous high.
First Countertrend Close (First): Tracks First Red or Green Day.
- First Green (G): After two consecutive red closes.
- First Red (R): After two consecutive green closes.
Options: Customizable font size and label colors.
Overall Options:
Toggle single feature groups on/off.
Customize H8 open/close time as an offset to UTC to be provider independent.
Colour settings for dark or bright backgrounds.
Using the Indicator for Trading
The automated analysis provided by the indicator can be used for thesis generation in preparation for a session as well as for live trading, leveraging the real-time updates. It is recommended to customize the settings accordingly, such as hiding the lower timeframes for thesis generation to keep the charts clean.
1. Setup Identification:
Follow the bias of daily and H8 timeframes. A setup always requires alignment of these.
Setup Types:
- Trend Trade: Trade in alignment with the previous day’s trend.
Example: Price above the previous day’s high → Focus on long setups (dBO, H8 FOL) until overextension or reversal signs appear (H8 BO 3L, First R).
- Reversal Trade: Identify reversal setups when lower timeframes show rollovers after higher timeframe weakness.
Example: Price below the previous day’s high after FOH → Look for reversal signals at the current high of day (H8 FOH, BO 3L, First R).
2. Context Assessment:
Evaluate alignment of higher timeframes (e.g., Month/Week, Week/Day). More alignment → Stronger setups. Conflicting situations → Setups invalidated.
3. Entry Confirmation:
Confirm entries based on H8 and H4 alignment and candle closes (e.g., M15 or M5 close after entering setup zone as confirmation).
Example Chart for Reversal Trade:
1. Setup Identification: FOH continuation after BO 3L overextension, confirmed by H8 FOH, First R.
2. Context Assessment: Month in FOL with bearish First R; Week in BO but bearishly overextended with BO 3L.
3. Entry Confirmation: H4 BD, M5 close.
Further recommendations:
- Higher timeframe context: TPO or volume profile indicators can be used to gain an even better overview.
- Entry confirmation: Momentum indicators like VWAP, Supertrend, or EMA are helpful for increasing precision. Additionally, tracking lower timeframe fakeouts can provide powerful confluence.
- Late session trading: Entries later in the session, such as during the 3rd hour of the NY session, offer better analysis and follow-through on setups.
Limitations:
Data availability using TradingView has its limitations. The indicator leverages only the real-time data available for the specific timeframe being used. This means it cannot access data from timeframes lower than the one displayed on the chart. For example, if you are on a daily chart, it cannot use H8 data. Additionally, on very low timeframes, the historical availability of data might be limited, making higher timeframe signals unreliable.
To address this, the indicator automatically hides the affected columns in these specific situations, preventing false signals.
Disclaimer
This indicator is for educational purposes only and does not guarantee profits.
None of the information provided shall be considered financial advice.
The indicator does not provide final buy or sell signals but highlights zones for potential setups.
Users are fully responsible for their trading decisions and outcomes.
Average Price Range Screener [KFB Quant]Average Price Range Screener
Overview:
The Average Price Range Screener is a technical analysis tool designed to provide insights into the average price volatility across multiple symbols over user-defined time periods. The indicator compares price ranges from different assets and displays them in a visual table and chart for easy reference. This can be especially helpful for traders looking to identify symbols with high or low volatility across various time frames.
Key Features:
Multiple Symbols Supported:
The script allows for analysis of up to 10 symbols, such as major cryptocurrencies and market indices. Symbols can be selected by the user and configured for tracking price volatility.
Dynamic Range Calculation:
The script calculates the average price range of each symbol over three distinct time periods (default are 30, 60, and 90 bars). The price range for each symbol is calculated as a percentage of the bar's high-to-low difference relative to its low value.
Range Visualization:
The results are visually represented using:
- A color-coded table showing the calculated average ranges of each symbol and the current chart symbol.
- A line plot that visually tracks the volatility for each symbol on the chart, with color gradients representing the range intensity from low (red/orange) to high (blue/green).
Customizable Inputs:
- Length Inputs: Users can define the time lengths (default are 30, 60, and 90 bars) for calculating average price ranges for each symbol.
- Symbol Inputs: 10 symbols can be tracked at once, with default values set to popular crypto pairs and indices.
- Color Inputs: Users can customize the color scheme for the range values displayed in the table and chart.
Real-Time Ranking:
The indicator ranks symbols by their average price range, providing a clear view of which assets are exhibiting higher volatility at any given time.
Each symbol's range value is color-coded based on its relative volatility within the selected symbols (using a gradient from low to high range).
Data Table:
The table shows the average range values for each symbol in real-time, allowing users to compare volatility across multiple assets at a glance. The table is dynamically updated as new data comes in.
Interactive Labels:
The indicator adds labels to the chart, showing the average range for each symbol. These labels adjust in real-time as the price range values change, giving users an immediate view of volatility rankings.
How to Use:
Set Time Periods: Adjust the time periods (lengths) to match your trading strategy's timeframe and volatility preference.
Symbol Selection: Add and track the price range for your preferred symbols (cryptocurrencies, stocks, indices).
Monitor Volatility: Use the visual table and plot to identify symbols with higher or lower volatility, and adjust your trading strategy accordingly.
Interpret the Table and Chart: Ranges that are color-coded from red/orange (lower volatility) to blue/green (higher volatility) allow you to quickly gauge which symbols are most volatile.
Disclaimer: This tool is provided for informational and educational purposes only and should not be considered as financial advice. Always conduct your own research and consult with a licensed financial advisor before making any investment decisions.
Winning and Losing StreaksThe Pine Script indicator "Winning and Losing Streaks" tracks and visualizes the length of consecutive winning and losing streaks in a financial series, such as stock prices. Here’s a detailed description of the indicator, including the relevance of statistical analysis and streak tracking.
Indicator Description
The "Winning and Losing Streaks" indicator in Pine Script is designed to analyze and display streaks of consecutive winning and losing days in trading data. It helps traders and analysts understand the persistence of trends in price movements.
Here’s how it functions:
Streak Calculation:
Winning Streak: A series of consecutive days where the closing price is higher than the previous day's closing price.
Losing Streak: A series of consecutive days where the closing price is lower than the previous day's closing price.
Doji Candles: The indicator also considers Doji candles, where the difference between the opening and closing prices is minimal relative to the high-low range, and excludes these from being counted as winning or losing days.
Statistical Analysis:
The indicator computes the maximum and average lengths of winning and losing streaks.
It also tracks the current streak lengths and maintains arrays to store the historical streak data.
Visualization:
Histograms: Winning and losing streaks are visualized using histograms, which provide a clear graphical representation of streak lengths over time.
Relevance of Statistical Analysis and Streak Tracking
1. Statistical Significance of Streaks
Tracking winning and losing streaks has significant statistical implications for trading strategies and risk management:
Autocorrelation: Streaks in financial time series can reveal autocorrelation, where past returns influence future returns. Studies have shown that financial time series often exhibit autocorrelation, which can be used to forecast future price movements (Lo, 1991; Jegadeesh & Titman, 1993). Understanding streaks helps in identifying and leveraging these patterns.
Behavioral Finance: Streak analysis aligns with concepts from behavioral finance, such as the "hot-hand fallacy," where investors may perceive trends as more persistent than they are (Gilovich, Vallone, & Tversky, 1985). Statistical streak analysis provides a more objective view of trend persistence, helping to avoid biases.
2. Risk Management and Strategy Development
Risk Assessment: Identifying the length and frequency of losing streaks is crucial for managing risk and adjusting trading strategies. Long losing streaks can indicate potential strategy weaknesses or market regime changes, prompting a reassessment of trading rules and risk management practices (Brock, Lakonishok, & LeBaron, 1992).
Strategy Optimization: Statistical analysis of streaks can aid in optimizing trading strategies. For example, understanding the average length of winning and losing streaks can help in setting more effective stop-loss and take-profit levels, as well as in determining the optimal position sizing (Fama & French, 1993).
Scientific References:
Lo, A. W. (1991). "Long-Term Memory in Stock Market Prices." Econometrica, 59(5), 1279-1313. This paper discusses the presence of long-term memory in stock prices, which is relevant for understanding the persistence of streaks.
Jegadeesh, N., & Titman, S. (1993). "Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency." Journal of Finance, 48(1), 65-91. This study explores momentum and reversal strategies, which are related to the concept of streaks.
Gilovich, T., Vallone, R., & Tversky, A. (1985). "The Hot Hand in Basketball: On the Misperception of Random Sequences." Cognitive Psychology, 17(3), 295-314. This paper provides insight into the psychological aspects of streaks and persistence.
Brock, W., Lakonishok, J., & LeBaron, B. (1992). "Simple Technical Trading Rules and the Stochastic Properties of Stock Returns." Journal of Finance, 47(5), 1731-1764. This research examines the effectiveness of technical trading rules, relevant for streak-based strategies.
Fama, E. F., & French, K. R. (1993). "Common Risk Factors in the Returns on Stocks and Bonds." Journal of Financial Economics, 33(1), 3-56. This paper provides a foundation for understanding risk factors and strategy performance.
By analyzing streaks, traders can gain valuable insights into market dynamics and refine their trading strategies based on empirical evidence.
Time and Price Lines and Zones (fadi)
Draw a red line starting from the open at 9:30
Show dotted lines between 11 and 12 and shade it
Mark the ORB high and low from 9:30 to 10:00 and extend it in orange and shade it
In trading, time and price are two crucial elements that help traders make decisions about buying and selling assets like stocks, commodities, or currencies. Forex or futures traders may prefer to trade during the Asia, London, and New York sessions to increase the probability of price moves. Additionally, traders often focus on key levels on the chart to frame their trades.
The Time and Price Lines and Zones indicator allows traders to set an unlimited number of time- and price-based levels on a chart, with full control over how they are displayed. Traders can simply type in their desired settings, and the indicator will interpret the instructions and plot the levels on the chart.
However, as it is a scripted tool, there are some limitations, and traders should keep their inputs relatively straightforward.
How It Works
In the settings, you type in the time and price levels you'd like to see, along with the timeframes for display. Each new line will render a line, a set of lines, or a price zone within a specific time interval. You can specify starting and ending times, price levels such as highs and lows, and details like color, line style, and thickness.
The following are some settings you can use:
Time
Always required, formatted as 0 to 23 for hours (with 0 representing midnight) and 0 to 59 for minutes. You can specify just a start time or both start and end times to "box" a period.
Examples:
1 ( for 1:00 AM)
13 (for 1:00 PM)
13:50 (for 1:50 PM)
Price
Optional. If no price level is provided, the indicator will treat it as an open time window and draw vertical lines at the specified time intervals.
Color
The indicator recognizes the 17 built-in colors from TradingView ( www.tradingview.com ). You also have the option to override or create your own colors to match your color schema under settings. Silver (light gray) is the default if none is specified.
Line Style
There are three available line styles:
Solid (default)
Dashed
Dotted
Line Thickness
Line thickness can also be controlled with the following options:
Thin (default)
Medium
Thick
Fill or No Fill
When specifying two price levels, or two time periods, you can choose to keep the area between them empty or fill it with a semitransparent color. You can set this by specifying "shade," "shaded," "fill," or "filled."
Extend or Not
There are times, such as with the Open Range Breakout (ORB), where you may want to extend the zone without tracking additional price level changes. You can indicate this by specifying whether you want to extend it or not.
Additional Indicator Settings
Ignore lines that start with a defined character to instruct the indicator to ignore the line. For example, if you want to hide a line without deleting it, add # in front of it (default is #).
Hide Above Will hide all lines and zones above a defined timeframe.
Show Next Area Hours in Advance This will plot lines in advance to the right of the current price action, helping traders recognize upcoming points of interest.
Show Last X Days This controls the clutter on the screen by limiting the display to the most recent X number of days.
Fill Transparency The percentage of transparency applied to the background when a fill is specified.
Examples:
12 to 13 gray area shaded with dotted lines
Will result in two vertical lines, one at 12 noon and one at 1 PM, with the area between them shaded gray and a dotted line style.
0:00 vertical line red solid
Adds one vertical red line at midnight.
By specifying the open, high, low, and/or close price components, the indicator will interpret this as an instruction to draw a horizontal line at the specified price level. If two or more price levels are provided, each will be tracked accordingly.
Draw a red line starting from 0 open
Draws a line starting from midnight open until the end of the trading day.
Track high and low starting from 9:30 in a dashed green medium line
Tracks the day’s high and low, adjusting as new highs and lows are drawn in a dashed thicker green line from 9:30 AM until the end of trading hours.
# Asia
20 to 0 green high to low filled
# London
2:00 to 5 blue low and high filled
#New York
8:30 to 11:30 orange zone shaded orange between the high and low dotted
Adds three ICT Kill Zones for Asia, London, and New York based on their respective high and low.
8:30 to 11:30 orange zone shaded orange open close dotted
Will add a second New York zone overlapping the high and low zone.
#Draw Open Range Breakout (ORB)
9:30 to 10:00 purple extended zone
Extends the zone from 9:30 to 10:00 AM with a purple extended zone.
Footprint ClassicThe Volume Footprint chart is analyzing volume data contained within candles and split it into two components - Up and Down volume. This analysis is similar to how Volume Profile evaluates volume data from a portion of the chart.
This script can be used by any user. You do not need to have PRO or PREMIUM account to use it.
As a user, you have the flexibility to select the desired level of data precision for the Volume Footprint analysis. We highly recommend using the highest precision possible, as it provides the most accurate results. However, it's important to keep in mind that Trading View has several limitations and not all levels of precision are available on all intervals. The higher the precision, the shorter the history of available data.
If, after adding the script or changing the precision, you encounter an error message stating "'The study references too many candles in history'", it may be necessary to reduce the precision level in the script settings to resolve the issue.
This script is a part of the "Volume Footprint" toolkit, which includes:
I. Footprint chart visualization scripts in two variants:
⠀⠀Volume Footprint - Presenting volume data on both sides of the candle.
⠀⠀Volume Footprint Classic - Presenting volume data on the right side of the candle.
II. Supporting tools:
⠀⠀Volume Footprint Statistics - Script presents, in tabular form, basic statistics calculated from candle volume data, such as Delta, min Delta, max Delta and more. It can support both Volume Footprint and Volume Footprint Classic.
⠀⠀Volume Footprint Candles - Tool drawing candles adapted for footprint chart scripts.
III. Tools dedicated to more detailed analysis:
⠀⠀Volume Delta - A candle chart illustrating changes in delta values.
⠀⠀Volume Cumulative Delta - A candle chart ilustrating changes in cumulative delta values.
⠀⠀Volume Delta In Candle - A line chart showing changes in delta values over a period equal to the chart interval.
⠀⠀Volume Cumulative Delta in Interval - A line chart showing changes in cumulative delta over a period equal to the chart interval.
Script with limited access, contact author to get authorization
User Interface:
The script groups Up and Down volume into slots based on price. The height of the slots is controlled by the "Slot height" parameter in the settings. Each slot has the following configurable features:
Text - A label that displays the value. You can choose from:
⠀- - Hidden
⠀V - Slot Volume (UP + Down)
⠀V% - Slot volume as percentage of Candle volume
⠀UD - Up and Down volume
⠀UDI - Up and Down volume + Imbalance symbols.
⠀Δ - Delta (Up - Down Volume)
⠀Δ% - Delta as percent of slot volume (from -100% to 100%)
Border - Highlight slots with border color. You can chose from:
⠀- - Hidden
⠀C - Constant color
⠀POC - Slot with biggest volume
⠀V - Slot volume compared to other slots in that candle
⠀VA - Value area, highlights slots forming the value area
⠀Δ - Delta is the slot.
Background - Highlight slots with background color. You can pick one of:
⠀- - Hidden
⠀C - Constant color
⠀POC - Slot with biggest volume
⠀V - Slot volume compared to other slots in that candle
⠀VA - Value area, highlights slots forming the value area
⠀Δ - Delta is the slot.
Imbalances symbols:
Before the Down Volume, the following imbalance symbols may appear:
⠀↓ - 3 times
⠀↡ - 5 times
⠀⇊ - 10 times
After the Up Volume the following imbalance symbols may appear:
⠀↑ - 3 time
⠀↟ - 5 times
⠀⇈ - 10 times
Above the candle, the following basic statistics can be shown:
"V:" - Row with volume statistics:
⠀∑ - Total volume ,
⠀Δ - Difference between Up and Down Volume .
⠀min Δ - The smallest difference between Up and Down Volume in that candle
⠀max Δ - the biggest difference between Up and Down Volume in that candle
Script settings:
Slot height = 10^ - Price slot height on the chart, recorded as a power of 10, which means:
⠀ 0 - 1$
⠀ 1 - 10$
⠀ 2 - 100$
⠀ 3 - 1000$
⠀-1 - 0.1$
⠀-2 - 0.01$
⠀-3 - 0.001$
Data precision - One of 6 standard levels of data precision: ▉▇▆▅▃▁, where ▉ means the highest precision and ▁ the lowest available precision and two special values "W" and "M" dedicated for biggest intervals. The highest precision should be available for 15-minute chart, but for a 1D chart, it may hit TradingView limitations and the script will not be launched by the platform with error: "'The study references too many candles in history'". The general recommendation is to use the highest available precision for a given instrument and interval.
Precise warnings - An option to show warnings about missing volume in candle footprint (warning connected with one of TradingView limitations).
Text - Picking what king of info is on label:
⠀- - Hidden
⠀V - Total slot Volume
⠀V% - Slot volume as % of Candle volume
⠀UD - Up and Down volume
⠀UDI - Up and Down volume + Imbalance symbols.
⠀Δ - Delta
⠀Δ% - Delta as percent of slot volume
Centered - If checked volume labels are stick to candle (centered), if not they are alligned to right.
Border, Background:
⠀- - Hidden
⠀C - Color1
⠀POC - Slot with biggest volume
⠀V - Slot volume compared to other slots in that candle
⠀VA - Value area, highlights the slots forming the value area
⠀Δ - Delta is the slot, color1 is used when volume Up is at least 10% bigger, color2 is used when Volume Down is at least 10% bigger
Filter - Filtering option than allow hinding labels with small values:
⠀0 - filter turned off.
⠀1-5 - filtering with transparency
⠀6-10 - Filtering with hiding values
Show zeros - Option to show zeros or leave empty spaces
Draw candles - Option to draw candles that fit the volume labels, and 2 fields to choose the color of up and down candles. It is recommended to hide chart candles and use candles adapted to the footprint chart. TradingView has a bug and candles are drawn under the slots. If you choose a non-transparent background or border, they may be invisible. If possible (free accounts have a limit of 3 scripts), it is recommended to use Volume Footprint Candles script to draw thin candles over the slots.
Show stats - Showing stats over the candle: ∑, Δ, min Δ, max Δ. It's recommended to use 'Volume Footprint Statistics' script instead
Font size - Used to draw stats over the chart: T(iny), S(mall), N(ormal), L(arge)
Instrument and Volume status - A dialog showing basic chart information: Instrument type, Volume type, Smallest change, slot height.
Value area - Value area is the smallest group set of neighboring slots that have at least n(param) % of candle volume.
⠀ Value Area Minimal Volume (%) - Value area size as % of candle volume
⠀ Track - Option to track value areas, potencial support-resistance zones.
⠀ Only active - Option to hide areas that were crossed by the price.
⠀ Show Values - Opiton to show volume value over tracked value areas.
Alerts:
⠀ One alert per Bar - Emits no more than one alert per bar.
⠀ Add value area to tracking - Emits an alert about a new VA beeing added to the tracking list.
⠀ Remove value area from tracking - Emits an alert when a VA is removed from the tracking list.
Troubleshooting:
In case of any problems, please send error details to the author of the script.
Known issues:
"The study references too many candles in history" - If you encounter this issue, try changing "Data precision" setting to a lower value.
Crypto McClellan Oscillator (SLN Fix)This is an adaption of the Mcclellan Oscillator for crypto. Instead of tracking the S&P500 it tracks a selection of cryptos to make sure the indicator follows this sector instead.
Full credit goes to the creator of this indicator: Fadior. It has since been fixed by SLN.
The following description explains the standard McClellan Oscillator. Full credit to Investopedia , my fav source of financial explanations.
The same principles applies to its use in the crypto sector, but please be cautious of the last point, the limitations. Since crypto is more volatile, that could amplify choppy behavior.
This is not financial advice, please be extremely cautious. This indicator is only suitable as a confirmation signal and needs support of other signals to be profitable.
This indicator usually produces the best signals on slightly above daily time frame. I personally like 2 or 3 day, but you have to find the settings suitable for your trading style.
What Is the McClellan Oscillator?
The McClellan Oscillator is a market breadth indicator that is based on the difference between the number of advancing and declining issues on a stock exchange, such as the New York Stock Exchange (NYSE) or NASDAQ.
The indicator is used to show strong shifts in sentiment in the indexes, called breadth thrusts. It also helps in analyzing the strength of an index trend via divergence or confirmation.
The McClellan Oscillator formula can be applied to any stock exchange or group of stocks.
A reading above zero helps confirm a rise in the index, while readings below zero confirm a decline in the index.
When the index is rising but the oscillator is falling, that warns that the index could start declining too. When the index is falling and the oscillator is rising, that indicates the index could start rising soon. This is called divergence.
A significant change, such as moving 100 points or more, from a negative reading to a positive reading is called a breadth thrust. It may indicate a strong reversal from downtrend to uptrend is underway on the stock exchange.
How to Calculate the McClellan Oscillator
To get the calculation started, track Advances - Declines on a stock exchange for 19 and 39 days. Calculate a simple average for these, not exponential moving average (EMA).
Use these simple values as the Prior Day EMA values in the 19- and 39-day EMA formulas.
Calculate the 19- and 39-day EMAs.
Calculate the McClellan Oscillator value.
Now that the value has been calculated, on the next calculation use this value for the Prior Day EMA. Start calculating EMAs for the formula instead of simple averages.
If using the adjusted formula, the steps are the same, except use ANA instead of using Advances - Declines.
What Does the McClellan Oscillator Tell You?
The McClellan Oscillator is an indicator based on market breadth which technical analysts can use in conjunction with other technical tools to determine the overall state of the stock market and assess the strength of its current trend.
Since the indicator is based on all the stocks in an exchange, it is compared to the price movements of indexes that reflect that exchange, or compared to major indexes such as the S&P 500.
Positive and negative values indicate whether more stocks, on average, are advancing or declining. The indicator is positive when the 19-day EMA is above the 39-day EMA, and negative when the 19-day EMA is below the 39-day EMA.
A positive and rising indicator suggests that stocks on the exchange are being accumulated. A negative and falling indicator signals that stocks are being sold. Typically such action confirms the current trend in the index.
Crossovers from positive to negative, or vice versa, may signal the trend has changed in the index or exchange being tracked. When the indicator makes a large move, typically of 100 points or more, from negative to positive territory, that is called a breadth thrust.
It means a large number of stocks moved up after a bearish move. Since the stock market tends to rise over time, this a positive signal and may indicate that a bottom in the index is in and prices are heading higher overall.
When index prices and the indicator are moving in different directions, then the current index trend may lack strength. Bullish divergence occurs when the oscillator is rising while the index is falling. This indicates the index could head higher soon since more stocks are starting to advance.
Bearish divergence is when the index is rising and the indicator is falling. This means fewer stocks are keeping the advance going and prices may start to head lower.
Limitations of Using the McClellan Oscillator
The indicator tends to produce lots of signals. Breadth thrusts, divergence, and crossovers all occur with some frequency, but not all these signals will result in the price/index moving in the expected direction.
The indicator is prone to producing false signals and therefore should be used in conjunction with price action analysis and other technical indicators.
The indicator can also be quite choppy, moving between positive and negative territory rapidly. Such action indicates a choppy market, but this isn't evident until the indicator has made this whipsaw move a few times.
Good luck and a big thanks to Fadior!
Session Highlighter with Kill Zones [Exponential-X]Session Highlighter with Kill Zones
Overview
This indicator provides comprehensive visualization of major forex trading sessions (Asian, London, and New York) with integrated kill zone detection and real-time session analytics. It helps traders identify optimal trading times by highlighting high-volatility periods and tracking session-specific price ranges.
What Makes This Original
While session indicators are common, this script uniquely combines several features that work together:
Kill Zone Integration: Highlights specific high-volatility windows within sessions (London: 02:00-05:00 EST, NY: 08:30-11:00 EST) when institutional activity typically peaks
Session Overlap Detection: Automatically detects and highlights when major sessions overlap (London-NY, Asian-London) with distinct visual cues
Real-Time Range Tracking: Calculates and displays percentage-based session ranges as they develop, not just historical data
Dynamic Statistics Dashboard: Live table showing current active session, session times, and comparative range percentages
Customizable Visual System: Flexible styling options including background shading, box overlays, and configurable line styles for session boundaries
How It Works
Session Detection Logic
The script uses timezone-normalized session detection based on EST/EDT times. It converts the current bar's timestamp to New York time and determines which session(s) are active using minute-based calculations. This approach ensures accurate session detection regardless of your chart's timezone settings.
Kill Zones
Kill zones represent periods within sessions when institutional traders are most active. The London kill zone (02:00-05:00 EST) captures pre-London open volatility, while the NY kill zone (08:30-11:00 EST) aligns with US economic data releases and market open activity.
Range Calculations
Session highs, lows, and opens are tracked from the first bar of each session and updated in real-time. Range percentages are calculated as: ((High - Low) / Low) × 100 , providing a volatility measure that's comparable across different instruments and price levels.
Visual System
Background shading: Color-coded zones for each session
Session boxes: Outline entire session ranges
H/L lines: Dynamic lines showing current session extremes
Open lines: Reference levels from session start
Overlap highlighting: Distinct colors when multiple sessions are active simultaneously
How to Use
Intraday Trading: Use kill zones to time entries during high-liquidity periods
Session Breakouts: Monitor for price breaks above/below session highs/lows
Range Trading: Trade between session boundaries during consolidation
Session Continuity: Observe how price behaves as sessions transition
Volatility Assessment: Compare current session ranges to typical values
Recommended Timeframes: Works on any timeframe, but most useful on 1m to 1H charts for intraday trading.
Settings Explained
Sessions Group
Toggle each major session on/off independently
Customize colors for visual clarity
Enable/disable overlap highlighting
Levels Group
Show/hide session high/low lines
Show/hide session open levels
Choose line styles (Solid/Dashed/Dotted)
Kill Zones Group
Toggle kill zone highlighting
Select which kill zones to display
Customize kill zone color intensity
Display Group
Show/hide statistics table
Show/hide session labels on chart
Important Notes
All times are displayed in EST/EDT
Session ranges reset at the start of each new session
Kill zones are session sub-periods, not separate sessions
Overlap colors override individual session colors when multiple sessions are active
The statistics table updates in real-time and shows percentage-based ranges for cross-instrument comparison
Session Times Reference
Asian Session: 19:00 - 04:00 EST (Tokyo open through early Sydney close)
London Session: 03:00 - 12:00 EST (Full European trading hours)
New York Session: 08:00 - 17:00 EST (US market hours)
London Kill Zone: 02:00 - 05:00 EST (Pre-London volatility spike)
NY Kill Zone: 08:30 - 11:00 EST (US open and news releases)
Alerts Available
The script includes six pre-configured alert conditions:
London Kill Zone start
NY Kill Zone start
London-NY Overlap start
Asian Session open
London Session open
NY Session open
Create alerts through TradingView's alert system to get notified when specific sessions or kill zones begin.
Disclaimer: This indicator is for informational purposes only. Session times and kill zones are based on typical market patterns but do not guarantee specific trading outcomes. Always use proper risk management.
London First 15m Candle (Real-Time NY)London First 15-Minute Candle (Real-Time New York Time)
This custom TradingView indicator identifies and tracks the first 15-minute candle of the London session, but calculated in real-time according to New York time (EST/EDT).
🔹 What the Indicator Does
1. Detects the London Session Open (Real NY Time)
You define the London session start time in New York hours (default: 3:00 AM NY Time).
The indicator monitors the first 15 minutes from the defined start time (3:00–3:15 NY time).
Only today’s candle is tracked — historical London ranges are not shown.
2. Builds the London Opening Range Candle (15m)
While the 15-minute window is still open, it continuously tracks:
Highest price reached (London High)
Lowest price reached (London Low)
The values update in real time only within the 3:00–3:15 window.
At 3:15 NY time, the candle is locked in and no longer changes.
3. Draws Three Persistent Levels on the Chart
Once the London candle closes, the indicator plots:
🔴 Top Line (London High)
Extended to the right across the chart.
🟢 Bottom Line (London Low)
Extended to the right across the chart.
⚪ Mid Line (Middle of the Range)
Computed as:
(londonHigh + londonLow) / 2
Also extended to the right.
All lines:
Are only drawn for today.
Auto-delete and refresh when a new trading day begins.
4. Works on ANY Timeframe
Even if the indicator runs on:
1m
2m
5m
1h
etc.
…it still uses a real 15-minute aggregation, ensuring the London candle is accurate.
5. Clean Chart — No Historical London Levels
The script:
Removes old lines at the start of each new day.
Keeps only today’s active London range.
This prevents clutter and ensures clarity.
6. Optional Alerts (if enabled)
The indicator can generate alerts when the market crosses:
The top of the London range
The bottom of the London range
The midline
For example:
Price breaks above London High
Price breaks below London Low
Price crosses the Midline up or down
These can be used for:
Breakout strategies
Liquidity grabs
Range-trading confirmations
7. Fully Customizable
User inputs allow you to modify:
London session start hour (NY Time)
Candle duration (fixed at 15 minutes)
Line colors:
High line color
Low line color
Midline color
Line widths
Summary
This indicator gives you a clean and accurate view of the first 15-minute candle of the London session — critical for many ICT/SMS/prop firm strategies — with:
Real-time NY-based calculation
Automatic cleanup
Clear range lines
Custom colors
Alerts for breakouts
IndiAllsIndiAlls is a versatile overlay indicator designed for traders analyzing market structure, sessions, and key level. It combines several popular tools into one script, including session highs/lows, fair value gaps (FVG), macro time trackers, RSI dashboards, displacement detection, engulfing candles, and various line drawings (e.g., midnight opens, vertical lines). This indicator is intended for educational and analytical purposes, helping users visualize potential support/resistance levels, gaps, and momentum across timeframes.
Key Features
Session Highs/Lows: Tracks and draws lines for Asian and London sessions, previous day/week, and pre-market highs/lows. Lines extend until mitigated by price, with optional labels.
Midnight and 8:30 Open Lines: Plots customizable lines at midnight and 8:30 AM (America/New_York time) with styles (solid, dotted, dashed) and history options.
Fair Value Gaps (FVG): Detects bullish/bearish gaps based on a threshold percentage, draws extendable boxes, and removes them when filled (mitigated).
Macro Time Tracker: Highlights specific 20-minute "macro" windows (e.g., 8:50-9:10 AM) with lines and labels, optimized for 15-minute charts, including Friday adjustments.
Vertical Lines: Draws time-based vertical lines (e.g., every 15/30/60 minutes) within user-defined hours.
RSI Dashboard: A table displaying RSI values across multiple timeframes (1m, 2m, 3m, 5m, 15m, 1h) with color-coded overbought/oversold highlights.
Displacement Detection: Colors bars where candle range exceeds a standard deviation threshold, optionally requiring an FVG.
Engulfing Candles: Highlights bullish/bearish engulfing patterns based on size and body ratios.
How to Use
Add the indicator to your chart (works best on intraday timeframes like 1m-15m for stocks/futures).
Adjust inputs in the settings panel to enable/disable features and customize colors, widths, and thresholds.
Interpret visuals:
- Lines and boxes indicate potential key levels or gaps—watch for price interactions (e.g., bounces or breaks).
- Bar colors highlight displacement or engulfing patterns for momentum insights.
- The RSI table provides multi-timeframe overbought/oversold context.
Combine with other tools (e.g., volume, moving averages) for comprehensive analysis. Test on historical data to understand behavior.
This indicator is overlay-based and does not plot traditional series but uses lines, boxes, labels, and tables for visualization.
Input Settings
Session High/Low Settings: Toggle Asian/London/Prev Day/Week displays, colors, widths, and label sizes.
Midnight/True Day Open and 8:30 Open: Enable lines, styles (solid/dotted/dashed), colors, and history.
Pre-Market Data High/Low: Toggle pre-market (7-9 AM) highs/lows, colors, widths, and labels.
Macro Time: Enable specific macro windows (e.g., 8:50-9:10) with text options.
Fair Value Gap Settings: Toggle FVG, threshold %, extend length, colors, and timeframe.
Vertical Lines Settings: Toggle lines, timeframe (15m/30m/1h), style, color, and hour range.
RSI Dashboard Settings: Toggle dashboard, position, size, transparency, and overbought/oversold levels.
Displacement Settings: Toggle detection, require FVG, type (open-close/high-low), strength, and color.
Engulfing Candle Settings: Toggle highlighting, bar ratio threshold, body/tail ratio, and color.
Chronos Reversal Labs🧬 Chronos Reversal Lab - Machine Learning Market Structure Analysis
OVERVIEW
Chronos Reversal Lab (CRL) is an advanced market structure analyzer that combines computational intelligence kernels with classical technical analysis to identify high-probability reversal opportunities. The system integrates Shannon Entropy analysis, Detrended Fluctuation Analysis (DFA), Kalman adaptive filtering, and harmonic pattern recognition into a unified confluence-based signal engine.
WHAT MAKES IT ORIGINAL
Unlike traditional reversal indicators that rely solely on oscillators or pattern recognition, CRL employs a multi-kernel machine learning approach that analyzes market behavior through information theory, statistical physics, and adaptive state-space estimation. The system combines these computational methods with geometric pattern analysis and market microstructure to create a comprehensive reversal detection framework.
HOW IT WORKS (Technical Methodology)
1. COMPUTATIONAL KERNELS
Shannon Entropy Analysis
Measures market uncertainty using information theory:
• Discretizes price returns into bins (user-configurable 5-20 bins)
• Calculates probability distribution entropy over lookback window
• Normalizes entropy to 0-1 scale (0 = perfectly predictable, 1 = random)
• Low entropy states (< 0.3 default) indicate algorithmic clarity phases
• When entropy drops, directional moves become statistically more probable
Detrended Fluctuation Analysis (DFA)
Statistical technique measuring long-range correlations:
• Analyzes price series across multiple box sizes (4 to user-set maximum)
• Calculates fluctuation scaling exponent (Alpha)
• Alpha > 0.5: Trend persistence (momentum regime)
• Alpha < 0.5: Mean reversion tendency (reversal regime)
• Alpha range 0.3-1.5 mapped to trading strategies
Kalman Adaptive Filter
State-space estimation for lag-free trend tracking:
• Maintains separate fast and slow Kalman filters
• Process noise and measurement noise are user-configurable
• Tracks price state with adaptive gain adjustments
• Calculates acceleration (second derivative) for momentum detection
• Provides cleaner trend signals than traditional moving averages
2. HARMONIC PATTERN DETECTION
Identifies geometric reversal patterns:
• Gartley: 0.618 AB/XA, 0.786 AD/XA retracement
• Bat: 0.382-0.5 AB/XA, 0.886 AD/XA retracement
• Butterfly: 0.786 AB/XA, 1.272-1.618 AD/XA extension
• Cypher: 0.382-0.618 AB/XA, 0.786 AD/XA retracement
Pattern Validation Process:
• Requires alternating swing structure (XABCD points)
• Fibonacci ratio tolerance: 0.02-0.20 (user-adjustable precision)
• Minimum 50% ratio accuracy score required
• PRZ (Potential Reversal Zone) calculated around D point
• Zone size: ATR-based with pattern-specific multipliers
• Active pattern tracking with 100-bar invalidation window
3. MARKET STRUCTURE ANALYSIS
Swing Point Detection:
• Pivot-based swing identification (3-21 bars configurable)
• Minimum swing size: ATR multiples (0.5-5.0x)
• Adaptive filtering: volatility regime adjustment (0.7-1.3x)
• Swing confirmation tracking with RSI and volume context
• Maintains structural history (up to 500 swings)
Break of Structure (BOS):
• Detects price crossing previous swing highs/lows
• Used for trend continuation vs reversal classification
• Optional requirement for signal validation
Support/Resistance Detection:
• Identifies horizontal levels from swing clusters
• Touch counting algorithm (price within ATR×0.3 tolerance)
• Weighted by recency and number of tests
• Dynamic updating as structure evolves
4. CONFLUENCE SCORING SYSTEM
Multi-factor analysis with regime-aware weighting:
Hierarchical Kernel Logic:
• Entropy gates advanced kernel activation
• Only when entropy < threshold do DFA and Kalman accelerate scoring
• Prevents false signals during chaotic (high entropy) conditions
Scoring Components:
ML Kernels (when entropy low):
• Low entropy + trend alignment: +3.0 points × trend weight
• DFA super-trend (α>1.5): +4.0 points × trend weight
• DFA persistence (α>0.65): +2.5 points × trend weight
• DFA mean-reversion (α<0.35): +2.0 points × mean-reversion weight
• Kalman acceleration: up to +3.0 points (scaled by magnitude)
Classical Technical Analysis:
• RSI oversold (<30) / overbought (>70): +1.5 points
• RSI divergence (bullish/bearish): +2.5 points
• High relative volume (>1.5x): +0-2.0 points (scaled)
• Volume impulse (>2.0x): +1.5 points
• VWAP extremes: +1.0 point
• Trend alignment (Kalman fast vs slow): +1.5 points
• MACD crossover/momentum: +1.0 point
Structural Factors:
• Near support (within 0.5 ATR): +0-2.0 points (inverse distance)
• Near resistance (within 0.5 ATR): +0-2.0 points (inverse distance)
• Harmonic PRZ zone: +3.0 to +6.0 points (pattern score dependent)
• Break of structure: +1.5 points
Regime Adjustments:
• Trend weight: 1.5× in trend regime, 0.5× in mean-reversion
• Mean-reversion weight: 1.5× in MR regime, 0.5× in trend
• Volatility multiplier: 0.7-1.3× based on ATR regime
• Theory mode multiplier: 0.8× (Conservative) to 1.2× (APEX)
Final Threshold:
Base threshold (default 3.5) adjusted by:
• Theory mode: -0.3 (APEX) to +0.8 (Conservative)
• Regime: +0.5 (high vol) to -0.3 (low vol or strong trend)
• Filter: +0.2 if regime filter enabled
5. SIGNAL GENERATION ARCHITECTURE
Five-stage validation process:
Stage 1 - ML Kernel Analysis:
• Entropy threshold check
• DFA regime classification
• Kalman acceleration confirmation
Stage 2 - Structural Confirmation:
• Market structure supports directional bias
• BOS alignment (if required)
• Swing point validation
Stage 3 - Trigger Validation:
• Engulfing candle (if required)
• HTF bias confirmation (if strict HTF enabled)
• Harmonic PRZ alignment (if confirmation enabled)
Stage 4 - Consistency Check:
• Anticipation depth: checks N bars back (1-13 configurable)
• Ensures Kalman acceleration direction persists
• Filters whipsaw conditions
Stage 5 - Structural Soundness (Critical Filter):
• Verifies adequate room before next major swing level
• Long signals: must have >0.25 ATR clearance to last swing high
• Short signals: must have >0.25 ATR clearance to last swing low
• Prevents trades directly into obvious structural barriers
Dynamic Risk Management:
• Stop-loss: Placed beyond last structural swing ± 2 ticks
• Take-profit 1: Risk × configurable R1 multiplier (default 1.5R)
• Take-profit 2: Risk × configurable R2 multiplier (default 3.0R)
• Confidence score: Calibrated 0-99% based on confluence + kernel boost
6. ADAPTIVE REGIME SYSTEM
Continuous market state monitoring:
Trend Regime:
• Kalman fast vs slow positioning
• Multi-timeframe alignment (optional HTF)
• Strength: ATR-normalized fast/slow spread
Volatility Regime:
• Current ATR vs 100-bar average
• Regime ratio: 0.7-1.3 typical range
• Affects swing size filtering and cooldown periods
Signal Cooldown:
• Base: User-set bars (1-300)
• High volatility (>1.5): cooldown × 1.5
• Low volatility (<0.5): cooldown × 0.7
• Post-BOS: minimum 20-bar cooldown enforced
FOUR OPERATIONAL MODES
CONSERVATIVE MODE:
• Threshold adjustment: +0.8
• Mode multiplier: 0.8×
• Strictest filtering for highest quality
• Recommended for: Beginners, large accounts, swing trading
• Expected signals: 3-5 per week (typical volatile instrument)
BALANCED MODE:
• Threshold adjustment: +0.3
• Mode multiplier: 1.0×
• Standard operational parameters
• Recommended for: General trading, learning phase
• Expected signals: 5-10 per week
APEX MODE:
• Threshold adjustment: -0.3
• Mode multiplier: 1.2×
• Maximum sensitivity, reduced cooldowns
• Recommended for: Scalping, high volatility, experienced traders
• Expected signals: 10-20 per week
INSTITUTIONAL MODE:
• Threshold adjustment: +0.5
• Mode multiplier: 1.1×
• Enhanced structural weighting, HTF emphasis
• Recommended for: Professional traders, swing positions
• Expected signals: 4-8 per week
VISUAL COMPONENTS
1. Fibonacci Retracement Levels
• Auto-calculated from most recent swing structure
• Standard levels: 0%, 23.6%, 38.2%, 50%, 61.8%, 78.6%, 100%, 127.2%, 161.8%, 200%, 261.8%
• Key levels emphasized (50%, 61.8%, 100%, 161.8%)
• Color gradient from bullish to bearish based on level
• Automatic cleanup when levels are crossed
• Label intensity control (None/Fib only/All)
2. Support and Resistance Lines
• Dynamic horizontal levels from swing clusters
• Width: 2px solid lines
• Colors: Green (support), Red (resistance)
• Labels show price and level type
• Touch-based validation (minimum 2 touches)
• Real-time updates and invalidation
3. Harmonic PRZ Boxes
• Displayed around pattern completion (D point)
• Pattern-specific colors (Gartley: purple, Bat: orange, etc.)
• Box height: ATR-based zone sizing
• Score-dependent transparency
• 100-bar active window before removal
4. Confluence Boxes
• Appear when confluence ≥ threshold
• Yellow/orange gradient based on score strength
• Height: High to low of bar
• Width: 1 bar on each side
• Real-time score-based transparency
5. Kalman Filter Lines
• Fast filter: Bullish color (green default)
• Slow filter: Bearish color (red default)
• Width: 2px
• Transparency adjustable (0-90%)
• Optional display toggle
6. Signal Markers
• Long: Green triangle below bar (tiny size)
• Short: Red triangle above bar (tiny size)
• Appear only on confirmed signals
• Includes alert generation
7. Premium Dashboard
Features real-time metrics with visual gauges:
Layout Options:
• Position: 4 corners selectable
• Size: Small (9 rows) / Normal (12 rows) / Large (14 rows)
• Themes: Supreme, Cosmic, Vortex, Heritage
Metrics Displayed:
• Gamma (DFA - 0.5): Shows trend persistence vs mean-reversion
• TCI (Trend Strength): ATR-normalized Kalman spread with gauge
• v/c (Relative Volume): Current vs average with color coding
• Entropy: Market predictability state with gauge
• HFL (High-Frequency Line): Kalman fast/slow difference / ATR
• HFL_acc (Acceleration): Second derivative momentum
• Mem Bias: Net bullish-bearish confluence (-1 to +1)
• Assurance: Confidence × (1-entropy) metric
• Squeeze: Bollinger Band / Keltner Channel squeeze detection
• Breakout P: Probability estimate from DFA + trend + acceleration
• Score: Final confluence vs threshold (normalized)
• Neighbors: Active harmonic patterns count
• Signal Strength: Strong/Moderate/Weak classification
• Signal Banner: Current directional bias with emoji indicators
Gauge Visualization:
• 10-bar horizontal gauges (█ filled, ░ empty)
• Color-coded: Green (strong) / Gold (moderate) / Red (weak)
• Real-time updates every bar
HOW TO USE
Step 1: Configure Mode and Resolution
• Select Theory Mode based on trading style (Conservative/Balanced/APEX/Institutional)
• Set Structural Resolution (Standard for fast markets, High for balanced, Ultra/Institutional for swing)
• Enable Adaptive Filtering (recommended for all volatile assets)
Step 2: Enable Desired Kernels
• Shannon Entropy: Essential for predictability detection (recommended ON)
• DFA Analysis: Critical for regime classification (recommended ON)
• Kalman Filter: Provides lag-free trend tracking (recommended ON)
• All three work synergistically; disabling reduces effectiveness
Step 3: Configure Confluence Factors
• Enable desired technical factors (RSI, MACD, Volume, Divergence)
• Enable Liquidity Mapping for support/resistance proximity scoring
• Enable Harmonic Detection if trading pattern-based setups
• Adjust base confluence threshold (3.5 default; higher = fewer, cleaner signals)
Step 4: Set Trigger Requirements
• Require Engulfing: Adds precision, reduces frequency (recommended for Conservative)
• Require BOS: Ensures structural alignment (recommended for trend-following)
• Require Structural Soundness: Critical filter preventing traps (highly recommended)
• Strict HTF Bias: For multi-timeframe traders only
Step 5: Adjust Visual Preferences
• Enable/disable Fibonacci levels, S/R lines, PRZ boxes, confluence boxes
• Set label intensity (None/Fib/All)
• Adjust transparency (0-90%) for overlay clarity
• Configure dashboard position, size, and theme
Step 6: Configure Alerts
• Enable master alerts toggle
• Select alert types: Anticipation, Confirmation, High Confluence, Low Entropy
• Enable JSON details for automated trading integration
Step 7: Interpret Signals
• Wait for triangle markers (green up = long, red down = short)
• Check dashboard for confluence score, entropy, DFA regime
• Verify signal aligns with higher timeframe bias (if using HTF setting)
• Confirm adequate space to take-profit levels (no nearby structural barriers)
Step 8: Execute and Manage
• Enter at close of signal candle (or next bar open)
• Set stop-loss at calculated level (visible in alert if JSON enabled)
• Scale out at TP1 (1.5R default), trail remaining to TP2 (3.0R default)
• Exit early if entropy spikes >0.7 or DFA regime flips against position
CUSTOMIZATION GUIDE
Timeframe Optimization:
Scalping (1-5 minutes):
• Theory Mode: APEX
• Anticipation Depth: 3-5
• Structural Resolution: STANDARD
• Signal Cooldown: 8-12 bars
• Enable fast kernels, disable HTF bias
Day Trading (15m-1H):
• Theory Mode: BALANCED
• Anticipation Depth: 5-8
• Structural Resolution: HIGH
• Signal Cooldown: 12-20 bars
• Standard configuration
Swing Trading (4H-Daily):
• Theory Mode: INSTITUTIONAL
• Anticipation Depth: 8-13
• Structural Resolution: ULTRA or INSTITUTIONAL
• Signal Cooldown: 20-50 bars
• Enable HTF bias, strict confirmations
Market Type Optimization:
Forex Majors:
• All kernels enabled
• Harmonic patterns effective
• Balanced or Institutional mode
• Standard settings work well
Stock Indices:
• Emphasis on volume analysis
• DFA critical for regime detection
• Conservative or Balanced mode
• Enable liquidity mapping
Cryptocurrencies:
• Adaptive filtering essential
• Higher volatility regime expected
• APEX mode for active trading
• Wider ATR multiples for swing sizing
IMPORTANT DISCLAIMERS
• This indicator does not predict future price movements
• Computational kernels calculate probabilities, not certainties
• Past confluence scores do not guarantee future signal performance
• Always backtest on YOUR specific instruments and timeframes before live trading
• Machine learning kernels require calibration period (minimum 100 bars of data)
• Performance varies significantly across market conditions and regimes
• Signals are suggestions for analysis, not automated trading instructions
• Proper risk management (stops, position sizing) is mandatory
• Complex calculations may impact performance on lower-end devices
• Designed for liquid markets; avoid illiquid or gap-prone instruments
PERFORMANCE CONSIDERATIONS
Computational Intensity:
• DFA analysis: Moderate (scales with length and box size parameters)
• Entropy calculation: Moderate (scales with lookback and bins)
• Kalman filtering: Low (efficient state-space updates)
• Harmonic detection: Moderate to High (pattern matching across swing history)
• Overall: Medium computational load
Optimization Tips:
• Reduce Structural Analysis Depth (144 default → 50-100 for faster performance)
• Increase Calc Step (2 default → 3-4 for lighter load)
• Reduce Pattern Analysis Depth (8 default → 3-5 if harmonics not primary focus)
• Limit Draw Window (150 bars default prevents visual clutter on long charts)
• Disable unused confluence factors to reduce calculations
Best Suited For:
• Liquid instruments: Major forex, stock indices, large-cap crypto
• Active timeframes: 5-minute through daily (avoid tick/second charts)
• Trending or ranging markets: Adapts to both via regime detection
• Pattern traders: Harmonic integration adds geometric confluence
• Multi-timeframe analysts: HTF bias and regime detection support this approach
Not Recommended For:
• Illiquid penny stocks or micro-cap altcoins
• Markets with frequent gaps (stocks outside regular hours without gap adjustment)
• Extremely fast timeframes (tick, second charts) due to calculation overhead
• Pure mean-reversion systems (unless using CONSERVATIVE mode with DFA filters)
METHODOLOGY NOTE
The computational kernels (Shannon Entropy, DFA, Kalman Filter) are established statistical and signal processing techniques adapted for financial time series analysis. These are deterministic mathematical algorithms, not predictive AI models. The term "machine learning" refers to the adaptive, data-driven nature of the calculations, not neural networks or training processes.
Confluence scoring is rule-based with regime-dependent weighting. The system does not "learn" from historical trades but adapts its sensitivity to current volatility and trend conditions through mathematical regime classification.
SUPPORT & UPDATES
• Questions about configuration or usage? Send me a message on TradingView
• Feature requests are welcome for consideration in future updates
• Bug reports appreciated and addressed promptly
• I respond to messages within 24 hours
• Regular updates included (improvements, optimizations, new features)
FINAL REMINDERS
• This is an analytical tool for confluence analysis, not a standalone trading system
• Combine with your existing strategy, risk management, and market analysis
• Start with paper trading to learn the system's behavior on your markets
• Allow 50-100 signals minimum for performance evaluation
• Adjust parameters based on YOUR timeframe, instrument, and trading style
• No indicator guarantees profitable trades - proper risk management is essential
— Dskyz, Trade with insight. Trade with anticipation.
Institutions ZonesInstitutions Zone Tracker
This indicator automatically detects, draws, and manages institutional zones using refined order block logic. It is built to highlight high-probability reversal or breakout areas across any timeframe, with advanced zone management features that go beyond typical open-source versions.
How It Works
The script identifies price regions where significant institutional buying or selling has previously occurred and tracks how they evolve in real time:
Green = Areas of strong institutional buying interest.
Red = Areas of institutional selling interest.
Gray = Tested Zone: If price re-enters a previously drawn zone, it turns gray and relabels as “Tested,” signaling reduced reaction strength.
Unlike many standard supply/demand tools, this script includes automatic zone removal, tested-zone tracking, and no-repaint logic to maintain chart accuracy and reduce clutter.
Features
Dynamic zone creation and removal based on order block and mitigation rules.
Real-time updates with no repainting.
Visual clarity controls (adjustable transparency, labels inside zones).
Automatic zone lifecycle tracking, with clear status indicators (“Demand Zone,” “Supply Zone,” “Tested”).
How to Use
Apply the indicator to any chart and timeframe.
Use Demand Zones as potential long/swing-low areas and Supply Zones as potential short/swing-high areas.
When a zone turns gray, treat it as weakened — reactions may be less reliable.
Combine with your own technical or fundamental analysis for confirmation.
Best Practices
Pair with candlestick reversal signals or momentum indicators for higher accuracy.
Adjust tuning/mitigation parameters to fit your trading style and the asset’s volatility.
Use across multiple timeframes to validate institutional order flow alignment.
Why This Script Is Different
Most open-source supply/demand indicators only plot static zones. This script introduces:
Automatic zone removal to keep charts clean and relevant.
Dynamic “tested zone” logic that tracks weakening institutional levels.
Real-time, no-repaint drawing, ensuring zones remain accurate as price action evolves.
These unique features make the tool more practical for live trading and justify closed-source protection.
⚠️ Disclaimer
This script is for educational and informational purposes only. It does not constitute financial advice. Always conduct your own analysis and consult a licensed professional before trading. The author is not liable for losses or damages. Use at your own risk.
Dynamic Swing Anchored VWAP (Zeiierman)█ Overview
Dynamic Swing Anchored VWAP (Zeiierman) is a price–volume tool that anchors VWAP at fresh swing highs/lows and then adapts its responsiveness as conditions change. Instead of one static VWAP that drifts away over time, this indicator re-anchors at meaningful structure points (swings). It computes a decayed, volume-weighted average that can speed up in volatile markets and slow down during quiet periods.
Blending swing structure with an adaptive VWAP engine creates a fair-value path that stays aligned with current price behavior, making retests, pullbacks, and mean reversion opportunities easier to spot and trade.
█ How It Works
⚪ Swing Anchor Engine
The script scans for swing highs/lows using your Swing Period.
When market direction flips (new pivot confirmed), the indicator anchors a new VWAP at that pivot and starts tracking from there.
⚪ Adaptive VWAP Core
From each anchor , VWAP is computed using a decay model (recent price×volume matters more; older data matters less).
Adaptive Price Tracking lets you set the base responsiveness in “bars.” Lower = more reactive, higher = smoother.
Volatility Adjustment (ATR vs Avg ATR) can automatically speed up the VWAP during spikes and slow it during compression, so the line stays relevant to live conditions.
█ Why This Adaptive Approach Beats a Simple VWAP
Standard VWAP is cumulative from the anchor point. As time passes and volume accumulates, it often drifts far from current price, especially in prolonged trends or multi-session moves. That drift makes retests rare and unreliable.
Dynamic Swing Anchored VWAP solves this in two ways:
⚪ Event-Driven Anchoring (Swings):
By restarting at fresh swing highs/lows, the VWAP reference reflects today’s structure. You get frequent, meaningful retests because the anchor stays near the action.
⚪ Adaptive Responsiveness (Volatility-Aware):
Markets don’t move at one speed. When volatility expands, a fixed VWAP lags; when volatility contracts, it can overreact to noise. Here, the “tracking speed” can auto-adjust using ATR vs its average.
High Volatility → faster tracking: VWAP hugs price more tightly, preserving retest relevance.
Low Volatility → smoother tracking: VWAP filters chop and stays stable.
Result: A VWAP that follows price more accurately, creating plenty of credible retest opportunities and more trustworthy mean-reversion/continuation reads than a simple, ever-growing VWAP.
█ How to Use
⚪ S wing-Aware Fair Value
Use the VWAP as a dynamic fair-value guide that restarts at key structural pivots. Pullbacks to the VWAP after impulsive moves often provide retest entries.
⚪ Trend Trading
In trends, the adaptive VWAP will ride closer to price, offering continuation pullbacks.
█ Settings
Swing Period: Number of bars to confirm swing highs/lows. Larger = bigger, cleaner pivots (slower); smaller = more frequent pivots (noisier).
Adaptive Price Tracking: Sets the base reaction speed (in bars). Lower = faster, tighter to price; higher = smoother, slower.
Adapt APT by ATR ratio: When ON, the tracking speed auto-adjusts with market volatility (ATR vs its own average). High vol → faster; low vol → calmer.
Volatility Bias: Controls how strongly volatility affects the speed. >1 = stronger effect; <1 = lighter touch.
-----------------
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.
Fusion Trend Pulse V2SCRIPT TITLE
Adaptive Fusion Trend Pulse V2 - Multi-Regime Strategy
DETAILED DESCRIPTION FOR PUBLICATION
🚀 INNOVATION SUMMARY
The Adaptive Fusion Trend Pulse V2 represents a breakthrough in algorithmic trading by introducing real-time market regime detection that automatically adapts strategy parameters based on current market conditions. Unlike static indicator combinations, this system dynamically adjusts its behavior across trending, choppy, and volatile market environments, providing a sophisticated multi-layered approach to market analysis.
🎯 CORE INNOVATIONS JUSTIFYING PROTECTED STATUS
1. Adaptive Market Regime Engine
Trending Market Detection: Uses ADX >25 with directional movement analysis
Volatile Market Classification: ATR-based volatility regime scoring (>1.2 threshold)
Choppy Market Identification: ADX <20 combined with volatility patterns
Dynamic Parameter Adjustment: All thresholds adapt based on detected regime
2. Multi-Component Fusion Algorithm
McGinley Dynamic Trend Baseline: Self-adjusting moving average that adapts to price velocity
Adaptive RMI (Relative Momentum Index): Enhanced RSI with momentum period adaptation
Zero-Lag EMA Smoothed CCI: Custom implementation reducing lag while maintaining signal quality
Hull MA Gradient Analysis: Slope strength normalized by ATR for trend confirmation
Volume Spike Detection: Regime-adjusted volume confirmation (0.8x-1.3x multipliers)
3. Intelligence Layer Features
Cooldown System: Prevents overtrading with regime-specific waiting periods (1-3 bars)
Performance Tracking: Real-time adaptation based on recent trade outcomes
Multi-Exchange Alert Integration: JSON-formatted alerts for automated trading
Comprehensive Dashboard: 16-metric real-time performance monitoring
📊 TECHNICAL SPECIFICATIONS
Market Regime Detection Philosophy:
The system continuously monitors market structure through volatility analysis and directional strength measurements. Rather than applying fixed thresholds, it creates dynamic response profiles that adjust the strategy's sensitivity, timing, and filtering based on the current market environment.
Adaptive Parameter Concept:
All strategy components modify their behavior based on regime classification. Volume requirements become more or less stringent, momentum thresholds shift to match market character, and exit timing adjusts to prevent whipsaws in different market conditions.
Entry Conditions (Both Long/Short):
McGinley trend alignment (close vs trend line)
Hull MA slope confirmation with ATR-normalized strength
Adaptive CCI above/below regime-specific thresholds
RMI momentum confirmation (>50 for long, <50 for short)
Volume spike exceeding regime-adjusted threshold
Regime-specific additional filters
Exit Strategy:
Dual take-profit system (2% and 4% default, customizable)
Momentum weakness detection (CCI reversal)
Trend breakdown (close below/above McGinley line)
Regime-specific urgency multipliers for faster exits in choppy markets
🎛️ USER CUSTOMIZATION OPTIONS
Core Parameters:
RMI Length & Momentum periods
CCI smoothing length
McGinley Dynamic length
Hull MA period for gradient analysis
Volume spike detection (length & multiplier)
Take profit levels (separate for long/short)
Adaptive Settings:
Market regime detection period (21 bars default)
Adaptation period for performance tracking (60 bars)
Volatility adaptation toggle
Trend strength filtering toggle
Momentum sensitivity multiplier (0.5-2.0 range)
Dashboard & Alerts:
Dashboard position (4 corners)
Dashboard size (Small/Normal/Large)
Transparency settings (0-100%)
Custom alert messages for bot integration
Date range filtering
🏆 UNIQUE VALUE PROPOSITIONS
1. Market Intelligence: First Pine Script strategy to implement comprehensive regime detection with parameter adaptation - most strategies use static settings regardless of market conditions.
2. Fusion Methodology: Combines 5+ distinct technical approaches (trend-following, momentum, volatility, volume, regime analysis) in a cohesive adaptive framework rather than simple indicator stacking.
3. Performance Optimization: Built-in learning system tracks recent performance and adjusts sensitivity - providing evolution rather than static rule-following.
4. Professional Integration: Enterprise-ready with JSON alert formatting, multi-exchange compatibility, and comprehensive performance tracking suitable for institutional use.
5. Visual Intelligence: Advanced dashboard provides 16 real-time metrics including regime classification, signal strength, and performance analytics - far beyond basic P&L displays.
🔧 TECHNICAL IMPLEMENTATION HIGHLIGHTS
Primary Applications:
Swing Trading: 4H-1D timeframes with regime-adapted entries
Algorithmic Trading: Automated execution via webhook alerts
Portfolio Management: Multi-timeframe analysis across different market conditions
Risk Management: Regime-aware position sizing and exit timing
Target Markets:
Cryptocurrency pairs (high volatility adaptation)
Forex majors (trending market optimization)
Stock indices (choppy market handling)
Commodities (volatile regime management)
🎯 WHY THIS ISN'T JUST AN INDICATOR MASHUP
Integrated Adaptation Framework: Unlike scripts that simply combine multiple indicators with static settings, this system creates a unified intelligence layer where each component influences and adapts to the others. The McGinley trend baseline doesn't just provide signals - it dynamically adjusts its sensitivity based on market regime detection. The momentum components modify their thresholds based on trend strength analysis.
Feedback Loop Architecture: The strategy incorporates a closed-loop learning system where recent performance influences future parameter selection. This creates evolution rather than static rule application. Most indicator combinations lack this adaptive learning capability.
Contextual Decision Making: Rather than treating each signal independently, the system uses contextual analysis where the same technical setup may generate different responses based on the current market regime. A momentum signal in a trending market triggers different behavior than the identical signal in choppy conditions.
Unified Risk Management: The regime detection doesn't just affect entries - it creates a comprehensive risk framework that adjusts exit timing, cooldown periods, and position management based on market character. This holistic approach distinguishes it from simple indicator stacking.
Custom Implementation Depth: Each component uses proprietary implementations (custom McGinley calculation, zero-lag CCI smoothing, enhanced RMI) rather than standard built-in functions, creating a cohesive algorithmic ecosystem rather than disconnected indicator outputs.
Custom Functions:
mcginley(): Proprietary implementation of McGinley Dynamic MA
rmi(): Enhanced Relative Momentum Index with custom parameters
zlema(): Zero-lag EMA for CCI smoothing
Regime classification algorithms with multi-factor analysis
Performance Optimizations:
Efficient variable management with proper scoping
Minimal repainting through careful historical referencing
Optimized calculations to prevent timeout issues
Memory-efficient tracking systems
Alert System:
JSON-formatted messages for API integration
Dynamic symbol/exchange substitution
Separate entry/exit/TP alert conditions
Customizable message formatting
⚡ WHY THIS REQUIRES PROTECTION
This strategy represents months of research into adaptive trading systems and market regime analysis. The specific combination of:
Proprietary regime detection algorithms
Custom adaptive parameter calculations
Multi-indicator fusion methodology
Performance-based learning system
Professional-grade implementation
Creates intellectual property that provides genuine competitive advantage. The methodology is not available in existing open-source scripts and represents original research into algorithmic trading adaptation.
🎯 EDUCATIONAL VALUE
Users gain exposure to:
Advanced market regime analysis techniques
Adaptive parameter optimization concepts
Multi-timeframe indicator fusion
Professional strategy development practices
Automated trading integration methods
The comprehensive dashboard and parameter explanations serve as a learning tool for understanding how professional algorithms adapt to changing market conditions.
CATEGORY SELECTION
Primary: Strategy
Secondary: Trend Analysis
SUGGESTED TAGS
adaptive, trend, momentum, regime, strategy, alerts, dashboard, mcginley, rmi, cci, professional
MANDATORY DISCLAIMER
Disclaimer: This strategy is for educational and informational purposes only. It does not constitute financial advice. Trading cryptocurrencies involves substantial risk, and past performance is not indicative of future results. Always backtest and forward-test before using on a live account. Use at your own risk.
Ultimate Market Structure [Alpha Extract]Ultimate Market Structure
A comprehensive market structure analysis tool that combines advanced swing point detection, imbalance zone identification, and intelligent break analysis to identify high-probability trading opportunities.Utilizing a sophisticated trend scoring system, this indicator classifies market conditions and provides clear signals for structure breaks, directional changes, and fair value gap detection with institutional-grade precision.
🔶 Advanced Swing Point Detection
Identifies pivot highs and lows using configurable lookback periods with optional close-based analysis for cleaner signals. The system automatically labels swing points as Higher Highs (HH), Lower Highs (LH), Higher Lows (HL), and Lower Lows (LL) while providing advanced classifications including "rising_high", "falling_high", "rising_low", "falling_low", "peak_high", and "valley_low" for nuanced market analysis.
swingHighPrice = useClosesForStructure ? ta.pivothigh(close, swingLength, swingLength) : ta.pivothigh(high, swingLength, swingLength)
swingLowPrice = useClosesForStructure ? ta.pivotlow(close, swingLength, swingLength) : ta.pivotlow(low, swingLength, swingLength)
classification = classifyStructurePoint(structureHighPrice, upperStructure, true)
significance = calculateSignificance(structureHighPrice, upperStructure, true)
🔶 Significance Scoring System
Each structure point receives a significance level on a 1-5 scale based on its distance from previous points, helping prioritize the most important levels. This intelligent scoring system ensures traders focus on the most meaningful structure breaks while filtering out minor noise.
🔶 Comprehensive Trend Analysis
Calculates momentum, strength, direction, and confidence levels using volatility-normalized price changes and multi-timeframe correlation. The system provides real-time trend state tracking with bullish (+1), bearish (-1), or neutral (0) direction assessment and 0-100 confidence scoring.
// Calculate trend momentum using rate of change and volatility
calculateTrendMomentum(lookback) =>
priceChange = (close - close ) / close * 100
avgVolatility = ta.atr(lookback) / close * 100
momentum = priceChange / (avgVolatility + 0.0001)
momentum
// Calculate trend strength using multiple timeframe correlation
calculateTrendStrength(shortPeriod, longPeriod) =>
shortMA = ta.sma(close, shortPeriod)
longMA = ta.sma(close, longPeriod)
separation = math.abs(shortMA - longMA) / longMA * 100
strength = separation * slopeAlignment
❓How It Works
🔶 Imbalance Zone Detection
Identifies Fair Value Gaps (FVGs) between consecutive candles where price gaps create unfilled areas. These zones are displayed as semi-transparent boxes with optional center line mitigation tracking, highlighting potential support and resistance levels where institutional players often react.
// Detect Fair Value Gaps
detectPriceImbalance() =>
currentHigh = high
currentLow = low
refHigh = high
refLow = low
if currentOpen > currentClose
if currentHigh - refLow < 0
upperBound = currentClose - (currentClose - refLow)
lowerBound = currentClose - (currentClose - currentHigh)
centerPoint = (upperBound + lowerBound) / 2
newZone = ImbalanceZone.new(
zoneBox = box.new(bar_index, upperBound, rightEdge, lowerBound,
bgcolor=bullishImbalanceColor, border_color=hiddenColor)
)
🔶 Structure Break Analysis
Determines Break of Structure (BOS) for trend continuation and Directional Change (DC) for trend reversals with advanced classification as "continuation", "reversal", or "neutral". The system compares pre-trend and post-trend states for each break, providing comprehensive trend change momentum analysis.
🔶 Intelligent Zone Management
Features partial mitigation tracking when price enters but doesn't fully fill zones, with automatic zone boundary adjustment during partial fills. Smart array management keeps only recent structure points for optimal performance while preventing duplicate signals from the same level.
🔶 Liquidity Zone Detection
Automatically identifies potential liquidity zones at key structure points for institutional trading analysis. The system tracks broken structure points and provides adaptive zone extension with configurable time-based limits for imbalance areas.
🔶 Visual Structure Mapping
Provides clear visual indicators including swing labels with color-coded significance levels, dashed lines connecting break points with BOS/DC labels, and break signals for continuation and reversal patterns. The adaptive zones feature smart management with automatic mitigation tracking.
🔶 Market Structure Interpretation
HH/HL patterns indicate bullish market structure with trend continuation likelihood, while LH/LL patterns signal bearish structure with downtrend continuation expected. BOS signals represent structure breaks in trend direction for continuation opportunities, while DC signals warn of potential reversals.
🔶 Performance Optimization
Automatic cleanup of old structure points (keeps last 8 points), recent break tracking (keeps last 5 break events), and efficient array management ensure smooth performance across all timeframes and market conditions.
Why Choose Ultimate Market Structure ?
This indicator provides traders with institutional-grade market structure analysis, combining multiple analytical approaches into one comprehensive tool. By identifying key structure levels, imbalance zones, and break patterns with advanced significance scoring, it helps traders understand market dynamics and position themselves for high-probability trade setups in alignment with smart money concepts. The sophisticated trend scoring system and intelligent zone management make it an essential tool for any serious trader looking to decode market structure with precision and confidence.






















