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.
Indicator

Market Structure Trend [QuantAlgo]🟢 Overview
The Market Structure Trend tracks the dominant directional bias of price by detecting confirmed swing highs and lows and maintaining an active structure level that only flips on a genuine break of that level. Rather than reacting to every minor high or low, it waits for a pivot to lock in after a defined number of bars on either side, then holds the resulting structure until price closes beyond it by an optional confirmation buffer. The result is a clean, non-repainting structure line that stays aligned with the prevailing market structure while filtering out stop hunts and marginal pokes through key levels. This makes the prevailing bias readable at a glance across any instrument or timeframe.
🟢 How It Works
The indicator begins by identifying pivot highs and pivot lows using the selected left and right structure bars. These pivots become the swing points that define market structure:
pivot_high = ta.pivothigh(high, left_bars, right_bars)
pivot_low = ta.pivotlow(low, left_bars, right_bars)
When a new pivot is confirmed, the corresponding swing high or swing low is updated. The active structure range is calculated as the absolute distance between the current swing high and swing low, and a confirmation buffer is derived as a percentage of that range:
structure_range = math.abs(swing_high - swing_low)
confirm_buffer = structure_range * buffer_pct / 100.0
Break levels are then offset by this buffer so that a downside break sits below the swing low and an upside break sits above the swing high. On every confirmed bar the script checks whether the chosen source (or the high or low when Break On Wick is enabled) has crossed the relevant break level. A successful cross reverses structure direction and reassigns the structure level to the opposite swing. If no break occurs, the structure level simply continues to track the swing consistent with the current direction.
Structure direction is seeded on the first ready bar by comparing price to the midpoint of the swing range, establishing an initial bias. From that point forward flips are gated strictly by confirmed breaks, so the state never repaints or changes mid-bar.
The structure level is drawn as a continuous line with a soft glow underneath. When radial layering is enabled, four concentric fills are drawn between the structure level and the bar midpoint, with transparency increasing outward. This produces a stepped radial field that visually maps distance from the active structure boundary rather than a single flat zone.
🟢 Signal Interpretation
▶ Bullish Structure (Structure Line at Swing Low with Bullish Color): When structure direction is bullish the line sits at the most recent confirmed swing low. Price is considered to remain in an uptrend structure as long as it stays above the buffered downside break level. The bullish state holds until a confirmed downside break occurs, at which point the line moves to the swing high and the color transitions.
▶ Bearish Structure (Structure Line at Swing High with Bearish Color): When structure direction is bearish the line sits at the most recent confirmed swing high. Price remains in a downtrend structure until a confirmed upside break flips the state. The bearish state persists through subsequent bars until an upside break is registered.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover a range of trading styles and timeframes. Default uses the manual Left Structure Bars, Right Structure Bars, and Confirmation Buffer values and is balanced for swing trading on 1-hour and daily charts. Fast Response shortens the structure legs for scalping and intraday use on 1-minute to 1-hour charts, registering minor swings so the structure trend flips earlier. Smooth Trend lengthens the legs for position trading on daily and weekly charts, tracking only major swings and holding through pullbacks with the confirmation buffer.
▶ Built-in Alerts: Three alert conditions support automated monitoring of structure flips. Bullish Structure Shift fires on the first bar that structure direction changes from bearish to bullish. Bearish Structure Shift fires on the opposite transition. Any Structure Shift triggers on either flip for traders who prefer a single unified alert. All messages include the exchange, ticker, and timeframe for immediate context.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) supply coordinated bullish and bearish color pairings suited to different chart themes. Selecting Custom unlocks independent color pickers for full manual control. Optional bar coloring tints each candle with the active structure color at a configurable transparency, and optional background coloring extends the same tint across the full chart pane. Radial layering, structure shift markers, and the structure line itself all inherit the active color pair so the entire visual system remains consistent.
Indicator

Time-of-Day/Session Performance Stats [QuantAlgo]🟢 Overview
The Time-of-Day/Session Performance Stats is a comprehensive time-based analysis tool built for traders who want clear, ranked insight into when markets actually move. It measures average range, volume, bullish bias, and drift across every hour of the day and the four major sessions, then surfaces the strongest and weakest windows so you can focus activity where the data supports it. Whether you trade crypto around the clock or equity and forex sessions on a weekday schedule, the indicator turns raw historical bars into practical rankings, session comparisons, and non-repainting chart overlays.
🟢 What is Time-of-Day and Session Performance?
Markets are not uniform across the 24-hour cycle. Liquidity, volatility, and participation concentrate in specific hours and sessions. Sydney is typically the thinnest of the four major centers, Tokyo drives Asian activity, London often produces the widest ranges of the day, and the London-New York overlap is usually the busiest window. By averaging range, volume, the share of up closes, and net drift for each hour and each session over a configurable lookback, this tool converts those recurring patterns into ranked statistics instead of leaving you to rely on memory or anecdotal observation.
🟢 How It Works
The indicator walks a configurable window of past bars (limited by lookback days and a hard max-bar ceiling) in the timezone you select. Every usable bar is assigned to its hour of day and to any sessions it falls inside. Range can be measured in percent of close or in raw price units. Volume, directional closes, and drift are accumulated in parallel. Hours that do not meet a minimum bar-count threshold are dropped from every ranking so tiny samples cannot distort the boards.
Five ranking boards are produced: Activity (average range), Volume (when the symbol reports it), Bias (percentage of directional bars that closed higher), Drift (mean close-minus-open percentage), and Aggregated (the mean percentile of range, volume, and directional edge). Sessions are ranked solely on average range per bar and can be toggled or given custom windows. Overlaps count toward every session involved rather than being forced into one.
Chart overlays read a trailing window of the same length rather than the final ranking, so background shading and bar coloring never repaint. The Focus Hours panel converts the Aggregated ranking into three practical allocation plans plus the single quietest hour to avoid.
🟢 Key Features
▶ Ranking Boards
Five independent boards list every qualifying hour from strongest to weakest.
1. Activity Ranking: Orders hours by average bar range. Rank 1 is the hour with the most room; the last row is the quietest. This is the simplest and often most useful single board.
2. Volume Ranking: Orders hours by average volume. Read it alongside Activity. High range on low volume signals thin participation. The board is hidden automatically on symbols that report no volume.
3. Bias Ranking: Orders hours by the percentage of directional bars that closed above their open. Flat bars are excluded, so the figure reflects only bars that actually moved. There is no separate bearish column; the bottom of the board is the most bearish reading.
4. Drift Ranking: Orders hours by mean percentage change from open to close. An hour can post a high bull rate yet still show negative drift if its losing bars are larger than its winning ones. Divergences between Bias and Drift are often the most interesting signals.
5. Aggregated Ranking: Combines percentile ranks of range, volume (when present), and directional edge into a single composite score. This is the ranking that feeds both the Focus Hours panel and the Aggregated overlay option.
▶ Session Ranking Panel
The four major sessions are ranked by average range per bar and displayed with their window, bull rate, drift, and bar count. Rank 1 takes the bullish color and the last rank takes the bearish color on the same continuous gradient used by the boards. Because a bar inside an overlap is counted toward every session it belongs to, session bar totals can exceed the overall sample size.
▶ Focus Hours Panel
The Aggregated ranking is translated into four labeled plans: Aggressive (top hour only), Mix (top two with 80/20 weights), Conservative (top three with 50/30/20 weights), and Avoid (the single quietest hour by average range). Each row shows the relevant hours, their session affiliation, bull rate, drift, and score so the reading can be acted on immediately.
▶ Chart Overlay
Background shading and price-bar coloring can be driven independently by Session Ranking, Activity Ranking, Volume Ranking, Bias Ranking, Drift Ranking, Aggregated Ranking, or Focus Hours. All overlays are computed from a trailing window so they never repaint. Transparency controls let you keep the ranking obvious or keep it subtle enough not to compete with price.
▶ Session and Filter Controls
Sydney, Tokyo, London, and New York can each be enabled or disabled and given custom HHMM-HHMM windows in the selected timezone. A weekdays-only filter removes weekend bars for forex, futures, and equities while leaving crypto fully intact. The Bars To Include setting can restrict the entire study to all bars, any enabled session, or one named session.
▶ Built-in Alerts
Ready-made alert conditions fire when price enters the peak activity hour, the quietest hour, the peak volume hour, the most bullish or most bearish hour, or the top Aggregated hour. Separate alerts cover the open and close of each individual session, any session start or end, and the start and end of the London-New York overlap.
▶ Color Presets
Six presets (Classic, Aqua, Cosmic, Cyber, Neon, Custom) apply a continuous gradient from the bullish color at rank 1 to the bearish color at the last rank across every board, panel, and overlay. Custom mode exposes individual bullish and bearish color pickers; text contrast is calculated automatically so any chosen colors remain readable.
▶ Interval Warning
When the chart interval is higher than 1 hour, most of the 24 hour buckets never receive a bar, leaving the rankings incomplete. The indicator displays a clear warning label on the chart that explains the limitation and recommends switching to 5m, 15m, 30m, or 1h, for example. The warning can be turned off once the restriction is understood and a clean chart is preferred.
Indicator

Recursive Kernel Trend [QuantAlgo]🟢 Overview
The Recursive Kernel Trend is a trend-following indicator built on a recursive residual estimator with adaptive rate scheduling. It applies one of six selectable filter structures to a residual-corrected recursion, modulates the update rate according to efficiency and volatility conditions, and confirms directional state through slope persistence. The result is a responsive yet controlled trend line that adapts its tracking behavior to market regime while filtering noise-driven fluctuations across every timeframe and instrument.
🟢 How It Works
The calculation begins with a residual between the selected price source and the current estimate. This residual drives a base recursive update whose rate is not fixed but scheduled on every bar:
resid = src - estimate
base = estimate + kern_rate * resid
The scheduled rate is produced by combining two adaptive weights. Efficiency weighting measures the ratio of net directional progress to total price path over a lookback window, raising the rate when movement is clean and lowering it during chop. Volatility weighting compares current ATR against a longer baseline and reduces the rate when volatility expands. The combined rate is then bounded by floor and ceiling limits and further scaled by an optional directional bias that applies different multipliers depending on whether price sits above or below the estimate:
eff_weight = eff_floor + (1.0 - eff_floor) * eff_ratio
vol_weight = math.min(math.max(1.0 / vol_ratio, 0.50), 1.75)
rate_sched = math.min(math.max(base_rate * eff_weight * vol_weight, rate_floor), rate_ceil)
kern_rate = rate_sched * bias
Six filter structures can be applied to the base update. Standard uses a single pass. Wilder halves the rate for smoother behavior. Double and Triple apply successive lag-compensated stages. Gaussian cascades four poles without compensation. Hull combines fast and slow passes then re-smooths the result. All structures receive the live scheduled rate so the adaptive weighting remains active.
A residual accumulator runs in parallel with the recursion. It retains a decaying memory of past residuals and applies a correction term that closes persistent offset during sustained trends. An optional ATR-based limiter can bound the accumulator to prevent overshoot after gaps or parabolic moves:
corr_acc := corr_acc * corr_decay + resid
estimate := kern_out + corr_weight * corr_acc
Directional state is derived from the slope of the finished estimate after a short smoothing window. A consecutive run of bars in the same slope direction must reach a confirmation threshold before the state is allowed to flip. This step prevents single-bar noise from reversing the trend color or firing alerts.
🟢 Signal Interpretation
▶ Bullish Trend (Long/Buy): When the smoothed slope of the estimate remains positive for the required number of confirmation bars, the indicator enters bullish state. The trend line and gradient layers switch to the bullish color. This condition identifies potential long or buy opportunities and remains active until an equal run of negative slope bars confirms a reversal.
▶ Bearish Trend (Short/Sell): When the smoothed slope remains negative for the required confirmation bars, the indicator enters bearish state. The visual elements switch to the bearish color. This condition identifies potential short or sell opportunities and holds until a confirmed positive run occurs.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. Default targets swing trading on 1H to daily charts with balanced rate and confirmation. Fast Response raises the recursion rate and shortens confirmation for intraday charts where the indicator needs to adapt to shorter-duration moves. Smooth Trend lowers the rate and lengthens confirmation for position trading on daily and weekly timeframes, where the cost of a false flip is higher than the cost of a delayed one. Selecting a preset overrides the individual rate, efficiency, and state detection inputs.
▶ Built-in Alerts: Three alert conditions are provided. Bullish State Signal fires when the trend state flips from bearish to bullish. Bearish State Signal fires on the opposite transition. Any State Change combines both into a single notification.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, Custom) coordinate the trend line and gradient layers. Optional bar coloring tints candles with the active state color at a configurable transparency.
*Tips: Layer the Recursive Kernel Trend with complementary analysis rather than treating it as a standalone trading tool. State flips hold most reliably when backed by participation, so combine each change with volume context, since a flip on expanding volume is far more likely to sustain than one on thin flow, and read the move against market structure, as a reversal that aligns with a clear swing high or low carries more significance than one in open space. Pairing this script with volume, open interest, CVD, market structure, and mean reversion indicators from our QuantAlgo toolkit can further validate a directional shift before entry. Indicator

