Mean Deviation Trend [BackQuant]Mean Deviation Trend
Overview
Mean Deviation Trend is a structure-based trend and regime indicator that measures directional pressure as the market’s sustained deviation from a moving “mean,” then uses that pressure to drive an adaptive band , dynamic coloring, and a level engine that marks deviation peak extremes after momentum fades.
Most trend tools start with direction, for example slope or MA cross, then try to estimate strength later. This script does the reverse:
It first quantifies how far price is displaced from a central mean in volatility-adjusted units .
It then smooths and accumulates that deviation to determine trend direction and conviction .
Finally it converts conviction into a band that tightens when pressure is strong and widens when pressure is weak.
The result is a single framework that blends:
A mean anchor (EMA).
A signed deviation engine normalized by ATR.
A conviction score based on sustained deviation.
An adaptive band that behaves like dynamic support/resistance.
A “deviation peak” level system that plants levels at extremes after the push fades.
Optional glow, fills, candle coloring, and flip markers.
Core concept: deviation from mean as trend fuel
A trend is not just “price up” or “price down.” A trend is a persistent imbalance where price spends time displaced from fair value and keeps re-asserting that displacement. This indicator treats the mean as a moving fair value proxy, and it measures how aggressively price is departing from it.
Key idea:
If price stays above the mean and that displacement is sustained, bullish pressure is dominant.
If price stays below the mean and that displacement is sustained, bearish pressure is dominant.
If price keeps snapping back and deviation cannot sustain, regime is weak and uncertainty is high.
This is why the script doesn’t rely on a single moment like a cross. It cares about persistence .
Mean anchor (the “center of gravity”)
The mean is defined as an EMA of close:
mean = EMA(close, meanLen)
Why EMA:
It responds faster than SMA to regime changes.
It provides a stable anchor without overreacting to single bars.
The mean line is not just a moving average here, it is the reference line that deviation is measured against. Everything downstream depends on the mean being a consistent “center.”
Volatility normalization (why ATR is essential here)
Raw distance from mean is meaningless across volatility regimes. A $200 deviation on BTC might be noise one week and huge another week. To fix this, the script normalizes deviation by ATR:
atr = ATR(14)
rawDev = (close - mean) / atr
Interpretation:
rawDev is “how many ATR units price is away from the mean.”
This makes deviation comparable across timeframes and volatility states.
This is critical because it turns the indicator into a dimensionless pressure metric rather than a price-distance tool.
Deviation smoothing (instantaneous pressure vs noisy pressure)
Instantaneous deviation can spike on one candle and mean nothing. So the script applies EMA smoothing to raw deviation:
devSmooth = EMA(rawDev, devLen)
What this does:
Reduces single-bar spikes.
Keeps the sign and general magnitude of displacement.
Creates a cleaner “pressure line” that responds but does not jitter.
This is the first stage of filtering: “Are we meaningfully deviating, or just wicking?”
Deviation accumulation (turning pressure into conviction)
This is the part that makes the indicator behave like a trend conviction model rather than a simple oscillator.
The script computes:
cumDev = SMA(devSmooth, devAccum)
Even though it’s coded as an SMA, conceptually it behaves like a rolling accumulation of the deviation signal:
If devSmooth stays positive for multiple bars, cumDev rises and stays positive.
If devSmooth stays negative for multiple bars, cumDev drops and stays negative.
If devSmooth flips sign repeatedly, cumDev compresses toward zero.
This is the key “persistence detector.” It converts short-term deviation into a medium-term conviction read.
Trend direction and flips
Trend direction is derived purely from the sign of cumulative deviation:
tDir = cumDev > 0 ? +1 : -1
flip = tDir != tDir
Interpretation:
Bull regime means the market’s sustained deviation is above the mean (pressure up).
Bear regime means sustained deviation is below the mean (pressure down).
A flip marks a regime transition where the sustained bias changes sign.
This is intentionally simple because all the complexity is in how cumDev is built.
Measuring conviction: devNorm (adaptive strength scale)
The script measures absolute conviction:
devAbs = abs(cumDev)
Then it normalizes it relative to a rolling peak:
devHigh = highest(devAbs, 80)
devNorm = devHigh > 0 ? min(devAbs / devHigh, 1) : 0
Meaning:
devNorm is a 0..1 strength scale.
0 means current conviction is tiny relative to recent extremes.
1 means conviction is at the strongest level seen in the last ~80 bars.
This is not a z-score, it’s a “relative-to-recent-peak” normalization. That matters because it makes the band behavior adapt to each instrument’s recent character, not a fixed threshold system.
Adaptive band logic (tight when confident, wide when uncertain)
The band is built to behave differently depending on conviction. When conviction is strong, the band should hug price and act like a close structural guide. When conviction is weak, the band should widen and stop pretending it is precise.
This is done by interpolating between two ATR multipliers:
bandTight = ATR multiplier when devNorm is high
bandWide = ATR multiplier when devNorm is low
bandMult = bandWide - devNorm * (bandWide - bandTight)
bandW = atr * bandMult
Interpretation:
devNorm near 1 → bandMult approaches bandTight → band width shrinks.
devNorm near 0 → bandMult approaches bandWide → band width expands.
So the band width is not arbitrary. It is a direct function of trend conviction.
Active band placement (trend-aware support/resistance)
The “active band” is placed on the opposite side of the mean depending on direction:
If bullish: activeBand = mean - bandW
If bearish: activeBand = mean + bandW
So in bullish regimes, the band behaves like a dynamic support zone beneath the mean. In bearish regimes, it behaves like dynamic resistance above the mean.
Then it is smoothed:
activeBand = EMA(activeBand, 3)
This prevents the band from stepping too harshly when ATR shifts.
Outer band (secondary structure reference)
A second band is created at half width on the opposite side:
bull: outerBand = mean + bandW * 0.5
bear: outerBand = mean - bandW * 0.5
Then smoothed again. This outer line is not the main “stop band,” it is more of an additional structure marker to show where the mean plus/minus partial deviation zone sits. It can help visually gauge whether price is extended relative to the mean structure while still in the same regime.
Color system (strength-aware gradient)
The trend color is not binary. It is strength-weighted:
If bullish, devNorm drives a gradient from a faint bull tint to full bull.
If bearish, devNorm drives a gradient from a faint bear tint to full bear.
This gives you an immediate read:
Bright strong color = conviction high.
Faded color = conviction low, regime fragile.
It also ties into the glow and fill so the whole visual language matches the same underlying “pressure” variable.
Deviation peak level engine (how the script plants levels)
This indicator includes a separate mechanism that marks important extremes after a strong deviation push fades. The idea is:
When trend pressure peaks and then collapses, the extreme price printed at peak deviation often becomes a reaction level later.
This is similar in spirit to:
exhaustion extremes,
climactic deviation points,
distribution/accumulation turning zones,
but the script formalizes it using the deviation engine.
1) Track the strongest deviation peak
The script stores a running peak:
peakDev: maximum devAbs seen since last reset
peakPrice: the extreme price at that peak (high for bull, low for bear)
peakDir: direction at peak
peakBar: bar index of peak
When devAbs prints a new high, it updates those values.
2) Define “fade” (momentum has cooled)
A fade event triggers when:
peakDev is meaningfully large (peakDev > 0.3)
current devAbs drops below a fraction of the peak: devAbs < peakDev * fadeThr
fadeThr is the key user control. Lower fadeThr requires a deeper drop from peak before planting a level.
What “fade” means in practice:
A strong push happened (deviation expanded).
That push is no longer active (deviation contracted).
So the extreme created during the push is now “locked in” as a candidate level.
3) Plant a level at the extreme
When faded:
A dashed horizontal line is created at peakPrice.
The line is projected forward (bar_index + 60).
It is stored in an array with direction and retest state.
It also respects maxLvls by deleting the oldest levels to avoid clutter.
4) Maintain levels and delete invalid ones
Each bar, levels are checked:
If price breaks far beyond the level (by about 2 ATR in the wrong direction), the level is deleted.
That “broken” rule is a pragmatic invalidation filter. If price rips through a former deviation extreme by a large margin, the level is no longer acting like a meaningful reaction zone.
5) Detect retests and mark them
A retest is detected when:
close is within ~0.25 ATR of the level,
and two bars ago price was not near it (distance > 0.5 ATR),
and the level hasn’t already been marked as retested.
When that happens:
A diamond marker is printed (◆) above or below depending on approach.
The level is flagged as retested so it won’t spam markers.
So levels are not just static drawings. They have state: naked vs retested, and they get culled if invalidated.
Glow system (volatility-scaled aesthetic, strength-scaled intensity)
Glow is not random decoration here. Its width scales with devNorm:
glowMult = 0.4 + devNorm * 1.2
glowW = atr * 0.08 * glowMult
So in strong trends:
Glow band expands.
The mean core visually “radiates” more.
In weak trends:
Glow shrinks and becomes less prominent.
The glow is built using multiple invisible plots above and below the mean, then layered fills with different transparencies. It creates a soft gradient aura around the mean that encodes strength.
Band fill and line break behavior
The active band is plotted with plot.style_linebr and forced to break on flips:
bandBrk = flip ? na : activeBand
This prevents the band from drawing a misleading connecting line across a regime change. It visually resets when direction flips, which matters because the band swaps sides of the mean when regime changes.
Fill is drawn between:
the active band line
and hl2 (mid-price reference)
So you get a shaded zone that reflects the current regime color and strength.
Candles and flip labels
Candles can be colored by the same strength-weighted regime color, which makes the entire chart consistent.
On flips:
Bull flip prints ▲ at the low.
Bear flip prints ▼ at the high.
These are regime markers, not “entry signals” by default. They simply identify when the cumulative deviation sign changed.
How to read this indicator in practice
1) Regime and conviction
Direction comes from cumDev sign.
Conviction comes from devNorm intensity.
Bright color + stable band on one side means strong sustained pressure.
Faded color + widening band means weak sustained pressure and higher uncertainty.
2) Using the active band as structure
In a bullish regime, activeBand is below mean and can behave like:
dynamic support,
risk boundary,
trend “line in the sand.”
In bearish regime, it flips above mean and acts like dynamic resistance.
Because the band widens when conviction is low, it naturally tells you “do not treat this as a tight stop zone when the trend is weak.”
3) Using deviation peak levels
Peak levels represent exhaustion extremes after a strong deviation impulse faded:
If price returns to a naked level, that area can act as a reaction zone.
Once retested, the script marks it and treats it as less “special.”
If price breaks it by a wide margin, the script removes it as invalid.
This level engine is best viewed as “structural memory of deviation events,” not generic support/resistance.
4) Extreme deviation alert
devNorm > 0.85 means the current sustained deviation is near the strongest seen recently. That’s useful for:
identifying trend climax states,
detecting when continuation is strong but risk of snapback rises,
flagging conditions where mean reversion pressure is building.
It does not guarantee reversal, it flags “stretch.”
Inputs and what they actually change
Mean Length (meanLen)
Controls the anchor responsiveness:
Lower = mean follows price more closely, deviation shrinks, more frequent flips.
Higher = mean is slower, deviation grows, trend regimes last longer.
Deviation Smoothing (devLen)
Controls how noisy the deviation signal is:
Lower = faster response, more jitter.
Higher = smoother pressure, slower flips.
Deviation Accumulation (devAccum)
Controls persistence requirement:
Lower = trend conviction reacts quickly but can whipsaw.
Higher = requires sustained deviation, fewer flips, more confirmation.
Band Tight / Band Wide
These define the band behavior range:
bandTight: how close the band gets when conviction is strong.
bandWide: how far it drifts when conviction is weak.
If you want the band to behave more like a stop guide, reduce bandWide. If you want it to act more like a regime boundary, increase bandWide.
Fade Threshold + Max Levels
These shape the level engine:
fadeThr lower = requires bigger cooling before planting levels (fewer, more meaningful).
fadeThr higher = plants levels earlier (more levels, more noise).
maxLvls controls clutter and historical depth.
Alerts (what they represent)
Dev Bull / Dev Bear: regime flips, cumulative deviation changed sign.
Dev Faded: a deviation peak cooled enough to plant a level.
Extreme Dev: sustained deviation is near local maximum, stretch condition.
Summary
Mean Deviation Trend models trend as sustained, volatility-normalized displacement from a mean rather than simple direction. It smooths and accumulates signed deviation to extract regime and conviction, then converts that conviction into an adaptive ATR band that tightens when pressure is strong and widens when pressure is weak. On top of that, it tracks deviation peak extremes and plants forward levels only after deviation fades, creating a structured map of “where trend impulses peaked” and how price reacts when those zones are revisited. Indicator

