Aurora KAMA | KAMA Adaptive Trend StrategyAurora KAMA Trend is a trend-following strategy built around Kaufman's Adaptive Moving Average (KAMA) — a moving average that speeds up when the market is trending cleanly and slows down when it's choppy, instead of using a fixed lookback like a standard SMA/EMA.
How it works:
Core signal: KAMA's slope determines direction. The strategy requires KAMA to be persistently rising (for longs) or falling (for shorts) over a configurable number of bars, filtering out minor wiggles near turning points.
Trend filter: An optional long-term SMA only allows longs above it and shorts below it, keeping trades aligned with the dominant trend.
Trade spacing: A cooldown period (in bars) prevents new entries from stacking up too close together during a single volatile move.
Risk management: An optional fixed percentage stop-loss, plus a trailing stop that only arms after a delay period, giving new positions room to develop before being trailed tightly.
Direction control: Trade long-only, short-only, or both.
Visuals:
The KAMA line changes color with trend direction (green/rising, red/falling, gray/flat), with a glowing red/green fill between KAMA and price whose intensity scales with the distance between them.
The trend SMA is rendered as a layered "glow" line — gold when sloping up, amber when sloping down.
Entries are marked with simple triangles; exits with small gray X's.
Tips:
Test on daily bars for liquid, trending instruments (e.g. BTCUSD, ES1!, SPY, QQQ) — KAMA needs a real trend to earn its keep.
Widen the rising/falling persistence inputs if you're getting whipsawed near turning points.
Turn off the SMA filter if you want KAMA to trade purely on its own slope, independent of the broader trend.
The trailing stop's delay is there to stop you from getting stopped out on entry noise — tighten it only if you're trading a slower timeframe.
استراتيجية

SuperTrend Regime Confluence📊 SUPERTREND REGIME CONFLUENCE
A trend-following strategy combining a volatility-adaptive SuperTrend with a
market-regime classifier and a five-factor confluence filter.
The three components aren't stacked arbitrarily. Each one fixes a specific,
well-known weakness of the others, which is why they're combined into a single
tool rather than used separately.
🧩 WHY THESE COMPONENTS ARE COMBINED
A standard SuperTrend has two weaknesses:
- Fixed ATR multiplier: too tight in volatile markets (premature flips), too
wide in quiet trends.
- It flips on every crossover regardless of conditions, causing whipsaws in
sideways markets.
This strategy addresses both:
1️⃣ Regime detection adapts the band.
An ADX plus ATR-ratio classifier labels each bar Trending, Volatile, or Ranging.
In Volatile conditions the multiplier widens (fewer false flips during
expansion); in Ranging conditions it tightens. The band reacts to conditions
instead of using one fixed setting.
2️⃣ The regime filter removes the worst environment.
Entries during the Ranging regime (where trend-following bleeds) can be skipped
entirely.
3️⃣ The confluence score gates each flip.
Rather than trading every SuperTrend flip, each candidate entry is scored 0 to
100. Only flips clearing a minimum score are taken.
Together: the classifier makes the band adaptive, the regime filter removes the
setting where the signal fails, and the score removes the weakest signals. Each
piece compensates for a limitation of the SuperTrend it's built on.
🧮 THE CONFLUENCE SCORE (rules-based, not machine learning)
A plain weighted sum of five factors, each contributing fixed points. It is
fully deterministic and documented in the code. No model, no training, no black
box:
- Volume surge (0 to 20): entry-bar volume vs its moving average
- Displacement (0 to 25): distance price moved beyond the band, in ATR units
- Trend alignment (0 to 20): signal direction vs a longer EMA
- Regime quality (0 to 15): more points in a clean Trending regime
- Prior distance (0 to 20): how far price held from the band before the flip
The sum (capped at 100) must exceed the Min Signal Score input to trigger entry.
🛡️ RISK MANAGEMENT AND SIZING
- Risk-based sizing: each position is sized so a stop-out risks a fixed percent
of equity.
- Capped at 90% of equity: no leverage, always a margin buffer (no liquidations).
- Selectable stops (ATR, Percent, or SuperTrend flip) and take-profits
(Risk:Reward, Percent, or None).
- Optional EMA filter, volume filter, entry cooldown, and long/short toggles.
- Default risk sits within TradingView's suggested 5 to 10 percent band. Lower it
for a more conservative profile.
⚙️ DEFAULT SETTINGS (as shown)
BTCUSDT, 4H, 6% risk per trade.
ATR length 10, base multiplier 3, regime lookback 40, ADX 14, ADX threshold 20.
Trend EMA 50, min signal score 65, ATR stop 6x, risk:reward 2.5, cooldown 5 bars.
Commission 0.06%, slippage 2 ticks.
Backtest shown: Jan 2020 to Sep 2026. Return +824%, max drawdown 24.55%, profit
factor 1.80, win rate 46.4%, 168 trades.
⚠️ NOTES ON USE
This is a trend-following system, so it performs best on instruments that trend
and expand in volatility. Expect drawdowns and losing streaks during extended
sideways periods, which is inherent to the approach.
Results shown are a historical backtest on a single instrument and do not
indicate future performance. Test on your own instrument, timeframe, and cost
assumptions before use. This is not financial advice. استراتيجية

XeL OnlineRecursionXeL OnlineRecursion is a Pine Script library for online and streaming statistical estimation on continuous numerical and financial data.
The library is designed around recursive statistical populations whose retained state is updated observation by observation. Most recursive components use constant retained memory and O(1) work per observation, making them suitable for indicators and models that require adaptive statistics without repeatedly recalculating an entire historical window.
OnlineRecursion is statistical infrastructure rather than a trading signal, strategy, or standalone indicator. It is intended to be imported and composed by other Pine scripts.
CORE DESIGN
The library separates four conceptual layers:
Streaming and population mechanics.
Generic retained statistical state.
Derived statistical interpretations.
Finance-oriented evidence and recursive weighting models.
A central design principle is that retained state represents a statistical population. Statistics that can be derived from an existing population are computed from that state rather than introducing unnecessary independent recursions.
STATISTICAL TOOLS
The library includes:
First-order recursive filtering and recursive extrema estimation.
Sample-and-hold, settlement, accumulation, and exact rolling-sum tools.
Fixed-memory P2 cumulative quantile estimation.
Adaptive quantile and expectile estimation.
Adaptive conditional tail-mean estimation.
Adaptive Huber location estimation.
Adaptive MAD and Gaussian-equivalent robust scale.
Recursive univariate moments through fourth order.
Variance, sigma, skewness, kurtosis, and effective sample size.
Recursive covariance and correlation.
Recursive linear-regression views including beta, intercept, and R-squared.
Recursive Heavy-Tail distribution estimation.
Relative-return, relative-projection, and additive-moment transforms.
Recursive decay, anchored, participation, and composite-alpha constructors.
Market-participation models.
Market-dispersion models.
POPULATION SEMANTICS
OnlineRecursion treats population geometry as part of the mathematical definition of an estimator.
Depending on the component, the represented population may be:
Cumulative.
Finite rolling.
Exponentially weighted.
Anchored.
Conditional.
Observation-clock.
Event-clock.
These population interpretations are not assumed to be interchangeable.
Initialization, missing observations, reset behavior, recursive coefficients, and population boundaries are therefore explicit estimator semantics rather than incidental implementation details.
Where defined as a recursive feedback coefficient, alpha generally follows a convention. Exact initialization behavior is defined by each estimator because creation of a new statistical population is not always equivalent to an ordinary recursive update.
FINANCE-ORIENTED EVIDENCE
The library includes reusable tools for constructing adaptive market evidence, including time-decay weighting, participation-based weighting, relative-return transformations, and recursive market-dispersion models.
Available dispersion interpretations include:
Mean displacement.
Realized movement.
Drawdown.
Upthrust.
Directional stress peaks.
Average directional stress.
Participation models allow recursive weighting to respond to different market-population relationships rather than treating every observation as equally informative.
The chart accompanying this publication demonstrates library mechanics on NQ continuous futures using hourly observations and Open Interest participation.
The upper and lower dispersion plots, recursive mean, and lower-pane statistic illustrate one possible composition of exported library functionality.
These plotted outputs are demonstrations of statistical mechanics. They are not trading signals or recommended parameter settings.
HEAVY-TAIL MODEL
The Heavy-Tail estimator combines generic recursive moment state with additional model-specific interpretations such as Student-t degrees of freedom, t-distribution scale, and absolute-innovation scale.
HeavyTail is one statistical interpretation built on the generic moment backbone. The library does not assume that this model is appropriate for every market, instrument, or application.
USAGE
Import the library from another Pine Script and use the exported state types, methods, enumerations, or functional interfaces required by the application.
Stateful interfaces provide explicit control over retained state and update timing. Functional interfaces are also provided where convenient for series-oriented use.
Some estimator compositions intentionally require caller-controlled timing.
For example, when one adaptive estimator supplies a threshold, center, or scale to another estimator, the caller may need to use the previously retained value to avoid unintended same-observation feedback.
MISSING DATA AND CALLER POLICY
Market-data-dependent functions can return na when required information is unavailable or when the requested statistical relationship is not currently defined.
Fallback behavior intentionally remains with the importing application when the library cannot define the relationship mathematically.
This prevents unavailable data from being silently converted into a different statistical assumption.
LIMITATIONS
OnlineRecursion does not provide:
Entry or exit logic.
Trading recommendations.
Profitability claims.
A guarantee that any estimator is appropriate for a particular market.
Recursive estimators depend on their coefficient policy, population definition, and initialization semantics.
A recursive population is not automatically equivalent to a finite rolling-window population merely because their outputs may appear similar.
Users should therefore select estimators and coefficient models according to their statistical meaning rather than treating all recursive parameters as interchangeable smoothing controls.
DESIGN INTENT
OnlineRecursion is intended to provide reusable statistical infrastructure from which higher-level models can be composed.
The architecture follows this separation:
Foundational state represents the retained population.
Derived statistics interpret that population.
Models add model-specific assumptions.
Applications decide how statistical evidence is used.
This separation is intended to keep generic statistical machinery independent from application-specific trading logic.
VERSION
This first TradingView library publication corresponds to XeL OnlineRecursion development release 1.0.0-rc.2 , dated 2026-09-04.
TradingView library publication revisions such as /1 are independent of the project's development release numbering. مكتبة

Liquidity Wave IndexLiquidity Wave Index is a momentum, pressure and divergence oscillator designed to combine three related forms of market information in one pane:
* OHLCV-based directional pressure
* An adaptive market-cycle oscillator
* Price-versus-oscillator divergence
The purpose of combining these components is to separate directional pressure from cycle timing. The Liquidity Pressure histogram shows whether candle structure and reported volume are contributing more positively or negatively, while the Cycle Engine measures normalized price displacement and momentum rotation. Divergence analysis then compares confirmed price swings with confirmed oscillator swings to identify disagreement between price structure and momentum.
The components can be used independently or combined through optional confirmation filters.
LIQUIDITY PRESSURE
Liquidity Pressure is an OHLCV-derived analytical measure.
For each candle, directional pressure begins with the candle body relative to the full candle range:
(close - open) / (high - low)
This value is multiplied by reported volume, smoothed with an EMA, and then normalized by smoothed volume.
The Scale input changes the displayed magnitude without changing the underlying directional relationship.
Positive values indicate that the recent combination of candle direction, candle range and reported volume is weighted toward positive pressure.
Negative values indicate the opposite.
This is not true bid/ask delta, order-book data or exchange trade-direction data. It is an OHLCV-based approximation derived from chart data, and volume characteristics may differ between symbols, exchanges and data providers.
ADAPTIVE CYCLE ENGINE
The Cycle Engine is based on an adaptive WaveTrend-style framework.
The selected price source, HLC3 by default, is compared with an adaptive EMA baseline. Price displacement from that baseline is normalized using an adaptively smoothed measure of absolute deviation.
The resulting normalized oscillator is then adaptively smoothed into:
Cycle Line
Signal Line
The adaptive smoothing rate changes according to recent price movement rather than remaining completely fixed.
Additional EMA smoothing is applied through the Ribbon Smooth setting.
The ribbon between the two lines visually represents the current relationship between the Cycle Line and Signal Line.
BULL AND BEAR SIGNALS
A Bull signal occurs when the Cycle Line crosses above the Signal Line.
A Bear signal occurs when the Cycle Line crosses below the Signal Line.
Signals are only accepted on confirmed bars. A crossover that appears temporarily while the current candle is still forming will therefore not become a confirmed signal unless the crossover remains present when the candle closes.
The Threshold Filter and Liquidity Pressure Confirmation settings can optionally make these signals more selective.
THRESHOLD FILTER
With the Threshold Filter enabled:
Bull signals require the Cycle Line to be below the negative threshold when the bullish cross occurs.
Bear signals require the Cycle Line to be above the positive threshold when the bearish cross occurs.
The threshold does not represent probability, expected performance or a statistically defined overbought/oversold level. It is a user-controlled signal filter.
LIQUIDITY PRESSURE CONFIRMATION
Liquidity Pressure Confirmation optionally connects the pressure module directly to the Bull and Bear Cycle signals.
Three modes are available:
Off
Liquidity Pressure does not affect Bull or Bear signals.
This is the default setting.
Same Direction
A Bull Cycle cross is only accepted when Liquidity Pressure is above zero.
A Bear Cycle cross is only accepted when Liquidity Pressure is below zero.
This mode requires pressure to agree with the direction of the Cycle signal.
Zero Cross
A Bull Cycle cross is only accepted when Liquidity Pressure crosses above zero on the same confirmed candle.
A Bear Cycle cross is only accepted when Liquidity Pressure crosses below zero on the same confirmed candle.
This is the most restrictive mode because both the Cycle cross and Liquidity Pressure zero-line cross must occur together.
Liquidity Pressure Confirmation is a directional filter. It does not represent probability, expected accuracy or guaranteed signal quality.
DIVERGENCES
The indicator detects divergence by comparing confirmed price pivots with nearby confirmed Cycle Line pivots.
Regular bullish divergence occurs when price forms a lower low while the matched oscillator structure forms a higher low.
Regular bearish divergence occurs when price forms a higher high while the matched oscillator structure forms a lower high.
Hidden divergence can optionally be enabled.
Hidden bullish divergence compares a higher price low with a lower oscillator low.
Hidden bearish divergence compares a lower price high with a higher oscillator high.
Regular and hidden divergences are calculated independently so enabling hidden divergences does not replace the regular divergence calculation.
Regular Bull, Regular Bear, Hidden Bull and Hidden Bear divergence colors can be configured independently.
PIVOT MATCHING
Price pivots and oscillator pivots do not always occur on exactly the same candle.
The Max Price/Osc Pivot Gap setting determines how far apart a confirmed price pivot and oscillator pivot may be while still being treated as a matched swing.
The divergence engine stores several recent matched pivot pairs rather than comparing only the immediately previous swing. This allows the detector to identify divergence structures that may span an intermediate pivot.
Min Bars Between Price Pivots and Max Bars Between Price Pivots control the permitted distance between the two price swings being compared.
DIVERGENCE PRESETS
Aggressive
Uses shorter pivots and allows a larger price-to-oscillator pivot gap. This generally produces more divergence detections and reacts more quickly.
Balanced
The default profile and intended general-purpose setting.
Conservative
Uses stronger pivots, requires wider swing separation and allows a smaller price-to-oscillator matching gap. This generally produces fewer but more structurally developed divergence detections.
Custom
Uses the manually configured Pivot Length, Min Bars, Max Bars and Max Price/Osc Pivot Gap values.
ZERO-LINE CONTEXT
Require Zero-Line Context is an optional divergence filter.
When enabled:
Bullish divergences require both oscillator pivot values to be at or below zero.
Bearish divergences require both oscillator pivot values to be at or above zero.
This can be used to restrict divergence detection to the corresponding side of the oscillator.
IMPORTANT PIVOT CONFIRMATION BEHAVIOUR
Divergence detection uses confirmed pivots.
A pivot cannot be known when the actual swing high or swing low first occurs. It becomes confirmed only after the required number of bars to the right of that swing have completed.
For example, with Pivot Length 4, a pivot is confirmed four bars after the historical pivot candle.
Divergence lines are drawn between the actual historical pivot locations after confirmation.
Their historical placement therefore does not mean the divergence was available on the earlier pivot candle.
Any divergence alert occurs when the divergence becomes confirmed, not when the earlier pivot originally formed.
This confirmation delay is an inherent part of pivot-based divergence detection.
TARGET / STOP STATISTICS
The tables provide simplified historical Target/Stop outcome statistics for confirmed Cycle signals and confirmed divergence events.
They are not TradingView Strategy Tester results and do not simulate actual orders.
For a confirmed Bull Cycle signal:
The confirmation-bar close is used as the reference price.
The Target is placed above that reference price according to the Target % input.
The Stop is placed below the reference price according to the Stop % input.
For a confirmed Bear signal, the directions are reversed.
Divergence outcomes use the same principle with the separate Div Target % and Div Stop % settings.
Outcome checking begins on the bar after the signal or divergence confirmation.
Price movement occurring earlier on the confirmation candle is therefore not used to determine the result.
Every confirmed event is tracked independently. A new event does not overwrite an unresolved previous event.
If both the Target and Stop are touched during the same candle, the Stop is counted first.
This is a conservative assumption because the script does not have access to the exact intrabar price sequence from standard OHLC bars.
T represents Target reached.
S represents Stop reached.
The percentage shown beside these counts represents:
Targets / (Targets + Stops) x 100
Only resolved events are included in that percentage. Events that have not yet reached either level remain unresolved and are not counted as either Target or Stop.
STATISTICS LIMITATIONS
The Target/Stop statistics are simplified historical measurements.
They do not model:
Commissions
Spread
Slippage
Liquidity
Position sizing
Order execution
Market impact
Partial fills
Funding costs
Intrabar execution sequence
They should therefore not be interpreted as strategy profitability, expected win probability or future performance.
Historical outcomes do not imply future results.
ALERTS
Alerts are available for:
Bullish Cycle Cross
Bearish Cycle Cross
Bullish Divergence
Bearish Divergence
Liquidity Pressure crossing above zero
Liquidity Pressure crossing below zero
Cycle and Liquidity Pressure alerts use confirmed bars.
When Liquidity Pressure Confirmation is enabled, Bull and Bear Cycle alerts follow the filtered Bull/Bear signal conditions.
Divergence alerts depend on confirmed pivots and therefore include the pivot confirmation delay described above.
HOW TO USE
A practical workflow is to use the Cycle Engine for timing, Liquidity Pressure for directional context and divergence for potential disagreement between price and momentum.
Example bullish workflow:
Look for improving or positive Liquidity Pressure.
Watch for bullish regular or hidden divergence.
Wait for a confirmed bullish Cycle Line cross.
Optionally enable Same Direction Liquidity Pressure Confirmation if Bull signals should only occur while pressure is positive.
Use Zero Cross mode if a Bull signal should only occur when both the Cycle cross and Liquidity Pressure transition above zero happen together.
The optional Threshold Filter can further restrict Bull crosses to deeper negative oscillator conditions.
Example bearish workflow:
Look for deteriorating or negative Liquidity Pressure.
Watch for bearish regular or hidden divergence.
Wait for a confirmed bearish Cycle Line cross.
Optionally enable Same Direction Liquidity Pressure Confirmation if Bear signals should only occur while pressure is negative.
Use Zero Cross mode if a Bear signal should only occur when both the Cycle cross and Liquidity Pressure transition below zero happen together.
The optional Threshold Filter can further restrict Bear crosses to higher positive oscillator conditions.
These components do not need to align on every setup unless the user deliberately enables the available confirmation filters.
TIMEFRAMES
The indicator can be used on different chart timeframes, but the default settings are primarily intended as a general-purpose starting point around the 15-minute to 1-hour range.
15-minute charts provide a relatively responsive balance between Cycle signals, Liquidity Pressure and swing structure.
1-hour charts generally produce slower and cleaner pivot structures.
Lower timeframes such as 1-minute to 5-minute charts usually contain considerably more market noise and may require different divergence or smoothing settings.
Higher timeframes produce fewer signals and substantially longer pivot-confirmation delays.
IMPORTANT SETTINGS
Smoothing Length
Controls smoothing of the Liquidity Pressure calculation. Higher values produce a smoother and slower histogram.
Scale
Changes the displayed magnitude of Liquidity Pressure.
Base Length
Controls the adaptive baseline used by the Cycle Engine.
Slow Length
Controls smoothing of the primary Cycle calculation.
Adaptation Lookback
Controls the lookback used to adjust adaptive EMA responsiveness.
Fast Lag / Slow Lag
Control the adaptive response characteristics of the Cycle Line and Signal Line.
Ribbon Smooth
Adds final EMA smoothing to the displayed Cycle lines.
Threshold Filter
Optionally requires Cycle crosses to occur beyond the selected positive or negative threshold.
Liquidity Pressure Confirmation
Determines whether Liquidity Pressure is ignored, must already agree with signal direction, or must cross zero on the same candle as the Cycle signal.
Pivot Length
Controls pivot confirmation strength. Larger values require more bars to confirm a swing and therefore increase confirmation delay.
Max Price/Osc Pivot Gap
Controls how far apart price and oscillator pivots may occur while still being matched.
Regular Bull / Regular Bear Color
Control the colors of regular divergence lines.
Hidden Bull / Hidden Bear Color
Control the colors of hidden divergence lines.
Target % / Stop %
Define the virtual outcome levels used by the Cycle signal statistics.
Div Target % / Div Stop %
Define the virtual outcome levels used by the divergence statistics.
LIMITATIONS
Liquidity Pressure is calculated from OHLCV data and is not true order-flow or bid/ask delta.
Volume availability and quality vary between markets and data providers.
Adaptive smoothing introduces some lag.
Pivot-based divergences require future bars for confirmation.
Divergence lines are drawn back to the historical pivot positions only after those pivots have been confirmed.
Divergence does not necessarily produce a reversal.
Current market conditions can differ substantially from historical conditions.
Target/Stop tables are simplified analytical statistics and are not execution-based backtests.
Same Direction and Zero Cross confirmation modes reduce the number of Cycle signals and can cause signals visible with confirmation Off to disappear.
The indicator should be used as an analytical tool rather than as a prediction or guarantee of future market direction.
CODE ORIGIN AND ATTRIBUTION
The adaptive cycle foundation of Liquidity Wave Index was developed from the open-source Wave Oscillator by Claye Weight, used under the Mozilla Public License 2.0.
Liquidity Wave Index substantially extends that foundation with an OHLCV-based normalized pressure module, optional Liquidity Pressure signal confirmation, confirmed-bar signal handling, rewritten pivot-based divergence detection, price/oscillator pivot matching, independent regular and hidden divergence processing, configurable divergence presets, separate divergence colors, independent Target/Stop outcome tracking and configurable statistics tables.
The complete source code of this publication is provided openly in accordance with the applicable open-source licence.
مؤشر