Nadaraya-Watson Trend [QuantAlgo]🟢 Overview
The Nadaraya-Watson Trend indicator estimates a smooth, adaptive trend path by applying non-parametric kernel regression directly to price. For each bar it weights historical values inside a configurable lookback window with a chosen kernel function, normalizes those weights, and returns a single endpoint estimate that forms the plotted trend line. Bandwidth and kernel type control how aggressively recent bars dominate the estimate, optional residual bands express how far price is dispersed around that path, and slope based coloring with reversal markers make direction and turning points readable at a glance across any timeframe or instrument.
🟢 How It Works
The indicator is built around a one sided Nadaraya-Watson (NW) estimator: only the current bar and past bars enter the calculation, so the path behaves as a causal smoother rather than a centered, repainting fit. The pipeline has three stages: kernel weighting over the lookback window, normalized regression into a single trend value, and optional residual band construction from the same estimate.
First, effective bandwidth is formed from the configured bandwidth and multiplier. Each lag distance is then mapped to a kernel weight. Gaussian and Rational Quadratic keep infinite support with different decay shapes. Compact kernels (Epanechnikov, Triangular, Quartic, Cosine) only assign weight while the normalized lag stays inside the unit interval:
kernel_weight(float dist, float h, string ktype, float rq) =>
float w = 0.0
if h > 0.0
float u = dist / h
if ktype == 'Gaussian'
w := math.exp(-(dist * dist) / (2.0 * h * h))
else if ktype == 'Rational Quadratic'
w := math.pow(1.0 + (dist * dist) / (2.0 * rq * h * h), -rq)
else if math.abs(u) <= 1.0
if ktype == 'Epanechnikov'
w := 0.75 * (1.0 - u * u)
else if ktype == 'Triangular'
w := 1.0 - math.abs(u)
else if ktype == 'Quartic'
w := (15.0 / 16.0) * math.pow(1.0 - u * u, 2.0)
else if ktype == 'Cosine'
w := (math.pi / 4.0) * math.cos(math.pi * u / 2.0)
w
float h = bandwidth * h_mult
Next, the Nadaraya-Watson path is computed as the normalized weighted average of the selected source across the lookback window. Nearer bars dominate when bandwidth is low. Weight spreads more evenly when bandwidth is high, producing a smoother path:
float sum_w = 0.0
float sum_p = 0.0
for i = 0 to lookback
float w = kernel_weight(i, h, kernel_type, rel_weight)
sum_w += w
sum_p += src * w
float nw_trend = sum_w != 0.0 ? sum_p / sum_w : na
Finally, residual bands can be drawn from a kernel weighted mean absolute residual of the source versus the current NW estimate, scaled by the band multiplier. When price is tightly clustered around the path the envelope contracts. When price is dispersed the envelope expands, framing extension and compression relative to the same estimator that defines the trend:
float sum_abs = 0.0
float sum_res_w = 0.0
for i = 0 to lookback
float w = kernel_weight(i, h, kernel_type, rel_weight)
if w > 0.0 and not na(src ) and not na(nw_trend)
sum_abs += w * math.abs(src - nw_trend)
sum_res_w += w
float residual = sum_res_w != 0.0 ? sum_abs / sum_res_w : na
float upper = not na(nw_trend) and not na(residual) ? nw_trend + residual * band_mult : na
float lower = not na(nw_trend) and not na(residual) ? nw_trend - residual * band_mult : na
🟢 Signal Interpretation
▶ Bullish Path (Rising NW Line with Bullish Color): When the Nadaraya-Watson estimate is increasing bar to bar, the path and optional gradient fill plot in the bullish color, reading as an uptrend in the kernel smoothed series. Treat this as a long bias: strongest on the reversal marker with price holding above the path, or on pullbacks that respect the path while slope stays up. Bias weakens if price loses the path and the slope flattens or flips down.
▶ Bearish Path (Falling NW Line with Bearish Color): When the estimate is decreasing bar to bar, the path and fill plot in the bearish color, reading as a downtrend in the kernel smoothed series. Treat this as a short bias: strongest on the reversal marker with price holding below the path, or on bounces that fail at the path while slope stays down. Bias weakens if price reclaims the path and the slope flattens or flips up.
▶ Residual Bands (Optional Envelope Around the Path): With residual bands enabled, the upper and lower lines track a scaled kernel weighted residual around the NW path. Touches or closes beyond the outer band highlight price stretched away from the estimate. Returns toward the path after an extension often mark mean reversion relative to the kernel trend rather than a full regime change. Band width is derived from how widely the source has been scattered around the current NW estimate inside the lookback window
🟢 Features
▶ Preconfigured Presets: Three parameter sets tuned for different trading styles and timeframes. "Default" delivers balanced trend estimation for swing trading on 1H to daily charts, smoothing short lived noise while still responding to genuine directional turns. "Fast Response" is built for intraday work on 5 minute to 1H charts, keeping the path tighter to recent structure so turns register earlier at the cost of more frequent reversals in chop. "Smooth Trend" is aimed at position style reading on daily and weekly charts, forming a more stable baseline that flips only when the kernel path itself shifts with more conviction. Kernel type, residual bands, and visual options stay independently configurable under every preset.
▶ Kernel Library: Six kernel functions expand how the same endpoint Nadaraya-Watson framework assigns weight across the window. Gaussian is the classic smooth default with infinite support. Epanechnikov, Triangular, Quartic, and Cosine are compact kernels that fully exclude bars beyond the bandwidth scale. Rational Quadratic keeps infinite support with heavier tails, and its Relative Weighting input controls how much influence farther bars retain versus a Gaussian like decay. Switching kernels changes the shape of the single plotted path without adding a second model or external oscillator.
▶ Residual Bands: Optional envelope around the NW path built from kernel weighted mean absolute residuals of the source versus the estimate, scaled by Band Multiplier. Enable when you want extension and compression context around the same trend line. Disable when you want only the path, gradient, and markers.
▶ Built-in Alerts: Five alert conditions support hands off monitoring. "Bullish Kernel Reversal" fires on the bar the path slope flips from down to up. "Bearish Kernel Reversal" fires on the bar the path slope flips from up to down. "Any Kernel Reversal" fires on either directional flip. "Source Cross Above Upper Band" and "Source Cross Below Lower Band" fire when the selected source crosses the residual envelope extremes. Alert messages include exchange, ticker, and timeframe for immediate context.
▶ Visual Customisation: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish colors to the path, gradient fill, residual bands, markers, optional bar coloring, and optional background coloring. Custom unlocks independent bullish and bearish color pickers. Gradient fill, residual bands, reversal markers, bar coloring, and background coloring can each be toggled so the chart stays as clean or as expressive as the workflow requires.
Indicator

Price Action Breakout Trend [QuantAlgo]🟢 Overview
Price Action Breakout Trend is a trend-following indicator built on structural range breakouts rather than moving average crossovers or oscillator thresholds. It tracks the highest high and lowest low of a defined lookback window to establish the levels price must decisively clear to confirm a directional shift, anchoring a trailing stop that ratchets in the trend's direction and reverses only when price breaks through it, helping traders distinguish genuine trend continuation from the shallow pullbacks that punctuate every sustained move across all timeframes and markets.
🟢 How It Works
The foundation of the indicator is the range defined by recent price extremes. On each bar it references the highest high and lowest low of the prior lookback window, excluding the current bar so the reference range is locked in before price interacts with it:
prior_high = ta.highest(high, lookback)
prior_low = ta.lowest(low, lookback)
These two levels frame the breakout boundaries. Rather than reacting to every marginal touch, the indicator lets you define what qualifies as a genuine break through the confirmation setting, which determines whether the closing price or the full bar extreme is tested against the trailing stop:
test_down = confirmation == 'Close' ? close : low
test_up = confirmation == 'Close' ? close : high
From these, a single trailing stop is maintained on the active side of the trend. While the trend holds bullish the stop ratchets upward, advancing to track the rising lookback low and never loosening, and the trend reverses the moment the tested price breaks below it:
if trend == 1
trail := math.max(trail, prior_low)
if test_down < trail
trend := -1
trail := prior_high
On that reversal the stop immediately re-anchors to the opposite extreme, flipping above price to begin trailing the new downtrend, where the mirror of this same logic ratchets the stop lower and flips the trend back to bullish once price breaks above it. Because the reversal is triggered by the same stop price has been trailing, the line is not a passive overlay but the actual decision boundary, with no separate signal calculation sitting behind it. This makes the indicator a continuous stop-and-reverse system that always holds a committed direction, retaining its bullish or bearish reading through every pullback contained within the range until price clears the trailing level.
🟢 Signal Interpretation
▶ Bullish Trend (Green): When price breaks above the trailing stop and the trend flips up, the indicator enters bullish mode with green coloring applied across the stop, gradient fill, and breakout levels. The stop sits below price and ratchets higher as the trend develops, and the reading holds through pullbacks that stay above it. The flip into green, marked by an up triangle beneath the bar, identifies a potential long/buy opportunity, with subsequent pullbacks toward the rising stop offering potential continuation entries while the trend remains intact.
▶ Bearish Trend (Red): When price breaks below the trailing stop and the trend flips down, the indicator enters bearish mode with red coloring across all visual elements. The stop sits above price and ratchets lower as the decline extends, holding bearish through rallies that fail to reclaim it. The flip into red, marked by a down triangle above the bar, identifies a potential short/sell opportunity, with rallies back toward the falling stop offering potential continuation entries on the downside.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 4-hour and daily charts with a 10-bar lookback and close-based confirmation, filtering marginal breaks while staying responsive to genuine shifts. "Fast Response" shortens the lookback to 5 bars and switches to wick-based confirmation for intraday charts, where the trend needs to flip as soon as price trades beyond a recent extreme. "Smooth Trend" extends the lookback to 25 bars with close confirmation for position trading on daily and weekly timeframes, where the cost of a false flip exceeds the cost of a delayed one. Selecting a preset overrides the individual lookback and confirmation inputs.
▶ Built-in Alerts: Three alert conditions cover all directional states. "Bullish Breakout Signal" fires on the bar where the trend confirms bullish. "Bearish Breakout Signal" fires on the bar where it confirms bearish. "Any Breakout Signal" combines both into a single condition for traders who want a unified notification regardless of direction.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish schemes across the trailing stop, gradient fill, breakout levels, markers, and optional bar and background coloring. Independent toggles control each visual layer, so the trailing stop line, the gradient fill that ramps from the stop toward price, the triangle markers printed on each flip, and the underlying breakout levels that frame the active range can each be shown or hidden without affecting the others. Bar coloring tints price candles with the active trend color at a configurable transparency, and background coloring extends the directional tint across the full chart pane. Both are disabled by default and controlled independently.
*Tips: Layer the Price Action Breakout Trend with complementary analysis rather than treating it as a standalone trading tool. Breakouts hold most reliably when backed by participation, so combine each flip with volume context, since a break on expanding volume is far more likely to sustain than one on thin flow, and read the level being cleared against market structure, as a breakout through a well-established swing high or low carries more significance than one in open space. Pairing this script with volume, open interest, CVD, market structure, and mean reversion indicators from our QuantAlgo toolkit can further validate a breakout before entry. Indicator