Parkinson Range Oscillator [BackQuant]Parkinson Range Oscillator
Overview
Parkinson Range Oscillator is a volatility regime indicator built around the Parkinson volatility estimator , a high-low based variance model originally proposed as a more statistically efficient alternative to close-to-close volatility. Instead of measuring volatility from closing returns, this script measures volatility from the intrabar price range using ln(H/L), then converts it into a normalized oscillator (z-score) so you can identify volatility expansion vs compression relative to the asset’s own history.
The indicator is designed to answer questions like:
Is volatility currently elevated or suppressed relative to its baseline?
Is volatility expanding (risk rising) or compressing (coiling)?
How extreme is the current vol state in percentile terms?
How does range-based vol compare to a more common ATR-based vol read?
It plots:
A Parkinson-based volatility z-score oscillator with gradient fills.
A signal line (EMA) for expansion/compression transitions.
An ATR-based z-score for context comparison.
A dashboard with current vol %, z-score, percentile rank, regime label, and ATR z-score.
Where Parkinson volatility comes from (origin and intuition)
The Parkinson estimator comes from academic finance and the study of volatility estimation. The key insight is simple:
The daily high and low contain more information about variability than the close alone.
Close-to-close volatility only uses one price per bar (the close), throwing away intrabar information. The high-low range captures the realized dispersion inside the bar, so under ideal assumptions it can estimate variance more efficiently.
The Parkinson model is derived assuming:
Price follows a continuous-time diffusion process (often framed like geometric Brownian motion).
No drift matters for the variance estimate over the interval.
No jumps and no microstructure distortions (idealized).
Even though real markets violate these assumptions (gaps, jumps, wicks from order flow), the estimator remains useful because:
Range is still a strong proxy for realized volatility.
It reacts to intrabar expansion earlier than close-based methods.
It is less dependent on where the bar closes.
Core Parkinson formula (what the script implements)
Parkinson variance for a window of n bars is:
Var = (1 / (4 * n * ln(2))) * Σ
This script computes it in the common rolling form:
logHL2 = (ln(high/low))²
parkVar = SMA(logHL2, n) / (4 * ln(2))
parkVol = sqrt(parkVar) * 100
Key details:
ln(H/L) makes the range scale-invariant (percent-like), so it behaves more consistently across price levels.
Squaring gives variance contribution.
The 1/(4 ln 2) constant comes from the expected distribution of high-low range under a Brownian diffusion.
sqrt converts variance to standard deviation (volatility).
*100 expresses it as a percentage for readability.
So parkVol is a “range-based realized volatility proxy” in percent terms.
Why range-based volatility behaves differently than ATR
ATR measures average true range, which is a linear range magnitude measure (high-low plus gaps). Parkinson uses ln(H/L) which is:
Log-scaled (closer to a return-based measure).
More directly tied to variance estimation theory.
In practice:
ATR can be driven by gaps and absolute range.
Parkinson is driven by proportional range and tends to emphasize how wide the bar is relative to its price level.
Parkinson often reacts sharply when wicks expand even if closes are stable.
Normalization into an oscillator (making it comparable through time)
Raw volatility values are hard to interpret across regimes because every market has different “normal.” This script normalizes Parkinson volatility against its own rolling baseline using a z-score:
parkMA = SMA(parkVol, baselineLen)
parkSD = stdev(parkVol, baselineLen)
osc = (parkVol - parkMA) / parkSD
Interpretation:
osc = 0 means current vol is at its baseline average.
osc = +1 means 1 standard deviation above normal (high vol).
osc = -1 means 1 standard deviation below normal (compressed).
osc > +2 flags extreme expansion states.
This is the core output. It turns “volatility” into “volatility regime” in standardized units.
Signal line and expansion/compression transitions
The oscillator is smoothed with an EMA to create a signal line:
signal = EMA(osc, signalLen)
Then transitions are defined as:
Expansion cross: crossover(osc, signal) and osc > 0
Compression cross: crossunder(osc, signal) and osc < 0
Why the extra osc > 0 and osc < 0 conditions:
It prevents treating small oscillations around zero as meaningful.
It forces expansion signals to occur in above-average volatility territory.
It forces compression signals to occur in below-average volatility territory.
So signals are regime-confirming, not constant cross spam.
Percentile rank (how extreme is vol relative to the past)
In addition to the z-score, the script computes the percentile rank of the raw Parkinson volatility:
pctRank = percentrank(parkVol, pctRankLookback)
Interpretation:
pctRank near 90–100 means current vol is among the highest levels seen in that lookback.
pctRank near 0–10 means it is among the lowest (compression).
Z-score tells you “how many SDs from mean.” Percentile tells you “how rare is this state historically.” Those are different but complementary.
ATR comparison line (context, not the main engine)
The indicator also computes an ATR-based volatility proxy and normalizes it in the same way:
atrVol = ATR(n) / close * 100
atrOsc = zscore(atrVol, baselineLen)
This gives you a direct visual comparison:
If Parkinson oscillator is high but ATR oscillator isn’t, range expansion may be happening in a way ATR is not emphasizing (or vice versa).
If both agree, you have stronger confirmation of a true volatility regime shift.
ATR is included as a “common benchmark,” not as the primary signal.
Regime classification (human-readable state mapping)
The script labels regimes from osc:
osc > 2.0 → EXTREME
osc > 1.0 → HIGH
osc > 0.0 → ABOVE AVG
osc > -1.0 → BELOW AVG
else → COMPRESSED
This is a practical mapping for dashboards and quick reads. It is not pretending that 2.0 is a universal constant, it is just a standardized “rare expansion” threshold.
Coloring follows the same logic:
More positive = more “expansion” coloring (bearCol).
More negative = more “compression” coloring (bullCol).
Note: the color naming is semantic here:
“Low Vol / Compression” is bullCol because compression often precedes trend expansion opportunities.
“High Vol / Expansion” is bearCol because high vol often implies risk, disorder, liquidation, or unstable conditions.
You can interpret those however you prefer, the tool is measuring volatility regime, not directional bias.
Plot design (why the oscillator is split into positive/negative)
The oscillator is split into two series:
oscPos = osc if osc > 0 else na
oscNeg = osc if osc < 0 else na
This is purely for visuals:
Positive region is drawn with expansion color and expansion gradient fill to zero.
Negative region is drawn with compression color and compression gradient fill to zero.
This makes it obvious at a glance which side of “normal volatility” you’re on.
How to interpret the indicator correctly
1) The oscillator is volatility regime, not price direction
High osc does not mean price will go down. It means the market is moving violently relative to its baseline. That can occur in:
Selloffs, liquidations, panic.
Breakouts and momentum expansions.
News-driven repricing.
Low osc does not mean price will go up. It means the market is quiet relative to baseline:
Ranges, coils, low realized movement.
Slow grind trends with suppressed pullbacks.
Pre-breakout compressions.
2) Compression regimes are often “setup states”
When osc is deeply negative (compressed), it often indicates that realized movement has collapsed. In many markets this precedes:
Breakouts (vol expansion from compression).
Trend acceleration.
Mean reversion bursts.
But compression can also persist. This is why the script includes signal crosses and percentile rank to judge when compression is shifting.
3) Expansion regimes are often “risk states”
When osc is positive and rising, the environment is more chaotic:
Stops are more likely to be hit.
Mean reversion can get violent.
Trend continuation can be strong but timing becomes harder.
In those regimes, the tool can be used to:
Reduce leverage.
Widen stops (if your system supports it).
Switch to volatility-aware sizing.
Wait for stabilization if you trade mean reversion.
4) Use percentile rank to identify “rare” volatility
Two markets can both show osc = +1, but one might be at the 95th percentile and the other at the 70th depending on distribution shape. Percentile tells you whether the current vol is truly rare in that lookback.
Cross dots (how to treat them)
ExpansionCross and CompressionCross are not buy/sell signals. They are “volatility phase change” markers:
ExpansionCross: vol regime moving up, above baseline, acceleration risk increases.
CompressionCross: vol regime moving down, below baseline, quieting environment.
These are useful for:
Strategy toggles (trend mode vs chop mode).
Sizing changes.
Timing filters (avoid entries during extreme expansion if your edge hates noise).
Dashboard (what it gives you at a glance)
The table summarizes everything that matters without you needing to interpret plots manually:
Parkinson Vol %: current raw range-based volatility level.
Z-Score: current standardized regime reading.
Percentile: rarity of current vol in the lookback.
Regime: discrete label based on z-score thresholds.
ATR Z-Score: comparison metric in standardized units.
The dashboard is positioned and sized via inputs so it can fit different chart layouts.
Parameter tuning guidance
Parkinson Length
Controls how quickly the raw Parkinson vol responds:
Shorter = more reactive to immediate range changes.
Longer = smoother volatility estimate, less noisy.
Baseline Length
Controls what “normal” means:
Long baseline (like 100) creates stable regime definitions.
Short baseline makes z-scores jump around and can overreact.
Signal Length
Controls how quickly you detect regime turning points:
Short signal = more crosses, earlier detection, more noise.
Long signal = fewer crosses, later detection, cleaner regime shifts.
Percentile Lookback
Controls rarity context:
252 approximates one trading year on daily charts.
On intraday, it becomes “252 bars,” so adjust to match your horizon.
Limitations and what to watch for
Parkinson assumes continuous diffusion. Jumps and gaps can distort it.
Wicks caused by illiquidity can inflate ln(H/L) and produce false “expansion.”
Z-score assumes the baseline distribution is reasonably stable. If volatility distribution shifts structurally, your z-scores can be biased until baseline catches up.
Percentile rank is lookback-dependent. Different lookbacks can change “rarity” classification materially.
Summary
Parkinson Range Oscillator converts a statistically grounded high-low volatility estimator into a regime oscillator by z-scoring Parkinson volatility against its own rolling baseline. It highlights expansion vs compression states with clear gradients, flags volatility phase changes via oscillator-signal crosses, ranks current volatility by percentile for rarity context, and overlays an ATR-based z-score for comparison. This makes it a practical tool for volatility-aware trading, regime filtering, sizing adjustments, and identifying compression-to-expansion transitions. Indicator