Adaptive T3 Hull [BackQuant]Adaptive T3 Hull
Overview
Adaptive T3 Hull is a configurable trend-following overlay that combines the lag-compensation structure of a Hull-style moving average with T3 smoothing and several optional mechanisms designed specifically to control overshoot, hooks and oscillating tails.
A conventional Hull construction gains responsiveness by comparing a faster and slower smoother, extrapolating their difference, and then smoothing the result again. This can produce a very responsive trend estimate, but the same lag compensation responsible for that responsiveness can also create exaggerated curvature around sharp reversals.
Adaptive T3 Hull makes that trade-off directly controllable.
The indicator replaces the traditional weighted-moving-average Hull stages with T3 smoothers and expands the basic Hull architecture with:
Adjustable fast/slow length relationships.
Adjustable Hull lag compensation.
Configurable final smoothing geometry.
Curvature-sensitive tail damping.
Optional asymmetric damping around turns.
An adaptive T3 volume factor.
An optional ATR-based velocity limiter.
Optional final lag compensation.
Trend-strength-dependent ribbon intensity.
Tail and curvature diagnostics in the Data Window.
The result is not intended to reproduce a standard HMA exactly. It is a generalized Hull-style framework in which the user can explicitly control the balance between responsiveness, smoothness and overshoot.
Core idea
Most trend smoothers face the same fundamental compromise:
More smoothing reduces noise but increases lag.
More lag compensation improves responsiveness but can create overshoot.
The Hull concept addresses lag by comparing a fast smoother with a slower smoother and projecting the difference forward.
A generalized form can be written as:
Hull Raw = Fast + Compensation × (Fast - Slow)
If Compensation is zero:
Hull Raw = Fast
No additional lag compensation is applied.
If Compensation is one:
Hull Raw = 2 × Fast - Slow
This reproduces the familiar compensation structure used in the standard Hull Moving Average.
Values between zero and one provide partial compensation.
Adaptive T3 Hull defaults to a substantially smaller compensation value. This is deliberate. It reduces the tendency for the projected line to extend beyond the fast smoother during sharp changes in direction.
The remaining responsiveness can then be controlled using the fast-length ratio, T3 characteristics and optional final generalization rather than relying entirely on aggressive Hull extrapolation.
Processing chain
The complete indicator can be understood as the following sequence:
Select the source and main Hull Length.
Derive a fast T3 length from the Fast Length Ratio.
Derive a final smoothing length from a configurable power-law relationship.
Calculate fast and slow T3 smoothers.
Measure velocity and curvature of the fast T3.
Normalize curvature using ATR.
Optionally reduce the active T3 Volume Factor during high curvature.
Recalculate the fast and slow T3 legs with the adaptive factor.
Measure the active curvature state.
Optionally reduce Hull compensation when curvature increases.
Construct the compensated fast-minus-slow T3 Hull.
Smooth that result through another T3 stage.
Optionally apply a final generalized lag-compensation stage.
Optionally limit extreme one-bar movement using ATR.
Determine trend from the final line slope.
Build a smoothed one-bar-offset ribbon around the result.
Each stage affects a different part of the lag-versus-overshoot problem.
T3 smoothing
The T3 is a multi-stage recursive smoother constructed from a sequence of exponential moving averages.
The script calculates six EMA stages:
E1 = EMA(Source)
E2 = EMA(E1)
E3 = EMA(E2)
E4 = EMA(E3)
E5 = EMA(E4)
E6 = EMA(E5)
Those stages are then combined using coefficients derived from the T3 Volume Factor.
The final T3 has the general form:
T3 = C1×E6 + C2×E5 + C3×E4 + C4×E3
where C1 through C4 change with the Volume Factor.
This construction allows T3 smoothing to maintain substantial smoothness while using coefficient-based compensation to reduce some of the lag created by repeated EMA filtering.
Important: T3 Volume Factor does not use trading volume
Despite its name, the T3 Volume Factor is not calculated from market volume.
It is a coefficient controlling the internal T3 response.
Changing it does not incorporate:
Exchange volume.
Volume profile.
OBV.
Money flow.
It changes how aggressively the internal EMA stages are combined.
Higher values generally increase compensation and responsiveness, but can also increase overshoot.
Lower values generally produce a more restrained and smoother response.
This relationship is particularly important in this indicator because Hull compensation and T3 compensation can interact.
An aggressive T3 followed by aggressive Hull extrapolation can produce substantially more tail behaviour than either technique alone.
Why combine T3 and Hull logic?
Hull-style smoothing and T3 smoothing approach lag reduction differently.
The Hull architecture uses:
A fast smoother.
A slow smoother.
The difference between them.
A final smoothing stage.
T3 uses:
Multiple recursive EMA stages.
A coefficient-controlled combination of those stages.
Adaptive T3 Hull combines both ideas.
Instead of:
Fast WMA.
Slow WMA.
Final WMA.
the indicator uses:
Fast T3.
Slow T3.
Compensated difference.
Final T3.
This produces a smoother underlying structure while retaining the ability to compensate for lag.
However, combining two lag-reduction mechanisms also makes overshoot control more important. Much of the indicator is therefore devoted to regulating that compensation dynamically.
Hull Length
Hull Length establishes the main smoothing horizon.
It is used to derive:
The slow T3 length.
The fast T3 length.
The final smoothing length.
Lower values:
React more quickly.
Track shorter trend changes.
Increase sensitivity to local curvature.
Can generate more frequent directional flips.
Higher values:
Produce broader trend estimates.
Reduce short-term variation.
Increase response delay.
Generally produce more persistent regimes.
Unlike a standard HMA, the relationship between these three smoothing stages is not fixed.
Fast Length Ratio
The fast T3 length is calculated as:
Fast Length = Hull Length × Fast Length Ratio
with the result rounded to a valid integer.
In a conventional Hull structure, the fast stage normally uses approximately half the main length.
Therefore:
Fast Length Ratio = 0.50
reproduces the familiar half-length relationship.
The default configuration uses a larger ratio, making the fast leg closer in length to the slow leg.
This matters because the difference:
Fast T3 - Slow T3
is the quantity used for lag compensation.
If the fast and slow stages are very different:
Their separation can become larger.
Hull compensation becomes stronger.
The resulting line can react faster.
Overshoot potential increases.
If their lengths are closer:
Their separation becomes smaller.
The compensation term becomes more restrained.
The final line generally becomes smoother.
Fast Length Ratio is therefore another direct control over the aggressiveness of the Hull projection.
Hull Compensation
Hull Compensation controls how much of the fast-versus-slow difference is added back to the fast T3.
The underlying formula is:
Hull Raw = Fast T3 + Effective Compensation × (Fast T3 - Slow T3)
Before adaptive damping is applied, Effective Compensation begins from the Hull Compensation input.
Compensation = 0
The raw line becomes the fast T3 itself.
No Hull-style extrapolation occurs.
Compensation = 1
The calculation becomes:
2 × Fast T3 - Slow T3
which matches the standard Hull lag-compensation form.
Compensation between 0 and 1
Only part of the fast-slow separation is extrapolated.
This creates a middle ground between:
Pure fast smoothing.
Full Hull compensation.
Compensation above 1
The difference is extrapolated even more aggressively than a conventional Hull construction.
This can create a highly responsive line, but it also increases the likelihood of:
Overshoot.
Hooks.
Large tails after sharp turns.
The default is intentionally conservative relative to a standard Hull.
What are Hull tails?
Hull-style moving averages can develop a distinctive oscillating or hooked appearance around strong reversals.
This occurs because the lag-compensation term is effectively extrapolating the difference between two smoothers.
Imagine the fast smoother accelerating upward while the slow smoother is still catching up.
The difference:
Fast - Slow
becomes positive.
Adding that difference to the fast smoother projects the result even further upward.
When price abruptly reverses, the fast smoother begins turning first while the slow smoother remains elevated.
The compensation term can then change rapidly and cause the completed Hull to:
Extend beyond the fast line.
Hook sharply.
Reverse with excessive curvature.
This is not necessarily an error in the Hull formula. It is a consequence of aggressive lag compensation.
Adaptive T3 Hull includes several independent tools for reducing this behaviour.
Final Hull smoothing
After the fast and slow T3 legs are combined, the raw Hull is smoothed again.
The final smoothing length is calculated from:
Length^Hull Smoothing Exponent × Final Smoothing Multiplier
This generalizes the standard Hull square-root stage.
A conventional HMA normally uses approximately:
sqrt(Length)
which is equivalent to:
Length^0.50
before rounding.
Hull Smoothing Exponent
The Hull Smoothing Exponent controls how strongly the final smoothing length grows as the main Hull Length increases.
Exponent = 0.50
Reproduces the square-root relationship used in the conventional Hull construction.
Exponent below 0.50
Produces a shorter final smoothing stage, particularly at larger main lengths.
This generally:
Increases responsiveness.
Allows more of the compensated movement through.
Exponent above 0.50
Creates a longer final smoothing stage.
This generally:
Reduces local variation.
Smooths more aggressively.
Adds response delay.
The script allows this relationship to be generalized instead of forcing the standard square-root rule.
Final Smoothing
Final Smoothing applies an additional multiplier to the derived root length:
Final Length = Length^Exponent × Root Multiplier
This gives a second level of control over the final stage without changing the underlying power-law relationship.
Higher values:
Increase final smoothing.
Reduce local hooks.
Slow the line.
Lower values:
Decrease final smoothing.
Increase responsiveness.
Allow more short-term curvature through.
The Smoothing Exponent controls how smoothing scales with Hull Length.
The Final Smoothing multiplier controls the overall magnitude of that final stage.
Curvature measurement
Adaptive tail damping requires a way to determine when the fast T3 is changing direction unusually quickly.
The indicator first calculates velocity:
Velocity = Fast T3 - Previous Fast T3
Previous velocity is:
Previous Velocity = Previous Fast T3 - Fast T3 two bars ago
Curvature is then approximated as the absolute change in velocity:
Curvature = |Velocity - Previous Velocity|
This is a discrete second-difference concept.
Velocity describes how quickly the smoother is moving.
Curvature describes how quickly that velocity itself is changing.
For example:
A steadily rising line can have positive velocity but low curvature.
A line suddenly flattening after a strong rise can have high curvature.
A sharp reversal can produce very high curvature.
This makes curvature particularly useful for detecting the conditions in which Hull overshoot tends to appear.
ATR normalization
Raw curvature is not directly comparable across instruments.
A $10 curvature movement is enormous for one market and negligible for another.
The script therefore normalizes curvature using ATR:
Normalized Curvature = Curvature / ATR
The result is capped at 1.
This creates an adaptive pressure measure between approximately:
0 = little curvature relative to recent range.
1 = very large curvature relative to recent range.
ATR is calculated using the Damping Normalization length.
This normalized curvature drives several optional adaptive mechanisms.
Damping Normalization
Damping Normalization controls the ATR period used when converting curvature into a relative value.
Short values:
Make the normalization respond rapidly to current volatility.
Allow damping pressure to change quickly.
Longer values:
Create a more stable volatility baseline.
Reduce rapid changes in normalized curvature.
This setting does not smooth the final T3 Hull directly.
It changes how the adaptive systems interpret curvature.
Adaptive Tail Damping
Adaptive Tail Damping dynamically reduces Hull Compensation when curvature becomes large.
The process can be summarized as:
Effective Compensation = Hull Compensation × (1 - Damping Pressure × Damping Strength)
When curvature is low:
Damping Pressure approaches zero.
Effective Compensation remains close to the selected Hull Compensation.
When curvature becomes large:
Damping Pressure increases.
Effective Compensation is reduced.
This means the indicator deliberately removes some of its lag compensation precisely when the fast T3 is bending sharply.
Why reduce compensation during curvature?
Hull compensation is most useful when the fast and slow smoothers are moving consistently in the same directional structure.
During a smooth trend:
The fast line leads the slow line.
Their separation can be used to reduce lag.
During a sharp turn:
The fast line may reverse before the slow line.
Their separation can become a poor estimate of useful forward compensation.
Extrapolating the full difference can create overshoot.
Adaptive damping therefore treats high curvature as a reason to trust the Hull extrapolation less.
Damping Strength
Damping Strength determines how much curvature can reduce Hull compensation.
At zero:
Curvature has no effect on compensation.
As the value increases:
High-curvature events remove progressively more compensation.
The line becomes more restrained around sharp turns.
At a Damping Strength of 1 and maximum normalized curvature, compensation can theoretically be reduced all the way toward zero.
This does not stop the underlying T3 from moving.
It removes the additional Hull extrapolation.
Asymmetric Turn Damping
By default, curvature damping can apply whenever the fast T3 experiences significant curvature.
Asymmetric Turn Damping makes the condition more selective.
When enabled, damping pressure is only applied when the current velocity is moving against the previous directional pace.
Conceptually:
A previously rising fast T3 is damped when its upward velocity begins weakening or reversing.
A previously falling fast T3 is damped when its downward velocity begins weakening or reversing.
This allows strong acceleration in the existing direction to retain more compensation while focusing the damping mechanism around deceleration and turning behaviour.
The purpose is to distinguish:
Curvature caused by trend acceleration.
Curvature caused by trend exhaustion or reversal.
This can preserve responsiveness during strong continuation while still suppressing tails around turns.
Adaptive T3 Volume Factor
Adaptive T3 Volume Factor provides a second curvature-sensitive damping mechanism.
Instead of changing the Hull compensation, this feature changes the internal T3 coefficient itself.
The active factor is approximately:
Active VF = Base VF × (1 - Normalized Curvature × VF Damping Strength)
subject to the configured minimum.
When curvature is low:
Active VF remains near the selected T3 Volume Factor.
When curvature rises:
Active VF is reduced.
The T3 becomes less aggressively compensated.
This attacks overshoot earlier in the processing chain.
Hull damping versus VF damping
The two mechanisms affect different stages.
Adaptive Tail Damping
changes how much:
Fast T3 - Slow T3
is extrapolated.
Adaptive T3 Volume Factor
changes how the T3 smoothers themselves are constructed.
Using both means curvature can reduce:
The aggressiveness of each T3 leg.
The aggressiveness of the Hull compensation between those legs.
This can strongly suppress tails but may also reduce responsiveness.
The controls are therefore optional and independently adjustable.
VF Damping Strength
VF Damping Strength controls how strongly curvature reduces the T3 Volume Factor.
Higher values:
Produce larger reductions during sharp curvature.
Increase smoothing around turns.
Can reduce T3 overshoot more aggressively.
Lower values:
Keep Active VF closer to the base setting.
Preserve more of the original T3 response.
Minimum VF
Minimum VF prevents the adaptive mechanism from reducing the active coefficient indefinitely.
It defines the lower bound used when Adaptive T3 Volume Factor is active.
This keeps the filter within a controlled response range during extreme curvature.
If the selected base Volume Factor is already below the requested minimum, the script does not force it upward above the base value.
Generalize Final Hull
Generalize Final Hull adds another optional lag-compensation stage after the main T3 Hull has already been completed.
A second smoothed version of the completed Hull is calculated.
The final target then becomes:
Hull Target = Hull Base + Generalization × (Hull Base - Second Hull)
This uses the same broad idea as Hull compensation:
Compare a faster estimate with a slower version.
Add part of their difference back to the faster estimate.
At zero Generalization:
The stage has no effect.
As Generalization increases:
The final result becomes more responsive.
Lag is reduced further.
Overshoot potential increases.
This option exists because the earlier tail controls allow the user to reduce aggressive compensation in the main Hull construction and, if desired, reintroduce a smaller amount of controlled responsiveness at the end.
Generalization
Generalization controls the amount of final compensation.
Lower values create subtle lag reduction.
Higher values increasingly extrapolate the difference between the first and second completed Hull smoothers.
This feature should be considered one of the more aggressive responsiveness controls in the indicator.
If the objective is maximum tail suppression, it can be left disabled.
Velocity Limiter
The Velocity Limiter addresses a different problem.
Curvature damping changes how the line is calculated.
The Velocity Limiter places a direct cap on how far the completed line is allowed to move in one bar.
The maximum permitted movement is:
Maximum Step = ATR × Max ATR / Bar
The desired change is:
Delta = Hull Target - Previous T3 Hull
That change is clamped between:
-Maximum Step
+Maximum Step
The final T3 Hull then advances by only the permitted amount.
Why use a velocity limiter?
Occasionally, a large price shock or a combination of aggressive settings can cause the completed Hull target to jump sharply.
The limiter acts as a final mechanical speed limit.
It can reduce:
Single-bar jumps.
Extreme hooks.
Shock-driven movement.
However, this comes with a clear trade-off.
If the market genuinely reprices very quickly, the limiter deliberately prevents the trend line from following the full move immediately.
It therefore introduces controlled lag.
Max ATR / Bar
This setting determines the maximum permitted single-bar movement in ATR units.
For example:
0.35 allows the completed line to move by no more than 0.35 ATR in one bar.
Lower values:
Create stronger movement suppression.
Produce smoother transitions.
Can significantly delay response to genuine breaks.
Higher values:
Interfere less often.
Allow larger legitimate moves.
The limiter is disabled by default because it is a strong constraint.
How the tail controls work together
The script provides several different ways to reduce tail behaviour because overshoot can originate at multiple stages.
Fast Length Ratio
Reduces fast-versus-slow separation.
Hull Compensation
Directly controls extrapolation of that separation.
Final Smoothing
Smooths the compensated output more heavily.
Adaptive Tail Damping
Reduces Hull compensation during curvature.
Asymmetric Turn Damping
Restricts that damping mainly to deceleration and turning behaviour.
Adaptive T3 Volume Factor
Makes the underlying T3 calculations more conservative during curvature.
Velocity Limiter
Caps the final single-bar movement.
Generalization
Moves in the opposite direction by optionally adding some final lag compensation back.
These controls are intentionally modular.
A user does not need to enable all of them.
Default design philosophy
The default settings intentionally do not reproduce a standard Hull Moving Average.
A standard Hull-like configuration would approximately use:
Fast Length Ratio near 0.50.
Hull Compensation near 1.00.
Hull Smoothing Exponent near 0.50.
Final Smoothing near 1.00.
The default Adaptive T3 Hull uses a much more restrained compensation structure.
This shifts the design away from maximum lag cancellation and toward smoother trend tracking with reduced tail behaviour.
The advanced controls then allow users to progressively move the model toward either:
More responsiveness.
More stability.
Trend determination
Trend direction is determined directly from the slope of the completed T3 Hull.
If:
Current T3 Hull > Previous T3 Hull
the direction becomes bullish.
If:
Current T3 Hull < Previous T3 Hull
the direction becomes bearish.
If the line is unchanged:
The previous state persists.
The trend does not depend on price crossing the line.
It depends on whether the adaptive T3 Hull itself is rising or falling.
Long and short signals
A long signal occurs when direction changes into the bullish state.
A short signal occurs when direction changes into the bearish state.
The markers therefore identify:
A change in slope regime.
They do not represent:
Guaranteed entries.
Price targets.
Stop levels.
Because the signal is based on local slope, more responsive configurations will naturally produce more flips during sideways conditions.
Ribbon construction
The optional band is not a conventional upper-and-lower volatility channel.
The main line is the current T3 Hull.
The secondary ribbon reference is calculated from a smoothed version of the previous-bar T3 Hull :
Ribbon Reference = WMA(T3 Hull , Band Smoothing)
The area between these two lines is filled with a gradient.
This creates visual separation between:
The current adaptive trend estimate.
A delayed and smoothed reference to its prior values.
The band therefore functions as a trend ribbon rather than a statistical volatility envelope.
Band Smoothing
Band Smoothing controls the WMA applied to the one-bar-offset Hull series.
Lower values:
Keep the ribbon reference close to the main line.
Produce a tighter band.
Respond quickly to direction changes.
Higher values:
Create a slower reference.
Widen the visual separation during sustained movement.
Create a smoother ribbon.
This input affects the visualization only.
It does not change:
The T3 Hull calculation.
Trend direction.
Signals.
Trend Strength
The indicator also calculates a normalized trend-velocity measure for visualization.
Raw strength is based on:
|Current T3 Hull - Previous T3 Hull| / ATR
and is multiplied by the Strength Sensitivity input.
The result is capped at 1 and then smoothed with an EMA.
This produces a normalized value from approximately:
0 = very little line movement relative to ATR.
1 = strong line movement relative to ATR.
This is a measure of trend-line velocity , not a statistical probability that the trend will continue.
Strength Smoothing
Strength Smoothing controls how quickly the visual strength estimate changes.
Lower values:
React quickly to acceleration and deceleration.
Create faster ribbon-intensity changes.
Higher values:
Produce steadier strength visualization.
Reduce flickering in the gradient.
It does not affect the underlying trend calculation.
Strength Sensitivity
Strength Sensitivity determines how quickly line velocity reaches the maximum normalized strength.
Higher values:
Cause smaller ATR-normalized movement to appear strong.
Increase gradient intensity more easily.
Lower values:
Require greater movement before maximum visual intensity is reached.
Strength-Weighted Gradient
When disabled, the ribbon uses a fixed gradient transparency.
When enabled, gradient intensity changes with Trend Strength.
As the T3 Hull moves more quickly relative to ATR:
The near portion of the ribbon becomes more visible.
The broader gradient becomes stronger.
When trend velocity is weak:
The ribbon becomes more subdued.
This is purely a visualization feature.
It does not alter:
Direction.
Signals.
Smoothing.
Tail damping.
Trend candles
The indicator can recolor the main chart candles according to the active T3 Hull slope state.
Bullish trend = selected Long Color.
Bearish trend = selected Short Color.
The candle colour describes the indicator regime, not the individual candle’s own open-to-close direction.
A bearish candle can therefore remain bullish-coloured while the T3 Hull is still rising.
Tail diagnostics
Several internal values are exposed in TradingView’s Data Window.
These provide insight into how the adaptive model is currently behaving.
Effective Hull Compensation
Shows the compensation actually being used after adaptive tail damping.
If adaptive damping is disabled:
It remains equal to Hull Compensation.
If damping is active:
It falls below the base value when curvature pressure increases.
This is useful for seeing when the indicator is automatically becoming more conservative.
Active T3 Volume Factor
Shows the T3 coefficient currently being used.
If Adaptive T3 Volume Factor is disabled:
It remains equal to the base Volume Factor.
When enabled:
It can decrease during high curvature.
Normalized Curvature
Shows the current curvature estimate after ATR normalization.
Values closer to 1 represent greater changes in fast-T3 velocity relative to recent range.
Trend Strength
Shows the smoothed normalized T3 Hull velocity as a percentage.
This is the same quantity used by the optional Strength-Weighted Gradient.
Tail Overshoot
The script also measures whether the final T3 Hull has extended beyond the fast T3 in the direction of the fast/slow separation.
An upper overshoot occurs when:
Fast T3 is above Slow T3.
Completed T3 Hull is above Fast T3.
A lower overshoot occurs when:
Fast T3 is below Slow T3.
Completed T3 Hull is below Fast T3.
When this happens, Tail Overshoot reports:
|T3 Hull - Fast T3| / ATR
This expresses the size of the overshoot in ATR units.
A value of zero means the completed Hull is not currently beyond the fast T3 under that definition.
This diagnostic is particularly useful when tuning:
Hull Compensation.
Damping Strength.
Fast Length Ratio.
Adaptive VF.
Final Smoothing.
Generalization.
How to interpret the indicator
Rising T3 Hull
A rising line indicates a bullish trend state.
The model’s completed combination of T3 smoothing, Hull compensation and any active damping controls is moving upward.
Falling T3 Hull
A falling line indicates a bearish trend state.
Smooth persistent slope
A stable slope with few direction changes generally indicates a cleaner trend environment for this style of filter.
Frequent colour changes
Rapid bullish/bearish transitions generally indicate:
Sideways price action.
A very responsive configuration.
Insufficient smoothing for the current market.
High normalized curvature
High curvature means the fast T3’s velocity is changing rapidly relative to ATR.
If adaptive controls are enabled, this is where:
Hull compensation may decrease.
T3 Volume Factor may decrease.
High tail overshoot
A larger Tail Overshoot value indicates the completed Hull has moved materially beyond the fast T3.
If the objective is a less tail-heavy line, possible adjustments include:
Reduce Hull Compensation.
Increase Final Smoothing.
Increase Fast Length Ratio.
Increase Damping Strength.
Enable Adaptive T3 Volume Factor.
Reduce or disable Generalization.
Enable the Velocity Limiter.
How to use the indicator
1. Trend regime filter
The most direct use is as a slope-based regime filter:
Rising T3 Hull = bullish trend state.
Falling T3 Hull = bearish trend state.
This can be combined with independent entry logic.
2. Trend transition signals
Long and short markers identify when the adaptive line changes slope direction.
These can be used as:
Regime-change alerts.
Confirmation for another setup.
Potential trailing-exit conditions.
They are not standalone guarantees of a sustained reversal.
3. Pullback reference
During a persistent trend, the T3 Hull can act as a smoothed directional reference.
Price returning toward the line while the line continues to slope in the original direction may represent a pullback within the existing regime.
4. Ribbon expansion
The distance between the current T3 Hull and its delayed WMA reference can visually highlight persistent movement.
A stronger ribbon separation can occur when the current adaptive trend estimate is moving away from its delayed historical reference.
5. Tail tuning
The Data Window diagnostics allow the indicator to be treated as a filter-design tool.
Users can observe:
When compensation is being damped.
How strongly curvature is elevated.
Whether the completed line is overshooting.
How the active T3 coefficient changes.
This can make parameter changes easier to understand than tuning solely by appearance.
Suggested tuning approaches
Smooth / reduced-tail configuration
For a calmer trend line:
Use lower Hull Compensation.
Use a larger Fast Length Ratio.
Increase Final Smoothing.
Enable Adaptive Tail Damping.
Use moderate or higher Damping Strength.
Leave Generalization disabled.
If strong shocks still create large movements:
Enable the Velocity Limiter.
Responsive configuration
For faster behaviour:
Reduce Fast Length Ratio toward the traditional half-length relationship.
Increase Hull Compensation.
Reduce Final Smoothing.
Reduce the Hull Smoothing Exponent.
Use a more aggressive T3 Volume Factor.
These changes generally increase overshoot risk.
Adaptive configuration
For responsiveness in normal conditions with additional protection near turns:
Use moderate Hull Compensation.
Enable Adaptive Tail Damping.
Enable Asymmetric Turn Damping.
Optionally enable Adaptive T3 Volume Factor.
This allows stronger compensation during smooth directional movement while automatically reducing it when the line begins to decelerate or turn.
Maximum tail-control configuration
For very aggressive tail suppression:
Low Hull Compensation.
Higher Final Smoothing.
Adaptive Tail Damping enabled.
Higher Damping Strength.
Adaptive T3 Volume Factor enabled.
Generalization disabled.
Velocity Limiter enabled.
This can create a very stable line, but the cost is additional lag.
How this differs from a standard Hull Moving Average
A conventional HMA normally uses:
WMA at half length.
WMA at full length.
2 × Fast - Slow lag compensation.
Final WMA around sqrt(Length).
Adaptive T3 Hull changes every major part of that architecture:
T3 replaces WMA.
Fast Length Ratio is configurable.
Hull Compensation is configurable.
The final smoothing exponent is configurable.
Final smoothing has an additional multiplier.
Compensation can adapt to curvature.
T3 behaviour can adapt to curvature.
Final movement can be ATR-limited.
An additional generalized compensation stage can be enabled.
It is therefore better understood as a generalized adaptive Hull framework than as a conventional HMA with a different smoothing length.
How this differs from a normal T3
A standard T3 produces one smoothed price estimate from repeated EMA stages and a fixed Volume Factor.
Adaptive T3 Hull uses multiple T3 calculations in a Hull-style structure:
Fast T3.
Slow T3.
Compensated fast-slow projection.
Final T3 smoothing.
It can also dynamically alter the T3 factor according to curvature.
The T3 is therefore a building block inside the larger trend model.
How this differs from simply smoothing an HMA
Applying an additional moving average to an HMA can reduce its tails, but it also adds lag after the overshoot has already occurred.
Adaptive T3 Hull attacks the problem at several earlier stages.
It can:
Reduce the fast-slow separation.
Reduce compensation itself.
Reduce compensation specifically around sharp turns.
Reduce the T3 factor during curvature.
Change the final Hull smoothing geometry.
Limit extreme final movement.
This provides more control than applying one additional smoothing layer to a completed HMA.
Parameter interaction
Many settings interact strongly.
Fast Ratio + Hull Compensation
A low Fast Ratio creates greater separation between fast and slow legs.
Combining that with high Hull Compensation can produce aggressive extrapolation.
Hull Compensation + Adaptive Damping
Hull Compensation defines the maximum starting compensation.
Adaptive damping determines how much of it survives during curvature.
T3 Volume Factor + Hull Compensation
Both can contribute to lag reduction.
High values in both stages may amplify overshoot.
Final Smoothing + Generalization
Final Smoothing adds lag and stability.
Generalization removes some of that lag again.
Using both allows the user to create a smooth base and then selectively reintroduce responsiveness.
Adaptive VF + Adaptive Hull Damping
Both respond to curvature but at different stages.
Enabling both can create strong protection around turns.
Velocity Limiter + all other controls
The Velocity Limiter is applied near the end of the pipeline.
It can therefore override an aggressive target generated by the preceding calculations.
Input guide
Source
Price series used by the complete indicator.
Hull Length
Primary calculation horizon.
T3 Volume Factor
Controls the internal T3 coefficient structure. It does not use trading volume.
Hull Compensation
Controls how much of the fast-minus-slow T3 separation is added to the fast T3.
Final Smoothing
Multiplies the final Hull smoothing length.
Adaptive Tail Damping
Reduces Hull Compensation during high curvature.
Damping Strength
Controls the amount of compensation reduction.
Damping Normalization
ATR horizon used to normalize curvature.
Fast Length Ratio
Controls the fast T3 length relative to the main Hull Length.
Hull Smoothing Exponent
Controls the power-law relationship used to derive the final smoothing length.
Asymmetric Turn Damping
Restricts curvature damping primarily to deceleration and turning behaviour.
Adaptive T3 Volume Factor
Reduces the T3 coefficient during high curvature.
VF Damping Strength
Controls how strongly curvature reduces the active T3 factor.
Minimum VF
Limits how far the adaptive T3 factor can be reduced.
Velocity Limiter
Caps final one-bar T3 Hull movement using ATR.
Max ATR / Bar
Defines the maximum movement allowed by the Velocity Limiter.
Generalize Final Hull
Enables an additional lag-compensation stage after the main T3 Hull.
Generalization
Controls the strength of that final compensation.
Strength-Weighted Gradient
Allows ribbon intensity to vary with normalized T3 Hull velocity.
Strength Smoothing
Smooths the visual trend-strength measure.
Sensitivity
Controls how quickly ATR-normalized movement reaches maximum visual strength.
Band Smoothing
Controls the delayed WMA reference used to build the ribbon.
Strengths
Combines T3 smoothing with a generalized Hull framework.
Directly exposes Hull lag compensation as a user control.
Provides multiple independent methods for reducing oscillating tails.
Uses ATR-normalized curvature for adaptive behaviour.
Can distinguish general curvature from decelerating/turning curvature.
Can adapt the T3 coefficient as well as Hull compensation.
Allows the standard Hull square-root smoothing relationship to be generalized.
Includes an optional ATR-based velocity limiter.
Provides optional final lag compensation for advanced tuning.
Includes real-time tail and curvature diagnostics.
Provides trend-strength-reactive visualization without altering signals.
Limitations
The indicator remains a reactive trend filter rather than a predictive model.
Increasing lag compensation generally increases overshoot risk.
Aggressive tail suppression generally increases lag.
Slope-based signals can whipsaw in ranging markets.
The large number of controls creates many interacting parameter combinations.
Over-tuning parameters to one asset or historical period can reduce robustness elsewhere.
The Velocity Limiter can delay response to genuine price shocks.
Generalization can reintroduce overshoot that earlier damping stages removed.
Trend Strength measures line velocity, not probability of continuation.
Tail Overshoot is a diagnostic relative to the fast T3, not a trading signal.
Causality and real-time behaviour
The calculations use current and historical data without intentional future references.
The indicator can therefore be evaluated causally on completed bars.
However, on a live unfinished candle:
The source can change.
The T3 stages can change.
Curvature can change.
Adaptive compensation can change.
The final slope can change.
A long or short signal can appear or disappear before bar close.
Users requiring confirmed trend transitions should evaluate signals on completed candles.
Alerts
The indicator includes three alert conditions:
T3 Hull Long: the completed T3 Hull changes into a rising trend state.
T3 Hull Short: the completed T3 Hull changes into a falling trend state.
T3 Hull Signal: either directional transition occurs.
Summary
Adaptive T3 Hull is a generalized trend smoother built around the idea that Hull-style lag compensation does not need to be fixed.
The model begins with fast and slow T3 smoothers rather than traditional WMAs. Their difference is used to compensate the fast T3 for lag, but the amount of compensation is directly configurable.
This alone allows the user to move continuously between:
A restrained fast T3.
A partially compensated Hull structure.
A conventional 2×fast-minus-slow construction.
More aggressive extrapolation.
The final smoothing stage is also generalized. Instead of forcing the conventional square-root Hull relationship, the user can control both the smoothing exponent and a separate multiplier.
The adaptive systems then focus specifically on the behaviour that often makes Hull-style smoothers difficult to tune: oscillating tails around sharp turns.
The script measures changes in fast-T3 velocity, normalizes that curvature using ATR, and can use the result to:
Reduce Hull compensation.
Reduce the T3 Volume Factor.
Apply damping only around deceleration and turns.
An optional velocity limiter provides a final ATR-based cap on extreme one-bar movement, while an optional generalized compensation stage can reintroduce controlled responsiveness after the main smoothing process.
The final line determines trend through its slope, while a delayed WMA reference forms the optional ribbon. Ribbon intensity can also respond to normalized trend velocity.
Adaptive T3 Hull is therefore designed less as one fixed moving-average formula and more as a configurable filter architecture for exploring the trade-off between lag, smoothness, responsiveness and overshoot .
Its default configuration intentionally favors a less tail-heavy response than a conventional Hull construction, while the advanced controls allow users to move the model toward either greater responsiveness or stronger damping depending on the behaviour they want from the trend filter.
مؤشر