Monotonic Trend Consensus [QuantAlgo]🟢 Overview
Monotonic Trend Consensus is a trend-following oscillator built on rank correlation between price and time rather than moving averages or crossovers. It scores how consistently price is ordered across multiple lookback windows and combines them into a single bounded reading on a -1 to +1 scale, holding the same meaning on any symbol or timeframe so traders can separate a broadly aligned trend from directionless noise and read when a move has stretched to saturation.
🟢 How It Works
The foundation is Spearman rank correlation between price and time, computed over each active window. Closes inside the window are ranked against one another, time forms its own rising sequence of ranks, and the difference between the two collapses to a single coefficient (rho):
float price_rank = less + (eq + 1.0) / 2.0
float time_rank = float(len - i)
float rho = 1.0 - 6.0 * sumd2 / denom
The coefficient reads +1 when each bar closes above the last in unbroken order, 0 when there is no consistent order, and -1 when each bar steps lower. Because it scores ordering rather than smoothing price into a line, it reflects the current window directly rather than trailing behind it, though it still needs a full window of bars to form. Ranking also limits the pull of any single outlier bar, and the bounded output is what lets one threshold hold across markets without rescaling.
A single window describes direction; the tool runs several and averages them into a consensus spanning fast, medium, and slow horizons:
consensus := array.avg(rhos)
Agreement is then measured as the share of windows leaning the same way as the consensus, and this conviction figure must clear a floor before a direction prints, working alongside the strength threshold:
conviction := 100.0 * agree / active
raw_bull = consensus > threshold and conviction >= min_conviction
raw_bear = consensus < -threshold and conviction >= min_conviction
A reading registers only when both clear at once: consensus past the threshold and windows aligned enough to meet the conviction floor. Fail either and the line stays flat. With Show Neutral on, those flat stretches reset to neutral; with it off, the line holds its last direction until the next qualifying move.
🟢 Signal Interpretation
▶ Bullish Consensus (Green): Consensus sits above the upper threshold with enough windows aligned, meaning recent bars are ordered upward across horizons. Trend traders read the turn into green as a possible long or continuation as the score presses toward +1. Mean-reversion traders treat a reading pinned near +1 as a stretched, broadly-agreed advance rather than a buy, and look to fade only once the line rolls back off the extreme, since the score can hold high through a sustained trend.
▶ Bearish Consensus (Red): Consensus sits below the lower threshold with conviction met, with bars ordered downward across horizons. Trend traders read the turn into red as a possible short or continuation as the score presses toward -1. Mean-reversion traders treat a reading pinned near -1 as a saturated decline where a bounce becomes more plausible, and look to fade on the turn back up rather than at the low itself.
▶ Neutral (Gray): With Show Neutral on, the line goes gray whenever no direction qualifies, either because consensus sits inside the threshold or conviction falls short. The zero line acts as the balance point and behaves like support or resistance for the reading itself: a score rejected at zero from above points to bullish order reasserting, a score capped at zero from below points to bearish order holding, and a clean break through leans toward a regime change. Reading this midline behavior against price is where market structure tools pair well, separating a base building above a structural level from a coil forming under overhead supply. Trend traders stand aside until the line commits; mean-reversion traders find less to work with here than at the edges.
▶ Reading the Extremes: The axis caps at +1 and -1, marking maximum agreement across every active window. Trend traders take an extreme as a sign a move is still in force; mean-reversion traders take it as a stretched zone and watch for the score to turn back toward zero as agreement breaks. An extreme that aligns with a known structural level gives a fade a cleaner reference than one in open space, and neither read holds on the extreme alone, since a strong trend can stay saturated before it cools.
🟢 Features
▶ Preconfigured Presets: Three setups map to different holding styles. "Default" suits swing work on 4-hour and daily charts, pairing a mid-range window spread of 8, 13, 21, and 34 with a 0.35 threshold and a 60% conviction floor, so a direction needs both strength and agreement before it flags. "Fast Response" pulls the windows in to 5, 8, 13, and 21 and eases the threshold and conviction floor so the reading keeps pace with quicker intraday swings. "Smooth Trend" stretches the windows out to 21, 34, 55, and 89 and raises both gates for daily and weekly position trading, where a premature flip costs more than a late one. Choosing a preset takes over the manual window, threshold, and conviction fields.
▶ Built-in Alerts: Four conditions track every change in state. "Bullish Trend Signal" triggers when the consensus confirms to the upside. "Bearish Trend Signal" triggers when it confirms to the downside. "Trend Lost / Neutral" triggers when an active direction fades back to flat, which is also the event a mean-reversion trader watches for after an extreme. "Any Trend Change" rolls the two directional events into a single notification for anyone who wants one alert covering both ways.
▶ Visual Customization: Six color schemes (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) carry a matched pair of bullish and bearish colors through the consensus line, its tiered gradient fill down to the zero baseline, and the optional bar and background tints. Marker lines sit at the positive and negative trigger levels to show the zone the consensus has to cross, and each window's own score can be switched on as a faint backing line so you can see which horizons are driving or dragging the combined figure. Bar coloring paints the price candles in the active trend color at an adjustable transparency, while background coloring spreads that tint across the pane.
Indicator

Dynamic Volatility Filter [QuantAlgo]🟢 Overview
Dynamic Volatility Filter is a trend-following indicator built on an adaptive volatility threshold rather than fixed bands or moving average crossovers. It quantifies the realized volatility of recent price movement to establish a dynamic noise floor that price must overcome before the line responds, anchoring a filtered trend line that only shifts when a directional move exceeds the prevailing volatility regime, helping traders separate statistically significant trend change from noise-driven fluctuation across every timeframe and market.
🟢 How It Works
The foundation of the indicator is a rolling volatility estimate derived from the Average True Range over a configurable lookback window, scaled by a noise multiplier to produce the threshold used in all line logic:
threshold = ta.atr(lookback) * noise_mult
This threshold functions as a deviation barrier the line will not cross until price movement breaches it. On each bar the filter measures the displacement between price and the current line position, and only when that displacement exceeds the volatility threshold does the line update:
float diff = src - dvf_line
if math.abs(diff) > threshold
dvf_line := dvf_line + diff * snap_speed
The line remains stationary through movement that falls within the volatility envelope and only commits once displacement clears the threshold. Rather than converging directly onto price, the line advances by a fraction of the residual distance governed by the catch-up coefficient, producing a damped response instead of an instantaneous one. Lower catch-up values introduce deliberate lag that requires a move to persist before the line follows, while higher values tighten the track to price.
Direction state is derived from the line's own first difference, comparing its current position against the prior bar:
if dvf_line > dvf_line
trend_dir := 1
else if dvf_line < dvf_line
trend_dir := -1
Because the line holds flat whenever displacement stays inside the threshold, those periods register no direction change. With Show Neutral enabled the state resets to neutral during these pauses, and with it disabled the line retains its last directional reading until the next threshold breach.
🟢 Signal Interpretation
▶ Bullish Trend (Green): When the filter line registers positive displacement against its prior position, the indicator enters bullish mode with green coloring applied across the line, gradient fill, and volatility bands. This state persists through pullbacks contained within the threshold, since direction only updates when the line moves. The transition into green marks a potential long/buy opportunity, with pullbacks toward the line during an established bullish reading offering potential continuation entries.
▶ Bearish Trend (Red): When the filter line registers negative displacement against its prior position, the indicator enters bearish mode with red coloring across all visual elements. The reading holds bearish until price clears the volatility threshold in the opposite direction. The transition into red marks a potential short/sell opportunity, with rallies back toward the line during an established bearish reading offering potential continuation entries on the downside.
▶ Neutral (Gray): When Show Neutral is enabled, the line and fills turn gray during flat stretches where price stays inside the threshold and the line holds still. This state signals an absence of confirmed direction and is best treated as a stand-aside condition, where waiting for the line to commit back to green or red avoids entering during indecisive, range-bound conditions.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 4-hour and daily charts with a balanced threshold that filters moderate noise while staying responsive to genuine regime shifts. "Fast Response" lowers the volatility barrier and shortens the lookback for intraday charts where the line needs to adapt to shorter-duration moves. "Smooth Trend" raises the threshold and slows the catch-up for position trading on daily and weekly timeframes, where the cost of a false flip exceeds the cost of a delayed one. Selecting a preset overrides the individual noise, period, and catch-up inputs.
▶ Built-in Alerts: Three alert conditions cover all directional states. "Bullish Trend Signal" fires on the bar where the trend 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.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish color schemes across the line, gradient fill, volatility bands, and optional bar and background coloring. The volatility bands plot one threshold above and below the line to frame the deviation envelope price must breach, and can be hidden for a clean line-only view. Bar coloring tints price candles with the active trend color at a configurable transparency level, and background coloring extends the directional tint across the full chart pane. Both are disabled by default and controlled independently.
*Recommendation: Layer the Dynamic Volatility Filter with complementary analysis rather than treating it as a standalone decision tool. Combine direction changes with volume context, since expanding volume on a flip bar suggests the move has broader participation behind it, and read transitions against key structural levels, as a flip occurring near major support or resistance carries more weight than one in open space. Pairing this script with volume, open interest, CVD, market structure, and mean reversion indicators from our QuantAlgo toolkit can further validate directional bias before entry. Indicator

Adaptive Volatility Envelope [QuantAlgo]🟢 Overview
The Adaptive Volatility Envelope wraps price in a dynamic field of volatility bands centred on a self-adjusting baseline. Rather than tracking price at a fixed speed, the centerline measures how efficiently price is moving and accelerates when movement is more directional while slowing down in choppy conditions, so the baseline follows sustained moves more closely and reacts less to sideways noise. Around this adaptive centerline, layered ATR-scaled bands form a heat map that brightens toward the side price is moving into, giving traders a visual read on both trend state and momentum strength across any instrument or timeframe.
🟢 How It Works
The indicator's core methodology combines two mechanisms: an efficiency-driven centerline that adapts its tracking speed to market conditions, and a volatility-scaled band field that visualises momentum through colour and brightness.
First, market efficiency is measured by comparing net directional movement against total movement over the adaptation window. This ratio approaches one when movement is more directional and falls toward zero in choppy conditions, and it is used to blend between a slow choppy speed and a fast trending speed. The result is a smoothing factor that automatically tightens the centerline's tracking in directional moves and loosens it in noise, without manual recalibration:
efficiencyRatio = totalMovement != 0 ? priceChange / totalMovement : 0.0
smoothingFactor = choppySpeed + (trendSpeed - choppySpeed) * efficiencyRatio
Next, the centerline advances toward price by the smoothing factor on each bar, producing an adaptive baseline that closes the gap quickly when efficiency is high and slowly when it is low:
centerline := na(centerline ) ? src : centerline + smoothingFactor * (src - centerline )
Band width is then derived from Average True Range scaled by the band spacing, with a safety cap that measures total envelope height against the recent fifty bar price range. If the raw width would exceed this cap, every band is scaled down proportionally, preventing the field from blowing out and distorting the chart scale during volatility spikes:
widthScale = rawWidth > maxWidth and rawWidth != 0 and maxWidth > 0 ? maxWidth / rawWidth : 1.0
bandUnit = atr * bandSpacing * widthScale
Momentum is resolved from the centerline's slope normalised by ATR and scaled by the colour sensitivity, then clamped to a range of minus one to one. This drives a gradient that runs from the neutral colour at flat momentum toward the bullish or bearish colour as the move strengthens, while a directional brightness offset lights up the leading side of the envelope more than the trailing side:
momentumRaw = not na(atr) and atr != 0 ? slope / atr * colorSens : 0.0
momentum = math.max(-1.0, math.min(1.0, momentumRaw))
Finally, a confirmed-bars toggle governs what the script computes. In Live mode the centerline, momentum, bands and signals update intrabar on the developing bar for the fastest response, with the current bar able to change until it closes. In Confirmed mode everything is locked to closed bars only, so signals do not repaint and print on the bar that closes the move.
🟢 Signal Interpretation
▶ Bullish Momentum (Centerline and Bands Brightening Toward the Bullish Colour): When the centerline slopes upward relative to volatility, momentum turns positive and the envelope gradient shifts toward the bullish colour. The leading upper side of the field brightens through the directional brightness offset, making the direction of the move easier to read. The bullish state persists as long as the centerline continues rising, and a "Momentum Turned Bullish" alert fires on the bar where momentum crosses above zero.
▶ Bearish Momentum (Centerline and Bands Brightening Toward the Bearish Colour): When the centerline slopes downward relative to volatility, momentum turns negative and the gradient shifts toward the bearish colour, with the leading lower side of the field brightening to flag the downturn. As with the bullish state, the colour saturates as the move strengthens and fades toward neutral as momentum flattens. A "Momentum Turned Bearish" alert fires on the bar where momentum crosses below zero, flagging a potential short or exit condition.
▶ Neutral Momentum (Centerline and Bands at the Neutral Colour): When the centerline is flat or moving slowly relative to volatility, momentum sits near zero and the gradient settles at the neutral colour at the middle of its range. This indicates low conviction or sideways drift rather than a directional move, and the envelope brightens away from neutral only as the slope steepens enough to register on either side. Reading the neutral state helps separate genuine momentum from chop, since the field stays muted until price generates a meaningful directional slope.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover a range of trading styles and timeframes. "Default" delivers a balanced engine for swing trading on 4-hour and daily charts. "Fast Response" shortens the adaptation window and quickens both market speeds for tighter, more reactive bands on 5-minute to 1-hour charts, suiting intraday and scalping use. "Smooth Trend" lengthens the adaptation window and slows the speeds for wider, steadier bands on daily and weekly charts, suiting position trading. The presets deliberately leave Volatility Length untouched, so band width stays under independent manual control.
▶ Built-in Alerts: Three alert conditions support automated monitoring of momentum transitions. "Momentum Turned Bullish" fires on the bar momentum crosses above zero. "Momentum Turned Bearish" fires on the bar momentum crosses below zero. "Any Momentum Change" triggers on either transition for traders who want a single unified alert regardless of direction. All alerts include the exchange, ticker, and timeframe in the message for immediate context, and the confirmed-bars toggle determines whether they evaluate on live or closed-bar data.
▶ Visual Customisation: Six colour presets, Classic, Aqua, Cosmic, Cyber, Neon, and Custom, provide coordinated bullish and bearish colour pairings suited to different chart themes and personal preferences. Selecting Custom exposes independent colour pickers for full manual control over both states, alongside an adjustable neutral colour for the midpoint of the gradient. The number of band layers is configurable from one for a clean minimal look up to eight for a rich gradient field, and the bands can be hidden entirely to display only the centerline. Optional bar colouring tints price candles with the active trend colour at a configurable transparency level, reflecting the current momentum state without reading the centerline directly.
Indicator