Harmonic Confluence Wave Detector [JOAT]Harmonic Confluence Wave Detector
Introduction
The Harmonic Confluence Wave Detector is an open-source oscillator-based indicator that combines WaveTrend, Money Flow Index (MFI), RSI, MACD, and Stochastic RSI into a unified momentum analysis system. This mashup creates a multi-layered oscillator framework designed to identify momentum shifts, overbought/oversold conditions, and divergence patterns across multiple timeframes and calculation methods.
The indicator addresses a common trading challenge: single oscillators can give conflicting or premature signals. By synthesizing five different momentum calculations that use distinct mathematical approaches, this tool provides confluence-based signals that occur when multiple momentum indicators align, significantly reducing false signals compared to using any single oscillator alone.
Chart showing WaveTrend oscillator, MACD histogram, and multi-signal system on 1H timeframe
Why This Mashup Exists
This indicator combines five oscillators that complement each other through different calculation methodologies:
WaveTrend: Smoothed momentum oscillator based on price deviation from exponential moving average
Money Flow Index (MFI): Volume-weighted RSI showing buying/selling pressure
RSI: Classic momentum oscillator measuring speed and magnitude of price changes
MACD: Trend-following momentum indicator showing relationship between two EMAs
Stochastic RSI: Stochastic calculation applied to RSI for enhanced sensitivity
Each oscillator has unique strengths: WaveTrend excels at identifying wave-like momentum cycles, MFI incorporates volume for institutional flow analysis, RSI provides reliable overbought/oversold readings, MACD shows trend strength and direction, and Stochastic RSI catches early momentum shifts. Together, they create a comprehensive momentum picture that no single oscillator can provide.
The mashup is justified because these oscillators use fundamentally different calculations (price-based, volume-weighted, moving average convergence, stochastic) that respond to different market conditions. When they align, it indicates genuine momentum shift rather than noise.
Core Components Explained
1. WaveTrend Oscillator (Primary Signal Generator)
WaveTrend is the primary oscillator, calculated using this methodology:
// Calculate exponential average of HLC3
esa = ta.ema(hlc3, channelLength)
// Calculate deviation
d = ta.ema(abs(hlc3 - esa), channelLength)
// Calculate channel index
ci = (hlc3 - esa) / (0.015 * d)
// Apply smoothing to create WaveTrend 1
wt1 = ta.ema(ci, averageLength)
// Create WaveTrend 2 as simple moving average of WT1
wt2 = ta.sma(wt1, 4)
WaveTrend oscillates around zero, with:
Values above +60: Overbought zone
Values above +80: Extreme overbought
Values below -60: Oversold zone
Values below -80: Extreme oversold
Crossovers between WT1 and WT2: Momentum shift signals
The indicator plots WT1 and WT2 as lines with dynamic coloring based on momentum direction and strength.
2. Money Flow Index (MFI) - Volume-Weighted Momentum
MFI calculation incorporates both price and volume:
// Calculate typical price
typicalPrice = (high + low + close) / 3
// Calculate raw money flow
rawMoneyFlow = typicalPrice * volume
// Separate positive and negative money flow
positiveFlow = close > close ? rawMoneyFlow : 0
negativeFlow = close < close ? rawMoneyFlow : 0
// Sum over MFI period
positiveSum = sum(positiveFlow, mfiLength)
negativeSum = sum(negativeFlow, mfiLength)
// Calculate MFI
mfi = 100 - (100 / (1 + positiveSum / negativeSum))
MFI ranges from 0-100, with readings above 80 indicating buying pressure and below 20 indicating selling pressure. The indicator plots MFI as a line and uses it for confluence scoring.
3. RSI - Classic Momentum Oscillator
Standard RSI calculation over 14 periods (configurable):
RSI > 70: Overbought
RSI < 30: Oversold
RSI > 65 with other bearish signals: Potential reversal
RSI < 35 with other bullish signals: Potential reversal
RSI provides reliable baseline momentum readings and is used for divergence detection.
4. MACD - Trend Momentum Indicator
MACD uses standard 12/26/9 settings:
= ta.macd(close, 12, 26, 9)
The indicator displays MACD histogram with enhanced width (linewidth 8) for visibility. Histogram color changes based on:
Green: Positive and increasing (bullish momentum)
Light green: Positive but decreasing (weakening bulls)
Red: Negative and decreasing (bearish momentum)
Light red: Negative but increasing (weakening bears)
MACD histogram provides visual confirmation of momentum strength and direction.
5. Stochastic RSI - Enhanced Sensitivity
Stochastic calculation applied to RSI values:
stochRSI = ta.stoch(rsi, rsi, rsi, 14)
Stochastic RSI oscillates between 0-100 and is more sensitive than regular RSI, catching momentum shifts earlier. The indicator plots both K and D lines for crossover analysis.
Example showing all oscillators with divergence markers and signal labels
Multi-Signal System
The indicator generates six tiers of signals based on confluence strength:
BUY Signals:
BUY: WT1 crosses above WT2 in oversold zone (WT1 < -40)
STRONG BUY: BUY + volume above average + MACD histogram positive
MEGA BUY: STRONG BUY + WT1 < -60 (extreme oversold) + RSI < 35
ULTRA BUY: MEGA BUY + MFI < 30 + Stoch RSI oversold + bullish divergence
SELL Signals:
SELL: WT1 crosses below WT2 in overbought zone (WT1 > 40)
STRONG SELL: SELL + volume above average + MACD histogram negative
MEGA SELL: STRONG SELL + WT1 > 60 (extreme overbought) + RSI > 65
ULTRA SELL: MEGA SELL + MFI > 70 + Stoch RSI overbought + bearish divergence
Signal labels appear on chart with size proportional to signal strength (tiny for BUY/SELL, normal for ULTRA).
Divergence Detection System
The indicator detects divergences across multiple oscillators:
RSI Divergence:
Bullish: Price makes lower low, RSI makes higher low
Bearish: Price makes higher high, RSI makes lower high
WaveTrend Divergence:
Bullish: Price makes lower low, WT1 makes higher low
Bearish: Price makes higher high, WT1 makes lower high
MACD Divergence:
Bullish: Price makes lower low, MACD histogram makes higher low
Bearish: Price makes higher high, MACD histogram makes lower high
Divergences are marked with bright orange/yellow "D" labels (color.rgb(255, 200, 0)) with black text for maximum visibility. When multiple oscillators show divergence simultaneously, it signals strong momentum exhaustion and potential reversal.
Confluence Scoring System
The indicator calculates a real-time confluence score (0-100) by evaluating:
Confluence Components:
- WaveTrend Position: Up to 25 points (extreme zones add more weight)
- WaveTrend Momentum: Up to 15 points (WT1-WT2 relationship)
- RSI Level: Up to 15 points (extreme readings add weight)
- MFI Level: Up to 15 points (volume pressure confirmation)
- MACD Histogram: Up to 15 points (trend momentum)
- Stochastic RSI: Up to 10 points (early momentum detection)
- Divergence Presence: Up to 5 points (any divergence detected)
The dashboard displays the current confluence score with color coding:
Green (80-100): Strong bullish confluence
Light green (60-79): Moderate bullish confluence
Yellow (40-59): Neutral/mixed signals
Light red (20-39): Moderate bearish confluence
Red (0-19): Strong bearish confluence
Visual Elements
WaveTrend Lines: WT1 (blue) and WT2 (orange) with dynamic coloring
Overbought/Oversold Zones: Horizontal lines at +60/-60 and +80/-80
Zero Line: Reference line at 0
MACD Histogram: Large bars (linewidth 8) with gradient coloring
MFI Line: Purple line showing volume-weighted momentum
RSI Line: Green line with overbought/oversold reference levels
Stochastic RSI: K (blue) and D (red) lines
Signal Labels: BUY/SELL markers with size based on signal strength
Divergence Labels: Bright orange "D" markers at divergence points
Dashboard: Top-right table showing confluence score and oscillator readings
Chart demonstrating signal hierarchy from BUY to ULTRA BUY with divergence markers
How Components Work Together
The mashup creates a layered momentum analysis:
Layer 1 - Primary Momentum: WaveTrend identifies wave cycles and crossover signals
Layer 2 - Volume Confirmation: MFI validates moves with volume-weighted pressure
Layer 3 - Baseline Momentum: RSI provides reliable overbought/oversold context
Layer 4 - Trend Strength: MACD histogram shows underlying trend momentum
Layer 5 - Early Detection: Stochastic RSI catches momentum shifts before other oscillators
Layer 6 - Exhaustion Signals: Divergences across oscillators indicate momentum exhaustion
Example scenario: WT1 crosses above WT2 in oversold zone (Layer 1), MFI shows buying pressure increasing (Layer 2), RSI is below 35 (Layer 3), MACD histogram turns positive (Layer 4), Stochastic RSI crosses up (Layer 5), and RSI shows bullish divergence (Layer 6). This generates an ULTRA BUY signal with 90+ confluence score.
Input Parameters
WaveTrend Settings:
Channel Length: Period for EMA calculation (default: 10)
Average Length: Smoothing period for WT1 (default: 21)
Overbought Level: Upper threshold (default: 60)
Oversold Level: Lower threshold (default: -60)
Extreme OB Level: Extreme upper threshold (default: 80)
Extreme OS Level: Extreme lower threshold (default: -80)
Oscillator Settings:
RSI Length: Period for RSI calculation (default: 14)
MFI Length: Period for MFI calculation (default: 14)
MACD Fast: Fast EMA period (default: 12)
MACD Slow: Slow EMA period (default: 26)
MACD Signal: Signal line period (default: 9)
Stochastic RSI Length: Period for Stoch RSI (default: 14)
Signal Settings:
Show Signals: Toggle signal labels (default: enabled)
Show Divergences: Toggle divergence markers (default: enabled)
Volume Confirmation: Require volume for STRONG signals (default: enabled)
Min Confluence for Signals: Minimum score to display signals (default: 60)
Display Options:
Show Dashboard: Toggle confluence score table (default: enabled)
Show MACD Histogram: Toggle MACD display (default: enabled)
Show MFI Line: Toggle MFI display (default: enabled)
Show RSI Line: Toggle RSI display (default: enabled)
Show Stochastic RSI: Toggle Stoch RSI display (default: enabled)
Color Theme: Choose between multiple color schemes
How to Use This Indicator
Step 1: Monitor WaveTrend Oscillator
Watch for WT1/WT2 crossovers in extreme zones. Crossovers in oversold zone (< -60) suggest bullish reversals, crossovers in overbought zone (> 60) suggest bearish reversals.
Step 2: Check Confluence Score
Review the dashboard. Scores above 70 indicate strong momentum alignment. Higher scores generally produce more reliable signals.
Step 3: Identify Signal Strength
Pay attention to signal labels. ULTRA signals have highest probability but occur less frequently. STRONG signals offer good balance between frequency and reliability.
Step 4: Look for Divergences
Divergence markers indicate momentum exhaustion. When divergences appear with extreme oscillator readings, reversal probability increases significantly.
Step 5: Confirm with MACD Histogram
Check MACD histogram direction and strength. Large histogram bars confirm strong momentum, shrinking bars suggest momentum loss.
Step 6: Validate with Volume (MFI)
Ensure MFI supports the move. Bullish signals with rising MFI are stronger, bearish signals with falling MFI are stronger.
Best Practices
Use on 15-minute to 4-hour timeframes for optimal signal quality
Wait for STRONG or MEGA signals rather than acting on every BUY/SELL
Divergences work best when combined with extreme oscillator readings
Multiple oscillator divergences (RSI + WT + MACD) are most reliable
Use confluence score as filter - avoid signals below 60 score
MACD histogram size indicates momentum strength - larger bars = stronger moves
MFI divergence from price often precedes reversals (volume leads price)
Combine with price action and support/resistance for best results
Indicator Limitations
Oscillators can remain overbought/oversold longer than expected in strong trends
Divergences can persist for multiple bars before reversal occurs
Multiple signals in choppy markets can lead to whipsaws
Confluence score is mathematical calculation, not prediction of future movement
ULTRA signals are rare - waiting only for these may miss opportunities
Volume data quality varies across markets and can affect MFI reliability
Stochastic RSI is very sensitive and can generate premature signals
No indicator combination eliminates false signals entirely
Requires understanding of oscillator behavior for effective interpretation
Technical Implementation
Built with Pine Script v6 using:
Custom WaveTrend calculation with dual-line system
Proper MFI formula with volume-weighted money flow
Multi-oscillator divergence detection with pivot analysis
Confluence scoring algorithm with weighted components
Enhanced MACD histogram visualization (linewidth 8)
Dynamic color gradients for momentum visualization
Anti-overlap logic for signal labels
Real-time dashboard with oscillator readings
The code is fully open-source and can be modified to adjust oscillator weights, signal thresholds, and visual preferences.
Originality Statement
This indicator is original in its multi-oscillator integration approach. While individual components (WaveTrend, MFI, RSI, MACD, Stochastic RSI) are established oscillators, this mashup is justified because:
It combines five oscillators using fundamentally different calculation methods
The tiered signal system (BUY to ULTRA) provides graduated confidence levels
Multi-oscillator divergence detection catches momentum exhaustion across different timeframes
Confluence scoring quantifies momentum alignment across all oscillators
Volume integration through MFI adds institutional flow perspective
Enhanced visualization (large MACD histogram, bright divergence markers) improves usability
Each oscillator contributes unique information: WaveTrend provides wave-cycle analysis, MFI incorporates volume, RSI offers reliable baseline, MACD shows trend strength, and Stochastic RSI catches early shifts. The mashup's value lies in identifying when these different momentum calculations align, significantly reducing false signals compared to any single oscillator.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice or a recommendation to buy or sell any financial instrument. Trading involves substantial risk of loss and is not suitable for all investors.
Oscillator-based indicators are lagging tools that analyze past price data. They do not predict future price movement. Overbought conditions can persist in strong uptrends, and oversold conditions can persist in strong downtrends. Divergences can continue for extended periods before reversals occur.
The confluence score is a mathematical calculation, not a guarantee of trade success. High confluence scores do not ensure profitable trades. Past signal performance does not guarantee future results. Market conditions change, and oscillator behavior varies across different market regimes.
Always use proper risk management, including stop losses and position sizing appropriate for your account size and risk tolerance. Never risk more than you can afford to lose. Consider consulting with a qualified financial advisor before making investment decisions.
The author is not responsible for any losses incurred from using this indicator. Users assume full responsibility for all trading decisions made using this tool.
-Made with passion by officialjackofalltrades Indicator