Adaptive MA Ribbon [StrixEDGE]📊 WHAT IT DOES
StrixEDGE Adaptive MA Ribbon plots three of the most advanced low-lag moving averages — Hull MA, Arnaud Legoux MA, and Kaufman Adaptive MA — with automatic period adjustment based on current volatility. A consensus score (0-6) instantly shows whether all three agree on trend direction.
🔬 WHY IT'S DIFFERENT
Traditional MA ribbons use fixed periods that work in one market condition and fail in another. This ribbon automatically shortens its period when volatility spikes (for faster reaction) and lengthens it when markets are calm (to avoid whipsaws). The three MAs used — HMA, ALMA, and KAMA — are specifically chosen because each adapts to the market differently, so their agreement carries more weight than three similar MAs agreeing.
⚙️ HOW IT WORKS
The volatility ratio (current ATR / 50-period average ATR) dynamically adjusts the base period. This adjusted period feeds into all three MAs simultaneously. The consensus score counts two things: how many MAs are below price (0-3 points) and how many are rising (0-3 points). A score of 6 means all three MAs are below price AND rising — the strongest possible bullish configuration.
📈 HOW TO USE
• Consensus 5-6 (green fill): Strong uptrend — buy pullbacks to the ribbon
• Consensus 0-1 (red fill): Strong downtrend — sell rallies to the ribbon
• Consensus 2-4 (gray fill): Mixed — avoid trend strategies
• Diamond markers at consensus flips = key entry/exit signals
• Ribbon twist (MAs crossing) = early warning of trend change
• Works best on 4H and Daily timeframes
🎛️ INPUTS & DEFAULTS
Base Period: 21 | Min: 8, Max: 55 | ALMA Offset: 0.85, Sigma: 6.0
═══════════════════════════════════════════════════════
🔧 CUSTOMIZATION
All parameters are fully adjustable through the indicator settings panel. Inputs are grouped logically:
• ⚙️ Core Parameters — main calculation settings
• 📊 Table Settings — table size (Tiny to Huge), position (4 corners), visibility toggle
• 🎨 Visual Settings — colors, show/hide elements
• 🔔 Alert Settings — threshold values for notifications
📊 DATA TABLE
A built-in data table displays all key metrics in real-time. Adjust the table size from Tiny to Huge to match your chart layout. Position it in any corner. Toggle visibility on/off.
🔔 ALERTS
Pre-built alert conditions for all major signals. Set up alerts via TradingView's alert dialog — select this indicator and choose from the available conditions.
⏱️ RECOMMENDED TIMEFRAMES
Works on all timeframes. Recommended: 1H, 4H, Daily for best signal quality. Lower timeframes produce more signals but with higher noise. Weekly/Monthly for position trading context.
✅ COMPLIANCE
• No repainting — all signals based on confirmed bar close data
• No future data references
• Open-source code — verify the logic yourself
⚠️ DISCLAIMER
This indicator is a technical analysis tool, not financial advice. It does not predict future price movements. Past patterns and signals do not guarantee future results. Trading involves substantial risk of loss. Always use proper risk management, including stop losses and appropriate position sizing. Never risk more than you can afford to lose. مؤشر