Fractal Exhaustion Band [QuantAlgo]🟢 Overview
The Fractal Exhaustion Band is a trend-following indicator that replaces the fixed ATR multiplier common to most adaptive bands with the Fractal Dimension Index, scaling the buffer width in real time based on how efficiently price is consuming its recent range. Additionally, an extremum tracker accumulates swing highs and lows since the last confirmed flip to form an outer Band Edge, giving traders a structured range to position within the trend, identify exhaustion near its boundaries, and treat extensions beyond the edge as potential deviation signals ahead of a directional flip across any instrument or timeframe.
🟢 How It Works
The core methodology is built around three sequential stages: a fractal dimension calculation that quantifies the structural quality of recent price movement, a dynamic buffer derived from that measurement, and a ratcheting trend line that advances only when market conditions justify it.
First, the Fractal Dimension Index (FDI) is calculated by comparing the total path length price has travelled over the lookback window against the straight-line distance between its highest and lowest point. A value near 1 indicates clean, efficient trending. A value near 2 indicates erratic, space-filling movement. The ratio is log-normalised by the window size to keep it comparable across different FDI Period settings:
fdi = high_ - low_ > 0 ? (math.log(len) - math.log(high_ - low_)) / math.log(power) : 0
Next, the FDI is fed directly into the buffer calculation as a scaling factor on top of the Band Width Multiplier and a 10-period ATR. This means the buffer is never fixed; it inflates when price behaviour is erratic and compresses when price is trending with conviction:
dynamic_mult = sensitivity * (1 + fdi)
buffer = atr * dynamic_mult
The trend line then ratchets in the direction of the current trend, but only on bars where the FDI is below 1.5. This gate prevents the line from being dragged by price during high-fractal-dimension conditions, even if price has not yet breached the buffer threshold. A trend flip is only registered when price closes beyond the buffer on the opposite side:
if fdi < 1.5
trend_line := math.max(trend_line, close - buffer)
Finally, an extremum tracker accumulates the running high or low since the last confirmed flip, forming the outer Band Edge. A midline is derived as the average between this extremum and the trend line, creating a three-layer structure that encodes both the structural anchor of recent price extremes and the adaptive trend line beneath it:
ex := trend_dir != trend_dir ? (trend_dir == 1 ? high : low)
: trend_dir == 1 ? math.max(nz(ex , high), high)
: math.min(nz(ex , low), low)
mid = math.avg(ex, trend_line)
🟢 Signal Interpretation
▶ Bullish Trend (Band Rising with Bullish Colour): When price moves upward with sufficient efficiency to produce a low FDI reading and close above the trend line's buffer threshold, the trend direction flips to bullish and the entire band shifts to the bullish colour. From that point, the Fractal Line ratchets upward on each bar where the FDI remains below 1.5, while the extremum tracker accumulates successive highs to form the outer Band Edge above. The flat segments visible in the band reflect bars where the FDI gate suppressed movement, while upward steps reflect bars where trending conditions were confirmed.
Within the bullish band, the Fractal Line and Band Edge define a structured trading range. Price oscillating between the two represents normal trend continuation behaviour, and pullbacks toward the Fractal Line can be treated as higher-probability long entries with the trend, using the Fractal Line itself as the logical invalidation level. The Band Mid serves as a directional gauge within that range; price holding above it reflects stronger momentum, while price drifting below it signals weakening conviction worth monitoring. When price pushes into the Band Edge zone and begins interacting with the accumulated swing highs, treat that as an exhaustion area rather than a continuation signal. Longs initiated near the Band Edge carry elevated risk of a short-term mean reversion back toward the Fractal Line. If price then extends meaningfully beyond the Band Edge, treat the extension as a deviation from the established structure. A deviation of this kind, particularly when accompanied by a rising FDI indicating deteriorating trend quality, is a preparatory signal to begin tightening long exposure and watching for the Fractal Line to be breached on the downside, which would confirm the bias flip to bearish.
▶ Bearish Trend (Band Declining with Bearish Colour): When price moves downward with sufficient efficiency to produce a low FDI reading and close below the trend line's buffer threshold, the trend direction flips to bearish and the band shifts to the bearish colour. The Fractal Line ratchets lower on each bar where the FDI gate permits, while the extremum tracker accumulates successive lows to form the outer Band Edge below. As with the bullish state, the filter holds its last value on bars where fractal dimension is elevated, and the direction state remains unchanged on those bars.
Within the bearish band, the same structural logic applies in reverse. Price oscillating between the Fractal Line above and the Band Edge below represents normal bearish continuation, and bounces toward the Fractal Line can be treated as higher-probability short entries with the trend, using the Fractal Line as the invalidation level. The Band Mid again acts as a momentum gauge; price holding below it indicates sustained selling pressure, while recovery above it suggests the downtrend is losing conviction. When price pushes into the Band Edge zone and interacts with the accumulated swing lows, treat that region as exhaustion rather than confirmation of further downside. Shorts initiated near the Band Edge carry elevated mean-reversion risk back toward the Fractal Line. If price extends beyond the Band Edge to the downside, treat that extension as a structural deviation. A deviation paired with a rising FDI is a signal to begin reducing short exposure and watching for an upward breach of the Fractal Line, which would confirm the directional flip back to bullish.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover a range of trading styles and timeframes. "Default" delivers balanced noise filtering suited to swing trading on 4-hour and daily charts. "Fast Response" tightens the buffer and shortens the fractal measurement window for intraday and scalping use on 1-minute to 1-hour charts, producing earlier trend flips in response to smaller directional moves. "Smooth Trend" widens the buffer and extends the measurement window for position trading on daily and weekly charts, requiring a more sustained and efficient directional move before a trend flip is registered.
▶ Built-in Alerts: Three alert conditions support automated monitoring of trend transitions. Bullish Trend fires on the first bar where trend direction flips from bearish to bullish. Bearish Trend fires on the first bar where trend direction flips from bullish to bearish. Any Signal Change triggers on either transition for traders who want a single unified alert regardless of direction. All alerts include the exchange, ticker, and timeframe in the message for immediate context.
▶ Visual Customisation: Six colour presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) provide coordinated bullish and bearish colour pairings suited to different chart themes and personal preferences. Selecting Custom exposes independent colour pickers for full manual control over both states. The three-layer band fill uses graduated transparency across the outer edge, midline, and trend line zones to clearly distinguish structural from adaptive components at a glance. Optional bar colouring tints price candles with the active trend colour using a configurable transparency level, and optional background colouring extends the trend state tint across the full chart pane at a separately configurable transparency.
Indicator

Open Interest Suite [QuantAlgo]🟢 Overview
The Open Interest (OI) Suite is a comprehensive OI visualization and analysis tool built specifically for crypto perpetual futures traders. It reads open interest data directly from PulseWire-supported exchanges, giving you a way to monitor how many active contracts are currently open in the market. Whether you are tracking a single exchange or aggregating OI across venues like Binance, Bybit, Bitget, Coinbase, Kraken, HTX, BitMEX, and OKX, this indicator is one of the most powerful contextual tools available, allowing traders to quickly gauge overall perpetual futures market positioning.
🟢 What is Open Interest?
Open interest (OI) is the total number of live contracts between buyers and sellers at any given moment. Every long is matched to a short at a 1:1 ratio, so OI gives you a strong sense of how much capital and how many positions are currently committed to the market. Rising OI suggests new money and new positions are entering. Falling OI suggests positions are being closed or liquidated. When combined with price action, OI becomes one of the most valuable lenses available for understanding what is likely happening beneath the surface of price movement in perpetual markets.
🟢 How It Works
The indicator operates in two distinct modes. In Single (Chart) mode, it automatically reads open interest from whichever supported exchange and perpetual contract you are currently viewing, requiring no manual configuration. In Aggregated mode, it fetches OI from some of the highest-volume exchanges in crypto, for example, Binance, Bybit, Bitget, Coinbase, Kraken, HTX, BitMEX, and OKX, combines them into a single composite total, and gives you a cross-market view of positioning that no individual exchange feed can provide on its own. For each exchange in Aggregated mode, OI is fetched across both USDT and USDC perpetual pairs where applicable, then converted to a unified measure before summing. More exchanges will be added as their data becomes available on PulseWire.
The Measure setting controls how OI values are expressed. In Coins mode, values are kept in their native unit, which may be more useful when you want to observe raw contract volume independent of price fluctuations. In Dollars mode, coin quantities are multiplied by the current bar price to convert values into USD, which is the standard way most traders and data providers report OI and tends to make cross-asset comparisons more intuitive. For exchanges that report natively in USD, the conversion is handled in reverse when Coins mode is active.
🟢 Key Features
▶ View Modes
The indicator offers four ways to visualize OI, each suited to a different analytical purpose.
1. Candles: Renders OI as full OHLC candlesticks, displaying open, high, low, and close OI for every bar. This is the richest view for studying OI structure, trends, compression, and expansion over time. You can watch OI build or unwind bar by bar similarly to how you read price action, which may help with spotting periods of aggressive position-building or rapid deleverage.
2. Lines: Renders OI as a single continuous line using the close value of each bar. Cleaner and less visually demanding than candles, this mode works well for maintaining OI context alongside other indicators without crowding the chart.
3. Change: Displays the bar-over-bar absolute difference in OI as a histogram. Positive bars indicate net new positions were likely opened. Negative bars suggest net positions were closed or liquidated. This mode can help identify the bars where positioning shifted most dramatically, which often corresponds to high-conviction entries, forced liquidations, or possible trend exhaustion.
4. Change (%): The same histogram expressed as a percentage of the prior bar OI value. This normalises the signal across different asset sizes and OI magnitudes, which could make it easier to compare positioning dynamics between a large-cap asset and a smaller altcoin.
▶ Aggregated Mode and Exchange Selection
In Aggregated mode, each of the eight supported exchanges can be toggled on or off independently. This flexibility allows several useful configurations beyond a simple total. You can enable only one exchange to track that specific venue regardless of which chart you are currently viewing. You can also add the indicator to your layout multiple times with a different single exchange selected each time, letting you compare individual exchange OI side by side on the same chart.
▶ Color Presets
Five built-in color presets (Classic, Aqua, Cosmic, Cyber, Neon) allow you to match the indicator's appearance to your chart setup with a single click. A Custom preset exposes individual color pickers for bull, bear, and line colors, giving full control over every visual element including candle bodies, wicks, borders, histogram columns, and the line overlay.
▶ Unsupported Exchange Warning
When Single (Chart) mode is active and the current exchange does not provide open interest data on PulseWire, the indicator displays a warning label on the chart identifying the unsupported exchange and listing supported alternatives.
🟢 Price + OI Interpretation
Reading OI in isolation is only part of the picture. More meaningful analysis tends to come from combining OI direction with price action and, where available, volume data, along with other trend-following or mean-reversion indicators.
Examples:
1. Price Up + OI Up: New capital is likely entering on the long side. This could indicate bullish trend continuation, with fresh positioning supporting the move rather than just short covering. The stronger the OI growth relative to price movement, the higher the probability that the trend has genuine participation behind it.
2. Price Down + OI Up: New shorts are probably being added aggressively. Bearish momentum may be building through fresh positioning, which tends to be a more sustained signal than a move driven purely by long liquidations.
3. Price Down + OI Down: Longs are likely closing or being liquidated. The selling pressure in this scenario is coming from position unwinds rather than new short entries, which could sometimes suggest exhaustion near a local low rather than fresh trend initiation.
4. Price Up + OI Down: Shorts are probably closing or being squeezed out. This is the likely mechanics of a short squeeze: buyers overwhelm sellers, underwater shorts cover, and the resulting buy pressure may accelerate the move higher. This pattern tends to produce some of the fastest and sharpest price moves seen in crypto perpetual markets.
It is worth noting that for every short there is a long. When OI increases during a downtrend, it does not necessarily mean only shorts are entering. Longs are participating too, often more passively through limit orders. Cumulative Volume Delta (CVD) can help distinguish which side is more likely driving the flow, since it measures aggressive buying versus aggressive selling pressure within each bar.
🟢 Important Notes
1. This indicator is designed exclusively for crypto perpetual futures and will not produce output on spot tickers, equity symbols, or any instrument without a corresponding OI feed on PulseWire. In Single (Chart) mode, if the exchange you are viewing is not among the currently supported venues (Binance, Bybit, Bitget, Coinbase, Kraken, HTX, BitMEX, and OKX), the indicator will display a warning and produce no data. Switching to a supported exchange will restore functionality. More exchanges will be added as their data becomes available on PulseWire.
2. OI is most useful as a context layer rather than a standalone signal. Using it alongside price structure, volume, and order flow analysis may help you assess whether a move is likely backed by new positioning or driven by position unwinds. That distinction could have meaningful implications for how far a move extends and how quickly it might reverse. Indicator