Apex Quantum Terminal Ultra.Description
The Apex Quantum Terminal Ultra is a sophisticated, multi-layered quantitative signaling system designed for the modern trader. Moving beyond simple lagging indicators, this terminal utilizes a 5-Layer Heuristic Engine to calculate real-time trade probabilities based on trend alignment, momentum confluence, institutional volume, volatility bias, and higher-timeframe (MTF) trends.
What sets this terminal apart is its Realistic Probability Model. Unlike standard "100% accurate" claims, this script uses a weighted decay algorithm that requires deep confluence to trigger high-conviction signals, reflecting the non-linear nature of financial markets. When a signal is generated, the terminal provides a Trade Narrative via interactive tooltips, explaining the market psychology and technical reasoning behind the move.
How It Works
The engine evaluates five distinct technical layers:
Zero-Lag Alpha: A high-speed trend-following baseline.
Momentum Confluence: Unpacked MACD and RSI synchronization.
Institutional Volume: Detection of RVol spikes (Smart Money participation).
Volatility Bias: Bollinger-based positioning for expansion detection.
Macro Alignment: Direct integration with Daily timeframe bias.
Instructions
Signals: Look for BUY or SELL labels on the chart. The percentage shown represents the system's confidence level based on layer confluence.
Trade Logic: Hover your mouse over any signal label to see the Trade Narrative. This popup will provide you with the technical specs, the verdict, and suggested Stop Loss (SL) and Take Profit (TP) levels.
Quant Alert Header: A dynamic banner will appear at the top center of your chart only when a "High Confluence" (70%+) event is detected, signaling a premium trade opportunity.
Settings: * Adjust Signal Alpha to change the sensitivity of the trend detection.
Modify the Min Confidence % to filter out lower-probability noise.
Set your preferred Risk:Reward Target to automatically calculate TP levels. Indicator