Adaptive Structure Support & ResistanceChinese description is provided below. Chinese readers, please scroll down to read.
A structure-based support and resistance framework using confirmed pivots, price clustering, adaptive search ranges, historical reaction analysis and post-break role reversal.
1. What is this indicator?
Adaptive Structure Support & Resistance is a market-structure tool designed to identify the support and resistance areas that are currently most relevant to price.
The purpose of this script is not to display every historical swing high and swing low.
Instead, it attempts to answer a more practical question:
Among all historical turning points, which price areas still have enough structural significance to matter to the current market?
The script therefore treats support and resistance as a multi-stage structural problem.
The complete process is:
Identify confirmed swing highs and swing lows.
Merge nearby turning points into structural price clusters.
Evaluate the historical importance of each cluster.
Determine how far above and below the current price the model needs to search.
Select the most relevant support and resistance structures.
Evaluate the historical strength of the selected structures.
Convert exact levels into practical support/resistance zones.
Track what happens after a confirmed break.
Require a retest or rebound before confirming a support/resistance role reversal.
This means that the script is not simply:
ta.pivothigh(...)
ta.pivotlow(...)
followed by two horizontal lines.
Confirmed pivots are only the raw structural observations. Several additional stages are used before a level becomes the displayed support or resistance.
2. Why was this model designed?
Traditional automatic support/resistance tools often face several practical problems.
Too many levels
If every historical pivot is plotted independently, the chart can quickly become filled with horizontal lines. Many of those lines represent nearly identical prices or structures that are no longer relevant.
A single pivot may not represent a meaningful structure
A temporary local high or low can occur for many reasons. A more meaningful market structure often forms when price reacts around the same area multiple times.
Fixed search distances do not work equally well for every instrument
A low-volatility instrument may have meaningful support only 10–20% below the current price.
A highly volatile or strongly trending instrument may require a much wider historical price range before a significant support or resistance structure appears.
The nearest level is not always the most important level
A minor pivot located very close to current price may be less meaningful than a slightly more distant area that has produced several strong historical reactions.
A breakout does not automatically mean role reversal
Resistance does not necessarily become support simply because price trades above it once.
Likewise, support does not necessarily become resistance immediately after one breakdown.
The model is designed around these problems.
Its goal is therefore not to maximize the number of detected structures, but to reduce historical information into a smaller set of currently relevant structural areas.
3. Where can this indicator be used?
The script is intended for standard price charts where historical swing structure is meaningful.
Typical applications include:
Stocks
Indices
ETFs
Futures
Foreign exchange
Cryptocurrency
Other liquid instruments with usable price history
It can be used on different timeframes, but the meaning of the detected structure changes with the timeframe.
For example:
A support structure on a 15-minute chart describes short-term intraday structure.
A support structure on a daily chart describes a larger swing structure.
A support structure on a weekly chart may represent a long-term structural price area.
The indicator does not automatically convert a lower-timeframe level into a higher-timeframe level.
The displayed support and resistance always belong to the chart timeframe being analyzed.
4. Core principle: confirmed structural pivots
The first stage identifies confirmed pivot highs and pivot lows.
A pivot requires price bars on both sides of the potential turning point.
Representative logic:
float pivotHigh = ta.pivothigh(
high,
pivotLeftBarsInput,
pivotRightBarsInput)
float pivotLow = ta.pivotlow(
low,
pivotLeftBarsInput,
pivotRightBarsInput)
The important word here is confirmed .
A newly formed high is not immediately considered a structural resistance observation.
A newly formed low is not immediately considered a structural support observation.
The model waits for the configured number of right-side bars before confirming the pivot.
The intention is to sacrifice some immediacy in exchange for more stable structural observations.
This also means that pivot detection naturally contains confirmation delay.
That delay is part of the methodology rather than an attempt to predict a turning point before it exists.
5. Core principle: price clustering
Multiple pivots occurring around similar prices should not necessarily be treated as unrelated horizontal levels.
For this reason, the script groups nearby pivot observations into price clusters.
Conceptually:
float distancePercent =
math.abs(price - clusterPrice) /
clusterPrice *
100.0
if distancePercent <= mergePercent
matchingIndex := clusterIndex
If several historical lows occur around approximately the same area, they can contribute to one support structure.
The same process applies to historical highs when building resistance structures.
This changes the interpretation from:
"Price touched 12.01, 12.05 and 12.09."
to:
"Price has repeatedly reacted around the same structural area."
The cluster center is updated using the accumulated structural contribution of its observations rather than simply keeping the first pivot price.
6. Core principle: structural ranking
Not every cluster deserves the same importance.
Each pivot contributes a base structural score that incorporates relative volume participation and recency.
A simplified representation of the calculation is:
float pivotBaseScore =
1.0 +
volumeWeightInput * volumeRatio +
recencyWeightInput * recencyFactor
When several pivots belong to the same cluster, their contributions accumulate.
After the candidate clusters have been created, the model evaluates structures within the active search range.
The final ranking also gives a limited preference to structures nearer the current price:
float candidateRank =
accumulatedBaseScore +
proximityBonusInput *
proximityFactor
Proximity is therefore useful, but it is not the entire model.
A level is not selected only because it is the nearest pivot.
7. Relative volume participation
Historical price reactions can contain different levels of market participation.
For each pivot observation, volume is compared with its recent average.
Representative logic:
float volumeRatio =
pivotAverageVolume > 0.0
? math.min(
pivotVolume / pivotAverageVolume,
3.0)
: 1.0
Higher relative volume can contribute additional structural weight.
However, volume is only one component.
The model does not assume that high volume by itself automatically creates support or resistance.
8. Historical reaction analysis
A structural level is more informative when historical interactions with that area produced meaningful price responses.
For a support pivot, the model measures the maximum upside response after the confirmed low during a configurable observation window.
Conceptually:
float reactionPercent =
(highestPostPivotPrice / pivotPrice - 1.0) *
100.0
For resistance, the opposite calculation is used:
float reactionPercent =
(pivotPrice - lowestPostPivotPrice) /
pivotPrice *
100.0
This allows the model to distinguish between two different situations.
A level that price touched repeatedly but barely reacted to.
A level where historical interaction repeatedly produced meaningful rejection or recovery.
These situations are not treated as structurally equivalent.
9. Why the search range is adaptive
One of the main design features of this script is that support and resistance do not have to use the same fixed search distance.
A fixed 25% range can work well for one instrument but fail on another.
A fixed 100% range may capture important historical structures, but can also introduce unnecessarily distant structures when meaningful nearby levels already exist.
The Auto mode therefore uses progressive search tiers.
25%
50%
75%
100%
The algorithm first asks whether the nearest tier contains a structure that satisfies minimum structural requirements.
If it does, the search can stop.
If it does not, the model expands to the next tier.
Representative logic:
if distancePercent <= 25.0
result := 25.0
else if distancePercent <= 50.0 and maximumRangePercent >= 50.0
result := 50.0
else if distancePercent <= 75.0 and maximumRangePercent >= 75.0
result := 75.0
else if distancePercent <= 100.0 and maximumRangePercent >= 100.0
result := 100.0
The important feature is that support and resistance are evaluated independently .
For example:
Support search range: 25%
Resistance search range: 75%
This can occur when a meaningful support structure exists close below price, while the next meaningful resistance structure is much farther above the market.
10. The model does not stop at the first nearby pivot
Adaptive search would not be useful if any small nearby pivot could immediately stop expansion.
The model therefore requires a nearby structure to satisfy minimum quality conditions.
Conceptually:
bool qualifiedStructure =
touchCount >= minimumStructureTouchesInput and
structureQuality >= adaptiveQualityThreshold
Only a qualified structure can stop the search from expanding to the next distance tier.
This prevents a minor local pivot from automatically hiding a larger and more meaningful historical structure.
11. Volatility-aware search adjustment
Volatility also affects how much evidence is required from nearby structures.
ATR is converted into a percentage of price:
float currentAtrPercent =
close > 0.0
? averageTrueRange / close * 100.0
: 0.0
When volatility is high, the minimum structural-quality requirement is increased moderately.
Representative logic:
if currentAtrPercent >= 6.0
adaptiveQualityThreshold :=
minimumStructureQualityInput + 8.0
else if currentAtrPercent >= 4.0
adaptiveQualityThreshold :=
minimumStructureQualityInput + 5.0
The purpose is not simply:
Higher volatility = wider search range.
Instead:
Higher volatility = minor nearby structures need stronger evidence before they are allowed to stop the search.
This distinction is important.
Volatility assists the structural search; it does not independently determine support or resistance.
12. Structural quality used by adaptive search
To decide whether search expansion can stop, a separate quality model evaluates candidate clusters.
The quality assessment combines several components:
Number of structural interactions
Average historical reaction
Relative volume participation
Recency
Accumulated structural contribution
A simplified representation is:
float structureQuality =
touchComponent +
reactionComponent +
volumeComponent +
recencyComponent +
baseScoreComponent
The result is bounded to a 0–100 scale.
clampValue(
structureQuality,
0.0,
100.0)
This quality score primarily answers:
"Is this structure meaningful enough for the adaptive search to stop here?"
It is separate from the final displayed strength score.
13. Selecting the final support and resistance
After the adaptive search distance has been determined, the model evaluates all valid clusters inside that range.
For support:
The cluster must be below or near the current price.
It must remain inside the active support search range.
Its structural score is combined with a proximity adjustment.
For resistance, the same process is applied above current price.
The highest-ranked candidate becomes the primary structural level.
This means that the displayed level represents the outcome of:
confirmed pivots → clustering → structural scoring → adaptive distance selection → final ranking
rather than simply selecting the latest high or low.
14. Strength score: what does 0–100 mean?
After the primary support and resistance levels are selected, the model performs a second evaluation.
This stage describes the historical quality of the selected structure .
The strength score considers:
Touch count
Average reaction after historical interactions
Relative volume participation
Recency
Repeated crossings of the level
Fast failed breaks
The positive components are conceptually:
float rawStrengthScore =
touchComponent +
reactionComponent +
volumeComponent +
recencyComponent +
stabilityComponent -
totalPenalty
Repeated crossings reduce the score:
float totalPenalty =
crossingCount *
crossingPenaltyInput +
failedBreakCount *
failedBreakPenaltyInput
The final value is limited to 0–100.
The interface converts it into:
Weak
Medium
Strong
The score should not be interpreted as:
82 points = 82% probability that support will hold.
It does not represent probability, expected return or strategy win rate.
It is a normalized description of historical structural behavior.
15. Why repeated crossings reduce strength
A price level may appear frequently in historical data simply because the market traded through it many times.
That does not necessarily make the level stronger.
A structurally useful support or resistance area usually produces some degree of rejection, recovery or directional response.
For this reason, the script counts repeated close-to-close crossings.
Representative logic:
bool crossedAbove =
olderClose <= level and
newerClose > level
bool crossedBelow =
olderClose >= level and
newerClose < level
if crossedAbove or crossedBelow
crossingCount += 1
Frequent crossings therefore reduce structural strength instead of increasing it automatically.
16. Why support and resistance are displayed as zones
Real market structure rarely operates at one mathematically exact tick.
Several pivots may occur at slightly different prices while still representing the same area.
The script therefore displays:
A center structural level
A surrounding structural zone
Zone width contains two elements.
First, the actual spread of the clustered pivot prices.
Second, a small volatility-sensitive padding:
float zonePadding =
math.max(
selectedLevel *
minimumZoneWidthPercentInput /
100.0,
averageTrueRange *
atrZoneMultiplierInput)
The center line is useful for reference.
The surrounding area is intended to represent the broader price region where structural interaction may occur.
17. Breakout detection uses the previous structure
There is an important implementation detail in breakout detection.
When price breaks resistance, the current resistance calculation may immediately change because current price itself has changed.
If breakout detection used only the newly recalculated structure, the model could lose the level that price actually broke.
The script therefore references the previously confirmed zone:
float previousResistanceZoneUpperBound =
resistanceZoneUpperBound
float resistanceBreakTrigger =
previousResistanceZoneUpperBound *
(1.0 +
breakoutBufferPercentInput /
100.0)
The same principle applies to support breakdowns.
This allows the structural state machine to remember the actual area involved in the break.
18. Resistance does not immediately become support
A confirmed break starts a new structural state.
The model uses named states internally:
const int STATE_NORMAL = 0
const int STATE_BREAKOUT_WAITING_RETEST = 1
const int STATE_RESISTANCE_TO_SUPPORT = 2
const int STATE_BREAKDOWN_WAITING_REBOUND = -1
const int STATE_SUPPORT_TO_RESISTANCE = -2
After resistance is broken:
The previous resistance area is stored.
The model enters a "waiting for retest" state.
Price is monitored for a return toward the old resistance.
If the retest holds, the former resistance may become support.
If price falls back through the old zone, the breakout is treated as failed.
Representative confirmation logic:
bool testedFormerResistance =
low <=
roleReversalUpperBound *
(1.0 +
retestTolerancePercentInput /
100.0)
bool retestHeld =
testedFormerResistance and
close > roleReversalUpperBound
Only after this process can the old resistance be promoted to support.
19. Support-to-resistance uses the opposite process
After support is broken:
The previous support area is stored.
The model waits for a rebound.
Price must test the former support area.
If price is rejected and cannot recover the area, the former support can become resistance.
Representative logic:
bool testedFormerSupport =
high >=
roleReversalLowerBound *
(1.0 -
retestTolerancePercentInput /
100.0)
bool reboundRejected =
testedFormerSupport and
close < roleReversalLowerBound
This creates a distinction between:
price crossed a level
and:
the market actually completed a structural role reversal.
20. Failed breakout and failed breakdown
The script also monitors invalidation after a break.
If resistance is broken but price quickly returns below the former resistance structure, the event can be treated as a failed breakout.
If support is broken but price quickly recovers the former support structure, the event can be treated as a failed breakdown.
These events reset the pending role-reversal process rather than automatically promoting the old structure to a new role.
21. How to use the indicator
A simple workflow is:
Locate the current support
Identify the support area below the current market.
This is the structural area currently considered most relevant by the model.
Locate the current resistance
Identify the active structural resistance above price.
Read the strength
A stronger score indicates that the selected structure has historically shown better structural characteristics under this model.
It does not mean the level cannot break.
Read "Why this level?"
The dashboard shows the number of historical structural interactions and the average subsequent reaction.
This gives a plain-language explanation for why the level has been selected.
Check how far the algorithm searched
For example:
"Below 25% | Above 75%"
means that qualified support was available relatively close below current price, while the model had to inspect a much wider area to find qualified resistance.
Observe the current structural state
The dashboard may report states such as:
"Price is between support and resistance"
"Resistance broken; waiting for a retest"
"Former resistance is currently acting as support"
"Support broken; waiting for a rebound"
"Former support is currently acting as resistance"
22. Practical interpretation
The indicator is designed primarily as a context tool .
For example:
Price approaching strong support does not automatically mean "buy".
It means price is entering an area that has meaningful structural evidence and may deserve closer observation.
Likewise:
Price approaching resistance does not automatically mean "sell".
It identifies an area where historical supply or rejection has been structurally significant.
A trader can then combine that context with his or her own analysis of:
Price action
Volume
Trend
Market regime
Higher-timeframe structure
Risk/reward
Position sizing
Independent fundamental or macro analysis
The script itself does not generate automatic buy or sell orders.
23. Dashboard explanation
The dashboard intentionally avoids exposing every internal statistical variable.
Instead, it translates the model into simpler trading language.
Support
Current selected support level and its strength evaluation.
Why this level?
Shows how many historical structural interactions contributed to the area and the average subsequent upside response.
Resistance
Current selected resistance level and strength evaluation.
Why this level?
Shows historical interactions and the average subsequent downside response.
How far it searched
Shows the active adaptive search range below and above the current market.
Current state
Explains whether price remains between the structures, has broken one of them, is waiting for confirmation, or has completed a role reversal.
24. Main settings
Lookback Bars
Controls how much historical price data is considered when constructing structural clusters.
A longer lookback includes more historical structure but may also retain older information.
Pivot Left Bars / Pivot Right Bars
Control how strict pivot confirmation is.
Larger values generally identify larger structural turns but require more confirmation.
Price Cluster Width %
Controls how close two pivot observations must be before they can belong to the same structural area.
Search Mode
Auto allows support and resistance to determine their own search distances.
Manual uses a fixed maximum distance.
Maximum Auto Range
Defines the maximum distance the adaptive search is allowed to inspect.
Minimum Structure Quality
Controls how meaningful a structure must be before it can stop automatic search expansion.
Minimum Valid Tests
Defines the minimum number of structural observations required for a candidate to qualify during adaptive search.
Reaction Observation Bars
Defines how many bars after a historical pivot are examined when measuring its subsequent price reaction.
Break Confirmation Buffer
Adds a small margin beyond the old structural zone before a break is considered confirmed.
Retest Tolerance
Controls how close price must return to the former structural area during retest/rebound evaluation.
25. Alerts
Alert conditions are provided for:
Resistance break
Support break
Resistance confirmed as support
Support confirmed as resistance
Failed breakout
Failed breakdown
When close confirmation is enabled, structural break events are evaluated on confirmed bars.
26. About repainting and structural updates
This script should not be interpreted as a system that predicts pivots before they are confirmed.
Pivot highs and lows require right-side confirmation bars.
Therefore:
A newly forming pivot is not shown as confirmed structure until sufficient bars exist to confirm it.
Once new market data arrives, the active support and resistance can still change for legitimate structural reasons.
Examples include:
A new confirmed pivot enters the calculation.
Several new observations create a stronger price cluster.
Current price moves enough to change the relevant search region.
An older observation exits the configured lookback window.
A breakout creates a role-reversal state.
This is dynamic structural recalculation, not a promise that current support and resistance will remain fixed forever.
27. Why these components belong together
This script combines several concepts, but they are not independent indicators placed together for convenience.
Each component solves a different stage of the same problem.
Confirmed pivots identify potential structural observations.
Price clustering converts nearby observations into common price areas.
Structural ranking determines which areas contain more meaningful historical evidence.
Adaptive search determines how far the model needs to inspect for an adequate structure.
Reaction analysis measures how price historically responded to that structure.
Strength evaluation summarizes the historical quality of the selected area.
ATR-based zone construction converts an exact center price into a practical market area.
The role-reversal state machine manages what happens after the structure is broken.
The components are therefore sequential stages of one structural support/resistance framework rather than a mashup of unrelated indicators.
28. What is distinctive about this implementation?
The primary design characteristics of this implementation are:
Nearby pivots are aggregated into structural price clusters rather than displayed independently.
Support and resistance use independent adaptive search ranges.
Search expansion depends on structural quality rather than distance alone.
Volatility modifies the evidence required from nearby structures.
Level selection and level-strength evaluation are deliberately separated.
Repeated crossings and failed breaks can reduce structural strength.
Support and resistance are represented as price areas instead of exact single-price barriers.
Break detection references the previous structural zone.
Role reversal requires confirmation through a state machine instead of occurring immediately after a single crossing.
The chart intentionally focuses on the current relevant structure rather than filling the chart with historical event markers.
29. Limitations
No support/resistance algorithm can know with certainty whether a level will hold or fail.
Important limitations include:
Pivot confirmation introduces intentional delay.
Support and resistance may change as new information becomes available.
Historical reaction does not guarantee future reaction.
A high strength score is not a probability of success.
Very new instruments with limited history may not contain enough structural observations.
Strong trend transitions can invalidate historical structures quickly.
Volume-based components depend on the quality and meaning of the instrument's volume data.
Different timeframes can produce materially different support and resistance structures.
Synthetic or non-standard chart types may use transformed OHLC values and can therefore produce different structural results.
30. Final note
Support and resistance should be understood as areas of market interaction, not guaranteed turning points.
The purpose of this indicator is to organize historical structure and reduce it into a small number of currently relevant price areas.
It is an analytical framework, not an automatic trading system.
This script is intended for market-structure analysis and educational use. It does not constitute investment advice, a recommendation, or a guarantee of future market performance.
────────────────────────────────────
中文说明
1. 这个指标是什么?
Adaptive Structure Support & Resistance 是一个基于市场历史结构,自动寻找当前价格上下方关键支撑与压力区域的分析工具。
它解决的并不是:
“历史上哪里出现过高点和低点?”
而是试图解决一个更实际的问题:
“历史上这么多高低点里,哪些价格区域到现在仍然具有足够的结构意义,值得当前继续关注?”
所以,这个指标不是简单地把每一个 Pivot High 和 Pivot Low 都画成水平线。
完整计算过程包括:
识别已经确认的历史高低结构。
把价格相近的多个结构合并成一个价格簇。
评价不同价格簇的历史结构意义。
分别判断寻找支撑和压力到底需要看多远。
从有效搜索范围中选择当前更重要的支撑与压力。
评价被选中位置过去的实际价格反应。
将精确价格转化为更加符合实际交易的撑压区域。
价格突破或跌破以后保存原结构。
通过回踩或反抽确认撑压角色是否真正发生转换。
因此,Pivot 只是整个模型的第一步,而不是最终结果。
2. 为什么要做这套模型?
传统的自动支撑压力工具经常存在几个问题。
画出来的线太多
如果把每个前高前低全部保留下来,时间稍长以后主图会出现大量水平线。
不仅影响阅读,而且其中很多价格其实属于同一个结构。
单个高低点不一定有意义
市场临时出现一个局部最高点或最低点,并不能说明这个价格一定存在真正的供需结构。
如果不同时间价格多次来到相近区域并产生反应,它所代表的结构意义通常更加完整。
不同标的不能使用完全相同的搜索距离
有些股票距离现价下方 20% 就存在非常明确的历史结构。
有些高波动、长期趋势较强的股票,却可能需要向下或者向上看 50%、75% 甚至更远,才能找到真正有意义的位置。
距离最近的不一定最重要
现价附近可能存在一个很小的 Pivot,但稍微远一点的位置可能历史上被多次验证,并且每次都出现较大价格反应。
突破并不等于立刻完成撑压转换
突破压力一次,不应该马上认为压力已经变成支撑。
跌破支撑一次,也不应该马上认为原支撑已经成为新压力。
所以这套模型的设计目标不是“尽量多找线”。
而是:
尽量把复杂的历史价格结构压缩成少量、当前更值得关注的支撑和压力区域。
3. 可以用在哪里?
只要历史价格结构具有一定参考意义,理论上都可以使用,例如:
股票
指数
ETF
期货
外汇
加密资产
其他具有正常历史行情数据的流动性标的
不同周期看到的是不同级别的结构。
例如:
15分钟图得到的是偏短线结构。
日线得到的是波段级结构。
周线得到的是更长期的历史结构。
指标不会把15分钟的支撑自动解释成日线支撑。
所有计算都基于当前图表所使用的周期。
4. 第一步:确认历史结构高低点
模型首先通过已经确认的 Pivot High 与 Pivot Low 获取历史结构观察点。
核心逻辑:
float pivotHigh = ta.pivothigh(
high,
pivotLeftBarsInput,
pivotRightBarsInput)
float pivotLow = ta.pivotlow(
low,
pivotLeftBarsInput,
pivotRightBarsInput)
这里最重要的是“确认”。
一个刚刚形成的高点不会马上成为正式压力结构。
一个刚刚形成的低点也不会马上成为正式支撑结构。
需要等待右侧一定数量的K线完成确认。
所以模型主动接受一定的确认延迟,用来减少把尚未成立的短期极值直接当成重要结构的情况。
5. 第二步:把相近价格合并成一个结构
如果历史上存在:
12.01
12.05
12.09
这三个低点,实际上它们很可能描述的是同一片支撑区域,而不是三条完全独立的支撑线。
所以系统会计算不同 Pivot 之间的价格距离:
float distancePercent =
math.abs(price - clusterPrice) /
clusterPrice *
100.0
if distancePercent <= mergePercent
matchingIndex := clusterIndex
如果距离足够接近,就把它们合并到同一个价格结构中。
这样模型关注的就不再是:
“12.01碰过一次”
而是:
“12元附近这个区域历史上反复出现过结构反应。”
6. 第三步:给历史结构进行初步排序
并不是所有 Pivot 对结构的重要性都一样。
模型会考虑:
当时成交量相对大小
这个结构距离现在有多久
多个 Pivot 是否属于同一个价格区域
基础贡献大致表现为:
float pivotBaseScore =
1.0 +
volumeWeightInput * volumeRatio +
recencyWeightInput * recencyFactor
多个相近 Pivot 被合并后,它们的结构贡献会累积。
最后选择当前结构时,还会给予距离现价较近的位置一定加分:
float candidateRank =
accumulatedBaseScore +
proximityBonusInput *
proximityFactor
但这里需要注意:
“距离近”只是一个因素,并不是谁离现价最近就一定选择谁。
7. 成交量在这里做什么?
模型会把 Pivot 当时的成交量与近期平均成交量进行比较。
例如:
float volumeRatio =
pivotAverageVolume > 0.0
? math.min(
pivotVolume / pivotAverageVolume,
3.0)
: 1.0
如果某个结构形成时伴随更明显的市场参与,它可以得到额外权重。
但是成交量并不会单独决定支撑压力。
它只是结构评价中的一个辅助信息。
8. 历史触碰以后到底有没有真正反应?
一个位置历史上碰过很多次,并不代表它一定很重要。
关键还要看:
碰到以后,价格到底有没有发生真正的反向运动?
对于历史支撑 Pivot,系统观察之后一定K线范围内出现的最大向上反应。
核心思想:
float reactionPercent =
(highestPostPivotPrice / pivotPrice - 1.0) *
100.0
对于历史压力,则计算后续最大回落:
float reactionPercent =
(pivotPrice - lowestPostPivotPrice) /
pivotPrice *
100.0
这样能够区别:
一个历史上经常出现,但价格几乎没有明显反应的位置。
一个每次靠近以后,价格都出现较明显反转或回撤的位置。
9. 为什么搜索距离必须智能调整?
这是这个模型比较重要的一部分。
固定使用25%的搜索范围并不适合所有标的。
固定使用100%,又可能在不必要的情况下把非常遥远的历史结构纳入计算。
所以自动模式采用:
25%
50%
75%
100%
逐级寻找。
核心映射逻辑:
if distancePercent <= 25.0
result := 25.0
else if distancePercent <= 50.0 and maximumRangePercent >= 50.0
result := 50.0
else if distancePercent <= 75.0 and maximumRangePercent >= 75.0
result := 75.0
else if distancePercent <= 100.0 and maximumRangePercent >= 100.0
result := 100.0
如果25%以内已经存在合格结构,就可以停止。
如果没有,就扩大到50%。
依次类推。
10. 支撑和压力是分别搜索的
支撑和压力并不会强制使用同一个范围。
完全可能出现:
下方支撑搜索:25%
上方压力搜索:75%
它表达的意思是:
下方距离现价比较近的地方已经存在足够明确的历史支撑结构。
但是上方近距离没有达到要求的压力,所以模型继续向更远的位置寻找。
11. 为什么不是25%以内随便有个Pivot就停止?
如果只要附近出现一个 Pivot 就停止寻找,所谓智能搜索就没有意义。
因此,候选结构必须同时满足最低触碰次数和最低结构质量。
例如:
bool qualifiedStructure =
touchCount >= minimumStructureTouchesInput and
structureQuality >= adaptiveQualityThreshold
这意味着:
附近有结构 ≠ 附近有足够好的结构。
如果近端只是一个很弱的小级别价格点,系统仍然可以继续扩大搜索范围。
12. 波动率为什么也参与?
系统使用 ATR 相对于当前价格的比例观察标的自身波动程度。
float currentAtrPercent =
close > 0.0
? averageTrueRange / close * 100.0
: 0.0
高波动股票附近出现小 Pivot 非常正常。
因此,对于高波动标的,系统会适当提高“附近结构足够好”的要求。
例如:
if currentAtrPercent >= 6.0
adaptiveQualityThreshold :=
minimumStructureQualityInput + 8.0
else if currentAtrPercent >= 4.0
adaptiveQualityThreshold :=
minimumStructureQualityInput + 5.0
这里不是:
“ATR越高,搜索距离一定越远。”
而是:
“波动越高,附近的小结构必须更有说服力,才能阻止系统继续向外寻找。”
13. 智能搜索中的结构质量怎么计算?
用于决定“是否还要继续扩大搜索范围”的结构质量,主要包含:
历史触碰次数
触碰后的平均反应
相对成交量
结构新旧程度
多个结构累积后的基础得分
可以简化理解为:
float structureQuality =
touchComponent +
reactionComponent +
volumeComponent +
recencyComponent +
baseScoreComponent
最后压缩到0–100:
clampValue(
structureQuality,
0.0,
100.0)
这个分数主要解决的是:
“这个位置够不够好,好到可以不用继续向外找了?”
14. 最终支撑压力怎么选?
确定搜索范围以后,系统会重新检查范围内所有候选结构。
支撑必须位于现价下方或附近。
压力必须位于现价上方或附近。
最后比较:
历史结构累积得分
与当前价格的距离
选择当前 Rank 更高的结构。
所以最终看到的线经历了:
Pivot确认
→ 相近价格聚类
→ 结构评价
→ 智能搜索距离
→ 范围内重新排序
→ 最终支撑压力
15. 0–100强度分数到底是什么意思?
当最终支撑压力确定以后,系统会再做一次独立评价。
这一部分不是用来重新选择线,而是告诉你:
“现在已经选中的这条结构,历史质量到底怎么样?”
主要考虑:
触碰次数
历史平均反应
相对成交量
结构是否较新
是否经常被来回穿越
是否出现过快速失败突破
大致计算结构:
float rawStrengthScore =
touchComponent +
reactionComponent +
volumeComponent +
recencyComponent +
stabilityComponent -
totalPenalty
其中反复穿越和失败突破会扣分:
float totalPenalty =
crossingCount *
crossingPenaltyInput +
failedBreakCount *
failedBreakPenaltyInput
最后得到0–100,并转化成:
弱
中
强
但是一定不要理解成:
“82分 = 未来82%概率守住。”
它不是胜率,也不是未来预测概率。
它只是对历史结构质量进行标准化后的评分。
16. 为什么反复穿越反而扣分?
有些价格历史上出现很多次,仅仅是因为市场一直在这个位置上下震荡。
如果价格能够非常轻松地不断穿过这个位置,它未必是真正强支撑或强压力。
所以系统统计价格穿越中心结构的情况:
bool crossedAbove =
olderClose <= level and
newerClose > level
bool crossedBelow =
olderClose >= level and
newerClose < level
穿越越频繁,结构稳定性评价越低。
17. 为什么画的是区域,不只是一条线?
真实交易中,很少存在一个价格精确到最小报价单位以后永远有效。
历史多个 Pivot 本身就可能分布在一个小区间里。
所以模型保留:
中心结构价格
结构区域
区域宽度由:
历史 Pivot 聚类本身的价格范围
少量 ATR 波动缓冲
共同决定。
核心思想:
float zonePadding =
math.max(
selectedLevel *
minimumZoneWidthPercentInput /
100.0,
averageTrueRange *
atrZoneMultiplierInput)
中心线用于定位。
阴影区域用于表达真实市场中的价格博弈带。
18. 为什么突破使用上一根K线的压力?
这是结构判断里很重要的一点。
当价格突破压力以后,如果马上重新计算当前压力,那么旧压力可能已经被系统替换。
这样反而不知道价格刚刚突破的到底是哪一个结构。
所以突破判断使用突破之前已经存在的压力区域:
float previousResistanceZoneUpperBound =
resistanceZoneUpperBound
并基于它计算突破标准:
float resistanceBreakTrigger =
previousResistanceZoneUpperBound *
(1.0 +
breakoutBufferPercentInput /
100.0)
支撑跌破同理。
19. 突破压力以后为什么不能马上变成支撑?
系统内部使用一个状态机:
const int STATE_NORMAL = 0
const int STATE_BREAKOUT_WAITING_RETEST = 1
const int STATE_RESISTANCE_TO_SUPPORT = 2
const int STATE_BREAKDOWN_WAITING_REBOUND = -1
const int STATE_SUPPORT_TO_RESISTANCE = -2
突破压力以后:
保存原来的压力区域。
进入“等待回踩”状态。
观察价格是否重新回来测试原压力。
如果回踩以后守住,才确认压力转支撑。
如果重新跌回原结构下方,则视为突破失败。
回踩逻辑类似:
bool testedFormerResistance =
low <=
roleReversalUpperBound *
(1.0 +
retestTolerancePercentInput /
100.0)
bool retestHeld =
testedFormerResistance and
close > roleReversalUpperBound
20. 支撑转压力同样需要确认
支撑跌破以后:
保存原来的支撑。
等待价格反抽。
观察反抽是否重新接触原支撑区域。
如果无法重新站回,才确认原支撑变成压力。
例如:
bool testedFormerSupport =
high >=
roleReversalLowerBound *
(1.0 -
retestTolerancePercentInput /
100.0)
bool reboundRejected =
testedFormerSupport and
close < roleReversalLowerBound
因此模型会区分:
“价格只是穿过了一下”
与:
“原来的市场结构真正完成了角色转换”
21. 实际怎么使用?
最简单的使用顺序:
先看支撑在哪里
这是当前算法认为下方更值得关注的历史结构区域。
再看压力在哪里
这是当前上方更值得关注的历史结构区域。
看强度
强度越高,代表这个结构在模型评价中具有更好的历史表现。
但再强也可能被突破。
看“为什么是它?”
这里会直接告诉你历史上大致碰过多少次,以及碰到以后平均出现多大的反向运动。
看“算法看了多远”
例如:
下方25%|上方75%
意味着下方较近就找到了合格支撑,但是上方需要看更远,才找到合格压力。
最后看“现在怎么看”
这里会告诉你目前属于:
价格仍在支撑压力之间;
突破压力等待回踩;
原压力已经转为支撑;
跌破支撑等待反抽;
原支撑已经转为压力;
等结构状态。
22. 应该如何理解支撑压力?
这个指标最适合作为“位置和结构背景工具”。
例如:
价格到了强支撑,不等于自动买入。
它代表价格已经进入一个历史结构相对重要的位置,值得进一步观察。
同样:
价格到了强压力,也不等于必须卖出。
它代表价格进入过去曾经出现明显供给或回落反应的区域。
后续仍然可以结合自己的:
价格行为
成交量
趋势结构
大周期方向
市场环境
赔率
风险控制
仓位管理
共同判断。
23. 右上角面板怎么看?
我刻意没有把所有内部统计数据全部堆在面板上。
面板只保留实际使用中更容易理解的信息。
支撑位置
当前支撑在哪里,以及它的结构强弱。
为什么是它?
告诉你历史触碰次数和触碰以后平均反弹幅度。
压力位置
当前压力在哪里,以及强弱。
为什么是它?
告诉你历史触碰次数和之后平均回落幅度。
算法看了多远
显示支撑和压力分别使用了多大的搜索范围。
现在怎么看
使用大白话告诉你当前市场与撑压之间处于什么结构状态。
24. 常用参数怎么理解?
Lookback Bars / 回看K线数
决定使用多少历史K线寻找结构。
周期越长,可以考虑更久以前的结构,但也可能保留更多较旧的信息。
Pivot Left / Right Bars
决定 Pivot 判断严格程度。
数值越大,一般意味着只识别更明显的结构转折,同时确认速度也会更慢。
Price Cluster Width %
决定两个历史 Pivot 相差多少以内可以被认为属于同一结构。
Search Mode
Auto:自动决定支撑和压力分别要搜索多远。
Manual:手动固定搜索范围。
Maximum Auto Range
智能搜索允许向外扩展到的最大距离。
Minimum Structure Quality
决定附近结构必须达到多高质量,才能让系统停止继续扩大搜索。
Minimum Valid Tests
智能搜索中,一个结构至少需要多少次历史观察才能成为有效候选。
Reaction Observation Bars
计算历史 Pivot 出现以后,向后观察多少根K线的价格反应。
Break Confirmation Buffer
突破原撑压区域以后,需要额外超过多少缓冲才认定为有效突破。
Retest Tolerance
回踩或反抽过程中,允许价格距离原结构存在多大误差。
25. 警报
指标支持以下 Alert:
有效突破压力
有效跌破支撑
压力确认转支撑
支撑确认转压力
突破失败
跌破失败
如果启用了收盘确认,那么对应结构事件会等待K线确认以后判断。
26. 关于重绘和结构变化
这个指标不是提前预测 Pivot 的工具。
Pivot 本身必须等待右侧K线确认。
因此:
刚刚形成的最高点或最低点,不会在尚未确认时被当成已经成立的正式结构。
但是当前支撑压力未来仍然可能发生变化。
原因包括:
新的 Pivot 被确认。
新的历史触碰让另一个价格簇变得更重要。
现价移动以后,当前最相关的结构发生变化。
旧数据离开回看范围。
价格突破以后发生撑压角色转换。
这是动态结构模型正常的重新评价过程。
27. 为什么这些模块必须放在一起?
虽然指标中包含多个计算部分,但它们并不是几个无关指标简单拼接。
每一个部分都负责解决同一个支撑压力问题中的不同阶段。
Pivot :找出可能的历史结构观察点。
价格聚类 :把相近观察点合并成真正的价格区域。
结构排序 :判断哪些区域具有更多历史证据。
智能搜索 :判断为了找到有效结构到底需要看多远。
历史反应 :判断价格过去触碰以后是否真的产生明显反应。
强度评分 :评价最终选中结构过去的整体质量。
ATR区域 :把一个中心价格转化为更加符合实际市场的撑压带。
状态机 :处理结构突破以后,到底是真突破、失败突破还是完成撑压转换。
因此:
这是一条连续的结构计算链,而不是把多个独立指标组合到同一个脚本中。
28. 这套实现有什么特点?
主要设计特点包括:
不会把所有 Pivot 独立画线,而是先进行价格聚类。
支撑和压力可以使用完全不同的智能搜索距离。
是否扩大搜索范围由结构质量决定,而不是只有距离。
高波动环境会提高附近小结构的有效要求。
“选哪条线”和“这条线有多强”是两个独立计算阶段。
反复穿越会降低结构评分,而不是因为出现次数多就自动变强。
支撑压力使用区域表达,而不是绝对精确价格。
突破使用之前已经存在的结构,而不是突破以后重新计算出的新位置。
撑压转换必须经过回踩/反抽状态确认。
主图只重点展示当前结构,不保留大量历史突破标签干扰图表。
29. 使用限制
任何支撑压力算法都无法提前确定某个位置未来一定守住或者一定突破。
需要注意:
Pivot 确认天然存在延迟。
随着市场产生新数据,当前支撑压力可能发生变化。
历史上反应明显,不代表未来一定继续反应。
强度分数不是未来成功概率。
刚上市或者历史数据很少的标的可能缺少足够结构样本。
趋势发生巨大变化以后,过去有效的结构可能迅速失效。
成交量相关评价依赖该标的成交量数据本身的有效性。
不同周期得到的撑压位置可以完全不同。
非标准K线可能使用经过转换的 OHLC,因此计算结果可能与真实成交价格图存在差异。
30. 最后
支撑和压力应该被理解为市场可能发生博弈的区域,而不是保证发生反转的价格。
这个指标的核心目标,是把复杂的历史市场结构整理成少量、当前更值得观察的位置。
它是市场结构分析框架,而不是自动交易系统。
本指标仅用于市场结构研究与辅助分析,不构成投资建议、收益承诺或任何形式的买卖推荐。 مؤشر