Asymmetric Volatility Trend Line [QuantAlgo]🟢 Overview
Asymmetric Volatility Trend Line is a trend-following indicator built on adaptive standard deviation thresholds rather than fixed bands or moving average crossovers. It quantifies the statistical volatility of recent price movement to determine asymmetric conditions for trend continuation versus trend reversal, then uses those conditions to anchor a dynamic trend line that adjusts position in response to confirmed directional moves, helping traders distinguish between genuine breakouts and noise-driven fluctuations across every timeframe and market.
🟢 How It Works
The foundation of the indicator is a rolling standard deviation applied to the selected price source over a configurable lookback window, scaled by a threshold multiplier to produce the volatility boundary used in all trend logic:
vol_threshold = ta.stdev(src, lookback) * threshold_mult
This threshold is intentionally asymmetric in application. When the trend line is in a bullish state, a smaller fraction of the threshold (0.5x) is required for price to confirm continuation, while a full threshold breach in the opposite direction is needed to trigger a reversal. The same asymmetry applies in reverse during bearish states:
if trend_dir >= 0
if src > trend_line + vol_threshold * 0.5
trend_line := math.max(trend_line, src - vol_threshold * 0.25)
trend_dir := 1
else if src < trend_line - vol_threshold
trend_line := src + vol_threshold * 0.25
trend_dir := -1
This design means continuation requires less evidence than reversal. A directional move only needs to exceed half the volatility threshold to sustain the current trend, but must overcome the full threshold to flip it. The 0.25x offset applied when repositioning the trend line keeps it anchored within the volatility envelope rather than jumping directly to price, producing a smoother line that does not overreact to a single bar.
When a reversal is confirmed, the trend line is placed on the opposite side of price at a quarter-threshold distance, giving it room to develop without immediately triggering another flip:
trend_line := src + vol_threshold * 0.25 // repositioned on bearish flip
trend_dir := -1
Direction state is tracked through two integer variables, with reversal conditions derived from comparing the current and prior bar states:
turned_bullish = trend_dir == 1 and trend_dir == -1
turned_bearish = trend_dir == -1 and trend_dir == 1
is_reversal = trend_dir != prev_dir and bar_index > 0
🟢 Signal Interpretation
▶ Bullish Trend (Green): When price closes above the trend line by more than half the volatility threshold, the indicator enters bullish mode with green colouring applied across the trend line, gradient fill, and reversal marker (⦿). This state persists until price closes below the trend line by the full volatility threshold, allowing normal pullbacks to occur without triggering a direction change.
▶ Bearish Trend (Red): When price closes below the trend line by more than half the volatility threshold, the indicator enters bearish mode with red colouring across all visual elements. A full threshold breach to the upside is required to exit this bearish state.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 4-hour and daily charts with moderate threshold sensitivity. "Fast Response" reduces the volatility barrier and shortens the lookback for intraday charts where the indicator needs to adapt to shorter-duration moves. "Smooth Trend" raises the reversal threshold substantially for position trading on daily and weekly timeframes, where the cost of a false flip is higher than the cost of a delayed one. Selecting a preset overrides the individual multiplier and lookback inputs.
▶ Built-in Alerts: Three alert conditions cover all directional states. "Bullish Trend Signal" fires on the bar where the trend direction flips from bearish to bullish. "Bearish Trend Signal" fires on the bar where it flips from bullish to bearish. "Any Trend Change" combines both into a single condition for traders who want a unified notification regardless of direction.
▶ Visual Customisation: Six colour presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish colour schemes across the trend line, gradient fill, reversal markers, 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. Both are disabled by default and controlled independently.
Indicator

Adaptive Friction Filter (AFF) [QuantAlgo]🟢 Overview
The Adaptive Friction Filter (AFF) identifies trending market conditions by applying a physics-inspired friction model to price movement. Rather than smoothing price through fixed averaging, it introduces a dynamic noise threshold derived from recent market volatility, which means price must generate enough force to overcome this threshold before the filter moves at all. Once breached, the filter closes the gap at a configurable rate, producing a step-like trend line that holds steady through noise and responds decisively to genuine directional moves. This allows traders to distinguish between meaningful trend continuation and low-conviction chop across any instrument or timeframe.
🟢 How It Works
The AFF's core methodology is built around a two-stage mechanism: a volatility-derived friction threshold that gates filter movement, and a catch-up scalar that governs how much of the gap the filter closes on each bar once that threshold is exceeded.
First, the friction threshold is computed as the simple moving average of absolute bar-to-bar price changes over the configured lookback window, scaled by the friction coefficient. This makes the threshold inherently self-adjusting; it widens during volatile conditions and contracts during quiet ones, without requiring any manual recalibration:
friction = ta.sma(math.abs(src - src ), lookback) * friction_mult
Next, the raw displacement between current price and the filter's last position is evaluated as force. The filter only advances if this force exceeds the friction threshold. When it does, the filter moves toward price by a fraction of the gap governed by the catch-up scalar, rather than closing the full distance immediately, producing a controlled and progressive response:
force = src - aff_line
aff_line := math.abs(force) > friction ? aff_line + force * catchup_scalar : aff_line
Trend direction is then resolved by comparing the current filter value to its prior bar value. The direction state persists when the filter is flat, so no transition is registered on bars where the filter does not move:
trend_dir := aff_line > aff_line ? 1 : aff_line < aff_line ? -1 : trend_dir
Finally, the filter is rendered as two overlapping plots at the same value: a step-line that traces the filter's path and a circle overlay positioned at each bar's filter value. The circles serve a visual purpose, reinforcing the current filter level at each step and making it easier to read the filter's position at a glance, particularly during flat periods where the step-line alone can be harder to track. Together they produce a dotted step appearance that improves legibility across different chart zoom levels and timeframes.
🟢 Signal Interpretation
▶ Bullish Trend (AFF Line Rising with Bullish Colour): When price generates enough upward force to exceed the friction threshold, the filter begins stepping higher and the line shifts to the bullish colour. The step-line rendering makes the transition visually clear; flat segments indicate bars where force was insufficient to move the filter, while upward steps reflect bars where it was. The bullish trend state persists until force in the downward direction is large enough to push the filter lower, at which point trend direction flips and the line shifts to the bearish colour.
▶ Bearish Trend (AFF Line Declining with Bearish Colour): When price generates enough downward force to exceed the friction threshold, the filter begins stepping lower and shifts to the bearish colour. As with the bullish state, the filter holds its last value on bars where force is insufficient to breach the threshold, and the direction state remains unchanged on those bars. A full reversal back to bullish requires upward force to exceed the friction threshold and push the filter higher, at which point trend direction flips and the colour transitions accordingly.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover a range of trading styles and timeframes. "Default" delivers balanced noise filtering for swing trading on 4-hour and daily charts. "Fast Response" lowers the friction threshold and accelerates the catch-up rate for intraday and scalping use on 5-minute to 1-hour charts, producing earlier filter movement in response to smaller price displacements. "Smooth Trend" raises the threshold and slows the catch-up rate for position trading on daily and weekly charts, requiring larger price displacements relative to the average noise level before the filter advances.
▶ Built-in Alerts: Three alert conditions support automated monitoring of trend transitions. "Bullish Trend Signal" fires on the first bar trend direction flips from bearish to bullish. "Bearish Trend Signal" fires on the first bar trend direction flips from bullish to bearish. "Any Trend Change" triggers on either transition for traders who want a single unified alert regardless of direction. All alerts include the exchange, ticker, and timeframe in the message for immediate context.
▶ Visual Customisation: Six colour presets, Classic, Aqua, Cosmic, Cyber, Neon, and Custom, provide coordinated bullish and bearish colour pairings suited to different chart themes and personal preferences. Selecting Custom exposes independent colour pickers for full manual control over both states. Optional bar colouring tints price candles with the active trend colour using a configurable transparency level, and optional background colouring extends the trend state tint across the full chart pane at a separately configurable transparency.
Indicator

Adaptive Fourier Transform CCI [QuantAlgo]🟢 Overview
The Adaptive Fourier Transform CCI reimagines the classic Commodity Channel Index by replacing its fixed lookback period with one that continuously adjusts to the market's own rhythm. Rather than measuring price deviation against an arbitrary static length, it first isolates the cyclical component of price action through a Discrete Fourier Transform, identifies which cycle period currently holds the most spectral energy, and then tunes the CCI calculation to that dominant period. The result is a momentum oscillator calibrated to the frequency structure of the instrument being traded, naturally tightening during fast, high-frequency regimes and widening during slower, drawn-out cycles without requiring manual timeframe adjustments.
🟢 How It Works
Before any cycle detection occurs, raw price is conditioned through two sequential filters. A high-pass filter strips the slow-moving trend component from the close, leaving only the oscillating portion of price action:
hp := 0.5 * (1 + a1) * (close - close ) + a1 * hp
That residual is then passed through a Super Smoother filter, which removes short-term noise from the cycle signal without introducing the lag that standard moving averages add at this stage:
filt := c1 * (hp + hp ) / 2 + c2 * filt + c3 * filt
This cleaned signal is what the Discrete Fourier Transform (DFT) operates on. The DFT scans across a range of candidate cycle periods and measures how much price energy is concentrated at each one. The period where that energy is strongest is selected as the dominant cycle. An EMA smooths the period output to prevent erratic length switching between bars, and the result is scaled by the Length Multiplier to derive the final adaptive CCI lookback:
adaptiveLen = clamp(round(dominantPeriod × lengthMult), 5, 60)
The CCI is then calculated using the standard Lambert formula over that adaptive length, measuring how far typical price has deviated from its mean relative to its average absolute deviation. An optional output smoothing MA reduces bar-to-bar noise before the final value is plotted.
🟢 Signal Interpretation
▶ Overbought (Above Upper Level, Red): When the Adaptive Fourier Transform CCI (AFT-CCI) rises above the upper threshold, price has deviated significantly above its cycle-adaptive mean. The reading reflects momentum extended relative to the market's current detected rhythm rather than a fixed arbitrary baseline. The signal carries more weight when the dominant cycle is stable and the DFT is locked onto a consistent frequency rather than switching between periods.
▶ Oversold (Below Lower Level, Green): When the AFT-CCI falls below the lower threshold, price has moved an equivalent distance below its cycle-adaptive mean. In strongly trending conditions the AFT-CCI can remain in either zone for extended periods, so the threshold levels should be read as zones of extension rather than automatic reversal points.
▶ Neutral Zone (Between Levels, Grey): When the AFT-CCI sits between the upper and lower thresholds, price deviation relative to the detected cycle is within normal range. Zero-line crosses within this zone indicate the adaptive mean is being reclaimed, which can serve as early directional context before a full threshold break develops.
▶ Zero Line: The zero line represents the adaptive mean itself. A cross above zero indicates typical price has moved above the cycle-adaptive mean; a cross below indicates the opposite. These crosses are lower-conviction reads on their own but become more meaningful when followed by a threshold break in the same direction.
🟢 Features
▶ Preconfigured Presets: Two parameter sets sit alongside the default configuration. "Fast Response" compresses the DFT window and cycle search range while raising the length multiplier, producing faster adaptation suited to intraday charts from 5-minute to 1-hour. "Smooth Trend" expands the window and search range while lowering the multiplier, establishing a more stable cycle read suited to daily and weekly position trading.
▶ Built-in Alerts: Six alert conditions cover the full range of meaningful oscillator events. Separate alerts fire on entering and exiting both overbought and oversold territory, capturing threshold breaks in both directions. Two additional alerts trigger on bullish and bearish zero-line crosses, enabling directional monitoring without requiring constant chart observation.
▶ Visual Customisation: Six colour presets, Classic, Aqua, Cosmic, Cyber, Neon, and Custom, apply consistently across the signal line, glow layers, and threshold level lines so the overbought and oversold colours remain coherent regardless of which preset is active. The optional neon glow effect uses three layered plots at increasing transparency to give the signal line visual depth and make threshold breaks immediately readable at a glance.
Indicator