Automatic Trendline [Metrify]Metrify Automatic Trendlines is an auto-drawing support/resistance channel built around pivot clustering + scoring, not “connect two perfect points”. The script continuously collects swing pivots (high/low) over a configurable lookback window, then searches for the best single support line and the best single resistance line that behave like a human-drawn trendline: multiple interactions, controlled slope, limited break-throughs, and (most importantly) still relevant to the current price. (configurable in "Max Relevance Distance" input)
The fundamental problem with algorithmic trendlines is subjectivity. To solve this mathematically, we treat trendlines as a statistical regression problem with specific constraints. We do not use linear regression on all candles, instead, we use a brute-force iterative approach on specific "Pivot Points."
The logic operates on a simple premise: Generate every possible line between past swing points, validate them against price history, score them based on fit, and render only the winner.
The Calculation Engine (f_find_best_line)
This function contains the primary computational load. It performs a nested loop operation:
Outer Loop (newer): Iterates through recent pivots.
Inner Loop (older): Iterates through older pivots to form a candidate line segment.
For every pair of pivots (P1,P2), we calculate the slope (m) and the y-intercept concept. This gives us a tentative trendline equation:
y=mx+c
The Scoring Matrix
We assign a score to each candidate line based on weighted heuristics:
Touch Count (touches * 2.8): The primary driver. More touches = higher statistical significance.
Recency (recency * 1.2): Lines originating closer to the current price action are weighted higher.
Tightness (avgErr): We calculate the average distance of all touches from the line. A "tighter" fit (lower error) increases the score.
Penalties:
violations * 2.2: False breaks heavily penalize the score.
barBreakRatio * 2.0: If the line cuts through candle bodies (even if pivots are fine).
The line with the highest localBest score is returned as the dominant trendline.
What you can use it for?
This is a structure visualizer that tries to keep a clean, current S/R channel on screen with volatility-aware rules. It’s not a signal generator, it doesn’t predict breakouts, and it won’t always draw something, if the market is messy and no line survives the filters, it will show none instead of hallucinating geometry. If you need more lines (multiple concurrent channels), that’s a different design tradeoff (and usually becomes clutter + false confidence fast). Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

[CT] ORB SuiteThis indicator is an Opening Range first tool that also includes an Initial Balance framework, breakout detection, and a full target and alerting package. It is designed to define a clean Opening Range at the start of the regular trading session and then turn that range into an actionable breakout structure by plotting the key levels, projecting measured targets, and visually confirming the exact breakout candle on your chart. The Opening Range component can be configured as either the first bar of the session or a true time-based duration, such as 1, 2, 5, 10, 15, 30 minutes, or 1 hour, which lets you standardize the opening structure across different chart timeframes without needing to “count bars.” As price prints during the Opening Range window, the script continuously updates the OR high and OR low, then locks those levels once the window closes so you have a stable reference for the rest of the session. The OR area can be shaded for quick visual recognition, and an optional OR midpoint line and label can be displayed to help you judge whether price is accepting above the middle of the range or failing back through it.
Once the Opening Range is formed, the script upgrades the workflow by adding breakout qualification rules that you can control. You can choose confirmation based on a body cross, a close cross, or a close above or below the range boundary, which is a meaningful improvement over simple “touch” logic because it helps reduce false signals and makes the breakout trigger more consistent with how you actually trade. When a breakout is confirmed, the indicator can highlight the breakout candle itself so there is no ambiguity about which bar triggered the signal. You can highlight the candle body, the chart background, or both, and you can select separate colors for long and short breakouts. This makes chart review and live decision-making cleaner because you can immediately see where the breakout truly occurred instead of guessing between several candles that probed the level.
The next major upgrade is the breakout target system. After a long breakout, targets are calculated as true multiples of the Opening Range size, starting from the OR high and projecting upward by the selected multiples. After a short breakout, targets are calculated from the OR low and projected downward by the same multiple logic. By default, the script supports four take-profit targets, TP1 through TP4, with sensible preset multiples that step outward in a structured way, but you can customize each multiple to match your instrument and style. This target system is a practical enhancement because it provides objective, range-based profit-taking levels that align with common intraday expansion behavior rather than arbitrary fixed tick offsets. You also get full control over whether the target lines and labels appear only after a breakout triggers, which keeps the chart clean and prevents “pre-biasing,” or whether you want to see projected targets in both directions before the breakout occurs for planning and scenario mapping. In addition, the target hit detection is configurable so you can decide whether a target is considered “hit” by a simple high or low touch or only after a close crosses the target, which is important for traders who want stricter confirmation and cleaner backtesting logic.
Beyond the OR and targets, the indicator includes a complete Initial Balance module as an additional layer of structure. The IB duration is selectable and independent, and the script can plot IB high, IB low, and an optional IB midpoint, with optional fill shading to make the balance area obvious. A key upgrade here is the ability to base the breakout targets on either the Opening Range or the Initial Balance. This means you can run a pure OR breakout playbook, a pure IB breakout playbook, or compare both structures on the same session without changing indicators. This flexibility matters because OR breakouts tend to be more sensitive and earlier, while IB-based levels often better reflect the session’s early balance and can produce more stable expansion targets.
Another major improvement is the history and session management. The script can freeze all drawings at the end of the session so lines and fills do not incorrectly extend into the next day, and it can optionally keep a configurable amount of history, such as the last 20 sessions, so you can study how price reacts to prior OR and IB structures. You also have control over whether IB should be included in that stored history, which helps if you want a cleaner chart while still retaining the OR context. To support different chart themes and personal preferences, label styling is expanded with controls for label background colors, text colors, transparency, and horizontal offsets, so the levels remain readable without covering price action.
Finally, the alerting system is upgraded into a full set of actionable events. The indicator can generate alerts for session open and session close, for the moment the Initial Balance forms, for the moment the Opening Range forms, for long and short breakouts, and for each target hit from TP1 through TP4. Alerts can be used in standard alertcondition form or as dynamic alert() calls that include price-filled messages, which is a practical enhancement for traders who want their phone or desktop notifications to contain the exact level values rather than generic labels.
This script is a derivative work built on the original Initial Balance foundation authored by © czoa under the Mozilla Public License 2.0, with extensive additions and improvements by © ChaosTrader63 to expand it into a complete Opening Range and Initial Balance breakout suite. The core upgrades are the configurable time-based Opening Range, breakout candle highlighting, multi-target measured range projections through TP4 with optional pre-projection behavior, stricter breakout confirmation modes, target hit rules, richer history controls, stronger label customization, and a comprehensive alert system that turns the session structure into a usable trade planning and execution framework directly on PulseWire. Indicator

