Session Highs and Lows🔑 Key Levels: Session Liquidity & Structure Mapper
The Key Levels indicator is an essential tool for traders as it automatically plots and projects critical Highs and Lows established during key trading sessions. These levels represent major liquidity pools and define the current market structure, serving as high-probability targets, support, or resistance for the remainder of the trading day.
⚙️ Core Functionality
The indicator operates in two distinct modes, tailored for different asset classes:
1. Asset Class Mode (Toggle)
You can switch between two predefined setups depending on the asset you are trading:
Stock Mode (RTH/ETH): Designed for US stocks and futures (e.g., NQ, ES, YM). It tracks and projects levels for Regular Trading Hours (RTH) (09:30-16:00) and Extended Hours (ETH) (16:00-09:30).
Forex/Default Mode (Asia/London/NY): Designed for global markets (e.g., currency pairs). It tracks and projects levels for the three major liquidity sessions: Asia (19:00-03:00), London (03:00-09:30), and New York (09:30-16:00).
🗺️ Key Levels Mapped
The script continuously tracks and plots the most significant structural levels:
Current Session High/Low: The running high and low of the currently active session.
Previous Session High/Low: The confirmed high and low from the most recently completed session. These are often targeted by market makers.
Previous Day High/Low (PDH/PDL): The high and low of the prior 24-hour day, acting as major structural boundaries and a crucial macro market filter.
🎛️ Advanced Liquidity Management
The indicator is built with specific controls for high-level liquidity analysis:
Extend Through Sweeps (Critical Setting):
OFF (Recommended): The projected line is automatically stopped or deleted the moment the price candle wicks or closes past it. This visually confirms that the liquidity at that level has been "swept" or "mitigated."
ON: The line extends indefinitely, treating the level as simple support/resistance, regardless of interaction.
Previous vs. Current View: You can select a checkbox (e.g., Use PREVIOUS London Level) to hide the current session's running levels and only display the static, confirmed high/low from the prior completed session. This helps declutter the chart and focus only on the confirmed structural levels.
Show Older History: Toggle to keep lines from prior days visible, allowing you to track multi-day structural context.
🎯 Trading Application
The lines plotted by the Key Levels indicator provide immediate, actionable information:
Bias Filter: Use the PDH/PDL to determine the overall market context. Trading above the PDH suggests a bullish bias, while trading below the PDL suggests a bearish bias.
Manipulation/Entry: Wait for price to aggressively sweep a Previous Session High/Low (line stops extending). This often signals a liquidity grab or "manipulation" phase. Look for entries in the opposite direction for the main move (Distribution).
Targets: Key levels (especially unmitigated ones) serve as excellent, objective take-profit targets for active trades.
Göstergeler ve stratejiler
XAUUSD 1m SMC Zones (BOS + Flexible TP Modes + Trailing Runner)//@version=6
strategy("XAUUSD 1m SMC Zones (BOS + Flexible TP Modes + Trailing Runner)",
overlay = true,
initial_capital = 10000,
pyramiding = 10,
process_orders_on_close = true)
//━━━━━━━━━━━━━━━━━━━
// 1. INPUTS
//━━━━━━━━━━━━━━━━━━━
// TP / SL
tp1Pips = input.int(10, "TP1 (pips)", minval = 1)
fixedSLpips = input.int(50, "Fixed SL (pips)", minval = 5)
runnerRR = input.float(3.0, "Runner RR (TP2 = SL * RR)", step = 0.1, minval = 1.0)
// Daily risk
maxDailyLossPct = input.float(5.0, "Max daily loss % (stop trading)", step = 0.5)
maxDailyProfitPct = input.float(20.0, "Max daily profit % (stop trading)", step = 1.0)
// HTF S/R (1H)
htfTF = input.string("60", "HTF timeframe (minutes) for S/R block")
// Profit strategy (Option C)
profitStrategy = input.string("Minimal Risk | Full BE after TP1", "Profit Strategy", options = )
// Runner stop mode (your option 4)
runnerStopMode = input.string( "BE only", "Runner Stop Mode", options = )
// ATR trail settings (only used if ATR mode selected)
atrTrailLen = input.int(14, "ATR Length (trail)", minval = 1)
atrTrailMult = input.float(1.0, "ATR Multiplier (trail)", step = 0.1, minval = 0.1)
// Pip size (for XAUUSD: 1 pip = 0.10 if tick = 0.01)
pipSize = syminfo.mintick * 10.0
tp1Points = tp1Pips * pipSize
slPoints = fixedSLpips * pipSize
baseQty = input.float (1.0, "Base order size" , step = 0.01, minval = 0.01)
//━━━━━━━━━━━━━━━━━━━
// 2. DAILY RISK MANAGEMENT
//━━━━━━━━━━━━━━━━━━━
isNewDay = ta.change(time("D")) != 0
var float dayStartEquity = na
var bool dailyStopped = false
equityNow = strategy.initial_capital + strategy.netprofit
if isNewDay or na(dayStartEquity)
dayStartEquity := equityNow
dailyStopped := false
dailyPnL = equityNow - dayStartEquity
dailyPnLPct = dayStartEquity != 0 ? (dailyPnL / dayStartEquity) * 100.0 : 0.0
if not dailyStopped
if dailyPnLPct <= -maxDailyLossPct
dailyStopped := true
if dailyPnLPct >= maxDailyProfitPct
dailyStopped := true
canTradeToday = not dailyStopped
//━━━━━━━━━━━━━━━━━━━
// 3. 1H S/R ZONES (for direction block)
//━━━━━━━━━━━━━━━━━━━
htOpen = request.security(syminfo.tickerid, htfTF, open)
htHigh = request.security(syminfo.tickerid, htfTF, high)
htLow = request.security(syminfo.tickerid, htfTF, low)
htClose = request.security(syminfo.tickerid, htfTF, close)
// Engulf logic on HTF
htBullPrev = htClose > htOpen
htBearPrev = htClose < htOpen
htBearEngulf = htClose < htOpen and htBullPrev and htOpen >= htClose and htClose <= htOpen
htBullEngulf = htClose > htOpen and htBearPrev and htOpen <= htClose and htClose >= htOpen
// Liquidity sweep on HTF previous candle
htSweepHigh = htHigh > ta.highest(htHigh, 5)
htSweepLow = htLow < ta.lowest(htLow, 5)
// Store last HTF zones
var float htResHigh = na
var float htResLow = na
var float htSupHigh = na
var float htSupLow = na
if htBearEngulf and htSweepHigh
htResHigh := htHigh
htResLow := htLow
if htBullEngulf and htSweepLow
htSupHigh := htHigh
htSupLow := htLow
// Are we inside HTF zones?
inHtfRes = not na(htResHigh) and close <= htResHigh and close >= htResLow
inHtfSup = not na(htSupLow) and close >= htSupLow and close <= htSupHigh
// Block direction against HTF zones
longBlockedByZone = inHtfRes // no buys in HTF resistance
shortBlockedByZone = inHtfSup // no sells in HTF support
//━━━━━━━━━━━━━━━━━━━
// 4. 1m LOCAL ZONES (LIQUIDITY SWEEP + ENGULF + QUALITY SCORE)
//━━━━━━━━━━━━━━━━━━━
// 1m engulf patterns
bullPrev1 = close > open
bearPrev1 = close < open
bearEngulfNow = close < open and bullPrev1 and open >= close and close <= open
bullEngulfNow = close > open and bearPrev1 and open <= close and close >= open
// Liquidity sweep by previous candle on 1m
sweepHighPrev = high > ta.highest(high, 5)
sweepLowPrev = low < ta.lowest(low, 5)
// Local zone storage (one active support + one active resistance)
// Quality score: 1 = engulf only, 2 = engulf + sweep (we only trade ≥2)
var float supLow = na
var float supHigh = na
var int supQ = 0
var bool supUsed = false
var float resLow = na
var float resHigh = na
var int resQ = 0
var bool resUsed = false
// New resistance zone: previous bullish candle -> bear engulf
if bearEngulfNow
resLow := low
resHigh := high
resQ := sweepHighPrev ? 2 : 1
resUsed := false
// New support zone: previous bearish candle -> bull engulf
if bullEngulfNow
supLow := low
supHigh := high
supQ := sweepLowPrev ? 2 : 1
supUsed := false
// Raw "inside zone" detection
inSupRaw = not na(supLow) and close >= supLow and close <= supHigh
inResRaw = not na(resHigh) and close <= resHigh and close >= resLow
// QUALITY FILTER: only trade zones with quality ≥ 2 (engulf + sweep)
highQualitySup = supQ >= 2
highQualityRes = resQ >= 2
inSupZone = inSupRaw and highQualitySup and not supUsed
inResZone = inResRaw and highQualityRes and not resUsed
// Plot zones
plot(supLow, "Sup Low", color = color.new(color.lime, 60), style = plot.style_linebr)
plot(supHigh, "Sup High", color = color.new(color.lime, 60), style = plot.style_linebr)
plot(resLow, "Res Low", color = color.new(color.red, 60), style = plot.style_linebr)
plot(resHigh, "Res High", color = color.new(color.red, 60), style = plot.style_linebr)
//━━━━━━━━━━━━━━━━━━━
// 5. MODERATE BOS (3-BAR FRACTAL STRUCTURE)
//━━━━━━━━━━━━━━━━━━━
// 3-bar swing highs/lows
swHigh = high > high and high > high
swLow = low < low and low < low
var float lastSwingHigh = na
var float lastSwingLow = na
if swHigh
lastSwingHigh := high
if swLow
lastSwingLow := low
// BOS conditions
bosUp = not na(lastSwingHigh) and close > lastSwingHigh
bosDown = not na(lastSwingLow) and close < lastSwingLow
// Zone “arming” and BOS validation
var bool supArmed = false
var bool resArmed = false
var bool supBosOK = false
var bool resBosOK = false
// Arm zones when first touched
if inSupZone
supArmed := true
if inResZone
resArmed := true
// BOS after arming → zone becomes valid for entries
if supArmed and bosUp
supBosOK := true
if resArmed and bosDown
resBosOK := true
// Reset BOS flags when new zones are created
if bullEngulfNow
supArmed := false
supBosOK := false
if bearEngulfNow
resArmed := false
resBosOK := false
//━━━━━━━━━━━━━━━━━━━
// 6. ENTRY CONDITIONS (ZONE + BOS + RISK STATE)
//━━━━━━━━━━━━━━━━━━━
flatOrShort = strategy.position_size <= 0
flatOrLong = strategy.position_size >= 0
longSignal = canTradeToday and not longBlockedByZone and inSupZone and supBosOK and flatOrShort
shortSignal = canTradeToday and not shortBlockedByZone and inResZone and resBosOK and flatOrLong
//━━━━━━━━━━━━━━━━━━━
// 7. ORDER LOGIC – TWO PROFIT STRATEGIES
//━━━━━━━━━━━━━━━━━━━
// Common metrics
atrTrail = ta.atr(atrTrailLen)
// MINIMAL MODE: single trade, BE after TP1, optional trailing
// HYBRID MODE: two trades (Scalp @ TP1, Runner @ TP2)
// Persistent tracking
var float longEntry = na
var float longTP1 = na
var float longTP2 = na
var float longSL = na
var bool longBE = false
var float longRunEntry = na
var float longRunTP1 = na
var float longRunTP2 = na
var float longRunSL = na
var bool longRunBE = false
var float shortEntry = na
var float shortTP1 = na
var float shortTP2 = na
var float shortSL = na
var bool shortBE = false
var float shortRunEntry = na
var float shortRunTP1 = na
var float shortRunTP2 = na
var float shortRunSL = na
var bool shortRunBE = false
isMinimal = profitStrategy == "Minimal Risk | Full BE after TP1"
isHybrid = profitStrategy == "Hybrid | Scalp TP + Runner TP"
//━━━━━━━━━━ LONG ENTRIES ━━━━━━━━━━
if longSignal
if isMinimal
longEntry := close
longSL := longEntry - slPoints
longTP1 := longEntry + tp1Points
longTP2 := longEntry + slPoints * runnerRR
longBE := false
strategy.entry("Long", strategy.long)
supUsed := true
supArmed := false
supBosOK := false
else if isHybrid
longRunEntry := close
longRunSL := longRunEntry - slPoints
longRunTP1 := longRunEntry + tp1Points
longRunTP2 := longRunEntry + slPoints * runnerRR
longRunBE := false
// Two separate entries, each 50% of baseQty (for backtest)
strategy.entry("LongScalp", strategy.long, qty = baseQty * 0.5)
strategy.entry("LongRun", strategy.long, qty = baseQty * 0.5)
supUsed := true
supArmed := false
supBosOK := false
//━━━━━━━━━━ SHORT ENTRIES ━━━━━━━━━━
if shortSignal
if isMinimal
shortEntry := close
shortSL := shortEntry + slPoints
shortTP1 := shortEntry - tp1Points
shortTP2 := shortEntry - slPoints * runnerRR
shortBE := false
strategy.entry("Short", strategy.short)
resUsed := true
resArmed := false
resBosOK := false
else if isHybrid
shortRunEntry := close
shortRunSL := shortRunEntry + slPoints
shortRunTP1 := shortRunEntry - tp1Points
shortRunTP2 := shortRunEntry - slPoints * runnerRR
shortRunBE := false
strategy.entry("ShortScalp", strategy.short, qty = baseQty * 50)
strategy.entry("ShortRun", strategy.short, qty = baseQty * 50)
resUsed := true
resArmed := false
resBosOK := false
//━━━━━━━━━━━━━━━━━━━
// 8. EXIT LOGIC – MINIMAL MODE
//━━━━━━━━━━━━━━━━━━━
// LONG – Minimal Risk: 1 trade, BE after TP1, runner to TP2
if isMinimal and strategy.position_size > 0 and not na(longEntry)
// Move to BE once TP1 is touched
if not longBE and high >= longTP1
longBE := true
// Base SL: BE or initial SL
float dynLongSL = longBE ? longEntry : longSL
// Optional trailing after BE
if longBE
if runnerStopMode == "Structure trail" and not na(lastSwingLow) and lastSwingLow > longEntry
dynLongSL := math.max(dynLongSL, lastSwingLow)
if runnerStopMode == "ATR trail"
trailSL = close - atrTrailMult * atrTrail
dynLongSL := math.max(dynLongSL, trailSL)
strategy.exit("Long Exit", "Long", stop = dynLongSL, limit = longTP2)
// SHORT – Minimal Risk: 1 trade, BE after TP1, runner to TP2
if isMinimal and strategy.position_size < 0 and not na(shortEntry)
if not shortBE and low <= shortTP1
shortBE := true
float dynShortSL = shortBE ? shortEntry : shortSL
if shortBE
if runnerStopMode == "Structure trail" and not na(lastSwingHigh) and lastSwingHigh < shortEntry
dynShortSL := math.min(dynShortSL, lastSwingHigh)
if runnerStopMode == "ATR trail"
trailSLs = close + atrTrailMult * atrTrail
dynShortSL := math.min(dynShortSL, trailSLs)
strategy.exit("Short Exit", "Short", stop = dynShortSL, limit = shortTP2)
//━━━━━━━━━━━━━━━━━━━
// 9. EXIT LOGIC – HYBRID MODE
//━━━━━━━━━━━━━━━━━━━
// LONG – Hybrid: Scalp + Runner
if isHybrid
// Scalp leg: full TP at TP1
if strategy.opentrades > 0
strategy.exit("LScalp TP", "LongScalp", stop = longRunSL, limit = longRunTP1)
// Runner leg
if strategy.position_size > 0 and not na(longRunEntry)
if not longRunBE and high >= longRunTP1
longRunBE := true
float dynLongRunSL = longRunBE ? longRunEntry : longRunSL
if longRunBE
if runnerStopMode == "Structure trail" and not na(lastSwingLow) and lastSwingLow > longRunEntry
dynLongRunSL := math.max(dynLongRunSL, lastSwingLow)
if runnerStopMode == "ATR trail"
trailRunSL = close - atrTrailMult * atrTrail
dynLongRunSL := math.max(dynLongRunSL, trailRunSL)
strategy.exit("LRun TP", "LongRun", stop = dynLongRunSL, limit = longRunTP2)
// SHORT – Hybrid: Scalp + Runner
if isHybrid
if strategy.opentrades > 0
strategy.exit("SScalp TP", "ShortScalp", stop = shortRunSL, limit = shortRunTP1)
if strategy.position_size < 0 and not na(shortRunEntry)
if not shortRunBE and low <= shortRunTP1
shortRunBE := true
float dynShortRunSL = shortRunBE ? shortRunEntry : shortRunSL
if shortRunBE
if runnerStopMode == "Structure trail" and not na(lastSwingHigh) and lastSwingHigh < shortRunEntry
dynShortRunSL := math.min(dynShortRunSL, lastSwingHigh)
if runnerStopMode == "ATR trail"
trailRunSLs = close + atrTrailMult * atrTrail
dynShortRunSL := math.min(dynShortRunSL, trailRunSLs)
strategy.exit("SRun TP", "ShortRun", stop = dynShortRunSL, limit = shortRunTP2)
//━━━━━━━━━━━━━━━━━━━
// 10. RESET STATE WHEN FLAT
//━━━━━━━━━━━━━━━━━━━
if strategy.position_size == 0
longEntry := na
shortEntry := na
longBE := false
shortBE := false
longRunEntry := na
shortRunEntry := na
longRunBE := false
shortRunBE := false
//━━━━━━━━━━━━━━━━━━━
// 11. VISUAL ENTRY MARKERS
//━━━━━━━━━━━━━━━━━━━
plotshape(longSignal, title = "Long Signal", style = shape.triangleup,
location = location.belowbar, color = color.lime, size = size.tiny, text = "L")
plotshape(shortSignal, title = "Short Signal", style = shape.triangledown,
location = location.abovebar, color = color.red, size = size.tiny, text = "S")
Absorption RatioThe Hidden Connections Between Markets
Financial markets are not isolated islands. When panic spreads, seemingly unrelated assets suddenly begin moving in lockstep. Stocks, bonds, commodities, and currencies that normally provide diversification benefits start falling together. This phenomenon, where correlations spike during crises, has devastated portfolios throughout history. The Absorption Ratio provides a quantitative measure of this hidden fragility.
The concept emerged from research at State Street Associates, where Mark Kritzman, Yuanzhen Li, Sebastien Page, and Roberto Rigobon developed a novel application of principal component analysis to measure systemic risk. Their 2011 paper in the Journal of Portfolio Management demonstrated that when markets become tightly coupled, the variance explained by the first few principal components increases dramatically. This concentration of variance signals elevated systemic risk.
What the Absorption Ratio Measures
Principal component analysis, or PCA, is a statistical technique that identifies the underlying factors driving a set of variables. When applied to asset returns, the first principal component typically captures broad market movements. The second might capture sector rotations or risk-on/risk-off dynamics. Additional components capture increasingly idiosyncratic patterns.
The Absorption Ratio measures the fraction of total variance absorbed or explained by a fixed number of principal components. In the original research, Kritzman and colleagues used the first fifth of the eigenvectors. When this fraction is high, it means a small number of factors are driving most of the market movements. Assets are moving together, and diversification provides less protection than usual.
Consider an analogy: imagine a room full of people having independent conversations. Each person speaks at different times about different topics. The total "variance" of sound in the room comes from many independent sources. Now imagine a fire alarm goes off. Suddenly everyone is talking about the same thing, moving in the same direction. The variance is now dominated by a single factor. The Absorption Ratio captures this transition from diverse, independent behavior to unified, correlated movement.
The Implementation Approach
TradingView does not support matrix algebra required for true principal component analysis. This implementation uses a closely related proxy: the average absolute correlation across a universe of major asset classes. This approach captures the same underlying phenomenon because when assets are highly correlated, the first principal component explains more variance by mathematical necessity.
The asset universe includes eight ETFs representing major investable categories: SPY and QQQ for large cap US equities, IWM for small caps, EFA for developed international markets, EEM for emerging markets, TLT for long-term treasuries, GLD for gold, and USO for oil. This selection provides exposure to equities across geographies and market caps, plus traditional diversifying assets.
From eight assets, there are twenty-eight unique pairwise correlations. The indicator calculates each using a rolling window, takes the absolute value to measure coupling strength regardless of direction, and averages across all pairs. This average correlation is then transformed to match the typical range of published Absorption Ratio values.
The transformation maps zero average correlation to an AR of 0.50 and perfect correlation to an AR of 1.00. This scaling aligns with empirical observations that the AR typically fluctuates between 0.60 and 0.95 in practice.
Interpreting the Regimes
The indicator classifies systemic risk into four regimes based on AR levels.
The Extreme regime occurs when the AR exceeds 0.90. At this level, nearly all asset classes are moving together. Diversification has largely failed. Historically, this regime has coincided with major market dislocations: the 2008 financial crisis, the 2020 COVID crash, and significant correction periods. Portfolios constructed under normal correlation assumptions will experience larger drawdowns than expected.
The High regime, between 0.80 and 0.90, indicates elevated systemic risk. Correlations across asset classes are above normal. This often occurs during the build-up to stress events or during volatile periods where fear is spreading but has not reached panic levels. Risk management should be more conservative.
The Normal regime covers AR values between 0.60 and 0.80. This represents typical market conditions where some correlation exists between assets but diversification still provides meaningful benefits. Standard portfolio construction assumptions are reasonable.
The Low regime, below 0.60, indicates that assets are behaving relatively independently. Diversification is working well. Idiosyncratic factors dominate returns rather than systematic risk. This environment is favorable for active management and security selection strategies.
The Relationship to Portfolio Construction
The implications for portfolio management are significant. Modern portfolio theory assumes correlations are stable and uses historical estimates to construct efficient portfolios. The Absorption Ratio reveals that this assumption is violated precisely when it matters most.
When AR is elevated, the effective number of independent bets in a diversified portfolio shrinks. A portfolio holding stocks, bonds, commodities, and real estate might behave as if it holds only one or two positions during high AR periods. Position sizing based on normal correlation estimates will underestimate portfolio risk.
Conversely, when AR is low, true diversification opportunities expand. The same nominal portfolio provides more independent return streams. Risk can be deployed more aggressively while maintaining the same effective exposure.
Component Analysis
The indicator separately tracks equity correlations and cross-asset correlations. These components tell different stories about market structure.
Equity correlations measure coupling within the stock market. High equity correlation indicates broad risk-on or risk-off behavior where all stocks move together. This is common during both rallies and selloffs driven by macroeconomic factors. Stock pickers face headwinds when equity correlations are elevated because individual company fundamentals matter less than market beta.
Cross-asset correlations measure coupling between different asset classes. When stocks, bonds, and commodities start moving together, traditional hedges fail. The classic 60/40 stock/bond portfolio, for example, assumes negative or low correlation between equities and treasuries. When cross-asset correlation spikes, this assumption breaks down.
During the 2022 market environment, for instance, both stocks and bonds fell significantly as inflation and rate hikes affected all assets simultaneously. High cross-asset correlation warned that the usual defensive allocations would not provide their expected protection.
Mean Reversion Characteristics
Like most risk metrics, the Absorption Ratio tends to mean-revert over time. Extremely high AR readings eventually normalize as panic subsides and assets return to more independent behavior. Extremely low readings tend to rise as some level of systematic risk always reasserts itself.
The indicator tracks AR in statistical terms by calculating its Z-score relative to the trailing distribution. When AR reaches extreme Z-scores, the probability of normalization increases. This creates potential opportunities for strategies that bet on mean reversion in systemic risk.
A buy signal triggers when AR recovers from extremely elevated levels, suggesting the worst of the correlation spike may be over. A sell signal triggers when AR rises from unusually low levels, warning that complacency about diversification benefits may be excessive.
Momentum and Trend
The rate of change in AR carries information beyond the absolute level. Rapidly rising AR suggests correlations are increasing and systemic risk is building. Even if AR has not yet reached the high regime, acceleration in coupling should prompt increased vigilance.
Falling AR momentum indicates normalizing conditions. Correlations are decreasing and assets are returning to more independent behavior. This often occurs in the recovery phase following stress events.
Practical Application
For asset allocators, the AR provides guidance on how much diversification benefit to expect from a given allocation. During high AR periods, reducing overall portfolio risk makes sense because the usual diversifiers provide less protection. During low AR periods, standard or even aggressive allocations are more appropriate.
For risk managers, the AR serves as an early warning indicator. Rising AR often precedes large market moves and volatility spikes. Tightening risk limits before correlations reach extreme levels can protect capital.
For systematic traders, the AR provides a regime filter. Mean reversion strategies may work better during high AR periods when panics create overshooting. Momentum strategies may work better during low AR periods when trends can develop independently across assets.
Limitations and Considerations
The proxy methodology introduces some approximation error relative to true PCA-based AR calculations. The asset universe, while representative, does not include all possible diversifiers. Correlation estimates are inherently backward-looking and can change rapidly.
The transformation from average correlation to AR scale is calibrated to match typical published ranges but is not mathematically equivalent to the eigenvalue ratio. Users should interpret levels directionally rather than as precise measurements.
Correlation regimes can persist longer than expected. Mean reversion signals indicate elevated probability of normalization but do not guarantee timing. High AR can remain elevated throughout extended crisis periods.
References
Kritzman, M., Li, Y., Page, S., and Rigobon, R. (2011). Principal Components as a Measure of Systemic Risk. Journal of Portfolio Management, 37(4), 112-126.
Kritzman, M., and Li, Y. (2010). Skulls, Financial Turbulence, and Risk Management. Financial Analysts Journal, 66(5), 30-41.
Billio, M., Getmansky, M., Lo, A., and Pelizzon, L. (2012). Econometric Measures of Connectedness and Systemic Risk in the Finance and Insurance Sectors. Journal of Financial Economics, 104(3), 535-559.
Delta Bars [Elykia]Delta Bars — Order Flow & Momentum Analysis
Description:
Delta Bars is an "Order Flow Oscillator" designed to instantly visualize buyer and seller aggression within every price move.
Unlike standard volume, it breaks down what is happening "under the hood" (Delta) and offers a clear reading of market reversals thanks to intelligent divergence detection.
🔥 Key Features:
1. Dual Calculation Mode:
Timeframe Mode: Displays classic Delta based on time (e.g., 1min, 5min).
Range Bars Mode: (Exclusive) Builds Delta bars based on price movement (volatility) rather than time. This filters out noise during consolidation periods and reveals true strength during impulses.
2. 🧠 Smart Auto-Detection (Plug & Play):
No need to manually calculate "Box" or "Tick" sizes for each asset. The indicator automatically recognizes the asset you are trading and applies the optimal institutional calibration:
US Indices (NQ, ES, YM...)
Forex (EURUSD, JPY...)
Crypto (BTC, ETH)
Commodities (Gold, Oil)
Note: You can still switch to manual mode if needed.
3. "Flip" Detection (Divergences) ⚡:
The indicator automatically identifies anomalies between price and Delta:
If the candle closes Green but Delta is Negative (Absorption/Failed Selling Effort).
If the candle closes Red but Delta is Positive.
These situations are marked with a ⚡ symbol and a specific highlight color (Orange by default), often signaling an imminent reversal.
4. Technical Dashboard:
A discreet panel displays the current mode and "Box" size (in ticks/points) in real-time, ensuring you always know how the data is being filtered.
How to read the signals?
1. Green/Red Bars: They indicate Net Delta (the difference between buying and selling volume). A tall bar implies strong conviction.
2. The ⚡ Symbol (The Flip): This is the most critical signal. It appears when Delta contradicts the candle direction (e.g., Positive Delta on a Bearish candle). This indicates Absorption (passive orders blocking the move) and often precedes a reversal.
3. Range Bars Mode: Use this mode to "smooth out" the market. If the market is choppy, Range Bars will filter the noise and only draw a new bar if the price actually moves.
⚠️ Important: Replay Mode
Since this indicator performs heavy calculations (simulated tick-by-tick), it includes a safety feature for Replay Mode.
To use Replay: Go to settings and set the "Force Replay Date" to a date close to your starting point. This ensures maximum fluidity and avoids TradingView limit errors.
Configuration:
Works on all timeframes but excels on seconds charts (1s, 5s) or fast minute charts (1m) for scalping.
TRADE ORBIT – Ichimoku Top/Bottom Strategy)TRADE ORBIT – Ichimoku Top/Bottom Strategy
Trade when trends start, continue, and end
✅ BUY TRADE (LONG)
Entry
Enter a BUY only if all of the following happen:
1️⃣ Green Big Dot appears below candle
→ Bottom confirmed (trend reversal)
2️⃣ Price above the Cloud
→ Market is in bullish zone
3️⃣ Tenkan above Kijun
→ Short-term trend supports direction
4️⃣ Chikou Span above price
→ Confirmation from momentum
📍 Best entry:
➡ On the candle after the big green dot if conditions remain valid
Stop Loss
Place SL below:
⭕ Bottom candle low
or
⭕ Senkou Span B (Cloud bottom)
Profit Management
Stay in the trade as long as you keep seeing small green dots
→ Trend still continuing 🟢🟢🟢
📌 Exit long when:
A big red dot appears (Top detected)
or
Price closes below the cloud
or
Tenkan crosses below Kijun
❌ SELL TRADE (SHORT)
Entry
Enter SELL only if:
1️⃣ Big Red Dot appears above candle
→ Top confirmed
2️⃣ Price below Cloud
→ Bearish market
3️⃣ Tenkan below Kijun
→ Trend aligned
4️⃣ Chikou Span below price
→ Momentum confirmed
📍 Enter on next bar if signals remain valid
Stop Loss
Place SL above:
⭕ Top candle high
or
⭕ Senkou Span B (Cloud upper band)
Exit
Stay in short while small red dots continue 🔴🔴🔴
Close when:
A big green bottom dot appears
or
Price closes above cloud
or
Tenkan crosses above Kijun
Setup Keltner Banda 3 e 5 - MMS + RSI + Distância Tabela
📊 Indicator Overview: Keltner Bands + RSI + Distance Table
This custom TradingView indicator combines three powerful tools into a single, visually intuitive setup:
Keltner Channels (Bands 3x and 5x ATR)
Relative Strength Index (RSI)
Dynamic Table Displaying RSI and Price Distance from Moving Average (MMS)
🔧 Components and Functions
1. Keltner Channels (3x and 5x ATR)
Based on a Simple Moving Average (MMS) and Average True Range (ATR).
Two sets of bands are plotted:
3x ATR Bands: Used for moderate volatility signals.
5x ATR Bands: Used for high volatility extremes.
Visual fills between bands help identify overextended price zones.
2. RSI (Relative Strength Index)
Measures momentum and potential reversal zones.
Customizable overbought (default 70) and oversold (default 30) levels.
RSI values are color-coded in the table:
Green for RSI ≤ 30 (oversold)
Blue for 30 < RSI ≤ 70 (neutral)
Red for RSI > 70 (overbought)
3. Distance Table (Price vs. MMS)
Displays the real-time distance between the current price and the MMS:
In points (absolute difference)
In percentage (relative to MMS)
Helps traders assess how far price has deviated from its mean.
📈 How to Use
Trend Reversal Signals
Look for price crossing back inside the 3x or 5x Keltner Bands.
Confirm with RSI:
RSI > 70 + price re-entering from above = potential short
RSI < 30 + price re-entering from below = potential long
Volatility Zones
Price outside the 5x band indicates extreme movement.
Use this to anticipate mean reversion or breakout continuation.
Table Insights
Monitor RSI and price distance in real time.
Use color cues to quickly assess momentum and stretch.
⚙️ Customization
Adjustable parameters for:
MMS period
ATR multipliers
RSI period and thresholds
Table position on chart
Fill colors between bands
This indicator is ideal for traders who want a clean, data-rich visual tool to track volatility, momentum, and price deviation in one place.
VIX + Weekly ATR Hybrid RangeVIX + Weekly ATR Hybrid Range VIX + Weekly ATR Hybrid Range VIX + Weekly ATR Hybrid Range
Gartley Pattern ULTRA V6[NXT2017]+VolumeProfile+POC+SignalCountsGartley Pattern ULTRA V6 is a professional harmonic scanner designed to automatically detect and visualize valid Gartley patterns across multiple pivot lengths. Unlike standard indicators, this script includes advanced institutional tools like Volume Profile integration per pattern and a statistical dashboard.
Key Features: Multi-Pivot Scanning: Scans for patterns simultaneously across 9 different pivot lengths (from 5 to 233) to find structures on micro and macro levels. Volume Profile Integration: Automatically draws a Volume Profile (VP) covering the range from Point X to the current bar to analyze supply and demand within the pattern structure. POC Indication: Highlights the Point of Control (POC) to identify key support/resistance levels within the pattern. Statistics Dashboard: A table displaying the number of Bullish and Bearish patterns found for each pivot size. Customizable: Full control over colors, tolerance levels, and display options.
The Gartley Pattern Rules Used: This script strictly follows the classic ratios for the Gartley pattern: B Point: Strictly a 0.618 retracement of the XA leg. C Point: Retracement of AB (0.382 – 0.886). Crucially, Point C must not exceed Point A. D Point (Entry): The defining characteristic is the 0.786 retracement of the XA leg . Point D must not exceed Point X.
Settings & Inputs: Deviation Tolerance: Adjust the strictness of the ratio matching (default 30% allows for market noise). Volume Profile: Toggle the VP on/off, adjust resolution (rows), and transparency. Filter & History: Prevents duplicate signals for the same price structure.
How to use: Add the indicator to your chart. Bullish Gartleys are highlighted in Green and Bearish Gartleys in Fuchsia. The pattern completes at the D-point (78.6% of XA). Use the Volume Profile to confirm if the reversal is happening at a high-volume node.
This is a update of v1:
Vegas plus by stanleyThis Pine Script implements a comprehensive trend-following strategy known popularly as the **Vegas Tunnel Method**. It combines multiple Exponential Moving Averages (EMAs) to define trends, pullbacks, and breakouts.
Here is a step-by-step walkthrough of how the code works, broken down by its components and logic.
---
### 1. The Anatomy (The Indicators)
The script uses three distinct groups of Moving Averages to define the market structure.
#### A. The Fast EMAs (The Trigger & Exit)
* **EMA 12 (Signal):** The fastest line. It is used to trigger entries (crossing the tunnel).
* **EMA 21 (Exit):** Used as a trailing stop. If the price crosses this line against your trade, the script signals an exit.
* **EMA 55 (Filter):** A medium-term filter, often used visually to gauge trend health.
#### B. The "Hero" Tunnel (The Action Zone)
* **EMAs 144 & 169 & 200:** These creates the main "Tunnel."
* **Function:** This acts as dynamic Support and Resistance.
* **Bullish:** If the 144 (Top) is above the 200 (Bottom), the tunnel is painted Blue.
* **Bearish:** If the 144 is below the 200, it is painted Red.
#### C. The "Anchor" Tunnel (The Deep Trend)
* **EMAs 576 & 676:** This creates a massive, slow-moving background tunnel.
* **Function:** It tells you the long-term trend. Generally, you only want to take Buy signals if price is above this Anchor, though the script logic focuses primarily on the Hero tunnel for triggers.
---
### 2. State Memory (`var` Variables)
This is a sophisticated part of the script. It uses `var` variables to "remember" where the price was in the past.
* `originPrice`: Remembers if the price was last seen **Above** (1) or **Below** (-1) the tunnel.
* `originEMA`: Remembers if the EMA 12 was last seen **Above** (1) or **Below** (-1) the tunnel.
**Why is this needed?**
To distinguish between a **Breakout** (crossing from Bear to Bull) and a **Pullback** (already Bull, dipped into tunnel, and coming back out).
---
### 3. The Four Entry Triggers
The script looks for four specific scenarios to generate a Buy or Sell signal. You can turn these on/off in the settings.
#### Trigger 1: Price U-Turn (Trend Continuation)
* **Logic:** The Price was *already* above the tunnel (`originPrice == 1`), dipped down, and is now crossing back up (`crossover`).
* **Meaning:** This is a classic "Buy the Dip" signal within an existing trend.
#### Trigger 2: EMA U-Turn (Lagging Confirmation)
* **Logic:** Similar to Trigger 1, but uses the **EMA 12** line instead of the Price candle.
* **Meaning:** This is safer but slower. It waits for the average price to curl back out of the tunnel.
#### Trigger 3: Breakthrough (Momentum Shift)
* **Logic:** The EMA 12 was previously *below* the tunnel (`originEMA == -1`) and has just crossed *above* it (`crossover`).
* **Meaning:** This is a Trend Reversal signal. The market has shifted from Bearish to Bullish.
#### Trigger 4: Wick Rejection (Touch & Go)
* **Logic:**
1. Price is generally above the tunnel.
2. The `Low` of the current candle touches the tunnel.
3. The `Low` of the *previous* candle did NOT touch the tunnel.
4. The candle closes *outside* (above) the tunnel.
* **Meaning:** The price tested the support zone and was immediately rejected (bounced off), leaving a wick.
---
### 4. Trade Management (State Machine)
The script uses a variable called `tradeState` to manage signals so they don't spam your chart.
* `tradeState = 0`: Flat (No position).
* `tradeState = 1`: Long.
* `tradeState = -1`: Short.
**The Rules:**
1. **Entry:** If `validLong` is triggered AND `tradeState` is not already 1 -> Change state to 1 (Long) and plot a **BUY** label.
2. **Holding:** If you are already in State 1, the script ignores new Buy signals.
3. **Exit:** If `tradeState` is 1 AND price closes below EMA 21 -> Change state to 0 (Flat) and plot an **Exit L** label.
---
### 5. Visual Summary
* **Green Label:** Buy Signal (Long Entry).
* **Red Label:** Sell Signal (Short Entry).
* **Grey X:** Exit Signal (Close the position).
* **Blue/Red Tunnel:** The "Hero" tunnel (144/169/200).
* **Grey Background Tunnel:** The "Anchor" tunnel (576/676).
### How to read the signals:
You are looking for the price to interact with the **Hero Tunnel** (the thinner, brighter one).
1. **Trend:** Look at the slope of the Anchor (thick grey) tunnel.
2. **Setup:** Wait for price to come back to the Hero Tunnel.
3. **Trigger:** Wait for a **Green Label**. This means the price dipped into the tunnel and is now blasting out (U-Turn), or has rejected the tunnel (Wick), or has broken through a new trend (Breakthrough).
4. **Exit:** Close the trade when the **Grey X** appears (Price crosses the EMA 21).
CypherPattern ULTRA V6 [NXT2017]+VolumeProfile+POC +SignalCountsCypher Pattern ULTRA V6 is a comprehensive harmonic scanner designed to automatically detect and visualize valid Cypher patterns across multiple pivot lengths. Unlike standard harmonic indicators, this script includes advanced features like Volume Profile integration per pattern and a statistical dashboard.
Key Features: Multi-Pivot Scanning: Scans for patterns simultaneously across 9 different pivot lengths (from 5 to 233) to find structures on micro and macro levels. Volume Profile Integration: Automatically draws a Volume Profile (VP) covering the range from Point X to the current bar to analyze supply and demand within the pattern structure. POC Indication: Highlights the Point of Control (POC) to identify key support/resistance levels within the pattern. Statistics Dashboard: A table displaying the number of Bullish and Bearish patterns found for each pivot size. Customizable: Full control over colors, tolerance levels, and display options.
The Cypher Pattern Rules Used: This script strictly follows the specific ratios for the Cypher pattern: B Point: 0.382 – 0.618 retracement of the XA leg. C Point: 1.13 – 1.414 extension of the AB leg (C projects beyond A). D Point (Entry): The unique characteristic of the Cypher is that the D point is the 0.786 retracement of the XC leg (not XA).
Settings & Inputs: Deviation Tolerance: Adjust the strictness of the ratio matching (default 30%). Volume Profile: Toggle the VP on/off, adjust resolution (rows), and transparency. Filter & History: Prevents duplicate signals for the same price structure.
How to use: Add the indicator to your chart. Bullish patterns are highlighted in Green (default) and Bearish patterns in Pink/Fuchsia. Look for the D-point completion for potential reversal entries. Use the Volume Profile to confirm if the reversal is happening at a high-volume node.
Buy vs Sell Volume EMA + Smart Momentum Shift (Crypto)This is a volume-based momentum indicator for crypto that:
Splits total volume into buy vs. sell volume based on candle direction.
Applies EMAs to buy/sell volume and tracks slope and acceleration of those EMAs.
Looks for moments where buyer volume momentum is improving and seller momentum is fading.
Optionally requires RSI and/or MACD confirmation, a “near recent low” location filter, and a score threshold based on several micro-conditions.
Outputs:
Colored background depending on whether buy or sell volume dominates.
EMA crossover arrows (“Buy” and “Sell”) for simpler regime shifts.
Green dots (“Strong Buy Momentum Shift”) when all filters are satisfied.
Alert conditions for the above signals.
It runs in a separate pane (overlay=false) and is explicitly designed for crypto, but works on any symbol/interval.
VIX + Weekly ATR Hybrid RangeVIX + Weekly ATR Hybrid Range best used for complete range with accuracy
5-Bar BreakoutThis indicator shows if the price is breaking out above the high or the low of the previous 5 bars
**MACD + RSI + MFI by IspatialResources – Multi-Tool Indicator**
This indicator is a **multi-functional technical analysis tool** that combines the following professional oscillators into a single panel:
* ✅ **Customizable MACD**
* ✅ **Advanced RSI with Moving Average and Bollinger Bands**
* ✅ **Money Flow Index (MFI)**
* ✅ **Module-based enable/disable system**
* ✅ **Fully configurable alerts**
It is designed to help identify **overbought and oversold conditions, trend strength, and momentum shifts**, improving market reading across multiple assets.
---
### 🔹 INCLUDED MODULES
**1️⃣ MACD**
* Fast and slow moving average settings
* Selectable MA type (SMA / EMA)
* Dynamic histogram
* Momentum change alerts
**2️⃣ Advanced RSI**
* Classic RSI with dynamic levels
* Moving average applied to RSI
* Optional **Bollinger Bands on RSI**
* Visual overbought and oversold signals
* Extreme condition alerts
**3️⃣ MFI (Money Flow Index)**
* Buying and selling pressure detection
* Overbought and oversold zones
* Ideal for volume and strength analysis
---
### 🔹 SUPPORTED MARKETS
This indicator can be used on:
* 📈 Cryptocurrencies
* 📊 Stock Indices
* 💱 Forex
* 📉 Stocks
It works on **all timeframes**: intraday, swing trading, and long-term analysis.
---
### 🔹 HOW TO USE IT
* Enable or disable each module from the settings panel.
* Use the **RSI with bands** to detect extreme zones.
* Confirm potential entries with the **MACD**.
* Filter false signals with the **MFI**.
* Combine it with market structure, support, and resistance.
---
### ⚠️ RISK DISCLAIMER
This indicator is **for educational and technical analysis purposes only**.
**It does not constitute financial advice and does not guarantee results.**
Trading involves risk, and each user is responsible for their own decisions.
---
### 👤 AUTHOR
Created by **Ismael** as a personal tool for market analysis and study.
---
🚀 If you find this indicator useful, feel free to support it with a “like” for future updates.
sXSwingssXSwings is a swing point indicator that identifies and plots horizontal lines at swing highs and swing lows on your chart. It operates on two levels:
Historical Swings - Uses a longer pivot length (default: 5) to identify significant swing points from price history. These appear as dotted lines and provide reference levels for major support and resistance zones.
Most Recent Swings - Uses a shorter pivot length (default: 1) to identify the most current swing high and swing low. These appear as solid lines and are more responsive to recent price action, updating dynamically as new pivots form.
The indicator automatically manages line cleanup, removing historical swing lines that exceed the lookback period to keep your chart clean. All visual aspects are fully customizable including line styles, colors, widths, and extension lengths.
Use Case: Traders can use this to quickly identify key swing levels for support/resistance trading, stop-loss placement, or analyzing price structure across different timeframes. The dual-layer approach helps distinguish between major structural levels and immediate price action swings.
5-0 Pattern ULTRA V6 [NXT2017]+Volume Profile +POC +SignalCounts5-0 Pattern ULTRA V6
This script is an advanced harmonic scanner designed specifically to detect the 5-0 Pattern. Unlike standard harmonic indicators, the "ULTRA" version scans across 9 different pivot lengths simultaneously (from 5 up to 233) to ensure no valid structure is missed, regardless of the timeframe.
It includes an integrated Volume Profile feature that automatically analyzes the volume distribution within the pattern to help validate the Point of Control (POC) near the reversal zone.
What is the 5-0 Pattern? The 5-0 is a unique 5-point harmonic structure (X, A, B, C, D) discovered by Scott Carney. It is distinct from other patterns like the Gartley or Bat because it relies heavily on specific reciprocal extensions. The completion point (D) is defined by a 50% retracement of the BC leg.
Pattern Rules used in this indicator:
The AB leg is a 1.13 to 1.618 extension of the XA leg.
The BC leg is a 1.618 to 2.618 extension of the AB leg.
The CD leg (Entry Zone) is a distinct 50% retracement of the BC leg.
Key Features of V6
Multi-Pivot Scanning: The indicator runs 9 separate scanners in the background (Pivot lengths: 5, 8, 13, 21, 34, 55, 89, 144, 233). You can toggle specific lengths on/off in the settings.
Auto Volume Profile: When a pattern is found, the script draws a Volume Profile over the structure and highlights the Point of Control (POC) line. This helps determine if there is volume support/resistance at the trade location.
Statistics Dashboard: A dashboard table displays historical data, showing how many Bullish and Bearish patterns have been detected for each pivot size on the current chart.
Smart History Filtering: Includes a mechanism to prevent duplicate patterns from cluttering the chart.
Interactive Guide: A built-in "Guide Mode" can be activated in the settings to hide signals and display a text tutorial on how to trade the pattern.
Settings & Customization
Tolerance: Adjust the inaccuracy percentage to make the scanner stricter or looser regarding Fibonacci ratios.
Visuals: Fully customizable colors for Bullish/Bearish patterns, Target lines, and Volume Profiles.
Labels: Choose between showing "XABCD" lettering or a simple "5-0" tag with the pattern size.
Alerts: Native alert conditions are set up. You can create alerts to be notified instantly when a new pattern is formed.
Risk Disclaimer: Trading harmonic patterns involves risk. The 5-0 pattern is a reversal setup; always use proper risk management and confirmation before entering a trade.
Made by NXT2017
This is a new creation of v1:
Opening Range ICT 3-Bar FVG + Engulfing Signals (Overlay)Beta testing
open range break out and retest of FVG.
Still working on making it accurate so bear with me
Liquidations (TV Source / Manual / Proxy) Cruz Pro Stack + Liquidations (TV Source / Manual / Proxy) is a high-confluence crypto trading indicator built to merge reversal detection, volatility timing, structure confirmation, and liquidation pressure into one clean decision engine.
This script combines five pro-grade components:
1) RSI Divergence (Regular + Hidden)
Detects early momentum shifts at tops and bottoms to anticipate reversals before price fully reacts.
2) BBWP (Bollinger Band Width Percentile)
Identifies volatility compression and expansion cycles to time breakout conditions and avoid low-quality chop.
3) Market Structure (BOS / CHOCH proxy)
Confirms trend continuation or change-of-character using swing breaks for more reliable directional bias.
4) Liquidations Layer (3 Modes)
Adds liquidation-driven context for where price is likely to squeeze or flush next:
TV Source: Use TradingView’s built-in Liquidations plot when available.
Manual Totals: Paste 12h/24h/48h long/short totals for higher-level regime bias.
Proxy (Volume Shock): A fallback approximation for spot charts using volume + candle direction.
The script automatically converts your chart timeframe into rolling 12/24/48-hour windows, then computes a weighted liquidation bias and a spike detector to flag potential exhaustion moves.
5) Confluence Score + Signals
A simple scoring engine highlights high-probability setups when multiple factors align.
Signals are printed only when divergence + structure + volatility context agree with liquidation pressure.
How to use
Best on BTC/ETH perps across 15m–4H.
For maximum accuracy:
Add TradingView’s Liquidations indicator (if your exchange/symbol supports it).
Set Liquidations Mode = TV Source.
Select the Liquidations plot as the source.
If that plot can’t be selected, switch to Proxy or Manual Totals.
What this indicator is designed to improve
Earlier reversal recognition
Cleaner breakout timing
Structure-confirmed entries
Better risk management around liquidation-driven moves
Fewer low-quality trades during dead volatility
Renko Scalp ScannerThis scanner is optimized for short term bursts for Renko.
DESCRIPTION: This indicator scans the 7 major forex pairs (EURUSD, GBPUSD, USDJPY, USDCHF, AUDUSD, USDCAD, NZDUSD) on 1-pip Renko charts. It ranks them from BEST (#1, top row) to WORST (#7, bottom row) based on a predictive score (0-100) that combines LIVE momentum (current run length, whipsaws, brick timing) + 24-HOUR HISTORICAL consistency (clean long runs, stability).
Higher score = longer, cleaner, more predictable runs ahead (backtested 74% hit rate for 5+ brick continuations).
HOW TO USE THE TABLE:
1. Add to a 1-second Renko chart (Traditional, Box Size: 0.0001 for non-JPY; 0.01 for JPY pairs).
2. RANK: Position 1–7 (green highlight on #1 = switch to this pair NOW).
3. PAIR: Symbol + direction arrow (↑=buy bias, ↓=sell bias).
4. SCORE: 0–100 total (≥85=monster run; ≥75=strong; ≥60=decent; <60=avoid).
5. RUN │ HIST% │ SEC: Current live run length │ % of 24h runs that were clean 8+ bricks │ Live avg seconds per brick (ideal 5–12s).
6. Trade the #1 pair in the arrow direction until whipsaw or score drops <75. Set alerts for score ≥83.
Backtested on 1-year data: Catches 84% of 10+ brick runners. Refreshes every second.






