Hyperbolic Hull Moving Average (HHMA) [QuantAlgo]🟢 Overview
Hyperbolic Hull Moving Average is a trend-following indicator that replaces the linear weighting kernel inside a Hull Moving Average with a hyperbolic sine function, producing a moving average that concentrates weight on recent bars in a non-linear, exponentially accelerating curve rather than a straight ramp. Where a standard WMA assigns weight proportionally across the lookback, the sinh kernel creates a steep recency gradient that responds meaningfully to genuine momentum shifts while remaining more resistant to brief noise spikes, because distant bars lose influence at a compounding rate rather than a constant one. The result is a Hull-style construction with faster directional detection and smoother curvature than its conventional counterpart.
🟢 How It Works
The indicator is built across three passes of the same sinh weighting function. The core kernel computes a weighted average where each bar's weight is determined by the hyperbolic sine of its normalized position within the lookback, scaled by a tension parameter:
float _x = (_len - i) / _len * _t
float _w = (math.exp(_x) - math.exp(-_x)) / 2
Higher tension values push more of the total weight toward the most recent bars. At the default tension of 2.0 across a 24-period window, the most recent bar carries roughly 44 times the weight of the oldest bar. A standard WMA across the same window would assign the newest bar only 24 times the weight of the oldest, so the sinh kernel naturally produces a steeper bias toward recent price action at any equivalent length setting.
The Hull construction then runs two sinh-weighted averages at different periods, a fast pass at half the length and a slow pass at the full length, before combining them in the same denoising formula Alan Hull originally described:
fastSinh = f_sinh_weight(src, halfLen, tension)
slowSinh = f_sinh_weight(src, length, tension)
rawHull = 2 * fastSinh - slowSinh
hhma = f_sinh_weight(rawHull, sqrtLen, tension)
The raw Hull output is then passed through a final sinh-weighted smoothing pass at the square root of the full length, which removes the lagging noise the doubling step introduces.
Trend direction is determined by a simple slope check on the final output. This keeps state detection clean and unambiguous, with direction changes triggering alerts and visual updates the bar they occur.
🟢 Signal Interpretation
▶ Bullish Trend (Rising HHMA, Green): When the HHMA turns upward, all visual elements switch to the bullish colour, indicating a confirmed uptrend. Because the sinh kernel front-loads weight on recent bars, the line responds quickly to genuine upside momentum without needing price to sustain a move for many bars before registering a directional shift. Trend state remains bullish on each subsequent bar the HHMA continues to rise, allowing traders to hold positions through normal intra-trend oscillation without being shaken out by minor hesitations in the line.
▶ Bearish Trend (Falling HHMA, Red): When the HHMA turns downward, all visual elements switch to the bearish colour, confirming a downtrend or a breakdown from a prior uptrend. The same recency weighting that accelerates bullish detection also means the line will respond relatively quickly to sustained selling pressure, reducing the lag that causes conventional Hull variants to stay bullish well into a reversal. The trend remains bearish on each bar the HHMA continues to fall.
🟢 Features
▶ Preconfigured Presets: Three optimised parameter sets cover different trading approaches. "Default" is calibrated for swing trading on 4-hour and daily charts, balancing responsiveness with noise rejection. "Fast Response" shortens the lookback and increases recency bias for intraday and scalping use on 5-minute to 1-hour charts. "Smooth Trend" extends the period and flattens the weighting curve for position trading on daily and weekly charts where fewer, higher-conviction direction changes are preferred.
▶ Built-in Alerts: Three alert conditions support automated monitoring without requiring constant chart supervision. "Bullish Trend Signal" fires on the bar the HHMA slope turns upward. "Bearish Trend Signal" fires on the bar it turns downward. "Trend Direction Changed" covers both transitions with a single alert for traders who want a unified notification regardless of direction.
▶ Visual Customization: Six colour presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) provide coordinated bullish and bearish colour pairs suited to different chart themes and backgrounds. Optional bar colouring tints price bars with the active trend colour at an adjustable transparency level, offering immediate visual confirmation of trend state across all open chart timeframes without requiring the indicator line itself to be in view.
Indicator

Liquidity Sweep Detector [QuantAlgo]🟢 Overview
The Liquidity Sweep Detector is a swing-based liquidity tracking tool that identifies moments when price wicks beyond a confirmed swing high or low and closes back inside, then tracks the remaining unswept levels as forward-projecting lines and zones on your chart. It classifies each event by direction (Bullish or Bearish) and maintains a running registry of swing levels that have not yet been visited by price, giving you a live map of where resting stop clusters may still be sitting across any timeframe and market.
🟢 How It Works
The indicator identifies swing highs and lows using a pivot detection window that requires a configurable number of bars to the left and right to confirm a valid structural point. The active pivot length and minimum wick penetration are resolved from the selected preset before any detection runs:
active_len = preset_config == 'Scalp' ? 5 : preset_config == 'Swing' ? 20 : pivot_len
active_min_pct = preset_config == 'Scalp' ? 0.0 : preset_config == 'Swing' ? 0.05 : min_wick_pct
A bearish sweep is confirmed when price wicks above the most recent swing high by at least the minimum penetration percentage and closes back below it. A bullish sweep mirrors this on the downside:
bearSweep = not na(lastSwingHigh) and high > lastSwingHigh * (1 + active_min_pct / 100) and close < lastSwingHigh
bullSweep = not na(lastSwingLow) and low < lastSwingLow * (1 - active_min_pct / 100) and close > lastSwingLow
Every confirmed swing point is simultaneously stored in an unswept level registry. Levels are removed when the full candle closes beyond them, or immediately when a sweep is confirmed on that level, so the chart only shows levels price has not yet visited:
if bearSweep and array.size(unsweptHighs) > 0
for i = array.size(unsweptHighs) - 1 to 0
if array.get(unsweptHighs, i) == lastSwingHigh
array.remove(unsweptHighs, i)
array.remove(unsweptHighBars, i)
break
The indicator also detects when price enters the zone around an unswept level without yet confirming a full sweep. Edge detection ensures the alert fires once on entry rather than on every bar price remains inside the zone:
buySideEntry = enteredBuySide and not enteredBuySide
sellSideEntry = enteredSellSide and not enteredSellSide
🟢 Key Features
▶ Three Preset Configurations: The indicator includes three presets that override the manual pivot length and minimum wick penetration settings.
1. Default/Custom: A general-purpose configuration suited to swing trading on 4H and daily charts. Confirms swing points that require a reasonable structural context before a sweep is flagged.
2. Scalp: A faster configuration for intraday charts from 1 minute to 15 minutes. Shorter pivot windows capture local swing points that form and get swept within a single session.
3. Swing: A more conservative configuration for daily and weekly charts that requires a more deliberate wick extension before confirming a sweep, filtering out shallow tags at swing levels.
▶ Built-in Alert System: Pre-configured alert conditions cover bearish sweeps, bullish sweeps, any sweep, price entering a buy-side zone, price entering a sell-side zone, and price entering any unswept zone.
▶ Visual Customisation: Choose from five colour presets (Classic, Aqua, Cosmic, Cyber, Neon) or set your own custom colours. Optional candle background highlighting marks sweep bars directly on the chart, and label text size is configurable across four options to suit different chart layouts.
🟢 Important Considerations
▶ Sweep detection references only the most recently confirmed swing high or low at the time each bar closes. On lower timeframes with frequent swing formation, raising the pivot length focuses detection on more structurally significant levels and reduces signal frequency on choppy charts.
▶ The indicator works best as a contextual layer within an existing trading framework. Sweep signals indicate that price has moved beyond a swing level and closed back inside, which is a useful data point, but should be read alongside your system and market context rather than used as a standalone trigger. Indicator

Hurst Exponent Adaptive Supertrend [QuantAlgo]🟢 Overview
The Hurst Exponent Adaptive Supertrend identifies trending and mean-reverting market conditions by dynamically adjusting its sensitivity and band width based on the real-time persistence of price movement. It estimates the Hurst exponent through variance scaling to classify the current market regime, applies a Kalman smoother with a Hurst-scaled tracking gain to follow price with regime-appropriate responsiveness, and constructs a supertrend band whose width expands in choppy conditions and contracts in strongly trending ones. This allows traders to stay positioned through genuine trends while filtering out noise-driven whipsaws across any timeframe or instrument.
🟢 How It Works
The indicator's core methodology centres on a three-layer pipeline: regime classification via the Hurst exponent, adaptive price smoothing via a Kalman filter, and dynamic band construction that responds to the estimated market state.
First, the Hurst exponent is estimated by comparing short-run and long-run return variance over the configured lookback window. A lag-q variance is scaled against a lag-1 variance, and the ratio is log-transformed to produce a raw H value that is then clamped between 0 and 1:
var1 = ta.variance(close - close , active_h_period)
varq = ta.variance(close - close , active_h_period)
H_raw = math.log(varq / math.max(var1, 1e-10)) / (2.0 * math.log(active_h_lag))
H = math.max(0.0, math.min(H_raw, 1.0))
H values above 0.5 indicate persistent, trending behaviour. Values below 0.5 indicate mean-reversion or choppiness. This reading then drives every downstream calculation.
Next, a Kalman smoother tracks price using a gain that is amplified in trending regimes and suppressed in choppy ones, keeping the smoothed price line tight to momentum when it matters and sluggish when it does not:
adaptive_gain = math.max(math.min(active_kf_gain * (0.5 + safeH), 0.99), 0.01)
kf := na(kf ) ? close : kf + adaptive_gain * (close - kf )
Finally, the ATR-based band width is computed using a Hurst-scaled multiplier. When H is low (choppy market), the multiplier is large, widening the band to avoid false flips. When H is high (strong trend), the multiplier approaches the base value, keeping the band tight to price:
h_mult = active_atr_base + active_atr_hscale * (1.0 - safeH)
band = ta.atr(active_atr_len) * h_mult
The supertrend logic then ratchets the upper and lower bands in the direction of the prevailing trend, flipping state only when the Kalman-smoothed price crosses the opposing band. This prevents band drift from causing premature reversals during normal consolidation:
upBand := prevT == 1 ? math.max(kf - band, prevUp) : kf - band
dnBand := prevT == -1 ? math.min(kf + band, prevDn) : kf + band
trend := kf > prevDn ? 1 : kf < prevUp ? -1 : prevT
🟢 Signal Interpretation
▶ Bullish Trend (Supertrend Line Below Price with Bullish Color): When the Kalman-smoothed price crosses above the upper band, the indicator flips to a bullish state and the trailing line plots below price as a dynamic support level - the floor that price must decisively break before the uptrend is considered invalidated. The support level ratchets higher with each new bar, never pulling back, locking in the floor as the trend develops. In choppy regimes the band width is deliberately wide, meaning price can pull back significantly without breaching support, keeping traders positioned through noise-driven corrections that lack genuine bearish conviction.
▶ Bearish Trend (Supertrend Line Above Price with Bearish Color): When the Kalman-smoothed price crosses below the lower band, the indicator flips to a bearish state and the trailing line plots above price as a dynamic resistance level - the ceiling price must reclaim before a bullish reversal is confirmed. The resistance level ratchets lower with each new bar, tightening the ceiling as the downtrend develops. As with the bullish state, a wide band in low-H environments requires a substantial recovery move before the indicator reverses, allowing traders to hold directional bias through corrective bounces that stay within the noise threshold.
🟢 Features
▶ Preconfigured Presets: Three optimised parameter sets tailored to different trading styles and timeframes. "Default" delivers balanced trend detection for swing trading on 4-hour and daily charts, with moderate Kalman gain and band scaling suited to typical momentum cycles. "Fast Response" uses a higher tracking gain, shorter ATR window, and tighter base multiplier for intraday trading on 5-minute to 1-hour charts, producing earlier trend flips better suited to active traders. "Smooth Trend" applies a lower Kalman gain, longer ATR period, and wider band scaling for position trading on daily and weekly charts, confirming only major directional shifts with minimal false positives.
▶ Built-in Alerts: Two alert conditions enable automated monitoring of trend transitions without constant chart observation. "Bullish Trend Signal" triggers on the bar the indicator first flips to a bullish state, alerting for potential long entries. "Bearish Trend Signal" fires on the bar the indicator first confirms a bearish state, signalling potential short entries or long exits. Both alerts include the exchange, ticker, and timeframe in the alert message for immediate context.
▶ Visual Customisation: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) accommodate different chart themes and personal preferences, with coordinated bullish and bearish color schemes applied consistently to the trend line. When the Custom preset is selected, independent color pickers for bullish and bearish states allow full manual control over the indicator's appearance.
Indicator