Asset Liquidity Meter by Funded RelayAsset Liquidity Meter by Funded Relay
This indicator estimates the liquidity of any asset by calculating the volume traded per unit of price movement (volume / (high - low)).
Higher values generally indicate better liquidity (more volume in a smaller price range → easier to enter/exit positions with less slippage).
Lower values suggest thinner liquidity (higher risk of price impact and volatility).
The indicator displays:
• Histogram: raw liquidity per bar (green = above SMA, red = below SMA)
• SMA line: smoothed liquidity trend
• Real-time info table in the top-right corner
• Built-in alert conditions
How to Use – Step by Step
1. Adding the Indicator
- Open any chart on PulseWire
- Click the "Indicators" button at the top
- Search for "Asset Liquidity Meter v6" (or find it in Community Scripts / My Scripts)
- Click to add it to the chart
- It will appear in a separate pane below the price chart
2. Customizing Settings
Double-click the indicator name in the pane (or right-click → Settings):
• SMA Length (default: 14)
- Controls the smoothing period of the liquidity trend line
- Smaller values (5–10) → more responsive, good for intraday/scalping
- Larger values (20–50) → smoother trend, better for swing/position trading
• Epsilon (default: 0.00000001)
- Tiny value that prevents division-by-zero errors on flat bars (high = low)
- Almost never needs to be changed
• Colors
- High Liquidity Color: histogram bars when liquidity > SMA
- Low Liquidity Color: histogram bars when liquidity < SMA
- SMA Line Color: color of the smoothed trend line
• Show Alert Conditions in Menu
- Keep enabled (true) to see the built-in alert options when creating alerts
3. Reading & Interpreting the Indicator
• Histogram Bars (Raw Liquidity)
- Height = amount of volume per unit of price range
- Tall bars = high liquidity (market is "thick")
- Short bars = low liquidity (market is "thin")
- Green = current liquidity is stronger than the average (SMA)
- Red = current liquidity is weaker than the average
• Blue SMA Line
- Shows the average liquidity over the selected period
- Rising line → liquidity improving (more participants, easier trading)
- Falling line → liquidity decreasing (thinner market, caution advised)
• Info Table (top-right corner)
- Displays current raw liquidity, SMA value, and status ("High Liquidity" / "Low Liquidity")
- Updates in real-time on the last bar
• Zero Line (dotted gray)
- Visual reference — everything above zero is positive liquidity
4. Practical Trading Applications
• High Liquidity Zones (green bars + rising SMA)
- Favorable conditions for entering or scaling into positions
- Lower expected slippage
- Better for large orders
• Low Liquidity Zones (red bars + falling SMA)
- Higher risk of slippage and exaggerated price moves
- Consider smaller position sizes or waiting for better conditions
- Common during session opens/closes, holidays, or low-volume periods
• Crossovers
- Liquidity crossing above SMA → potential increase in market participation
- Liquidity crossing below SMA → potential drying up of interest
5. Setting Up Alerts
1. Right-click on the chart → "Add Alert"
2. In "Condition", select "Asset Liquidity Meter v6"
3. Choose one of the available alert conditions:
- Liquidity ↑ Crosses Above SMA
- Liquidity ↓ Crosses Below SMA
- Very High Liquidity (2× SMA)
- Very Low Liquidity (<30% SMA)
4. Set frequency (Once Per Bar Close is usually best)
5. Configure notification (email, popup, sound, webhook, etc.)
6. Create the alert
6. Tips for Best Results
• Works on all markets: stocks, forex, crypto, futures, indices
• Best on timeframes with meaningful volume data (5 min and higher usually give clearest signals)
• Compare liquidity across different assets or timeframes using multiple charts
• Combine with support/resistance, volume profile or order flow tools for confirmation
• Not a standalone signal — use in context with your overall strategy
Limitations & Notes
• This is an estimation based on OHLCV data — it does not show real order book depth
• Results vary significantly between centralized exchanges, brokers and instruments
• Zero-volume bars will show zero liquidity (expected behavior)
Enjoy safer and more informed trading!
Questions or suggestions? Feel free to comment below. Indicator

Indicator