VWAP Regime AI [AxeAlgo]OVERVIEW
VWAP Regime AI is an anchored VWAP (Volume-Weighted Average Price) with
standard-deviation bands, enhanced by a native, from-scratch k-means
clustering engine that classifies recent market volatility into three
regimes — Low, Medium, and High — and adapts the indicator's behavior
based on which regime is currently active.
At its foundation this is the same tool institutional desks use every
day: a running volume-weighted average price with bands around it, used
to judge where "fair value" sits and how far price has stretched away
from it. What this script adds on top is a genuine unsupervised machine
learning step that reads the market's own volatility and lets that
reading drive three things: how wide the bands are, which signal logic
is active, and how much the indicator should trust its own regime call
before acting on it.
This script is free and open-source. All calculations happen natively in
Pine Script on your own chart data.
============================================================
FULL TRANSPARENCY ABOUT THE "AI" IN THIS SCRIPT
============================================================
Pine Script cannot call an LLM, a remote model, or any external AI
service — TradingView does not allow outbound network requests from
indicators, and this script makes none. There is no hidden API call,
no "black box," and nothing running outside of what you can read in the
source code.
What "AI" means here specifically: this script implements k-means
clustering — a well-established unsupervised machine learning algorithm
— entirely in native Pine Script math and arrays. It groups a rolling
window of recent ATR (volatility) readings into three clusters by
repeatedly assigning each reading to its nearest cluster center and then
recomputing each center as the mean of everything assigned to it. This
publication states plainly what is and is not happening so nobody
mistakes this for predictive AI, sentiment analysis, or anything that
consults external data or forecasts the future. It classifies what has
already happened; it does not predict what will happen next.
============================================================
HOW IT WORKS
============================================================
VWAP & Standard Deviation Bands
--------------------------------
The core VWAP resets at the start of each new anchor period (Session,
Week, Month, Quarter, or Year — configurable) and accumulates a running
volume-weighted average from there. Standard deviation is calculated
using the same volume-weighted variance formula TradingView's own
built-in VWAP-with-bands tool. Up to three bands can be shown,
each set at a configurable standard-deviation distance from VWAP.
AI Volatility Clustering (K-Means)
------------------------------------
A rolling window of recent ATR readings (length and window size are both
configurable) is periodically re-clustered into three groups — Low,
Medium, High — using k-means. Reclustering happens every N bars rather
than every single bar, purely for performance; the live classification
of the current bar still updates continuously between reclusters.
Alongside the classification, the script computes a Confidence score
(0-100%): how much closer the current reading sits to its nearest
cluster than to its second-nearest one. A reading sitting right on a
cluster's center scores near 100%; a reading sitting on the boundary
between two regimes — an effectively ambiguous call — scores near 0%.
A "Minimum Regime Confidence" input lets you require a minimum score
before the regime is allowed to influence anything else in the script,
so an unconfident, boundary-line classification doesn't silently drive
behavior.
Adaptive Band Width
----------------------
When enabled, the standard-deviation band multipliers are scaled by a
per-regime factor: tighter in Low volatility, wider in High volatility,
instead of one fixed multiplier that's too tight in some conditions and
too loose in others. This only engages once the AI is both ready
(its lookback window has filled and it has run at least once) and
confident, per the Minimum Regime Confidence setting above.
Signal Logic — Mean Reversion, Breakout, or Auto
----------------------------------------------------
Two independent signal styles are built in, both measured off Band 2:
Mean Reversion looks for price crossing back inside the band from
outside (betting an extreme move snaps back toward VWAP); Breakout looks
for price crossing outside the band (betting the move has momentum to
keep running). "Auto" mode lets the detected volatility regime decide
which logic applies bar by bar — Low/Medium volatility defaults to Mean
Reversion, High volatility defaults to Breakout — falling back to Mean
Reversion whenever the AI isn't ready or confident enough to trust.
Three independent, stackable filters reduce noise on top of the raw
band cross:
- Bar-Close Confirmation: a cross only counts once the bar has fully
closed, filtering out intrabar wicks that reverse before the close.
- Signal Cooldown: blocks a new signal, in either direction, for a
configurable number of bars after the last one — aimed directly at
whipsaw (price crossing back and forth across a band repeatedly).
- Band Cross Buffer (hysteresis): requires price to clear a band by a
small extra distance, in standard deviations, rather than an exact
touch, so noise sitting right on the line doesn't keep re-triggering
crosses back and forth.
AI Volume Confirmation Filter
---------------------------------
The same k-means engine used for volatility is optionally reused on raw
volume, classifying each bar's volume as Low, Normal, or High. When
enabled, signals are only allowed on Normal-or-above volume, filtering
out low-conviction moves.
Secondary VWAP
-----------------
An optional second VWAP anchored to a different (typically higher)
period can be plotted alongside the primary one — for example a Weekly
VWAP behind a Session VWAP — for confluence, since multiple VWAP anchors
are commonly watched together rather than trusting a single one in
isolation. It is a reference line only; no bands are drawn for it.
Signal Track Record
-----------------------
An on-chart scorecard tracks, in a simple and fully model-free way, how
the signals have actually performed: each signal opens a virtual
position at that bar's close, and the next opposite-direction signal
closes it out, scored as a win or a loss purely on which way price
moved in between. No target or stop-loss assumption is built into this
score — see the Limitations section below for exactly what this number
does and does not tell you.
Status Table
---------------
An optional on-chart table shows the current regime and its confidence,
the active band scale, the current VWAP value, a "Stretch Score" (see
below), and the Signal Track Record numbers, all in one place.
Stretch Score
----------------
A signed z-score of how many standard deviations price currently sits
from VWAP. Because it's measured in the same standard deviations the
bands are drawn in, it stays consistent with whatever the adaptive band
width currently has in effect — a reading of +2.00 always means "sitting
on Band 2," whether that band is currently tight or wide.
============================================================
HOW TO USE THIS INDICATOR
============================================================
1. Start with the default settings and watch the status table for a
while before changing anything. Let the AI Volatility Clustering
lookback window fill (the table will show "Calibrating..." until it
has enough data) so the regime classification is meaningful.
2. Decide whether you want Mean Reversion, Breakout, or Auto signal
logic. Auto is a reasonable starting point since it adapts to
detected conditions automatically.
3. Watch the Confidence score alongside the regime label. If confidence
is frequently low on your instrument/timeframe, consider raising the
Minimum Regime Confidence input so the indicator falls back to
neutral behavior more readily instead of acting on ambiguous calls.
4. Use the Stretch Score to judge how extended price currently is
relative to VWAP in a way that stays consistent even as band width
adapts.
5. Treat the Signal Track Record as a rough, ongoing sanity check on
signal quality — not a backtest and not a promise (see Limitations).
6. This is a visual/analytical tool, not an auto-trading system. It
does not place trades. Any alerts it can generate are notifications
only.
============================================================
INPUT GROUPS (SUMMARY)
============================================================
VWAP Settings
- Anchor Period (Session / Week / Month / Quarter / Year)
- Source price used for the VWAP calculation
Secondary VWAP (Confluence)
- Show/hide toggle, its own anchor period, and its own color
Standard Deviation Bands
- Independent show/hide and distance (in standard deviations) for
three bands, plus a toggle for the gradient fill shading around them
AI Volatility Clustering (K-Means)
- Enable/disable the clustering engine
- ATR length used as the raw volatility reading that gets clustered
- Clustering lookback window (bars) and reclustering frequency
- Number of k-means refinement iterations per reclustering
- Adaptive band width toggle and the three per-regime scale factors
- Minimum Regime Confidence threshold
Signals
- Show/hide signal markers
- Signal Mode (Mean Reversion / Breakout / Auto)
- Volume confirmation filter toggle
- Bar-close confirmation toggle
- Signal cooldown (bars)
- Band cross buffer (hysteresis, in standard deviations)
Visuals
- Regime background highlight toggle
- Status table toggle and Signal Track Record toggle
- Colors for VWAP, each band, each regime, and each signal direction
============================================================
REPAINTING & REAL-TIME BEHAVIOR
============================================================
This script does not use any higher-timeframe security() calls and does
not look ahead — every value at every historical bar is a function of
data available up to and including that bar. Once a historical bar is
confirmed, its VWAP, bands, regime classification, and signals do not
change on subsequent chart loads or reloads.
Like any real-time indicator, values on the currently forming (unclosed)
bar update as new price/volume ticks arrive, and will settle once that
bar closes — this is standard behavior for any live indicator, not
repainting of historical data. If you want signal markers to appear only
after a bar has fully closed rather than updating intrabar, keep the
"Require Bar Close Confirmation" input enabled (it is on by default).
============================================================
LIMITATIONS — PLEASE READ
============================================================
- The Signal Track Record is a simplified, model-free heuristic, not a
backtest. It ignores commissions, spread, slippage, position sizing,
and any stop-loss/take-profit logic, and it scores a "trade" purely by
whether price was above or below the entry price when the next
opposite signal fired. It exists to give a rough, ongoing sense of
signal direction quality — it is not a performance guarantee and
should not be relied on as one.
- K-means clustering, like any clustering method, can produce a
misleadingly high confidence score if recent volatility (or volume)
readings happen to be nearly constant for an extended window — a rare
condition, more likely on thinly-traded instruments, but worth being
aware of.
- Regime classification and adaptive behavior depend on the Clustering
Lookback window filling with data first; expect "Calibrating..." on a
freshly loaded chart or a short history until then.
- This is a discretionary analysis tool intended to support your own
judgment, not a mechanical, guaranteed-signal system. No combination
of settings eliminates false signals entirely, which is why several
independent, adjustable filters (bar-close confirmation, cooldown,
hysteresis buffer, volume confirmation, regime confidence threshold)
are provided rather than relied on individually.
============================================================
RISK DISCLAIMER
============================================================
This script is provided for educational and informational purposes
only. It is not financial advice, and it is not a recommendation to buy
or sell any security or instrument. Trading and investing involve
substantial risk of loss and are not suitable for every investor. Past
performance — whether real, simulated, or shown via the on-chart Signal
Track Record — is not indicative of future results. Always do your own
research and consider consulting a licensed financial advisor before
making trading decisions. Use this indicator, and any alerts it
generates, entirely at your own risk. مؤشر

Regime Detector [StrixEDGE]📊 WHAT IT DOES
StrixEDGE Regime Detector automatically classifies the market into four distinct states — Strong Trend, Weak Trend, Ranging, or Volatile Chop — using a proprietary four-metric analysis system. Subtle background colors make the current regime instantly visible without cluttering your chart.
🔬 WHY IT'S DIFFERENT
Most regime indicators rely solely on ADX. This indicator combines four independent dimensions: ADX for trend strength, RSI range-shift analysis for bull/bear regime identification, KAMA slope for adaptive trend direction, and ATR volatility ratio for market character assessment. The four-layer approach catches regime changes that single-metric tools miss entirely.
⚙️ HOW IT WORKS
The indicator evaluates four metrics simultaneously:
• ADX measures raw trend strength (>25 = trending)
• RSI tracks whether momentum is operating in bull mode (40-80) or bear mode (20-60)
• KAMA's normalized slope detects whether price is directional or flat
• ATR ratio reveals if volatility is above or below its historical average
These combine into a decision matrix: all four must agree for a "Strong Trend" classification. Partial agreement produces "Weak Trend." Low ADX + flat KAMA = "Ranging." High volatility without trend = "Volatile Chop."
📈 HOW TO USE
• Green background = Strong Uptrend → trade with trend, trail stops
• Red background = Strong Downtrend → look for shorts or stay flat
• Blue background = Ranging → use mean-reversion setups, avoid trend strategies
• Amber background = Volatile Chop → reduce size or sit out
• Diamond markers appear when regime shifts — these are key decision points
🎛️ INPUTS & DEFAULTS
ADX Period: 14 | RSI Period: 14 | KAMA Length: 21 | ATR Period: 14
ATR Lookback: 50 | Flat Threshold: 0.05 | Sensitivity: Normal
All inputs adjustable. Conservative mode raises thresholds for fewer signals. Aggressive lowers them.
═══════════════════════════════════════════════════════
🔧 CUSTOMIZATION
All parameters are fully adjustable through the indicator settings panel. Inputs are grouped logically:
• ⚙️ Core Parameters — main calculation settings
• 📊 Table Settings — table size (Tiny to Huge), position (4 corners), visibility toggle
• 🎨 Visual Settings — colors, show/hide elements
• 🔔 Alert Settings — threshold values for notifications
📊 DATA TABLE
A built-in data table displays all key metrics in real-time. Adjust the table size from Tiny to Huge to match your chart layout. Position it in any corner. Toggle visibility on/off.
🔔 ALERTS
Pre-built alert conditions for all major signals. Set up alerts via TradingView's alert dialog — select this indicator and choose from the available conditions.
⏱️ RECOMMENDED TIMEFRAMES
Works on all timeframes. Recommended: 1H, 4H, Daily for best signal quality. Lower timeframes produce more signals but with higher noise. Weekly/Monthly for position trading context.
✅ COMPLIANCE
• No repainting — all signals based on confirmed bar close data
• No future data references
• Open-source code — verify the logic yourself
⚠️ DISCLAIMER
This indicator is a technical analysis tool, not financial advice. It does not predict future price movements. Past patterns and signals do not guarantee future results. Trading involves substantial risk of loss. Always use proper risk management, including stop losses and appropriate position sizing. Never risk more than you can afford to lose. مؤشر

Volatility Regime Trend Ribbon [Pineify]Volatility Regime Trend Ribbon
Overview
This overlay adapts smoothing as markets change. It ranks ATR, selects a regime, and adjusts trend speed and ribbon width.
Key Features
Three ATR percentile regimes.
Regime-specific trend lengths and band scales.
Optional colors, confirmed markers, and alerts.
How It Works
ATR is ranked over a rolling window. Low ranks select low volatility, high ranks select high volatility, and middle ranks select normal volatility. Warm-up uses the normal state.
The selected length drives a recursive EMA-style center. Ribbon edges equal the center plus or minus ATR times the base multiplier and regime scale. This is a price boundary, not a statistical confidence interval. Direction turns bullish after a confirmed close above the upper edge, bearish below the lower edge, and otherwise retains its prior state.
Trading Ideas and Insights
Colors separate quiet, ordinary, and elevated ranges. A band exit can frame a direction change; movement inside stays unresolved. Gaps or thin trading can add lag and false transitions. No output is an automatic trade.
How Multiple Indicators Work Together
ATR measures range, percentile rank adds context, adaptive smoothing changes speed, and the band supplies the direction threshold. They form one engine without external data.
Unique Aspects
The original design links volatility to smoothing speed and band scale, not just color. Retained direction inside the band adds hysteresis; alerts distinguish regime and direction changes.
How to Use
Apply it to a liquid market and let the percentile window warm up.
Tune lengths and band scales for the symbol and timeframe.
Read center color as direction and ribbon color as regime.
Use confirmed alerts with independent risk controls.
Customization
ATR Length controls range sensitivity; Percentile Lookback controls context. Thresholds define states, lengths set speed, and band inputs set transition distance. Display layers are optional. Current values can change intrabar; markers and alerts require a confirmed close.
Conclusion
This ribbon organizes volatility regime and ATR percentile context for 15-minute to daily charts. It uses past and present data, remains lagging and parameter-sensitive, and makes no performance claim.
مؤشر

Butterworth Spectral Trend [QuantAlgo]🟢 Overview
The Butterworth Spectral Trend is a trend-following indicator built on a 2-pole Butterworth SuperSmoother rather than fixed moving averages or crossover logic. It extracts a low-noise spectral trend path from price, optionally stretches or compresses that path’s cutoff from residual signal-to-noise conditions, then converts filter slope into direction with hysteresis and hold controls so traders can separate genuine trend turns from short-lived noise across every timeframe and market.
🟢 How It Works
The foundation of the indicator is a classic 2-pole Butterworth SuperSmoother. Coefficients are derived from the live cutoff period and a damping factor (√2 by default for the maximally flat Butterworth response), then applied recursively to the selected price source, with an optional Nyquist average of the current and prior sample to suppress 2-bar oscillation:
butterworth_coefficients(float period, float damping) =>
float safe_period = math.max(period, 2.0)
float argument = damping * math.pi / safe_period
float alpha = math.exp(-argument)
float c2 = 2.0 * alpha * math.cos(argument)
float c3 = -alpha * alpha
float c1 = 1.0 - c2 - c3
A provisional filter always runs at the base cutoff. Residual energy (price minus provisional filter) and provisional slope energy are tracked with EMA-style RMS estimates. Their ratio maps market conditions into a noise weight that lengthens the cutoff when residuals dominate and shortens it when directional slope energy is cleaner:
float residual = price_source - provisional_filter
float signal_to_noise = residual_rms > 0 ? slope_rms / residual_rms : 10.0
float noise_weight = 1.0 / (1.0 + math.min(math.max(signal_to_noise, 0.05), 10.0))
float target_cutoff = min_cutoff + (max_cutoff - min_cutoff) * noise_weight
float desired_cutoff = adaptive_cutoff ? base_cutoff * (1.0 - adapt_strength) + target_cutoff * adapt_strength : float(base_cutoff)
The live cutoff is blended toward that target with a smoothing factor so period changes do not jump bar to bar. The final spectral filter is then computed from those adaptive coefficients. When adaptivity is disabled, the filter always uses the fixed base cutoff period.
Direction is read from the spectral filter’s slope, not from price-versus-line crossovers. Optional hysteresis requires opposite slope to exceed a multiple of its typical recent magnitude before a flip is allowed, and a minimum hold bar count enforces a cooldown after each flip:
float filter_slope = spectral_filter - nz(spectral_filter , spectral_filter)
float deadband = hysteresis * typical_slope
bool opposite_move = slope_direction != 0 and slope_direction != trend_direction
bool clears_deadband = abs_filter_slope > deadband or hysteresis == 0.0
bool hold_complete = bars_since_flip >= min_hold_bars
if opposite_move and clears_deadband and hold_complete
trend_direction := slope_direction
bars_since_flip := 0
This design means the trend path is spectral (period-based smoothing), while state flips are slope-gated. Clean directional conditions can tighten the cutoff for faster response; noisy conditions can lengthen it for more stability. Hysteresis and hold bars further reduce clustered flips without changing the underlying filter math.
Direction state is tracked through an integer trend direction, with signal conditions derived from comparing the current and prior bar states:
turned_bullish = trend_direction == 1 and trend_direction != 1
turned_bearish = trend_direction == -1 and trend_direction != -1
trend_changed = turned_bullish or turned_bearish
🟢 Signal Interpretation
▶ Bullish Trend (Green/Bullish palette): When spectral filter slope turns positive and clears any active hysteresis and hold constraints, the indicator enters bullish mode with bullish colouring applied across the SuperSmoother line, optional spectral bodies, gradient fill, and BUY label. This state persists until slope reverses with enough strength (and after enough bars) to satisfy the signal filters, allowing shallow noise wiggles in the filter to occur without flipping direction.
▶ Bearish Trend (Red/Bearish palette): When spectral filter slope turns negative under the same constraints, the indicator enters bearish mode with bearish colouring across all visual elements. A confirmed opposite slope move is required to exit this state and print a SELL signal.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 1-hour to daily charts with a balanced base cutoff, moderate residual adaptivity, and lookback. "Fast Response" shortens the cutoff and strengthens adaptivity for intraday charts from 5-minute to 1-hour, where earlier turns matter more than flip sparsity. "Smooth Trend" lengthens the cutoff, softens adaptivity, and adds light hysteresis plus a short hold for position trading on daily and weekly timeframes, where false flips are more costly than delayed ones. Selecting a preset overrides the corresponding core, adaptivity, and signal inputs.
▶ Built-in Alerts: Three alert conditions cover all directional states. "Bullish Trend Signal" fires on the bar where trend direction confirms bullish. "Bearish Trend Signal" fires on the bar where it confirms bearish. "Any Trend Change" combines both into a single condition for traders who want a unified notification regardless of direction. Alerts continue to work even when signal labels are hidden.
▶ Visual Customisation: Six colour presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish colour schemes across the SuperSmoother line, spectral bodies, gradient fill, signal labels, and optional bar and background colouring. Bar colouring tints price candles with the active trend colour at a configurable transparency level, and background colouring extends the directional tint across the full chart pane.
مؤشر