Volume Bubbles [QuantAlgo]🟢 Overview
The Volume Bubbles indicator is a multi-layered volume cluster detection system that identifies statistically significant volume events directly on your price chart, classifying them by magnitude (Small, Medium, Big) and direction (Buy, Sell, Mixed). By combining adaptive percentile thresholds across multiple lookback windows with optional volume delta analysis, this indicator highlights moments of elevated trading activity that often signal institutional participation, trend acceleration, or potential reversals across every timeframe and market.
🟢 How It Works
The indicator begins by establishing a lower timeframe for volume delta calculation. When auto-select is enabled, it picks a granular timeframe based on your chart period, using 1-second bars for sub-minute charts, 1-minute bars for intraday charts, 5-minute bars for daily charts, and 60-minute bars for higher timeframes. This allows the indicator to estimate net buying and selling pressure within each chart bar:
= taLib.requestVolumeDelta(lowerTimeframe)
float netDelta = nz(lastDelta)
float absDelta = math.abs(netDelta)
The core detection engine then calculates percentile thresholds for both volume and absolute delta across three independent lookback windows (Short, Medium, Long). Each window computes its own threshold for each cluster tier using linear interpolation:
float vSmallShort = ta.percentile_linear_interpolation(volume, shortLen, smallPct)
float vSmallMid = ta.percentile_linear_interpolation(volume, midLen, smallPct)
float vSmallLong = ta.percentile_linear_interpolation(volume, longLen, smallPct)
This means a bar's volume is not compared against a single average but ranked against the full distribution of recent volume history from multiple perspectives. A Small cluster must exceed the 75th percentile (top 25%), a Medium cluster the 90th percentile (top 10%), and a Big cluster the 97th percentile (top 3%) by default.
To filter noise, a consensus system requires agreement across the lookback windows before confirming a cluster:
f_consensus(bool pS, bool pM, bool pL, string mode) =>
int hits = (pS ? 1 : 0) + (pM ? 1 : 0) + (pL ? 1 : 0)
switch mode
"Any Window" => hits >= 1
"Majority (2 of 3)" => hits >= 2
"All Windows (strictest)" => hits >= 3
In Majority mode, for example, at least two of the three windows must agree that volume exceeds the threshold before a cluster is plotted. This prevents false signals from temporary spikes that look significant in one context but not another.
Once a cluster is confirmed, it is classified as Buy, Sell, or Mixed based on the selected method. Candle Direction uses the bar's open/close relationship, Delta Direction uses the sign of net volume delta, and Both requires agreement between the two, labeling any conflict as Mixed.
🟢 Key Features
▶ The indicator offers four detection methods, each designed to balance sensitivity and precision depending on data availability and trading style.
1. Volume Only: Uses raw bar volume as the sole input for cluster detection. This is the simplest and most universal mode, working on any symbol that provides volume data. It identifies all statistically elevated volume events regardless of whether buying or selling dominated, making it useful for spotting general activity surges around key levels, news events, or session opens.
2. Delta Only: Uses the absolute value of net volume delta instead of total volume. This mode triggers only when directional pressure (not just raw activity) is statistically elevated. It filters out high-volume bars where buying and selling were roughly balanced, focusing instead on bars where one side clearly dominated. Requires lower timeframe data availability.
3. Volume + Delta: Both volume and delta must independently exceed their respective percentile thresholds. This is the strictest detection mode. A cluster only appears when there is both unusually high total activity and unusually strong directional flow, filtering out ambiguous bars where volume was high but evenly split between buyers and sellers.
4. Volume OR Delta: Either elevated volume or elevated directional delta triggers a cluster. This is the most inclusive mode, capturing both pure volume events (such as index rebalancing or option expiration activity) and strong directional surges that may occur on relatively normal total volume. Best suited for traders who prefer broader coverage and are comfortable filtering signals with additional context.
▶ Detailed Tooltip Overlay: Hovering over any bubble reveals a comprehensive diagnostic panel summarizing the full context behind that cluster. The tooltip displays the cluster tier and direction label (e.g., BIG BUY or MEDIUM SELL), the formatted volume value, net delta value (or "n/a" if delta data is unavailable), the volume-to-average ratio expressed as a multiple, the active detection method (with a fallback note if delta was unavailable and the method defaulted to Volume Only), the individual window confirmations for both volume and delta shown as a compact S M L grid indicating which of the short, medium, and long lookback windows passed their threshold, and the classification mode used to determine the buy/sell label. This gives full transparency into exactly why each cluster was detected and how it was classified, without cluttering the chart itself.
▶ Built-in Alert System: Pre-configured alert conditions for Big clusters, Medium-or-larger clusters, and any cluster detection, allowing you to receive notifications for the volume events that matter most to your strategy.
▶ Visual Customization: Choose from 5 color presets (Classic, Aqua, Cosmic, Cyber, Neon) or define your own custom color scheme. Optional in-bubble text displays volume, delta, ratio, or combinations, while the tooltip diagnostic panel remains accessible on hover regardless of whether bubble labels are enabled or disabled.
🟢 Important Notes
1. This indicator requires volume data to function. Make sure you are using a ticker from an exchange that provides volume data. Symbols that do not report volume (such as certain forex pairs on specific brokers or custom-built indices) will trigger a warning message on the chart and produce no signals. If you see the "No Volume Data" warning, switch to a symbol or exchange that supports volume reporting.
2. Whether you are scalping on lower timeframes or swing trading on daily and weekly charts, Volume Bubbles is designed to complement your existing setup rather than replace it. Use it as a confirmation layer alongside your preferred strategy to identify when statistically significant volume activity aligns with your trade thesis, adding a data-driven edge to entries, exits, and key level analysis across any timeframe and market. Indicator

Adaptive SuperTrend Oscillator [QuantAlgo]🟢 Overview
The Adaptive SuperTrend Oscillator transforms the classic SuperTrend indicator into a normalized momentum score that adapts to changing market conditions. Instead of displaying a simple above/below signal on the price chart, it measures how far price has moved from the SuperTrend line and scales that distance against an Efficiency Ratio-driven ATR that automatically adjusts between trending and ranging environments. The result is a centered oscillator with dynamically calculated overbought and oversold thresholds, helping traders read the strength behind a trend rather than just its direction, across different markets and timeframes.
🟢 How It Works
The foundation of the indicator is the distance between the closing price and the SuperTrend line:
= ta.supertrend(active_multiplier, active_atr_length)
price_distance = close - supertrend_line
A positive distance means price is above the SuperTrend line, indicating a bullish condition. A negative distance indicates price is below it, reflecting a bearish condition. The raw distance alone is not directly comparable across instruments or timeframes, so the indicator normalizes it using an adaptive ATR.
The normalization layer is driven by an Efficiency Ratio, which measures how directionally efficient recent price movement has been. It compares the net price change over the lookback window against the total path length traveled:
price_change = math.abs(close - close )
path_length = math.sum(math.abs(close - close ), active_er_length)
efficiency_ratio = path_length != 0 ? price_change / path_length : 0.0
A high Efficiency Ratio means price is moving in a consistent direction with little back-and-forth. A low ratio indicates choppy, non-directional movement. This reading is then used to blend between a fast and slow ATR period:
adaptive_atr = efficiency_ratio * ta.atr(active_norm_fast) + (1.0 - efficiency_ratio) * ta.atr(active_norm_slow)
score = adaptive_atr != 0 ? price_distance / adaptive_atr * 100 : 0.0
During trending conditions the fast ATR period is weighted more heavily, allowing the score to move more freely. During choppy conditions the slow ATR period dominates, dampening the score and reducing low-conviction readings. The final score is expressed as a percentage of the adaptive ATR, making it directly comparable across different instruments and volatility environments.
Overbought and oversold levels are derived dynamically from the rolling standard deviation of the score itself rather than fixed values:
score_deviation = ta.stdev(score, 100)
ob_extreme = score_deviation * 3
ob_level = score_deviation * 2
os_level = -score_deviation * 2
os_extreme = -score_deviation * 3
This means the threshold levels expand during volatile periods and contract during quiet ones, keeping the overbought and oversold zones statistically consistent relative to recent score behavior.
🟢 Signal Interpretation
▶ Bullish Trend (Score Above Zero, Outside Neutral Zone, Green): When the score is positive and exceeds the neutral threshold, the oscillator confirms that price is above the SuperTrend line and momentum is directionally efficient enough to register. The score's gradient intensity reflects how far momentum has extended relative to the adaptive ATR baseline. The trend remains bullish until the score crosses back below zero or into the neutral zone.
▶ Bearish Trend (Score Below Zero, Outside Neutral Zone, Red): When the score is negative and falls below the neutral threshold, the oscillator confirms that price is below the SuperTrend line. A deeper negative score indicates stronger downside momentum relative to the normalization baseline. The trend remains bearish until the score crosses back above zero or into the neutral zone.
▶ Neutral Zone (Score Within Threshold, Grey): When the absolute score value is within the neutral threshold, the oscillator treats the reading as non-directional regardless of which side of zero it sits on. This filters out low-conviction conditions where the SuperTrend distance is small relative to the adaptive ATR, preventing the indicator from registering trend signals during consolidation or choppy price action.
▶ Overbought and Oversold Levels (2σ and 3σ Bands): When the score reaches the 2σ or 3σ bands, it indicates that momentum has extended significantly relative to its own recent history. These are not reversal signals by themselves, but they mark zones where the trend is stretched and worth monitoring for potential exhaustion.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" uses moderate SuperTrend sensitivity for swing trading on 4-hour and daily charts. "Fast Response" tightens the SuperTrend bands and shortens normalization windows for intraday use on 5-minute to 1-hour charts. "Smooth Trend" widens the SuperTrend bands and extends normalization windows for position trading on daily and weekly timeframes.
▶ Built-in Alerts: Seven alert conditions cover the full range of oscillator states. Trend transition alerts fire when the score crosses into bullish, bearish, or neutral territory. Separate alerts trigger when the score reaches the 2σ overbought or oversold levels and again when it reaches the more extreme 3σ levels, enabling graduated monitoring without requiring constant chart observation.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, plus Custom) coordinate colors across the score line, ribbon fills, overbought/oversold bands, and optional bar coloring. The ribbon uses three fill layers between the score line and zero, each at increasing transparency, creating a gradient that visually represents the weight of momentum behind the current reading. Optional bar coloring applies trend state colors directly to price bars for quick multi-timeframe reference.
Indicator

Volatility-Adjusted Rate of Change [QuantAlgo]🟢 Overview
The Volatility-Adjusted Rate of Change (VA-ROC) is a momentum oscillator that normalizes price changes against current market volatility, helping traders identify meaningful momentum shifts, spot overbought/oversold extremes, and filter out noise caused by changing volatility regimes. By measuring how large a price move is relative to what's normal for the instrument, this indicator reveals genuine directional pressure that raw momentum readings often obscure.
🟢 How It Works
The indicator begins by calculating the single-bar price change and dividing it by the Average True Range over a configurable lookback period. This normalization step ensures that the same oscillator reading carries equal significance whether applied to a low-volatility blue chip or a highly volatile cryptocurrency, a concept absent from traditional rate of change indicators.
price_momentum = ta.change(close) / ta.atr(atr_length)
When price rises by an amount that is large relative to recent volatility, the normalized momentum produces a strong positive reading. Conversely, a decline that is modest in absolute terms but significant relative to the current ATR environment will register appropriately. This volatility-adjustment prevents the oscillator from generating inflated signals during high-volatility regimes or muted signals during quiet markets.
A sensitivity multiplier then scales the normalized value, allowing traders to compress or amplify the oscillator's range to suit their instrument and timeframe:
va_roc = calc_ma(price_momentum * sensitivity, ma_length, ma_type)
The scaled momentum is then smoothed using a configurable moving average (supporting SMA, EMA, WMA, RMA, HMA, VWMA, DEMA, and TEMA), which filters bar-to-bar noise while preserving the shape of genuine momentum waves. The smoothed output is the final VA-ROC value, plotted against a system of four threshold levels that define bullish, bearish, neutral, and extreme zones.
Momentum state is determined by the oscillator's position relative to these thresholds:
is_bullish = va_roc > upper_threshold
is_bearish = va_roc < lower_threshold
Crossings into bullish or bearish territory, zero-line crosses, and entries into extreme zones each generate distinct signals and corresponding alerts.
🟢 Key Features
The indicator is built around a threshold-based momentum framework with gradient-colored visualization, preset configurations, and a full alert system, all designed to give traders immediate clarity on momentum conditions without manual tuning.
1. Volatility Normalization: Unlike traditional ROC or momentum oscillators that produce raw price differences, VA-ROC divides every price change by the ATR, creating a dimensionless reading that remains consistent across instruments, timeframes, and volatility regimes. A reading of +1.0 always means "price moved one ATR's worth in a single bar", whether you're trading forex, equities, or crypto. This eliminates the need to recalibrate threshold levels when switching between assets.
2. Adaptive Threshold Zones: Four configurable levels (Upper Extreme, Upper Threshold, Lower Threshold, and Lower Extreme) divide the oscillator into five distinct momentum zones. The neutral zone between the upper and lower thresholds represents normal market fluctuation. Crossings above the upper threshold confirm bullish momentum, while crossings below the lower threshold confirm bearish momentum. The extreme levels mark climactic conditions where momentum is unusually powerful, often coinciding with exhaustion points or the early stages of a strong trend continuation.
3. Preset Configurations: Three built-in presets automatically optimize the sensitivity, ATR lookback, MA type, and smoothing length for different trading styles. Default provides balanced readings suited for swing trading on 4H and daily charts. Fast Response amplifies small moves with minimal smoothing for intraday scalping. Smooth Trend compresses the oscillator and applies heavier smoothing to highlight only significant directional moves for position trading.
4. Built-in Alert System: Comprehensive alerts covering all key momentum events, including bullish and bearish momentum confirmation, zero-line crossovers in both directions, and entries into upper and lower extreme zones. A combined momentum direction change alert is also included. All alerts carry exchange, ticker, and interval placeholders for seamless integration with notification workflows.
5. Visual Customization: Choose from 5 color presets (Classic, Aqua, Cosmic, Cyber, Neon) or create a fully custom color scheme using individual bullish, bearish, and neutral color pickers. Optional price bar coloring overlays the oscillator's momentum colors directly onto your main chart candles, tinting bars bullish or bearish based on the current threshold state while leaving neutral bars uncolored, providing instant trend confirmation without switching panels.
Indicator