Volume Profile Skew [BackQuant]Volume Profile Skew
Overview
Volume Profile Skew is a market-structure indicator that answers a specific question most volume profiles do not:
“Is volume concentrating toward lower prices (accumulation) or higher prices (distribution) inside the current profile range?”
A standard volume profile shows where volume traded, but it does not quantify the shape of that distribution in a single number. This script builds a volume profile over a rolling lookback window, extracts the key profile levels (POC, VAH, VAL, and a volume-weighted mean), then computes the skewness of the volume distribution across price bins. That skewness becomes an oscillator, smoothed into a regime signal and paired with visual profile plotting, key level lines, and historical POC tracking.
This gives you two layers at once:
A full profile and its important levels (where volume is).
A skew metric (how volume is leaning within that range).
What this indicator is based on
The foundation comes from classical “volume at price” concepts used in Market Profile and Volume Profile analysis:
POC (Point of Control): the price level with the highest traded volume.
Value Area (VAH/VAL): the zone containing the bulk of activity, commonly 70% of total volume.
Volume-weighted mean (VWMP in this script): the average price weighted by volume, a “center of mass” for traded activity.
Where this indicator extends the idea is by treating the volume profile as a statistical distribution across price. Once you treat “volume by price bin” as a probability distribution (weights sum to 1), you can compute distribution moments:
Mean: where the mass is centered.
Standard deviation: how spread-out it is.
Skewness: whether the distribution has a heavier tail toward higher or lower prices.
This is not a gimmick. Skewness is a standard statistic in probability theory. Here it is applied to “volume concentration across price”, not to returns.
Core concept: what “skew” means in a volume profile
Imagine a profile range from Low to High, split into bins. Each bin has some volume. You can get these shapes:
Balanced profile: volume is fairly symmetric around the mean, skew near 0.
Bottom-heavy profile: more volume at lower prices, with a tail toward higher prices, skew tends to be positive.
Top-heavy profile: more volume at higher prices, with a tail toward lower prices, skew tends to be negative.
In this script:
Positive skew is labeled as ACCUMULATION.
Negative skew is labeled as DISTRIBUTION.
Near-zero skew is NEUTRAL.
Important: accumulation here does not mean “buying will immediately pump price.” It means the profile shape suggests more participation at lower prices inside the current lookback range. Distribution means participation is heavier at higher prices.
How the volume profile is built
1) Define the analysis window
The profile is computed on a rolling window:
Lookback Period: number of bars included (capped by available history).
Profile Resolution (bins): number of price bins used to discretize the high-low range.
The script finds the highest high and lowest low in the lookback window to define the price range:
rangeHigh = highest high in window
rangeLow = lowest low in window
binSize = (rangeHigh - rangeLow) / bins
2) Create bin midpoints
Each bin gets a midpoint “price” used for calculations:
price = rangeLow + binSize * (b + 0.5)
These midpoints are what the mean, variance, and skewness are computed on.
3) Distribute each candle’s volume into bins
This is a key implementation detail. Real volume profiles require tick-level data, but Pine does not provide that. So the script approximates volume-at-price using candle ranges:
For each bar in the lookback:
Determine which bins its low-to-high range touches.
Split that candle’s total volume evenly across the touched bins.
So if a candle spans 6 bins, each bin gets volume/6 from that bar. This is a practical, consistent approximation for “where trading could have occurred” inside the bar.
This approach has tradeoffs:
It does not know where within the candle the volume truly traded.
It assumes uniform distribution across the candle range.
It becomes more meaningful with larger samples (bigger lookback) and/or higher timeframes.
But it is still useful because the purpose here is the shape of the distribution across the whole window, not exact microstructure.
Key profile levels: POC, VAH, VAL, VWMP
POC (Point of Control)
POC is found by scanning bins and selecting the bin with maximum volume. The script stores:
pocIndex: which bin has max volume
poc price: midpoint price of that bin
Value Area (VAH/VAL) using 70% volume
The script builds the value area around the POC outward until it captures 70% of total volume:
Start with the POC bin.
Expand one bin at a time to the side with more volume.
Stop when accumulated volume >= 70% of total profile volume.
Then:
VAL = rangeLow + binSize * lowerIdx
VAH = rangeLow + binSize * (upperIdx + 1)
This produces a classic “where most business happened” zone.
VWMP (Volume-Weighted Mean Price)
This is essentially the center of mass of the profile:
VWMP = sum(price * volume ) / totalVolume
It is similar in spirit to VWAP, but it is computed over the profile bins, not from bar-by-bar typical price.
Skewness calculation: turning the profile into an oscillator
This is the main feature.
1) Treat volumes as weights
For each bin:
weight = volume / totalVolume
Now weights sum to 1.
2) Compute weighted mean
Mean price:
mean = sum(weight * price )
3) Compute weighted variance and std deviation
Variance:
variance = sum(weight * (price - mean)^2)
stdDev = sqrt(variance)
4) Compute weighted third central moment
Third moment:
m3 = sum(weight * (price - mean)^3)
5) Standardize to skewness
Skewness:
rawSkew = m3 / (stdDev^3)
This standardization matters. Without it, the value would explode or shrink based on profile scale. Standardized skewness is dimensionless and comparable.
Smoothing and regime rules
Raw skewness can be jumpy because:
profile bins change as rangeHigh/rangeLow shift,
one high-volume candle can reshape the distribution,
volume regimes change quickly in crypto.
So the indicator applies EMA smoothing:
smoothedSkew = EMA(rawSkew, smooth)
Then it classifies regime using fixed thresholds:
Bullish (ACCUMULATION): smoothedSkew > +0.25
Bearish (DISTRIBUTION): smoothedSkew < -0.25
Neutral: between those values
Signals are generated on threshold cross events:
Bull signal when smoothedSkew crosses above +0.25
Bear signal when smoothedSkew crosses below -0.25
This makes the skew act like a regime oscillator rather than a constantly flipping color.
Volume Profile plotting modes
The script draws the profile on the last bar, using boxes for each bin, anchored to the right with a configurable offset. The width of each profile bar is normalized by max bin volume:
volRatio = binVol / maxVol
barWidth = volRatio * width
Three style modes exist:
1) Gradient
Uses a “jet-like” gradient based on volRatio (blue → red). Higher-volume bins stand out naturally. Transparency increases as volume decreases, so low-volume bins fade.
2) Solid
Uses the current regime color (bull/bear/neutral) for all bins, with transparency. This makes the profile read as “structure + regime.”
3) Skew Highlight
Highlights bins that match the skew bias:
If skew bullish, emphasize lower portion of profile.
If skew bearish, emphasize higher portion of profile.
Else, keep most bins neutral.
This is a visual “where the skew is coming from” mode.
Historical POC tracking and Naked POCs
This script also treats POCs as meaningful levels over time, similar to how traders track old VA levels.
What is a “naked POC”?
A “naked POC” is a previously formed POC that has not been revisited (retested) by price since it was recorded. Many traders watch these as potential reaction zones because they represent prior “maximum traded interest” that the market has not re-engaged with.
How this script records POCs
It stores a new historical POC when:
At least updatebars have passed since the last stored POC, and
The POC has changed by at least pochangethres (%) from the last stored value.
New stored POCs are flagged as naked by default.
How naked becomes tested
On each update, the script checks whether price has entered a small zone around a naked POC:
zoneSize = POC * 0.002 (about 0.2%)
If bar range overlaps that zone, mark it as tested (not naked).
Display controls:
Highlight Naked POCs: draws and labels untested POCs.
Show Tested POCs: optionally draw tested ones in a muted color.
To avoid clutter, the script limits stored POCs to the most recent 20 and avoids drawing ones too close to the current POC.
On-chart key levels and what they mean
When enabled, the script draws the current lookback profile levels on the price chart:
POC (solid): the “most traded” price.
VAH/VAL (dashed): boundaries of the 70% value area.
VWMP (dotted): volume-weighted mean of the profile distribution.
Interpretation framework (practical, not mystical):
POC often behaves like a magnet in balanced conditions.
VAH/VAL define the “accepted” area, breaks can signal auction continuation.
VWMP is a fair-value reference, useful as a mean anchor when skew is neutralizing.
Oscillator panel and histogram
The skew oscillator is plotted in a separate pane:
Line: smoothedSkew, colored by regime.
Histogram: smoothedSkew as bars, colored by sign.
Fill: subtle shading above/below 0 to reinforce bias.
This makes it easy to read:
Direction of bias (positive vs negative).
Strength (distance from 0 and from thresholds).
Transitions (crosses of ±0.25).
Info table: what it summarizes
On the last bar, a table prints key diagnostics:
Current skew value (smoothed).
Regime label (ACCUMULATION / DISTRIBUTION / NEUTRAL).
Current POC, VAH, VAL, VWMP.
Count of naked POCs still active.
A simple “volume location” hint (lower/higher/balanced).
This is designed for quick scanning without reading the entire profile.
Alerts
The indicator includes alerts for:
Skew regime shifts (cross above +0.25, cross below -0.25).
Price crossing above/below current POC.
Approaching a naked POC (within 1% of any active naked POC).
The “approaching naked POC” alert is useful as a heads-up that price is entering a historically important volume magnet/reaction zone.
How to use it properly
1) Regime filter
Use skew regime to decide what type of trades you should prioritize:
ACCUMULATION (positive skew): market activity is heavier at lower prices, pullbacks into value or below VWMP often matter more.
DISTRIBUTION (negative skew): activity is heavier at higher prices, rallies into value or above VWMP often matter more.
NEUTRAL: mean-reversion and POC magnet behavior tends to dominate.
This is not “buy when green.” It is context for what the auction is doing.
2) Level-based execution
Combine skew with VA/POC levels:
In neutral regimes, expect rotations around POC and inside VA.
In strong skew regimes, watch for acceptance away from POC and reactions at VA edges.
3) Naked POCs as targets and reaction zones
Naked POCs can act like unfinished business. Common workflows:
As targets in rotations.
As areas to reduce risk when price is approaching.
As “if it breaks cleanly, trend continuation” markers when price returns with force.
Parameter tuning guidance
Lookback
Controls how “local” the profile is.
Shorter: reacts faster, more sensitive to recent moves.
Longer: more stable, better for swing context.
Bins
Controls resolution of the profile.
Higher bins: more detail, more computation, more sensitive profile shape.
Lower bins: smoother, less detail, more stable skew.
Smoothing
Controls how noisy the skew oscillator is.
Higher smoothing: fewer regime flips, slower response.
Lower smoothing: more responsive, more false transitions.
POC tracking settings
Update interval and threshold decide how many historical POCs you store and how different they must be. If you set them too loose, you will spam levels. If too strict, you will miss meaningful shifts.
Limitations and what not to assume
This indicator uses candle-range volume distribution because Pine cannot see tick-level volume-at-price. That means:
The profile is an approximation of where volume could have traded, not exact tape data.
Skew is best treated as a structural bias, not a precise signal generator.
Extreme single-bar events can distort the distribution briefly, smoothing helps but cannot remove reality.
Summary
Volume Profile Skew takes standard volume profile structure (POC, Value Area, volume-weighted mean) and adds a statistically grounded measure of profile shape using skewness. The result is a regime oscillator that quantifies whether volume concentration is leaning toward lower prices (accumulation) or higher prices (distribution), while also plotting the full profile, key levels, and historical naked POCs for actionable context.
Indicator

Indicator

ADR**Overview**
This indicator displays the **Average Daily Range (ADR)** and **ADR Percentage** in a customizable table on your chart.
While the standard ATR (Average True Range) is a popular metric for volatility, it accounts for price gaps (e.g., overnight moves). **ADR**, on the other hand, strictly measures the average distance between the **High** and **Low** of price bars, completely ignoring gaps.
**Why use ADR instead of ATR?**
* **Day Trading:** For intraday traders (Forex, Crypto, Futures), ADR is often preferred because it calculates the "tradable" range of the day. It answers the question: *"On average, how much does this asset move from High to Low?"*
* **Target Setting:** ADR is excellent for projecting daily highs and lows. If price has already moved 100% of its ADR, the statistical probability of further extension decreases.
* **Pure Volatility:** It filters out the noise of overnight gaps to show pure intraday volatility.
**Calculation Logic**
* **ADR:** Calculated using a Simple Moving Average (SMA) of the `High - Low` range over the specified length.
* Formula: `SMA(High - Low, Length)`
* **ADR%:** Shows the ADR relative to the current price.
* Formula: `(ADR / Current Close) * 100`
**Features**
* **Clean Dashboard:** A minimalist table displays the ADR value and the ADR %.
* **Customizable:** You can change the calculation length (default is 14) and move the table to any corner of the chart (Top/Bottom, Left/Right) to fit your workspace.
**Settings**
* **ADR Length:** The lookback period for the average (Default: 14).
* **Display Position:** Choose where the table appears on your screen. Indicator