Adaptive Trend Ensemble [BackQuant]Adaptive Trend Ensemble
Overview
Adaptive Trend Ensemble is an online-learning trend filter that combines eight different moving-average methods into one continuously weighted trend estimate.
Instead of selecting one moving average permanently, the indicator treats each method as an independent forecasting expert. Every bar, each expert is evaluated according to whether its previous slope correctly anticipated the direction of the latest price move.
Experts that were directionally correct retain more influence. Experts that were wrong lose influence through a multiplicative penalty. The weights are then normalised and used to blend all eight moving-average values into one adaptive ensemble line.
The indicator therefore attempts to answer two separate questions:
Which smoothing method has recently aligned best with price direction?*
How strongly do the weighted methods currently agree on the direction of trend?
The final output includes:
A dynamically weighted ensemble trend line.
Bullish and bearish trend-state colouring.
A gradient between price and the ensemble.
A consensus-driven glow.
Trend-coloured candles.
A live label showing the leading expert and its current weight.
Alerts when the ensemble trend changes direction.
This is not a fixed moving average and it is not a simple average of several indicators. The contribution of each expert changes over time according to its recent directional performance.
Core idea
Moving averages respond differently to the same market.
A Hull Moving Average may respond quickly during a sharp transition, while an RMA may remain stable through temporary noise. A linear-regression estimate may follow a smooth directional move well, while a conventional EMA may perform better during a more ordinary trend.
No individual smoothing method is consistently superior across every environment.
Markets alternate between:
Persistent trends.
Fast breakouts.
Slow directional drift.
Volatile reversals.
Compressed ranges.
Noisy transitions.
A fixed indicator cannot change its mathematical personality when the environment changes. It continues using the same weighting structure regardless of whether that structure currently suits the market.
Adaptive Trend Ensemble addresses this by maintaining a bank of different smoothing methods and changing their influence through time.
The model does not attempt to decide in advance which method is best. It allows recent realised price action to determine which experts should currently receive more weight.
Prediction with expert advice
The indicator is based on a class of online-learning methods commonly described as:
Prediction with Expert Advice
In this framework:
Several experts produce predictions.
The actual outcome is observed.
Each expert receives a loss based on its prediction.
Expert weights are updated.
The combined model places more influence on better-performing experts.
The term “expert” does not imply that each method is intelligent by itself. An expert is simply an individual forecasting rule.
In this indicator, the eight experts are eight moving-average methods.
The model uses a multiplicative-weights process closely related to the Hedge and Weighted Majority families of online-learning algorithms.
The central principle is:
Do not commit permanently to one model.
Track several models simultaneously.
Reduce the weight of models that make mistakes.
Allow the combined forecast to adapt as relative performance changes.
Online learning
The model learns sequentially, one bar at a time.
It does not train on a separate historical dataset and then freeze its parameters.
At each new bar:
The previous slope of each moving average is treated as that expert's prediction.
The realised close-to-close direction is observed.
Each expert receives a loss.
Weights are updated multiplicatively.
Weights are normalised.
The current expert values are blended using the new weights.
This makes the process online and adaptive.
The weight state is carried forward from bar to bar, meaning the current ensemble reflects the accumulated results of earlier expert decisions.
The expert bank
The ensemble contains eight moving-average experts:
Simple Moving Average - SMA*
Exponential Moving Average - EMA
Weighted Moving Average - WMA*
Hull Moving Average - HMA
Double Exponential Moving Average - DEMA*
Running Moving Average - RMA
Arnaud Legoux Moving Average - ALMA*
Least-Squares Moving Average - LSMA
All experts use the same Base Length.
This is important because it keeps their nominal observation horizon comparable. The ensemble is comparing different mathematical treatments of approximately the same lookback rather than comparing completely unrelated time horizons.
Even with an identical length, the experts behave differently because they assign weight to historical observations in different ways.
Simple Moving Average - SMA
The SMA applies equal weight to every observation inside the selected window.
Its general form is:
SMA = Sum of observations / Number of observations
The SMA is stable and easy to interpret, but every included observation has the same importance.
This can make it slower to react when a new trend begins because older prices continue to influence the average until they leave the window.
Within the ensemble, the SMA acts as a neutral equal-weight baseline.
Exponential Moving Average - EMA
The EMA assigns progressively greater weight to recent observations.
Its recursive form is based on:
EMA = α × Current Price + (1 - α) × Previous EMA
where α is determined by the selected length.
Compared with an SMA of the same length, an EMA generally responds more quickly to recent movement.
Its recursive weighting makes it useful during ordinary directional markets, although it can still turn repeatedly when price oscillates in a range.
Weighted Moving Average - WMA
The WMA assigns linearly increasing weight to more recent observations.
For example, in a simplified four-period WMA, the newest value receives four units of weight, while the oldest receives one.
This makes the WMA more responsive than an equal-weight SMA while retaining a finite lookback window.
Within the ensemble, it provides a direct recency-weighted alternative to the exponential behaviour of the EMA.
Hull Moving Average - HMA
The Hull Moving Average was designed to reduce lag while preserving a relatively smooth output.
Its construction combines weighted moving averages over different horizons, applies a lag-compensation step, and then smooths the result over approximately the square root of the original length.
Conceptually:
Calculate a faster WMA.
Calculate a slower WMA.
Use their difference to compensate for lag.
Smooth the compensated result.
The HMA often reacts quickly to changes in trend direction.
That responsiveness can make it valuable during strong transitions, but it may also make it more sensitive to short-term oscillation.
Double Exponential Moving Average - DEMA
Despite its name, DEMA is not simply an EMA calculated twice.
Its general construction is:
DEMA = 2 × EMA - EMA of EMA
The second EMA estimates some of the lag in the first EMA. Subtracting it attempts to create a smoother with less delay.
DEMA can respond quickly to directional changes, although reduced lag may also increase sensitivity during unstable conditions.
Running Moving Average - RMA
RMA is commonly associated with Wilder-style smoothing.
It uses a slower recursive update than a typical EMA of the same nominal length.
Its general form places substantial influence on the previous RMA value, producing a persistent and stable estimate.
The RMA expert often changes direction less aggressively than the faster methods.
Within the ensemble, it acts as one of the more conservative smoothing models.
Arnaud Legoux Moving Average - ALMA
ALMA applies a Gaussian-style weighting curve across the observation window.
The weighting distribution can be shifted toward more recent observations while maintaining a smooth bell-shaped profile.
The script uses a recent-weighted offset and a fixed Gaussian width.
ALMA attempts to balance:
Smoothness.
Reduced lag.
Controlled weighting of the observation window.
It provides a different weighting structure from the linear, exponential and lag-compensated experts.
Least-Squares Moving Average - LSMA
The LSMA is based on linear regression.
Instead of averaging historical prices directly, it fits a straight line through the selected window and evaluates the regression estimate at the current bar.
The method attempts to represent the local directional path of price.
LSMA can follow smooth trends closely because it models slope explicitly. However, it may respond strongly when the local regression direction changes abruptly.
Within the indicator, the LSMA is produced using the rolling linear-regression output.
Base Length
The Base Length is shared by all eight experts.
Lower values:
Make every expert more responsive.
Increase sensitivity to short-term changes.
Produce faster weight and trend changes.
Increase the possibility of whipsaws.
Higher values:
Create smoother expert outputs.
Focus the ensemble on broader trend structure.
Reduce short-term changes.
Increase lag during sudden reversals.
Because all experts share the same length, changing this setting adjusts the entire ensemble horizon.
It does not change the number of experts or their relative starting weights.
Expert predictions
The model evaluates each expert using the direction of its slope.
For each moving average:
Rising slope is represented as +1.
Falling or non-rising slope is represented as -1.
To evaluate the latest completed move, the script uses the expert's slope from the previous bar.
For example:
If the expert was rising from two bars ago to the previous bar, it predicted a positive current move.
If the expert was falling, it predicted a negative current move.
The realised outcome is determined from the current close relative to the previous close:
Close above previous close = positive realised direction.
Close below previous close = negative realised direction.
Unchanged close = zero realised direction.
The model therefore scores directional slope prediction, not the numerical distance between each moving average and price.
An expert is rewarded for getting direction right, even if its plotted value is relatively far from the market.
Likewise, an expert is penalised for getting direction wrong even if its line remains visually close to price.
Loss functions
The indicator provides two loss functions:
Directional 0/1*
Magnitude-weighted
The selected loss determines how strongly incorrect experts are penalised.
Correct experts receive zero loss under both modes.
Directional 0/1 loss
Directional mode treats every incorrect prediction equally.
The loss is:
0 when the expert predicted the realised direction correctly.
1 when the expert predicted incorrectly.
This means that an incorrect prediction on a very small move receives the same loss as an incorrect prediction on a large move.
Directional mode answers a simple question:
Was the expert right or wrong?
It does not consider how important the move was.
This mode can produce consistent learning because every directional observation is treated equally, but it may respond to small and insignificant price changes as strongly as major moves.
Magnitude-weighted loss
Magnitude-weighted mode scales the penalty according to the size of the realised move.
The move is normalised using ATR:
Move = Absolute close-to-close change / ATR
The ATR uses the shared Base Length.
The incorrect expert's loss becomes:
Loss = Normalised Move
with the magnitude capped at 3.
The cap prevents a single extreme bar from creating an unlimited penalty.
This mode gives greater importance to mistakes during large movements.
For example:
An incorrect expert during a 0.10 ATR move receives a small penalty.
An incorrect expert during a 1.00 ATR move receives a larger penalty.
An incorrect expert during a move above 3 ATR receives the capped penalty of 3.
Magnitude-weighted mode answers:
How costly was the directional mistake relative to current volatility?
This can make the ensemble adapt more strongly after significant movements while paying less attention to small fluctuations.
Flat price bars
If the current close is unchanged from the previous close, the realised direction is zero.
Because expert directions are encoded as either positive or negative, no expert can exactly match a zero realised direction.
Under Directional mode, all experts receive the same incorrect classification.
Because every weight is multiplied by the same penalty factor, their relative weight distribution remains effectively unchanged after normalisation.
Under Magnitude-weighted mode, the realised move is zero, so the resulting penalty is also zero.
In both cases, a completely flat close-to-close bar does not materially change the relative ranking of the experts.
Multiplicative weight update
Each expert begins with an equal weight:
Initial Weight = 1 / 8
After the loss is calculated, the weight is updated using:
New Unnormalised Weight = Old Weight × exp(-η × Loss)
where η is the Learning Rate.
This is the central Hedge or multiplicative-weights update.
Correct experts have zero loss:
exp(-η × 0) = 1
Their unnormalised weight is unchanged.
Incorrect experts have a positive loss, so their weight is multiplied by a value below one.
For example, in Directional mode with a Learning Rate of 2:
Incorrect Weight Multiplier = exp(-2) ≈ 0.135
An incorrect expert retains only about 13.5% of its previous unnormalised weight before the weight set is normalised again.
This does not mean its final displayed weight will necessarily fall by exactly 86.5%, because all expert weights are subsequently rescaled so they sum to one.
Why multiplicative updates are used
An additive system might subtract a fixed quantity from each incorrect expert.
That can create problems:
Weights can become negative.
The same penalty has a different effect on large and small weights.
The model may not adapt proportionally.
A multiplicative update preserves non-negative weights and penalises experts proportionally to their current influence.
It also allows the distribution to become concentrated around consistently successful methods.
Learning Rate - η
The Learning Rate controls how aggressively the ensemble shifts weight after mistakes.
Higher values:
Penalise incorrect experts more strongly.
Move influence rapidly toward recent winners.
Can produce winner-take-all behaviour.
Can make the leader change abruptly after a few important bars.
Lower values:
Produce gradual weight changes.
Keep the expert distribution more diversified.
Reduce sensitivity to short-term performance.
Make the model slower to adapt.
The Learning Rate does not change the moving averages themselves. It changes only how quickly their relative influence evolves.
High Learning Rate behaviour
At high settings, a wrong expert may lose most of its weight after one or two mistakes.
This can be beneficial when one smoothing method is clearly better suited to the current regime.
It can also create instability:
A recent winner can dominate the ensemble.
A temporary performance streak can cause excessive concentration.
The model can switch leaders quickly when conditions reverse.
Low Learning Rate behaviour
At low settings, the ensemble behaves more like a slowly adapting average of the expert bank.
No single observation dramatically changes the distribution.
This produces smoother adaptation, but a poorly suited expert may retain substantial influence for longer.
Weight normalisation
After all expert weights are updated, they are normalised:
Normalised Weight = Expert Weight / Sum of All Expert Weights
This ensures that the complete weight set sums to one.
The weights can then be interpreted as each expert's share of the ensemble.
For example:
A 25% weight means that expert contributes one quarter of the weighted output.
A 5% weight means its current influence is relatively small.
The weights are not probabilities that the experts will be correct on the next bar.
They are adaptive influence coefficients based on accumulated relative loss.
Weight Floor
The optional Weight Floor preserves a minimum allocation for every expert.
After normalisation, the adjusted weight is calculated so that:
Every expert receives at least the selected floor.
The remaining weight is distributed according to the normalised Hedge weights.
The full set continues to sum to one.
For eight experts, a floor of 0.01 reserves at least 1% for each expert.
This assigns:
A minimum combined mass of 8%.
The remaining 92% according to relative performance.
A floor of 0.05 reserves at least 5% for each of the eight experts, using 40% of the total distribution as minimum allocations.
The remaining 60% is distributed according to current performance.
Why use a floor?
Without a floor, repeatedly incorrect experts can approach a weight extremely close to zero.
Because the update only reduces weights after losses, an expert with almost no weight may require a long period of relative outperformance before it becomes influential again.
A positive floor keeps all methods alive.
This allows an expert that performed poorly in the previous regime to recover more quickly when the market environment changes.
Weight Floor set to zero
With a zero floor:
The model is free to concentrate almost entirely in one expert.
Recent winners can dominate strongly.
The ensemble can become highly specialised.
This produces the purest multiplicative-weights behaviour but increases the risk of weight collapse.
Positive Weight Floor
With a positive floor:
The expert bank remains diversified.
Cold experts retain some influence.
The model can recover more easily after regime changes.
The leading expert's maximum possible weight is reduced.
The floor therefore controls the balance between specialisation and diversity.
Ensemble output
After the weight update, the current values of the eight experts are blended:
Ensemble = Sum of Expert Weight × Expert Value
This is a weighted average in which the weights are determined by online directional performance.
If the HMA currently has the greatest weight, the ensemble will behave more like the HMA.
If the RMA and SMA dominate, the output will become smoother and more conservative.
If the weights are distributed evenly, the line represents a broad blend of all eight methods.
The output can therefore change its effective smoothing behaviour without changing the user-selected Base Length.
Line Smoothing
The weighted ensemble may be passed through an optional EMA for visual smoothing.
A setting of 1 effectively disables this additional stage.
Higher settings:
Create a smoother displayed line.
Reduce small slope changes.
Delay bullish and bearish flips.
This smoothing is cosmetic in the sense that it occurs after the online expert weighting.
It does not affect:
Expert predictions.
Expert losses.
Weight updates.
Consensus.
Leader selection.
It does affect the final plotted line and the trend state derived from that line.
Trend state
Trend direction is determined from the slope of the smoothed ensemble line.
If the line is above its previous value, trend becomes bullish.
If the line is below its previous value, trend becomes bearish.
If the line is unchanged, the previous trend persists.
This creates a persistent two-state regime.
A bullish flip occurs when the trend changes from bearish to bullish.
A bearish flip occurs when it changes from bullish to bearish.
The trend state is based on the ensemble's slope, not on price crossing the ensemble.
Price may be above or below the line without immediately changing its direction.
Consensus calculation
The indicator calculates a separate weighted directional vote.
Each expert's current slope direction is multiplied by its current weight:
Weighted Vote = Sum of Weight × Direction
Because each direction is either +1 or -1 and the weights sum to one, the vote lies between -1 and +1.
Examples:
+1 means all meaningful weight is assigned to rising experts.
-1 means all meaningful weight is assigned to falling experts.
0 means bullish and bearish weighted influence is evenly balanced.
The displayed consensus strength is:
Consensus Strength = Absolute Value of Weighted Vote
This converts the result to a range from zero to one.
0% means the weighted expert bank is evenly divided.
100% means the weighted influence is entirely aligned in one direction.
Weighted consensus versus expert count
Consensus is not calculated by simply counting how many of the eight experts are rising.
An expert with a 40% weight contributes more than one with a 2% weight.
For example:
Five low-weight experts may be bullish.
Three high-weight experts may be bearish.
The final weighted vote can still be bearish.
This means consensus measures the agreement of the current weighted model, not the raw number of methods on each side.
With a zero Weight Floor, consensus may become very high when one expert dominates, even if several near-zero-weight experts disagree.
With a positive floor, disagreement from the remaining experts has more influence on the consensus value.
Consensus is not confidence
The consensus percentage should not be interpreted as a probability that the trend will continue.
It measures only the current alignment of weighted expert slopes.
High consensus means:
The influential experts point in the same direction.
It does not guarantee:
Future price continuation.
A profitable entry.
Low reversal risk.
Strong agreement can occur late in a mature trend as well as early in a new one.
Leading method
The live information label identifies the expert with the highest current weight.
It displays:
The expert name.
Its current percentage weight.
The weighted consensus strength.
The current ensemble direction.
For example:
Leading: HMA (34.5%)*
Consensus: 78% ▲
This means the HMA currently has the largest share of the ensemble and the weighted expert bank is strongly aligned upward.
The leader percentage is not a win probability.
It is only the experts share of the current normalised weight distribution.
Leader changes
The leading method can change when:
The current leader makes directional mistakes.
Another expert remains correct while competitors are penalised.
A large magnitude-weighted move strongly changes relative weights.
The market transitions into a regime better suited to another smoother.
Leader changes can help reveal how the ensemble is adapting.
For example:
A shift toward HMA or DEMA may reflect stronger preference for responsive methods.
A shift toward SMA or RMA may reflect better recent performance from slower methods.
A shift toward LSMA may occur during a smooth local directional path.
These interpretations are contextual and should not be treated as fixed rules.
Gradient fill
The indicator fills the area between price and the ensemble line.
When price is above the line:
A bullish gradient is displayed.
When price is below the line:
A bearish gradient is displayed.
The gradient visually separates price from the adaptive trend estimate.
The fill reflects price location, while the line colour reflects the slope-derived ensemble trend.
These can temporarily disagree.
For example:
Price may fall below a still-rising ensemble during a pullback.
Price may rise above a still-falling ensemble during a counter-trend rally.
This disagreement can provide useful context.
Consensus glow
A glow is drawn around the ensemble line.
Its brightness changes according to weighted consensus.
When consensus is high:
The glow becomes brighter and more visible.
When the experts are divided:
The glow becomes more transparent.
The glow width is scaled using ATR based on the Base Length, helping the effect remain proportional across instruments and volatility environments.
The glow is a visual representation of model agreement. It does not modify the line or trend calculation.
Candle colouring
Candles can be coloured according to the current ensemble trend:
Bullish trend uses the selected bullish colour.
Bearish trend uses the selected bearish colour.
Candle colouring is based on the direction of the ensemble line, not the direction of each individual candle.
A bearish candle can therefore remain green during a bullish ensemble regime, and a bullish candle can remain red during a bearish regime.
How to interpret the indicator
Bullish ensemble trend
A bullish state means the final ensemble line is rising.
This indicates that the current weighted combination of experts is moving upward.
It does not require all individual experts to be bullish.
Bearish ensemble trend
A bearish state means the final ensemble line is falling.
The weighted combination is moving downward, even if one or more individual experts remain bullish.
High bullish consensus
A strongly positive vote means most influential expert weight is assigned to rising methods.
This can indicate broad directional alignment.
High bearish consensus
A strongly negative vote means the influential experts are predominantly falling.
Low consensus
A consensus near zero means weighted expert directions are divided.
This can occur during:
Trend transitions.
Sideways ranges.
Pullbacks.
Disagreement between faster and slower methods.
Low consensus does not automatically mean price will remain sideways. It means the ensemble's components are not currently aligned.
High leader weight and high consensus
This indicates that:
One method currently dominates.
The broader weighted bank is aligned with it.
The model is highly concentrated and directionally unified.
This can produce a responsive and decisive ensemble, but it also means the output depends heavily on the current leader.
Distributed weights and high consensus
This means several experts maintain meaningful weights while pointing in the same direction.
The trend is supported by a more diversified group of methods.
Leader weight high but consensus low
This can occur when the dominant expert points one way while several remaining experts point the other way.
The ensemble may still follow the leader, but internal disagreement is present.
How to use the indicator
1. Trend regime filter
Use the ensemble slope as directional context:
Prioritise long setups during bullish regimes.
Prioritise short setups during bearish regimes.
The indicator does not define entry price, stop placement or profit targets.
2. Consensus filter
A user may require stronger consensus before acting on the trend state.
For example:
A bullish flip with low consensus may represent an early or uncertain transition.
A bullish regime with high consensus indicates broader weighted alignment.
No universal consensus threshold is appropriate for every market.
3. Pullback analysis
During a bullish ensemble regime:
Price moving toward or below the line may represent a pullback.
The ensemble remaining bullish suggests its trend estimate has not yet reversed.
During a bearish regime:
Price moving toward or above the line may represent a counter-trend rally.
Price interaction with the line should be combined with structure and risk management.
4. Regime adaptation observation
The Leading Method label can be used to study how different smoothers perform through changing environments.
Rather than assuming one moving average is always best, the user can observe:
Which expert gains weight during trends.
Which expert takes over during transitions.
How concentrated the model becomes.
How quickly weights change under different Learning Rates.
5. Bullish and bearish flips
Trend flips can be used as:
Regime-change alerts.
Confirmation for another setup.
Potential exit conditions.
A directional filter for discretionary trades.
Because flips are based on line slope, responsive settings can generate repeated changes during ranges.
Suggested configurations
Balanced adaptive configuration
Moderate Base Length.
Moderate Learning Rate.
Directional loss.
Small positive Weight Floor.
Minimal Line Smoothing.
This keeps the model adaptive while preserving some expert diversity.
Fast adaptation configuration
Shorter Base Length.
Higher Learning Rate.
Magnitude-weighted loss.
Zero or very small Weight Floor.
Line Smoothing of 1 or 2.
This allows rapid concentration around recent winners but can create unstable leader changes.
Conservative diversified configuration
Longer Base Length.
Lower Learning Rate.
Directional loss.
Positive Weight Floor.
Additional Line Smoothing.
This creates slower and more diversified adaptation.
Large-move-focused configuration
Magnitude-weighted loss can be used when mistakes during large ATR-normalised moves should matter more than errors during minor fluctuations.
This may reduce the influence of small alternating bars on the weight distribution.
Pure directional configuration
Directional loss is useful when every close-to-close directional observation should be treated equally.
It creates a straightforward right-or-wrong scoring process.
How this differs from averaging moving averages
A normal moving-average ribbon or composite may calculate:
Average of SMA, EMA, HMA and other methods.
If every method receives equal weight permanently, its influence never changes.
Adaptive Trend Ensemble instead calculates:
Performance-dependent weights.
Sequential loss updates.
A dynamically changing weighted output.
Two bars with the same expert values can produce different ensemble values if the weight distributions differ.
How this differs from selecting the current fastest average
The indicator does not select whichever moving average is currently closest to price or whichever has moved the most.
Weights are based on whether previous expert slopes correctly anticipated realised price direction.
An expert can therefore lead even if it is not the fastest or closest line.
How this differs from an optimisation
The model does not search historical data for one set of parameters with the best backtest result.
It does not change the shared length of each expert.
Instead, it performs continuous online adaptation of the expert weights.
This avoids permanently selecting one historical winner, but it also means recent performance can strongly influence the current model.
How this differs from a machine-learning forecast
The indicator uses a genuine online-learning algorithm, but it is not a neural network or a price-target forecasting model.
It does not estimate the size of the next move.
The experts make binary directional predictions derived from their slopes.
The learning system then adjusts how much influence each moving-average value receives.
It is therefore best understood as an adaptive model-selection and blending process.
Causality and real-time behaviour
The learning update uses:
The prior-bar slope of each expert.
The current close-to-close realised direction.
It does not use future bars.
On historical completed candles, the update is fully causal.
On the current live candle:
The close can continue changing.
The realised direction can change.
Expert values can change.
Weights and consensus can update intrabar.
A bullish or bearish flip may appear before the candle closes.
Users requiring confirmed signals should evaluate the indicator at bar close.
Strengths
Combines eight distinct smoothing methods.
Adapts expert influence through online learning.
Supports directional and magnitude-sensitive losses.
Uses multiplicative updates rather than fixed weighting.
Provides optional protection against permanent weight collapse.
Separates ensemble direction from expert consensus.
Displays the currently leading method.
Uses one shared horizon for a fairer expert comparison.
Requires no offline training process.
Provides transparent open-source calculations.
Summary
Adaptive Trend Ensemble combines eight moving-average experts using a multiplicative online-learning model.
Each expert uses the same Base Length but applies a different smoothing method. The previous slope of each expert acts as its directional prediction for the latest close-to-close move.
After the realised direction is observed, incorrect experts receive either a fixed directional loss or an ATR-normalised magnitude-weighted loss. Their weights are reduced using an exponential Hedge update, then normalised and optionally adjusted using a minimum Weight Floor.
The current expert values are blended according to these adaptive weights, producing one ensemble line whose effective behaviour changes as different methods gain or lose influence.
A separate weighted vote measures current directional agreement. This consensus controls the visual glow and is displayed beside the current leading expert.
The result is a transparent adaptive trend model that does not assume one moving average will remain optimal. Instead, it continuously redistributes influence toward the methods that have recently aligned better with realised price direction while retaining configurable control over responsiveness, diversity and visual smoothing.
مؤشر