Volatility-Gated Trend Oscillator [QuantAlgo]🟢 Overview
The Volatility-Gated Trend Oscillator identifies statistically significant trend conditions by measuring price deviation from a dynamic baseline and filtering out normal market noise through an adaptive volatility floor. It calculates a moving average of the chosen type as a baseline, then measures how far price has deviated from it relative to average absolute deviation to define a noise threshold. Only when price breaks decisively beyond this threshold is a trend state confirmed, helping traders distinguish genuine momentum from random noise across different timeframes and markets.
🟢 How It Works
The indicator's core methodology lies in its dual-layer approach combining deviation measurement with volatility-gated filtering, where trend confirmation requires price movement to exceed statistically meaningful thresholds.
First, a configurable moving average is calculated to establish a dynamic baseline reflecting the underlying trend at the chosen sensitivity level:
baseline = get_ma(src, sensitivity, ma_type)
raw_diff = src - baseline
Then, the average absolute deviation from the baseline is measured over the same period and scaled by a user-defined multiplier to construct an adaptive noise floor, which is the minimum price deviation required to confirm a trend signal:
noise_floor = ta.sma(math.abs(raw_diff), sensitivity) * noise_mult
The trend state is then determined by comparing raw deviation against this noise floor, with a decay mechanism applied when price re-enters the neutral zone to avoid abrupt reversals:
if raw_diff > noise_floor
trend_state := 1
locked_val := raw_diff
else if raw_diff < -noise_floor
trend_state := -1
locked_val := raw_diff
else
locked_val := locked_val * 0.9
The locked deviation value is then normalized by ATR to make the oscillator comparable across instruments and volatility regimes, and smoothed with a short WMA to reduce micro-fluctuations in the final output:
normalized_val = locked_val / ta.atr(sensitivity)
final_osc = ta.wma(normalized_val, 5)
This creates a robust momentum oscillator that only registers trend conditions when price makes structurally significant moves beyond typical noise, while the ATR normalization ensures readings remain meaningful and consistent regardless of the underlying instrument's price scale or volatility level.
🟢 Signal Interpretation
▶ Bullish Trend (Oscillator Rising Above Zero with Bullish Color): When price deviation breaks above the positive noise floor, the oscillator enters bullish mode with green/bullish coloring across all visual elements = Confirmed upward momentum signal for trend-following long positions. The trend remains bullish until price deviation falls below the negative noise floor, allowing traders to stay positioned through normal consolidations without premature exits on minor pullbacks that remain within the noise boundary.
▶ Bearish Trend (Oscillator Falling Below Zero with Bearish Color): When price deviation breaks below the negative noise floor, the oscillator enters bearish mode with red/bearish coloring across all visual elements = Confirmed downward momentum signal for short positions or long exit signals. The trend remains bearish until deviation exceeds the positive noise floor, enabling traders to maintain directional bias through corrective bounces that stay within the threshold boundaries.
🟢 Features
▶ Preconfigured Presets: Three optimized parameter sets tailored for different trading styles and timeframes. "Default" delivers balanced trend detection for swing trading on 4-hour and daily charts, filtering minor noise while remaining responsive to meaningful momentum shifts. "Fast Response" uses a reactive EMA baseline with a tighter noise floor for intraday and scalping timeframes, generating earlier signals suited to active traders on 5-minute to 1-hour charts. "Smooth Trend" applies a smooth, lag-reduced HMA baseline with a demanding noise threshold for position trading on daily and weekly charts, confirming only major directional shifts with minimal false positives.
▶ Built-in Alerts: Three alert conditions enable automated monitoring of trend transitions without constant chart observation. "Bullish Trend Signal" triggers when the oscillator first enters a confirmed bullish state, alerting for potential long entries. "Bearish Trend Signal" activates when the oscillator first enters a confirmed bearish state, signaling potential short entries or long exits. "Trend Direction Changed" provides a combined alert for any trend transition regardless of direction, allowing traders to monitor both bullish and bearish opportunities through a single alert setup.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, plus Custom) accommodate different chart themes and aesthetic preferences, with coordinated bullish and bearish color schemes applied consistently across all indicator elements. A layered luminance fill system creates graduated visual depth around the main oscillator line using four fill zones at progressively increasing transparency, making trend strength and direction immediately readable at a glance. Optional bar coloring tints price bars with the active trend color during confirmed bullish and bearish periods, providing instant overhead visual confirmation of trend state without requiring direct reference to the oscillator panel below.
Indicator

Price Percentile Heatmap [QuantAlgo]🟢 Overview
This indicator visualizes where price currently stands within its recent historical distribution, displayed as a dynamic gradient heatmap directly on the chart. It is built on the concept of percentile ranking: rather than using lagging momentum oscillators or fixed overbought/oversold thresholds, it measures price relative to every bar within a user-defined lookback window and expresses that position as a smooth, continuous gradient. The result is an at-a-glance read of whether price is historically cheap, historically expensive, or somewhere in between, all without leaving the main chart.
The defining visual feature is the thermal color gradient applied to the price bars, background, and source line. Bullish colors represent price trading near the top of its recent range, signaling historically elevated conditions. Bearish colors represent price trading near the bottom of its range, signaling historically depressed conditions. A built-in Heat Thermometer reinforces this reading by showing exactly where the current percentile rank falls along the full spectrum in real time.
🟢 How It Works
The foundation of the indicator is a per-bar percentile rank calculated over a rolling lookback window. For each bar, the selected price source is compared against every value within the lookback period to determine what percentage of historical bars traded below the current price:
percentile_rank = ta.percentrank(price_source, lookback_length)
A rank of 100 means the current price is higher than every bar in the lookback sample. A rank of 0 means it is lower than all of them. A rank of 50 places price exactly at the median of its recent distribution. This single value drives every visual output in the indicator.
The raw rank is then mapped directly into a continuous color gradient, transitioning smoothly from the bearish color at rank 0 to the bullish color at rank 100:
gradient_color = color.from_gradient(percentile_rank, 0, 100, bearish_color, bullish_color)
Because the rank is recalculated on every bar using a rolling window, the gradient never relies on fixed thresholds or static levels. It adapts continuously to the most recent price history, meaning the same absolute price level can read bullish in one market environment and bearish in another depending on what has happened within the lookback period.
The lookback length is the primary tuning parameter. Short periods (10 to 30) make the rank reactive to recent moves and suit scalping and intraday setups. Medium periods (50 to 100) provide a balanced read suitable for swing trading. Long periods (150 to 500) produce a slow-moving, macro-level view best suited for position trading and identifying historically extreme conditions.
🟢 Key Features
1. Thermal Color Gradient
Every visual element on the chart, including the source line, the bar colors, and the background tint, reflects the current percentile rank through a smooth color transition.
▶ Bullish Color: Applied when price ranks high within its recent distribution, drawing attention to historically elevated price levels.
▶ Bearish Color: Applied when price ranks low, highlighting historically depressed conditions and potential mean-reversion or continuation setups.
▶ Bar Coloring: Each individual candlestick is colored according to the current rank, giving instant bar-by-bar feedback without requiring a separate panel.
▶ Background Coloring: The full chart canvas receives a semi-transparent tint that reinforces the heatmap reading across the entire visible price area. Transparency is fully adjustable so price action is never obscured.
▶ Color Presets: Six pre-configured schemes, Classic, Aqua, Cosmic, Cyber, Neon, and Custom, allow you to match the heatmap to any chart theme or personal preference.
2. Heat Thermometer
An optional thermometer panel displays the full bearish-to-bullish color spectrum and marks exactly where the current percentile rank sits along that spectrum with a real-time arrow indicator.
▶ Real-Time Positioning: The arrow updates on every bar, giving an immediate visual anchor for the current rank without needing to read a number.
▶ Resolution: The number of gradient segments in the thermometer is adjustable from 5 to 20, letting you choose between a clean simplified display or a finer, smoother gradient.
▶ Position and Size: The thermometer can be placed in any of nine chart positions and its text size is independently adjustable, making it easy to integrate into dense multi-indicator layouts or standalone setups.
🟢 Practical Applications
▶ Mean Reversion Setups: When price reaches an extreme low percentile rank, it is historically cheap relative to recent bars, a potential entry signal for mean reversion strategies. The opposite applies at high ranks.
▶ Trend Confirmation: In a strong trend, the percentile rank will persistently hue toward one color. A sustained bullish gradient confirms trend strength; a persistent bearish gradient confirms sustained selling pressure.
▶ Multi-Timeframe Alignment: Apply the indicator across multiple timeframes and look for gradient agreement. When both a higher and lower timeframe show the same extreme color, the percentile signal carries significantly more weight. Indicator

Adaptive Entropy Trend [QuantAlgo]🟢 Overview
Adaptive Entropy Trend is a trend-following indicator built on Shannon information theory rather than conventional price averaging. It quantifies the statistical disorder of recent log returns to determine whether the market is in a directional regime or a random one, then feeds this entropy reading into every layer of the system simultaneously, helping traders identify directional shifts that are validated by both low-entropy momentum conditions and genuine volatility expansion across different timeframes and markets.
🟢 How It Works
The foundation of the indicator is a per-bar entropy calculation built from the distribution of log returns over the lookback window. Log returns are computed and their range is divided into equal-width histogram bins:
logReturn = math.log(close / close )
minReturn = ta.lowest(logReturn, lookbackLen)
maxReturn = ta.highest(logReturn, lookbackLen)
returnRange = maxReturn - minReturn
Each historical return within the lookback is assigned to a bin, building a frequency distribution. Shannon entropy is then calculated from the probability of each bin, measuring how uniformly returns are spread across the range:
probability = array.get(binCounts, i) / lookbackLen
if probability > 0
entropy := entropy - probability * math.log(probability) / math.log(2)
A uniform distribution produces maximum entropy, reflecting a chaotic, non-directional market. A concentrated distribution produces low entropy, reflecting a market where returns are clustering in a consistent direction. The raw entropy is normalized against the theoretical maximum for the bin count to produce a stable 0-1 score:
normalizedEntropy = maxEntropy > 0 ? entropy / maxEntropy : 0.5
This score is then wired directly into the EMA smoothing factor. Higher entropy lengthens the effective period of the EMA, insulating it from noise. Lower entropy shortens it, allowing the EMA to track price closely during genuine trends:
adaptiveAlpha = 2.0 / (lookbackLen * (0.3 + normalizedEntropy * 1.4) + 1.0)
adaptiveEma := na(adaptiveEma) ? close : adaptiveEma + adaptiveAlpha * (close - adaptiveEma)
The same entropy reading drives band width through an inverted trend strength factor. Unlike volatility-based bands that widen during noise, these bands widen specifically during trending conditions and tighten during choppy ones:
trendStrength = 1.0 - normalizedEntropy
fastBandWidth = atr * fastMultiplier * (0.5 + trendStrength)
slowBandWidth = atr * slowMultiplier * (0.5 + trendStrength)
Finally, trend state is determined when price breaks beyond the inner bands, and transitions are tracked for alert conditions:
if close > innerUpper
trendDirection := 1
else if close < innerLower
trendDirection := -1
trendTurnedBullish = trendDirection == 1 and trendDirection != 1
trendTurnedBearish = trendDirection == -1 and trendDirection != -1
This creates a self-regulating trend system where the EMA baseline, the trigger threshold, and the visual envelope all adapt together from the same entropy source, rather than using a fixed center with adaptive edges or vice versa.
🟢 Signal Interpretation
▶ Bullish Trend (Price Above Inner Upper Band, Green): When price closes above the inner upper band, the indicator switches to bullish mode with bullish coloring across all visual elements = Confirmed uptrend signal for trend-following long positions. Because the inner band expands in low-entropy trending conditions, a bullish confirmation in a genuinely directional market requires a more meaningful breakout than in a noisy one. The trend remains bullish until price breaks below the inner lower band, allowing traders to stay positioned through normal pullbacks that remain within the band range.
▶ Bearish Trend (Price Below Inner Lower Band, Red): When price closes below the inner lower band, the indicator switches to bearish mode with bearish coloring throughout all visual elements = Confirmed downtrend signal for short positions or long exit signals. The adaptive band floor ensures the trigger threshold in choppy, high-entropy markets is tighter, reducing the risk of false breakdowns on thin directional moves. The trend remains bearish until price breaks above the inner upper band.
▶ Neutral Zone (Price Between Inner Bands): When price trades between the inner upper and lower bands, the indicator holds its previous trend direction = Continuation of existing trend during consolidation or normal volatility retracements. This prevents whipsaws during sideways action by requiring price to make a statistically meaningful move beyond the entropy-scaled band boundaries rather than reacting to minor crosses of the adaptive EMA centerline.
🟢 Features
▶ Preconfigured Presets: Three optimized parameter sets for different trading approaches and timeframes. "Default" provides balanced trend detection for swing trading on 4-hour and daily charts, "Fast Response" delivers quicker trend signals for intraday trading on 1-minute to 1-hour charts, and "Smooth Trend" focuses on major trend changes for position trading on daily to weekly timeframes.
▶ Built-in Alerts: Three alert conditions enable automated monitoring of trend changes without constant chart watching. "Bullish Trend Signal" triggers when the indicator switches to bullish mode after price breaks above the inner upper band, alerting for potential long entries. "Bearish Trend Signal" activates when the indicator switches to bearish mode after price breaks below the inner lower band, signaling potential short entries or long exits. "Trend Direction Changed" provides a combined alert for any trend transition regardless of direction, allowing traders to monitor both bullish and bearish opportunities with a single alert setup.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, plus Custom) accommodate different chart backgrounds and aesthetic preferences, with coordinated bullish, bearish, and neutral color schemes applied across all indicator elements. Inner and outer band fills create a two-layer gradient envelope around the adaptive EMA, with the inner zone between the two bands rendered slightly more transparent than the outer zone to preserve natural depth, both controlled by a single fill transparency input (0-100%) so the visual weight of the envelope can be adjusted without disrupting the gradient relationship. Optional bar coloring tints price bars with trend-appropriate colors during bullish and bearish periods, enabling instant visual confirmation of trend state across multiple timeframes without switching between chart and indicator panels.
Indicator