Smart Money Structure FilterEnglish Description
Overview
Smart Money Structure Analyzer is a professional trading tool that implements Smart Money Concepts (SMC) to identify key market structure shifts, Break of Structure (BOS), and Change of Character (CHoCH) patterns. This indicator helps traders follow the "smart money" flow by detecting institutional order flow patterns on any timeframe.
Key Features
Swing Point Detection - Identifies significant highs and lows using fractal-based logic
Market Structure Analysis - Classifies market conditions as Uptrend, Downtrend, or Consolidation
Break of Structure (BOS) - Detects when price breaks key structural levels
Change of Character (CHoCH) - Identifies potential trend reversals
Mitigation Levels - Shows potential retracement targets after structure breaks
How It Works
The indicator analyzes price action through several layers:
Swing Detection Algorithm
Uses a configurable swing period (3-21 bars)
Identifies valid swing highs and lows that are confirmed by surrounding price action
Stores the last 20 swings for structure analysis
Structure Determination
Uptrend: Higher Highs (HH) + Higher Lows (HL)
Downtrend: Lower Lows (LL) + Lower Highs (LH)
Consolidation: Mixed structure or ranging market
Break of Structure (BOS) Logic
Bearish BOS: Price closes below the last confirmed Higher Low (HL)
Bullish BOS: Price closes above the last confirmed Lower High (LH)
Change of Character (CHoCH) Logic
Bearish CHoCH: After a bearish BOS, price forms a Lower Low (confirms trend reversal)
Bullish CHoCH: After a bullish BOS, price forms a Higher High (confirms trend reversal)
Mitigation Levels
Calculates potential retracement levels after BOS (typically ±0.2% from broken structure)
Visual Elements
Fractals: Swing points (optional display)
Structure Lines: Last Higher Low (blue) and Last Lower High (purple)
BOS Signals: Triangles marking structure breaks
CHoCH Signals: Circles confirming trend changes
Mitigation Levels: Dotted orange lines for potential retracements
Info Label: Real-time structure status and key levels
Alerts
The indicator provides alerts for:
Break of Structure (BOS) events
Change of Character (CHoCH) confirmations
Settings
Swing Period: Sensitivity of swing detection (default: 3)
Show Fractals: Toggle swing point markers
Show Structure Lines: Display key structure levels
Show Break of Structure: Display BOS signals
Show Change of Character: Display CHoCH signals
Show Mitigation Levels: Display retracement levels
Best Practices
Use on higher timeframes (1H+) for more reliable signals
Combine with volume analysis for confirmation
Wait for CHoCH confirmation before entering trades
Use mitigation levels as potential entry zones
Русское описание
Обзор
Smart Money Structure Analyzer - профессиональный торговый инструмент, реализующий концепции Smart Money (SMC) для определения ключевых сдвигов рыночной структуры, Break of Structure (BOS) и Change of Character (CHoCH). Индикатор помогает отслеживать поток "умных денег", выявляя паттерны институционального ордерного потока на любом таймфрейме.
Ключевые возможности
Определение свингов - Выявляет значимые максимумы и минимумы с помощью фрактальной логики
Анализ структуры рынка - Классифицирует состояние рынка: Восходящий тренд, Нисходящий тренд или Консолидация
Break of Structure (BOS) - Обнаружение пробития ключевых уровней структуры
Change of Character (CHoCH) - Определение потенциальных разворотов тренда
Уровни митигации - Показывает потенциальные цели отката после пробоя структуры
Принцип работы
Индикатор анализирует ценовое действие через несколько уровней:
Алгоритм определения свингов
Использует настраиваемый период свинга (3-21 свечи)
Определяет валидные максимумы и минимумы, подтвержденные окружающим движением цены
Сохраняет последние 20 свингов для анализа структуры
Определение структуры
Восходящий тренд: Higher Highs (HH) + Higher Lows (HL)
Нисходящий тренд: Lower Lows (LL) + Lower Highs (LH)
Консолидация: Смешанная структура или флет
Логика Break of Structure (BOS)
Медвежий BOS: Цена закрывается ниже последнего Higher Low (HL)
Бычий BOS: Цена закрывается выше последнего Lower High (LH)
Логика Change of Character (CHoCH)
Медвежий CHoCH: После медвежьего BOS формируется Lower Low (подтверждает разворот)
Бычий CHoCH: После бычьего BOS формируется Higher High (подтверждает разворот)
Уровни митигации
Расчет потенциальных уровней отката после BOS (обычно ±0.2% от сломанной структуры)
Визуальные элементы
Фракталы: Точки свингов (опционально)
Линии структуры: Последний Higher Low (синий) и последний Lower High (фиолетовый)
Сигналы BOS: Треугольники, отмечающие пробой структуры
Сигналы CHoCH: Круги, подтверждающие изменение тренда
Уровни митигации: Пунктирные оранжевые линии для потенциальных откатов
Инфо-метка: Статус структуры и ключевые уровни в реальном времени
Оповещения
Индикатор предоставляет алерты для:
Событий Break of Structure (BOS)
Подтверждений Change of Character (CHoCH)
Настройки
Период свинга: Чувствительность определения свингов (по умолчанию: 3)
Показывать фракталы: Включение/выключение маркеров свингов
Показывать линии структуры: Отображение ключевых уровней структуры
Показывать Break of Structure: Отображение сигналов BOS
Показывать Change of Character: Отображение сигналов CHoCH
Показывать уровни митигации: Отображение уровней отката
Рекомендации по использованию
Используйте на старших таймфреймах (1H+) для более надежных сигналов
Комбинируйте с анализом объема для подтверждения
Ждите подтверждения CHoCH перед входом в сделку
Используйте уровни митигации как потенциальные зоны входа
Технические особенности
Максимальное количество меток: 500
Работает на любых таймфреймах
Не перерисовывает прошлые сигналы
Эффективно использует ресурсы благодаря ограничению хранения свингов
Индикатор предназначен для трейдеров, работающих с Price Action и концепциями Smart Money, и помогает систематизировать анализ рыночной структуры в соответствии с подходами институциональных трейдеров. Indicator

Indicator

Indicator

Volatility Momentum Suite | Lyro RSVolatility Momentum Suite is an advanced momentum and volatility-based oscillator designed to deliver a complete view of trend strength, acceleration, and market extremes in a single pane. By combining rate-of-change smoothing, adaptive moving averages, standard deviation bands, and momentum acceleration, the indicator provides clear structural insight into trend continuation, exhaustion, and potential reversals.
Built with multiple display and signal modes, it adapts seamlessly to both trend-following and mean-reversion workflows while maintaining strong visual clarity.
Key Features
Momentum Core (Smoothed RoC)
The foundation of the indicator is a Rate of Change (RoC) calculation applied to a selectable price source. This RoC is smoothed using one of 14+ moving average types, including EMA, HMA, KAMA, FRAMA, JMA, and more, allowing precise control over responsiveness versus smoothness.
Standard Deviation Bands
Dynamic deviation bands are calculated around the smoothed momentum line using rolling standard deviation. Two band layers are plotted:
Inner bands for early expansion signals
Outer bands for extreme conditions
These bands adapt automatically to volatility, highlighting momentum expansions, compressions, and exhaustion zones.
Momentum Acceleration
A dedicated acceleration line measures the momentum of momentum itself. This helps identify:
Early trend ignition
Momentum deceleration before reversals
Continuation strength during expansions
Acceleration smoothing and MA type are fully configurable.
Multi-Mode Signal System
Trend Mode
Colors momentum and price according to position above or below the zero line, emphasizing directional bias and trend continuation.
Heikin Ashi Candles Mode
Applies Heikin Ashi logic directly to the momentum series, filtering noise and revealing smoother trend transitions through candle structure.
Extremes Mode
Detects statistically extreme momentum conditions beyond outer deviation bands. Signals are only confirmed after a Heikin Ashi momentum flip, reducing premature reversal entries.
Histogram Mode
Displays the difference between momentum and its signal line as a histogram, useful for divergence spotting and momentum shifts.
Histogram & Signal Line
An EMA signal line is applied to the smoothed momentum, producing a histogram that visually tracks momentum expansion, contraction, and directional changes with adaptive coloring.
Visual Customization
Choose from multiple predefined color palettes:
Classic
Mystic
Accented
Royal
Or define your own bullish and bearish colors.
Additional visual features include:
Momentum-colored candles
Heikin Ashi momentum candles
Band shading and fills
Optional zero-line reference
Integrated Status Table
A built-in table summarizes the real-time state of:
Trend bias
Heikin Ashi momentum direction
Extreme overbought / oversold conditions
This allows rapid decision-making without needing to interpret every visual element manually.
How It Works
Momentum Calculation
Computes Rate of Change on the selected source and smooths it using the chosen moving average.
Volatility Structure
Builds adaptive deviation bands from rolling standard deviation of the momentum line.
Acceleration Layer
Measures the rate of momentum change to detect early shifts in strength.
Mode-Dependent Logic
Trend mode focuses on directional bias
HA mode smooths momentum structure
Extremes mode filters reversals using volatility and HA confirmation
Histogram mode emphasizes momentum differentials
Signals & Alerts
Automatic alerts trigger on:
Momentum crossing above or below zero
Heikin Ashi momentum flips
Confirmed overbought and oversold extremes
Practical Use
Trend Confirmation: Sustained momentum above zero with expanding bands supports trend continuation.
Reversal Identification: Momentum pushing beyond outer bands followed by HA confirmation often precedes reversals.
Momentum Quality: Acceleration helps distinguish strong breakouts from weakening moves.
Multi-Timeframe Alignment: Use higher timeframes for bias and lower timeframes for precision entries using the same indicator.
Customization
Adjust RoC length and smoothing for sensitivity
Tune band length and multipliers for volatility conditions
Select display and signal modes based on strategy type
Fully customize colors to match your chart environment
⚠️ Disclaimer
This indicator is a technical analysis tool and does not guarantee results. It should be used alongside other forms of analysis and proper risk management. The author assumes no responsibility for trading decisions made using this indicator. Indicator