Fibonacci Retracement [AFD]Fibonacci levels that find their own two points, and keep finding them.
THE PROBLEM WITH DRAWING THEM BY HAND
A retracement is two clicks and a judgement call. The judgement is the hard part - which high, which low, and whether the leg you just measured is one move or two glued together. Then the session rolls over and the answer changes, so you do it again.
This draws the grid from the chart's own data instead. You tell it which range matters and it finds the two points itself, every bar, forever. Come back after the open and it has already re-anchored to the new day.
PICKING THE RANGE
Four choices, and they are all self-maintaining.
Current Day is the default and it is the one most intraday traders want - today's high and low, re-anchoring at each session open. Previous Day is yesterday's, and it draws from yesterday's start rather than today's, so the geometry sits over the data it came from. Current Week is the same idea one period up.
Latest Swing is the interesting one. It takes the last confirmed swing high and low, and it insists they alternate.
That insistence matters more than it sounds. ta.pivothigh() and ta.pivotlow() are independent detectors, and a real chart prints two, three, four highs in a row with no qualifying low between them. Take the most recent of each and you get a "leg" whose high end is simply the latest high, not the highest one in the span - so the grid measures a move that never happened as a single push, and 0.618 lands somewhere with no relationship to anything. Here, a pivot on the same side as the last one replaces it only if it is more extreme, and a pivot on the opposite side starts the next leg. On clean impulses this changes nothing at all. On ragged ones it pulls the anchor back to the extreme the leg actually reached.
Swing Strength sets how many bars have to print either side of a pivot before it counts. Higher means fewer and more significant swings, and a longer wait.
WHICH WAY THE LEG RUNS
Fib Direction is Auto, Long or Short, and it is the one control that stays live no matter what else you switch off - because it governs both grids, not just the near one.
Auto works out the direction from the range you actually chose. It looks at the two extremes that range uses and puts 0.00 at whichever one printed later, on the reasoning that the more recent extreme is the one the move ended on. So on Current Day, a day that made its low at 10:15 and its high at 15:50 gets 0.00 at the high and a grid you read downwards. Force it with Long or Short when you disagree.
THE MINUS SIGN, AND WHY THE EXTENSIONS HAVE ONE
Everything on this chart is numbered from the leg end. 0.00 sits at the recent extreme that finished the move, 1.00 at the point it started from. That way the number you read is retracement depth, and it means the same thing whichever direction the leg ran.
The extensions continue that same line past 0.00, which is why they are negative. -0.618 sits 0.618 of the leg's range beyond the 0.00 line, in the direction the leg was travelling - exactly the way 0.618 sits 0.618 of the range on the other side of it. One ruler, and the sign tells you which side of the origin you are on.
If that looks unfamiliar, put TradingView's own Fib Retracement tool on the same two points. Its tags read the same: -0.618, not 1.618. The 1.618 reading belongs to the Trend-Based Fib Extension tool, which measures from the leg origin instead - a perfectly good convention, but putting both on one chart gives you two rulers running opposite directions from the same 1.00 line, and sooner or later you read the wrong one.
Six ratios are on offer - -0.272, -0.414, -0.618, -1.00, -1.618, -3.236 - and they ship switched off. They are levels, not targets. They are arithmetic on the leg. This script says nothing about whether price gets to one, marks no entry or exit, and has no alerts of any kind.
THE SECOND GRID
Switch on Show HTF Context and a second grid draws behind the first, anchored to the latest confirmed swing on a higher timeframe and dimmed so it stays context rather than competing for your attention. It ships off, so a fresh add gives you one clean grid.
HTF Mode is where this differs from most higher-timeframe overlays. Adaptive , the default, does not hold a fixed interval - it takes the next one up from whatever chart you are on. A 5-minute chart anchors to the 15-minute swing, a 1-hour chart to the 4-hour. Change timeframe and it follows you, and because it always resolves to something strictly higher, it cannot silently resolve to nothing.
Custom lets you name the timeframe instead, which is what you want when a specific one matters - the 4-hour swing while you scalp the 5, say. The catch is that it has to be strictly higher than the chart. Set Custom to 240 and drop to a 4-hour chart and the grid disappears with no warning label, because 240 is not higher than 240.
Both grids keep their own level checkboxes, line width, label size and text colour, so you can make the context layer as quiet as you like. The extension ratios are the exception: which ratios get drawn is shared by both grids, while which grids draw them is not. Each layer has its own extension toggle. The tooltips say which is which, because a control that looks global and is not is worse than one that plainly is.
THE SETTINGS ACTUALLY WORTH YOUR TIME
Most of the 63 inputs are the ordinary colour-and-width kind. These are the ones that change how the thing reads.
Color Mode defaults to Gradient, and it is doing real work. Each level takes its colour from its own ratio, so hue states depth - the shallow end and the deep end are different colours, and the 0.618-0.786 span reads as a region instead of two more identical lines. There are five presets plus Custom. Single Color reverts to one colour per grid if you prefer the classic look, and either way whatever transparency you pick in the colour picker is the transparency you get.
Enable Glow draws every level twice - a wide, near-transparent halo under a thin bright core. It costs nothing but line objects and it is the difference between a grid you can see on a busy chart and a set of hairlines you lose against the candles. Turn it off when the chart is crowded.
Fill Between Levels shades the intervals. OTE Band, the default, shades only 0.618-0.786. All Bands shades everything, Custom Bands lets you pick, and Off is off. The fills are independent of the line checkboxes, so you can shade a band whose boundary lines are hidden.
Highlight Golden Zone at Price is the one piece of reactive styling here. While the last close is between the 0.618 and 0.786 prices, that band draws more opaque and lifts off the chart. It creates nothing new - no box, no zone object, no centre line, no label - it just restyles the band the fill control already drew, and Highlight Strength sets by how much. It is arithmetic on two numbers already on your screen.
HTF Layer Dimming adds transparency to the whole context grid on top of whatever its colours already carry, which is how the second grid stays behind the first instead of doubling the clutter.
Extension Fade fades each extension a little further as it travels away from the leg, so the near ones read as more prominent than the far ones. It counts only the extensions you actually enabled, not their slot in the ladder - so if you turn on just the far ones, the nearest of them is still drawn at full strength rather than arriving pre-dimmed.
Ratio Label Format switches the tags between decimal and percent - 0.618 or 61.8%, minus signs intact either way. Show Price Labels adds the actual price beside each ratio; it is off by default because eight prices is a lot of text.
Line Extension Left/Right and Label Right Offset control how far the grid reaches and how far past it the tags sit. The defaults keep the tags in the empty margin, clear of both the candles and the price scale.
One last thing: any control that cannot do anything greys itself out. Switch the context grid off and its settings dim. Switch to Gradient and the single-colour pickers dim. There is no control in this script that looks live, takes a value, and quietly does nothing.
GETTING STARTED
Add it. You get one grid on today's range, gradient-coloured, golden zone shaded.
Want a different range? Anchor Range. Leave Fib Direction on Auto until it tells you something you disagree with.
Want context from above? Show HTF Context, and leave HTF Mode on Adaptive unless a specific timeframe matters to you.
Want the extensions? Turn them on for whichever grid you want them on, then pick your ratios.
Too busy? Glow off, Fill Between Levels off. You are back to plain lines.
THINGS THAT WILL LOOK LIKE BUGS AND ARE NOT
Swing anchors arrive late. A pivot is not a pivot until Swing Strength bars have printed after it, so on Latest Swing and on the context grid you are always looking at the last confirmed pivot, not the bar in front of you. When a newer one confirms, the anchor moves. That is the price of anchoring to something you can only recognise in hindsight, and it is the same trade every swing-based tool makes.
The day and week ranges are live. Current Day and Current Week use the period's running high and low, so the grid re-scales when the session makes a new extreme. It is showing you the range as it stands, not a finished one.
It draws one grid, not a history of them. You get the current grid, redrawn as things move. There is no trail of old ones behind you.
Higher-timeframe data uses the documented confirmed-value form - the expression is offset by one bar and the request passes barmerge.lookahead_on. Together, that is the pattern the Pine Script documentation gives for reading a higher timeframe without pulling unclosed data into historical bars. The source is open, so you can read the call rather than take my word for it.
Custom HTF at or below the chart timeframe draws nothing at all , and says nothing about it. Worth remembering before you conclude the context layer is broken.
A 12-month chart draws no context grid. 12M is the top of TradingView's interval list, so Adaptive has nothing left to step up to. 3-month and 6-month charts both work.
Prices come from standard OHLC via ticker.standard(), so your levels are the same on Heikin Ashi, Renko, Kagi, Line Break and Point and Figure as they are on candles. The synthetic geometry of those chart types can still put the lines somewhere you would not expect.
WHAT IT DELIBERATELY DOES NOT DO
No alerts. No signals. No scores, ratings or probabilities. No zones, no nested zones, no centre line. It draws Fibonacci levels, labels them honestly, and stops. If you want something that tells you when to act, this is not it.
WHY IT IS DIFFERENT
Four self-maintaining ranges instead of a two-point drag you place today and replace tomorrow. Two independently configured grids on one continuous number line, with the higher one dimmed to sit behind rather than on top. Extensions numbered on the same ruler as the retracements, matching the tags TradingView's own tool gives those prices, rather than a second scale running the other way. A swing range that is genuinely one leg, because the pivot pair is kept alternating. And colour that carries information - a level's hue states its depth - instead of a palette applied to identical lines.
Open source under the Mozilla Public License 2.0. مؤشر

Adaptive Cycle Momentum Oscillator [ZurvanEG]⯁ Adaptive Cycle Momentum Oscillator
◇ Overview
MOM is a cycle-adaptive momentum oscillator built to present market direction, strength, fatigue, volatility compression and saturation within one coherent framework.
Unlike conventional momentum oscillators that apply the same lookback to every market condition, MOM can adjust its momentum window to the market’s active rhythm. This allows its response to become faster or slower as market behaviour changes, while a fixed-length mode remains available for users who require consistent settings.
Beyond measuring momentum, MOM adds context to the reading. It distinguishes strengthening movement from fading pressure, reduces the influence of momentum formed during volatility compression, identifies statistically unusual momentum zones, and detects confirmed divergence structures.
The objective is not to produce more signals or predict every reversal. It is to provide a cleaner and more informative view of momentum—showing not only its direction, but also the conditions under which it is developing.
◈ Key Features
◇ Adaptive Momentum
Automatically adjusts the momentum lookback as market rhythm changes. Fixed mode can be selected whenever a constant length is preferred.
◇ Momentum Regime
Classifies momentum as bullish, bearish or neutral. Separate entry and exit levels reduce unstable regime switching around the dead zone.
◇ Strength & Fatigue
The line gradient shows direction and magnitude, while color strength distinguishes expanding momentum from momentum fading toward zero.
◇ Volatility Squeeze
Detects compressed volatility and reduces momentum produced inside quiet conditions. Squeeze intensity can also be displayed as a variable background.
◇ Saturation Bands
Adaptive upper and lower bands identify momentum readings that are extreme relative to the oscillator’s own recent behavior. They should be treated as saturation zones, not automatic reversal signals.
◇ Divergence
Detects confirmed regular and hidden bullish or bearish divergence. Signals can optionally be restricted to pivots occurring beyond the saturation bands to filter weaker mid-range structures.
◇ Visuals & Information
Optional candle coloring transfers the oscillator’s momentum gradient to the main chart. A compact table displays the current regime, momentum value and slope state, with optional cycle, length, squeeze and divergence diagnostics.
◇ Alerts
Independent alerts are available for:
⬦ Bullish and bearish regime shifts
⬦ Upper and lower saturation contacts
⬦ Squeeze entry and release
⬦ Confirmed bullish and bearish divergence
◈ Interpretation
Adaptive Cycle Momentum Oscillator helps answer:
⬦ Is momentum bullish, bearish or neutral?
⬦ Is the current move strengthening or fading?
⬦ Was momentum produced during expansion or compression?
⬦ Is the reading unusually saturated for this market?
⬦ Has a meaningful divergence been confirmed?
◈ Notes
⬦ Adaptive mode requires sufficient historical data for cycle estimation.
⬦ Divergences appear after pivot confirmation and are therefore delayed by design.
⬦ Saturation does not guarantee reversal, especially during strong trends.
⬦ Squeeze attenuation provides context; it does not predict breakout direction.
◈ Conclusion
Adaptive Cycle Momentum Oscillator is designed as a complete momentum-analysis framework rather than a simple oscillator or signal generator. It combines adaptive measurement, stable directional regimes, strength and fatigue colouring, volatility context, dynamic saturation bands and confirmed divergence in a single visual system.
By adapting to market rhythm and evaluating momentum within its surrounding conditions, MOM helps separate meaningful directional pressure from weak movement produced inside noise or compression. Its visual structure is intended to make changes in direction, intensity and exhaustion recognizable without requiring several overlapping indicators.
MOM does not attempt to replace price structure, risk management or trading confirmation. Its role is to provide a clearer and more consistent momentum perspective that can support trend analysis, pullback evaluation, saturation monitoring and divergence assessment across different instruments and timeframes.
مؤشر

Adaptive Confluence Oscillator [ForexCracked]🔵 OVERVIEW
The Adaptive Confluence Oscillator scores four independent read-outs of the market on a continuous scale, weights them according to the current market regime, and plots the result as a single 0 to 100 line. Instead of asking "do my indicators agree, yes or no," it asks "how strongly does each one agree, and which of them should I be listening to right now."
It has no fixed overbought or oversold levels. The bands are calculated from the oscillator's own recent behaviour, so they widen when the market gets volatile and tighten when it goes quiet.
Signals confirm on candle close and do not repaint.
🔵 WHY THIS IS BUILT THE WAY IT IS
Most multi-indicator tools take a vote. RSI is oversold or it is not. That throws away most of the information: an RSI of 29 and an RSI of 12 are not the same signal, but a vote counts them identically. It also treats every indicator as equally relevant at all times, which is plainly false. Stochastic exhaustion means one thing in a strong trend and the opposite thing in a range.
This oscillator fixes both problems. Every component returns a continuous score, and the market regime decides how much each score is worth.
🔵 THE FOUR COMPONENTS (each scored from -1 to +1)
• Trend: how far price sits from its baseline EMA, measured in ATR units rather than in price. Distance matters, not just which side of the line you are on. Because it is measured in ATR, it reads the same on gold as it does on EURUSD.
• Momentum: RSI recentred around 50, so it contributes proportionally instead of flipping at a threshold.
• Impulse: the MACD histogram converted to a z-score against its own rolling deviation. This makes MACD comparable across symbols and timeframes without ever re-tuning it, which raw MACD values are not.
• Stretch: the Stochastic, recentred. This is the component that changes behaviour with regime (see below).
🔵 THE REGIME SWITCH (the part that makes it adaptive)
ADX decides whether the market is trending or ranging, and that changes two things.
First, the weights re-balance:
• Trending: Trend 0.35, Momentum 0.25, Impulse 0.30, Stretch 0.10
• Ranging: Trend 0.15, Momentum 0.25, Impulse 0.20, Stretch 0.40
Second, and more importantly, the Stretch component flips sign. In a trend, a stretched Stochastic confirms the move and pushes the score further in that direction. In a range, the same reading argues for a fade and pushes the score the other way. This is the behaviour a discretionary trader applies without thinking about it, and it is what a fixed vote cannot express.
🔵 ADAPTIVE BANDS
There are no 70/30 lines here. The upper and lower bands are the rolling mean of the oscillator plus and minus a multiple of its own standard deviation. A reading of 68 can be an extreme in a quiet market and completely unremarkable in a volatile one, and the bands reflect that.
• BUY: the score crosses above the upper adaptive band
• SELL: the score crosses below the lower adaptive band
🔵 DIVERGENCE
The script finds pivots on the score itself and compares them against price at those same bars. When price makes a higher high but the score makes a lower high, that is marked as a bearish divergence, and the mirror case as bullish. Divergences are labelled and have their own alerts. Because a divergence is anchored to a confirmed pivot, it prints a few bars after that pivot forms and never moves once printed.
🔵 THE DASHBOARD
The panel shows each component's live score, its current weight, the detected regime with the ADX value, and the oscillator against its adaptive bands. You can see exactly which component is driving the reading and why, rather than trusting a black box.
🔵 SETTINGS
• Baseline EMA 34, ATR 14, Trend Span 2.0 x ATR
• RSI 14, MACD 12/26/9, Stochastic 14
• ADX 14, trending above 22
• Band lookback 100, band width 1.0 x standard deviation
🔵 HOW TO USE
• Take signals where the dashboard regime agrees with the direction. A BUY in a trending regime is a continuation. A BUY in a ranging regime is a fade off the bottom of the range.
• Treat a divergence as a warning to tighten or take partials, not as a standalone entry.
• Raise the band width above 1.0 for fewer and stronger signals, lower it for more.
• Widen Trend Span on noisy symbols so ordinary volatility does not read as trend.
⚠️ DISCLAIMER
This is an analysis tool, not a prediction. A confluence score is a measure of agreement, and indicators can agree and still be wrong. Results depend on market conditions, settings, and your own execution and risk management. Shared for educational and research purposes. Not financial advice. مؤشر

Fractal Memory Strategy [Jayadev Rana]Fractal Memory Strategy trades the same engine as the Fractal Memory Projection indicator: it looks for the historical episode most similar to current price action, and only takes trend flips that agree with how that episode played out. Exits scale out at three volatility-adaptive targets.
HOW IT DECIDES
An ATR trailing stop tracks the trend. When it flips, the last 30 closes are converted to normalized log returns and compared against past windows by mean squared distance. The bars that followed the best analog give a net direction; the flip is only traded when the analog direction agrees (the filter can be disabled). Orders are processed on bar close, so no lookahead is involved. For visual context the strategy also draws the 50-candle ghost projection beyond the last bar - it is display-only and never affects order logic.
ENTRIES AND EXITS
On a confirmed bullish flip with agreement the strategy closes any short and enters long; the mirror applies to shorts. One unit of risk R equals ATR times (1.2 plus the ATR percentile rank over 200 bars), so targets and stops widen in volatile regimes and tighten in quiet ones. Position exits: one third at 1R, one third at 2R, the remainder at 3R, with a stop at 1.5R (all adjustable). Direction can be restricted to long-only or short-only.
PROPERTIES USED IN THE PUBLISHED BACKTEST
10,000 initial capital, 10 percent of equity per trade, 0.01 percent commission per order, 2 ticks slippage, no pyramiding, orders on close. These are deliberately conservative; adjust them to match your own broker before drawing any conclusion.
PANEL
Match similarity, volatility regime, forecast direction, closed trade count and win rate.
NOTES
The analog projection is a statistical reference, not a prediction, and past behaviour does not guarantee anything about the future. Results vary by symbol and timeframe; test on your own market with realistic costs before considering any live use. This is an educational tool, not financial advice. استراتيجية

[GYTS-CE] Kinetic Trend Envelope (adaptive trailing stop)Kinetic Trend Envelope (Community Edition)
🌸 Part of GoemonYae Trading System (GYTS) 🌸
🌸 --------- INTRODUCTION --------- 🌸
💮 What is the Kinetic Trend Envelope?
The Kinetic Trend Envelope (KTE) is an adaptive directional trailing stop in the lineage of SuperTrend, rebuilt around the premise that volatility is kinetic energy . It measures per-bar motion with five academically grounded volatility estimators, then widens the envelope as energy rises and contracts it as motion settles.
In an uptrend, the lower band ratchets higher and never retreats; in a downtrend, the upper band ratchets lower. The direction changes when the active stop is breached, after which the opposite side becomes the new trailing stop.
💮 Why Use This Indicator?
Conventional trailing stops typically combine a price anchor with one symmetric ATR-derived width. The KTE extends that model with:
Asymmetric volatility profiling — Bullish- and bearish-candle volatility shape the upper and lower bands independently.
Three direction-switch methods — High/low, close, or a smoothed estimator controls flip sensitivity without moving the band anchor.
Five volatility estimators — ATR plus Parkinson, Garman-Klass, Rogers-Satchell, and Yang-Zhang covers different treatments of gaps, drift, and intrabar range.
The outputs are calibrated to a common width basis, so Volatility Factor remains interpretable across estimators and price scales. Fine adjustment may still be useful, but switching estimators should not require re-tuning by orders of magnitude.
↑ The KTE on a trending instrument. The thick line is the active trailing stop; the thin line shows the opposing side of the envelope. Both expand and contract with market energy.
↑ KTE beside TradingView's built-in SuperTrend, both using ATR with a 10-bar lookback. KTE's asymmetric profile changes how each side responds to directional volatility while the monotonic active band avoids premature loosening.
🌸 --------- HOW IT WORKS --------- 🌸
💮 Core Concept
The bands share a smoothed price estimator as their anchor, but use separate volatility profiles:
Upper band = estimator + (factor × bullish-candle volatility)
Lower band = estimator − (factor × bearish-candle volatility)
In a bullish state, the lower band is active and can only rise. In a bearish state, the upper band is active and can only fall. This monotonic constraint prevents a live trailing stop from loosening within the trend.
The selected direction-switch method changes only the breach test. It does not change the smoothed estimator anchoring the envelope, so a wick-sensitive trigger cannot drag the bands around with the wick.
💮 The Five Volatility Estimators
Each estimator reads a different part of the OHLC bar:
ATR (Wilder, 1978) — Familiar baseline that handles gaps through true range.
Parkinson (1980) — Uses high-low range; efficient under continuous, low-drift conditions.
Garman-Klass (1980) — Adds open-close information; favours continuous sessions without material gaps.
Rogers-Satchell (1991) — Drift-independent and well suited to trending, continuously traded instruments.
Yang-Zhang (2000) — Combines overnight gaps, open-close movement, and Rogers-Satchell; the gap-aware default.
Statistical efficiency does not guarantee a visibly tighter stop. At slow Adaptation Speed settings, long averaging makes the estimators look similar; at fast settings, their different treatments of gaps, drift, and range become more visible. Choose according to the instrument's behaviour rather than expecting one estimator always to produce the narrowest band.
↑ ATR and Yang-Zhang at Adaptation Speed 2. The long profile memory (low speed) smooths away most of the difference, so the two envelopes nearly overlap.
↑ ATR and Yang-Zhang at Adaptation Speed 8. The short profile memory (high speed) exposes their different volatility readings, producing visibly distinct envelope widths.
💮 Asymmetric Volatility Profiling and Adaptation Speed
The KTE stores volatility from bullish and bearish candles separately. Bullish samples determine the upper width; bearish samples determine the lower width. This allows the two sides to respond differently when upward and downward motion carry different energy.
Adaptation Speed controls the memory of this profile, not the speed of the price estimator and not the distance of the stop by itself. Its 1–10 scale maps logarithmically to an internal window:
Speed 3 — approximately 878 bars: stable and slow to re-weight
Default 3.5 — approximately 570 bars: general-purpose smoothing
Speed 8 — approximately 11 bars: highly responsive to recent volatility
Speed 10 — approximately 2 bars: extremely reactive and noisy
Faster does not necessarily mean closer to price. During a volatility burst, a fast profile recognises the expansion sooner and may widen the band sharply. Because the active stop cannot loosen, it can then remain flat until the estimator catches up. A slow profile dilutes the same burst across much more history, so its narrower band may appear to follow price faster.
This is why two instances matched during a calm period can separate during a shock, especially when they also use different Volatility Factor values. Compare Adaptation Speed with the same factor first; matching lines in one regime does not make two configurations equivalent elsewhere.
The profiles are also direction-conditioned: bullish samples are replaced by later bullish candles and bearish samples by later bearish candles. A recent high-volatility sample can therefore persist through a run of opposite-colour candles, producing deliberate step-like plateaux in the relevant band.
↑ Asymmetric profiling in action: the upper and lower widths respond independently to bullish- and bearish-candle volatility.
💮 Direction Switch Methods
The breach source sets the balance between responsiveness and false flips:
On high/low — Uses the current bar's wick and can switch on the breach bar. Fastest and most sensitive to noise.
On close — Uses the previous confirmed close; the switch appears on the following bar.
On estimator — Uses the previous smoothed estimator; the most conservative default, also switching on the following bar.
↑ The three switch methods share the same band geometry but change direction at different times.
🌸 --------- KEY FEATURES --------- 🌸
💮 Eight Estimator Filters
The configurable price anchor includes:
Ultimate Smoother, 2- or 3-pole — Low-noise, near-zero-lag passband response; the 2-pole version is the default.
Super Smoother, 2- or 3-pole — Ehlers low-pass filters for progressively stronger smoothing.
BiQuad — Second-order low-pass filter with an adjustable Q-factor.
ADXvma — Adapts to trend strength and tends to flatten in ranges.
MAMA — Cycle-adaptive MESA moving average.
A2RMA — Adaptive recursive moving average with adjustable gamma.
They are provided by the open-source FiltersToolkit library.
💮 Visual Layering
The display separates function from context:
Active band — Thick directional trailing-stop line
Opposing band — Thin reference for the inactive side
Channel fill — Visual separation between the estimator and each band
Estimator — Optional smoothed anchor
Palette, light/dark mode, widths, and transparencies can be adjusted independently.
🌸 --------- USAGE GUIDE --------- 🌸
💮 Getting Started
Start with the defaults, observe several calm and volatile regimes, and change one dimension at a time:
Tune Volatility Factor for the preferred stop distance.
Tune Adaptation Speed for how quickly width should respond to regime changes.
Choose the direction-switch method for the preferred confirmation level.
Change the volatility estimator only when its assumptions better fit the instrument.
💮 Choosing a Volatility Estimator
Gapped equities — Yang-Zhang accounts for overnight movement.
Trending 24/7 markets — Rogers-Satchell is drift-independent without a separate gap component.
Continuous, range-led markets — Parkinson or Garman-Klass offers efficient range-based measurement under their assumptions.
Familiar baseline — ATR provides conventional true-range behaviour.
On continuous instruments, Rogers-Satchell and Yang-Zhang may look very similar because there are few gaps to distinguish them. Use the Volatility Toolkit to compare their raw behaviour on the intended instrument.
↑ Three estimators compared on one instrument, each reading a different combination of OHLC information.
💮 Tuning Width and Responsiveness
These controls solve different problems:
Volatility Factor — Sets the distance per unit of measured volatility.
Adaptation Speed — Sets the memory of the bullish/bearish profile; faster can widen the stop sooner during shocks.
Volatility Lookback — Sets how quickly the underlying per-bar volatility estimate changes.
Estimator Lookback — Sets the smoothness of the price anchor.
Use symptoms to guide adjustment:
Frequent flips on minor pullbacks — Increase Volatility Factor or use a more conservative switch method (e.g. "on estimator").
Excessive give-back — Decrease Volatility Factor or use a more responsive switch method (e.g. "on high/low").
Width reacts too slowly to regime changes — Increase Adaptation Speed or reduce Volatility Lookback.
Bands become erratic during shocks — Reduce Adaptation Speed or increase Volatility Lookback.
↑ A tight factor follows price more closely and flips more often; a loose factor tolerates larger pullbacks.
💮 Trading Applications
Discretionary trailing stop — Move a protective stop with the active band as it tightens.
Trend confirmation — Accept long signals only during a bullish KTE state, and short signals only while bearish.
Exit timing — Treat a direction change as an exit when the trade thesis is trend-following.
💮 Integration with GYTS Suite
The visible bands and estimator can be selected as sources by compatible Pine scripts. Two packed streams are also exposed:
🔗 STREAM KTE 🪜 Trailing Stoploss — Positive lower-band value in a bullish state; negative upper-band value in a bearish state.
🔗 STREAM KTE 🪜 Mechanism — Encodes the switch method and scale-invariant estimator relationship for compatible consumers.
The KTE is, first and foremost, a trailing stop, and these streams are built for stop management. The Order Orchestrator strategy consumes the Trailing Stoploss and Mechanism streams together : the first supplies the active stop level and its direction, the second makes the strategy's trailing-exit runner follow whatever switch method and estimator you set here. So the stop is configured once, in the KTE.
Beyond that primary role, the signed trailing-stop stream can also serve as a trend signal, since its sign flips with direction: it can be read through sign and magnitude as an entry/exit signal, including by Flux Composer . The KTE can also be paired with Market Regime Detector so flips are acted on only when the broader regime supports trend-following behaviour.
🌸 --------- LIMITATIONS --------- 🌸
Trailing-stop latency — Every trailing stop gives back some of the move between the trend extreme and the eventual breach.
Whipsaws in ranges — Low-energy chop can produce repeated flips; a regime filter may help when ranging conditions dominate.
Fast adaptation can widen the stop — Higher Adaptation Speed means faster volatility response, not guaranteed proximity to price.
Direction-conditioned memory — A bullish or bearish outlier remains in its own profile until enough matching-direction samples replace it, which can create plateaux after shocks.
Warm-up and sample size — Long profile windows need sufficient chart history; strongly one-sided markets may leave one side with few recent samples.
🌸 --------- CREDITS --------- 🌸
💮 Academic Sources
Wilder, J. W. (1978). New Concepts in Technical Trading Systems . Trend Research.
Parkinson, M. (1980). The Extreme Value Method for Estimating the Variance of the Rate of Return. Journal of Business, 53 (1), 61–65. DOI
Garman, M. B., & Klass, M. J. (1980). On the Estimation of Security Price Volatilities from Historical Data. Journal of Business, 53 (1), 67–78. DOI
Rogers, L. C. G., & Satchell, S. E. (1991). Estimating Variance from High, Low and Closing Prices. Annals of Applied Probability, 1 (4), 504–512. DOI
Yang, D., & Zhang, Q. (2000). Drift-Independent Volatility Estimation Based on High, Low, Open, and Close Prices. Journal of Business, 73 (3), 477–491. DOI
Ehlers, J. F. (2024). The Ultimate Smoother. Technical Analysis of Stocks & Commodities , 2024-04. TASC
Ehlers, J. F. (2004). Cybernetic Analysis for Stocks and Futures . Wiley. Covers SuperSmoother, MAMA and more.
💮 Inspiration
Thanks to Trendoscope for inspiring us with the Supertrend - Ladder ATR (2021). It derives long-side stop distance from bearish-candle ATR and short-side distance from bullish-candle ATR, which is one of the mechanisms that we tried to develop further with the KTE.
💮 Libraries Used
FiltersToolkit — Ultimate Smoother, Super Smoother, BiQuad, ADXvma, MAMA, and A2RMA
VolatilityToolkit — Parkinson, Garman-Klass, Rogers-Satchell, and Yang-Zhang estimators
MathTransform — Logarithmic scaling for Adaptation Speed
ColourUtilities — Palette management and light/dark-mode colour adjustment
مؤشر

Adaptive Momentum Ribbon [JOAT]Adaptive Momentum Ribbon
An eight-layer moving-average ribbon whose colour is driven by live momentum and whose compression flags the coil before the move.
What it is
A single moving average tells you very little. A ribbon of them, fanned by speed, tells you three things at once: direction (the colour), strength (how wide it fans) and turning points (where it squeezes and flips). This indicator builds that ribbon and adds a momentum core and a compression detector so the ribbon is not just decorative — it gates the signals.
How it works
• The ribbon — eight exponential moving averages from fast to slow, with an optional light second smoothing pass for cleaner turns. When the fast layers sit above the slow layers the stack is bullish, and vice versa.
• Momentum core — a rate-of-change normalised by ATR and then smoothed. This value is mapped onto a colour gradient, so a strong trend glows saturated while a fading one drifts toward neutral. The same value gates entries, so you buy strength rather than every flip.
• Compression detector — the width between the fastest and slowest ribbon lines is ranked as a percentile over a lookback window. A low percentile means the market is coiled; a move out of that coil is the tradable expansion. Coils are highlighted so you can see energy building.
• Flip signals — a Buy prints when the ribbon flips up out of (or just after) a compression with positive momentum; a Sell is the mirror. Because a flip requires the stack to actually reverse, signals are naturally spaced, and a minimum-gap control adds a further safeguard against clustering.
Trade levels
Each signal draws a red risk box to the ATR-based stop and a green reward box to the third target, with inner target lines and right-edge price labels for entry, stop and every take-profit at your chosen R multiples.
The dashboard
An adjustable panel shows trend direction, a block-gradient momentum meter with a signed headline value, the compression state (coiled or expanded), a 0–100 conviction estimate, the current signal, and a live first-target-before-stop tally from closed bars only.
How to use it
• Works on all assets and timeframes; the ribbon adapts to whatever data it is given.
• Use the coil highlight to prepare for a move and the flip-with-momentum signal to time it.
• Require the coil filter for cleaner, fewer signals in choppy markets, or relax it for more responsive trend entries.
Settings
Base length and layer step, source, optional smoothing, momentum length and smoothing, signal momentum gate, compression window and percentile threshold, risk multiple and target R multiples, plus visual and dashboard controls.
Originality and usefulness
The combination is the point: a speed-fanned ribbon, an ATR-normalised momentum gradient that both colours the ribbon and filters signals, and a percentile-ranked compression model that isolates coils. Together they turn a familiar visual into a structured, non-repainting trend-and-expansion tool.
Notes and limitations
• Moving averages lag by nature; the ribbon confirms trend, it does not call exact tops or bottoms.
• In strong one-way trends the compression filter may keep you out of some continuation entries — that is the intended trade-off for fewer false flips.
• The tally reflects only past bars on the current chart and is not a forecast.
• Educational and analytical tool, not financial advice.
— made with passion by officialjackofalltrades
مؤشر

مؤشر

Adaptive Predictability Engine Entropy Gate, Regime RouterAdaptive Predictability Engine — Entropy Gate, Regime Router & Expert Committee
What it is
The Adaptive Predictability Engine is a governed decision framework, not another confluence average. It refuses to treat all market conditions as tradable. It applies a strict hierarchy: first it asks whether price is forecastable at all right now; if it is, it decides whether trend-style or reversion-style logic is appropriate; and only then does a small committee of transparent experts vote — with the committee continuously re-weighting itself toward whichever experts have been correct recently. When the market is unpredictable, the whole engine stands aside and shows nothing to trade.
It plots directly on price: long/short signals, the live entry/target/stop of the active trade, a plain-language dashboard, and an optional self-calibration panel that scores past signals in R-multiple expectancy (not just win rate).
Why these components are combined (mashup justification)
This is a deliberate, dependent stack — each layer conditions the next, so removing any one changes the layer below it. That is the difference between a governed engine and a bag of averaged indicators.
Predictability gate (permutation entropy + structure). Permutation entropy (Bandt–Pompe) measures the ordinal randomness of recent price across three time scales; this is blended with |Hurst − 0.5|, the distance of the market from a random walk, which is high for strong trends and strong mean-reversion. The blended predictability is percentile-ranked so the gate self-tunes per symbol and timeframe. If the tape is unpredictable, nothing downstream may fire. This is the master switch, and it is why the engine spends much of its time deliberately doing nothing.
Regime router (Hurst exponent). When structure exists, the Hurst exponent (generalized, via a structure-function slope) decides whether it is persistent (trend) or anti-persistent (mean-revert), and routes weight toward the appropriate family of experts rather than averaging trend and reversion logic together.
Expert committee (Hedge / multiplicative weights). Six deliberately diverse experts — price trend, volume-weighted price, order-flow delta, momentum exhaustion, volatility extreme, and range extreme — each cast a directional vote. Their weights update every bar by exponential regret (right experts gain influence, wrong ones lose it), with fixed-share regularization so no single expert can dominate and make the vote fragile.
Distribution-shift guard. If the recent return distribution moves materially versus a reference window, the engine freezes learning and cuts conviction until conditions settle, so stale weights don't drive trades through a regime change.
The output is a single decision = the regret-weighted vote of only the currently-appropriate experts, gated to zero whenever the tape is unpredictable.
How to use it
Add it to any liquid symbol and timeframe. Defaults are tuned for index futures (e.g. NIFTY) but every input is adjustable, and the Data source group lets you repoint price and volume for any market.
Watch the dashboard headline: LONG / SHORT / WAIT / STAND ASIDE. When a signal fires, the engine draws the entry, ATR target, and ATR stop so the action is concrete.
Treat the shaded background as a hard "do not trade" — the engine has judged the tape unpredictable.
Open the Edge calibration (advanced) panel to see, per market memory, the past R-expectancy of the engine's own signals versus a direction-matched baseline. Positive expectancy means the sample was profitable before costs; this is descriptive of the past, not a forward guarantee.
Use the Ablation (research) toggles to switch each layer off and see, on your own data, whether it earns its place.
What makes it original
Most published tools average indicators and hope. This one inverts the approach by asking whether to act at all before what to do, using information-theoretic predictability (permutation entropy) as a master gate, a memory estimate (Hurst) as a router, and online regret-minimization (Hedge) to arbitrate a diverse expert set — with built-in R-expectancy self-calibration so users can judge it honestly rather than on a cherry-picked screenshot. The order-flow expert reads finest-available lower-timeframe signed volume with automatic fallback. The coupling and governance order are the contribution; the individual estimators are classical and credited below.
Concept credits
Permutation entropy — Bandt & Pompe. Hurst exponent / long-range dependence — H. E. Hurst; Mandelbrot. Hedge / multiplicative-weights online learning — Freund & Schapire; Littlestone & Warmuth; Vovk. Efficiency/structure framing — Kaufman. Triple-barrier labelling and R-multiple expectancy — M. López de Prado. Wilson score interval — E. B. Wilson. Synthesis, governance design, and implementation are the author's own.
Important disclaimer
Research and education only. Not financial advice, not a signal service, not a guarantee of future results. No indicator has an inherent edge. The calibration panel is a descriptive summary of past behaviour on the current chart — not a backtest and not a forward prediction. Always validate independently, apply realistic costs and slippage, and manage risk. You are solely responsible for your trading decisions. مؤشر

مؤشر

Dominant Cycle OscillatorDominant Cycle Oscillator
A cycle tool that measures the market's current dominant cycle length directly from the data — rather than assuming a fixed period — then reads where price sits inside that cycle (its phase) and how strong the cycle is (its power). It answers three things a fixed-length oscillator can't: how long the cycle is right now, where we are within it, and whether a tradable cycle even exists.
Why these parts are combined (not a mashup for show). Each is required by the previous one. A band-pass filter isolates the tradable cycle band from slow trend and fast noise — you can't measure a cycle cleanly without first removing what isn't cyclical. An autocorrelation periodogram turns that cleaned series into a power spectrum and reports the dominant period as the spectrum's centre of gravity. A cycle-strength read — how far the dominant peak stands above the spectral noise floor — says whether that period is real or noise, so signals are suppressed when no cycle exists. Forward calibration then measures whether the cycle turns actually pay on this symbol.
How it works. Band-pass (high-pass + low-lag smoother) → autocorrelation across lags → discrete Fourier transform → power spectrum → dominant period via its centre of gravity. The cleaned cycle is normalized into a ±100 phase wave. A long fires when the phase turns up from a trough with a real cycle present, a short when it turns down from a peak; each side fires at most once per swing. Every signal is labelled by a triple barrier — a profit target and equal stop in ATR units plus a time limit — split into in-sample and recent out-of-sample, with a confidence interval and a multiple-testing check.
How to use. Read the Verdict (Long/Short, Weak cycle, or Wait) and the Conviction, which reads "High" only when that turn type shows a positive edge that survives the test on this symbol — otherwise it openly says "context only" or "no proven edge here." The dashboard shows the measured cycle length and its strength. Best used with your own trend and risk plan, not alone.
Honesty & limitations. The dominant-cycle estimate is approximate and lags at regime shifts. Edge figures are computed on this chart's own history with overlapping windows and no costs — context, not a guaranteed backtest; past behaviour doesn't predict the future. Non-repainting. The periodogram is computationally heavy on deep history / very low timeframes.
Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions. مؤشر

Sharp Reversal OscillatorSharp Reversal Oscillator
A reversal-timing oscillator that re-shapes price into a near-Gaussian form so turning points snap into sharp, clear extremes instead of rounded, ambiguous ones — then scores its own turns forward on your chart, in plain language, so you can see at a glance whether to act or wait.
Why these parts are combined (not a mashup for show). Three steps are stacked, each fixing the previous one's flaw. Raw price excursions are fat-tailed, so it's unclear where an extreme really is; a distribution-normalizing transform stretches values near the edges, turning a compressed extreme into a clear spike. But that transform is easily biased by trend — in a strong move it pins to one side — so the input is first band-pass cleaned (slow trend and fastest noise removed), leaving the tradable swing it should sharpen. The normalization window is then set from the market's measured dominant cycle rather than a fixed guess, so it stays tuned as cycles stretch and compress. The three only work as one tool.
How it works. Band-pass clean → locate price within its recent range, scaled to (−1, 1) → distribution-normalizing transform, smoothed → signal when the line crosses its one-bar trigger from an extreme. The window optionally follows a dominant cycle measured by autocorrelation of the band-passed price. Each signal is then labelled by a triple barrier — a profit target and an equal stop in ATR units, plus a time limit — so a "win" means the target was hit before the stop. Results split into in-sample and recent out-of-sample, with a confidence interval and a multiple-testing check.
How to use. Read the Verdict row (Long/Short signal, Watch, or Wait). Check Conviction — it reads "High" only when that signal type shows a positive edge that survives the statistical test on this symbol; otherwise treat it as context. Green wave above zero is up-pressure, red below is down; shaded bands are extremes; the faint line is the trigger. Best used with your own trend and risk plan, not alone.
What's original. The band-pass-cleaned input, the self-tuning window, the forward triple-barrier calibration with an out-of-sample split, and a conviction read that openly admits when there's no proven edge — instead of presenting every signal as equally reliable.
Inputs. Price source (change it for any market), reading mode (Simple/Pro), engine and self-tuning controls, extreme level, full calibration settings, and an auto-adapting dashboard legible on dark or light charts. Defaults are tuned for NSE:NIFTY1! intraday.
Honesty & limitations. Edge figures are computed on this chart's own history with overlapping windows and no costs — context, not a guaranteed backtest; past behaviour doesn't predict the future, and the cycle estimate lags at regime shifts.
Disclaimer: for research and education only. Not financial advice. Trading carries risk of loss; manage your own positions. مؤشر
