Order Flow Bar Statistics [QuantAlgo]🟢 Overview
The Order Flow Bar Statistics is a per bar order flow table built for traders who want to see how a candle formed rather than just where it closed. It reads the order flow data TradingView makes available for the symbol you are charting and lays it out row by row: volume by aggressor side, delta, liquidations, open interest, positioning, funding, and closing price. Whether you are zoomed out reading months of activity as a heat map or studying the last few bars figure by figure, the table gives you a structured view of what took place inside each candle instead of a single volume number.
*Note: This indicator uses TradingView volume footprint data, which is available on Premium and Ultimate plans only.
🟢 What Are Bar Statistics?
A candle tells you where price opened, closed, and how far it traveled. However, it tells you nothing about who did the trading. Two bars can close identically while one was driven by aggressive buyers lifting the offer and the other by patient limit orders absorbing supply. Order flow statistics separate those cases.
The core distinction is the aggressor: the side that crossed the spread to get filled. Aggressive buy volume is the portion of a bar that traded into the offer. Aggressive sell volume traded into the bid. The difference between them is delta, and delta read against price movement is where most of the insight lives. Layered on top of that, liquidations show where leverage was forcibly closed, open interest shows whether positions were opened or unwound, and funding shows which side is paying to hold its exposure. Together these describe the mechanics underneath a price move rather than just its outcome.
🟢 How It Works
The indicator assembles each bar's statistics from the data TradingView provides for your symbol and lays them out as a grid. The aggressor split and delta come from volume footprint data. Total volume and closing price come from the charted contract itself. Liquidations, open interest, and funding come from the companion data feeds TradingView publishes for supported derivative contracts. Net Long and Net Short are derived from delta and open interest.
Every row reads from the symbol you are charting, and which rows populate depends on what TradingView publishes for it. Rows with no data available read as N/A.
Rendering happens in two layers. The color layer covers every bar the chart holds, giving you the long range view. The number layer prints figures on the most recent bars for close reading. Each cell is shaded relative to the largest reading its own row produced across a configurable lookback, so intensity reads against recent conditions rather than a fixed scale that would go flat on quiet symbols.
🟢 Key Features
▶ The Statistics
Volume and delta: Buy Volume, Sell Volume, Total Volume, Delta Volume, and Percent Delta. Buy and sell reconcile to total, and Percent Delta normalizes the imbalance so bars of very different size stay directly comparable.
Liquidations: Buy Liquidations, Sell Liquidations, Total Liquidations, and Delta Liquidations. These show forced position closures split by side, with a net figure isolating which side wore the damage when both are firing at once.
Positioning: Open Interest change, Net Long, and Net Short. Net Long plus Net Short reconciles back to delta, and Net Long minus Net Short reconciles back to the open interest change, so the pair ties to both inputs and can be checked against the rows above it.
Context: Funding Rate and Close Price. Funding shows the rate in force during the bar, and the closing price keeps the table self contained so you can read a full bar of order flow without moving your eye back to the candles.
▶ Two Rendering Layers
Turn numbers off and the table becomes a pure heat map spanning the full chart. At that zoom, shifts in funding, open interest, and liquidation activity become visible as blocks of color rather than individual readings, which may help identify when market character changed. Turn numbers back on and you have the figures on recent bars for close analysis of individual candles.
▶ Delta Engine
The aggressor split has four modes. Bid/ask engine reads TradingView volume footprint data. Bid/ask engine with estimate falls back to a range based approximation on bars that data does not cover, keeping the row continuous and flagging estimated cells with a tilde on the row tag. Estimate from bar range works purely from where each bar closed within its range, which can be useful on symbols or periods where footprint coverage is thin. Off leaves the delta rows out entirely, leaving a table of liquidations, open interest, funding, and volume.
▶ Liquidation Naming
Liquidation rows can be named by either convention, because the two are mirror images of each other. A long being closed out fires a market sell, and a short being closed out fires a market buy. Liquidated position side names a long being wiped out as a buy liquidation, since buyers were the side liquidated. Resulting order side names the same event as a sell. The underlying data is identical either way, only the labels swap.
▶ Zero and Unavailable Are Distinct
A cell prints 0 when the feed is live and the value for that bar is zero. When TradingView has no data for that row on your symbol, or none for a particular bar, the cell reads N/A and the row name tag dims. Reading the two apart matters, because a bar with no liquidations and a symbol with no liquidation data are different situations. Rows built from two inputs, such as Net Long and Net Short, read as N/A when either input is missing.
▶ Row Tooltips
Every row name tag carries a tooltip explaining what that statistic measures and how to interpret it. Dimmed tags state that the data is not available for the ticker you are charting.
▶ Number Format and Display
Figures keep their decimals rather than being rounded off. Abbreviation carries the decimals through the conversion, so a value reads as 73.95K rather than 74K, and can be switched off to print everything in full. Decimal precision adapts to magnitude by default or can be fixed to a set count. Display Mode reports volume, delta, liquidations, and open interest either in base units of the contract or converted to quote currency notional for comparison across assets and across time.
▶ Color Presets and Automatic Contrast
Six color schemes are included: Classic, Aqua, Cosmic, Cyber, Neon, and Custom with full control over bullish, bearish, and zero colors. Text color inside every cell is calculated from the cell shade using relative luminance, so figures stay legible on any scheme, any custom color, and at any intensity without manual adjustment.
▶ Alerts
Twenty eight built in alert conditions, two for every row. Magnitude rows offer Rising and Falling. Signed rows offer Turns Positive and Turns Negative, since a zero cross is the meaningful event for delta, liquidation delta, open interest, and net positioning.
🟢 Examples
A few patterns worth watching:
1. Price up, Delta positive, Open Interest up: aggressive buying alongside new contracts entering. This may suggest genuine participation behind the move rather than a squeeze, which some traders read as more sustainable than a rally driven purely by covering.
2. Price up, Delta negative or flat, Open Interest down: the move may be shorts covering rather than fresh buying. These sequences can produce fast price movement while having less durable positioning behind them.
3. Large Delta with little price movement: aggressive orders appear to be meeting resting liquidity. Absorption of this kind often shows up near the end of a directional push, and may indicate the aggressive side is running out of room.
4. Liquidation spike with Open Interest falling sharply: forced deleveraging rather than new positioning. Clusters here mark where leverage was flushed, and once that leverage is gone there may be fewer participants left to force out in the same direction.
5. Funding elevated and holding, with Open Interest high: one side is paying a persistent cost to maintain crowded exposure. This does not time a reversal on its own, but it may raise the odds that a move against that side accelerates once it starts.
6. Percent Delta clustering with the same sign across consecutive bars: sustained pressure rather than a single aggressive print. Isolated large readings are common, runs of them are less so and may carry more information.
Remember that every long is matched to a short. Rising open interest during a downtrend does not mean only shorts are entering, it means positions on both sides are being opened. Delta is what distinguishes which side was acting aggressively, which is why the two rows are more useful read together than apart.
🟢 Important Notes
1. This indicator uses TradingView volume footprint data. That data is available on Premium and Ultimate plans only, and the requirement applies to the whole script rather than to individual rows, so the table will not render on other plans regardless of which statistics are enabled.
2. The statistics included here are those TradingView currently exposes to Pine scripts for most supported symbols. Order flow coverage on TradingView continues to expand, and further statistics may be added in future updates as new per bar data becomes accessible to scripts. Where a metric you use elsewhere is absent, it is because a per bar feed for it is not yet available to Pine rather than a design choice.
3. TradingView reconstructs which side was the aggressor rather than reading an exchange taker flag directly. Buy and sell reconcile to total volume, while the split itself may differ from other data sources. The direction of delta is generally the more dependable part of the reading, and the exact split is best treated as indicative. Footprint coverage also thins on older bars, so those rows may go blank when scrolled far back.
4. Liquidation, open interest, and funding data is published by TradingView for crypto derivatives on a number of exchanges, such as Binance, Bybit, and OKX. Coverage is decided per feed and per venue, so a contract can be fully tradable and still have no companion data, in which case those rows read as unavailable.
5. Liquidation values may arrive in base or quote currency depending on the venue and derivative. Read magnitudes against the past behavior of the same symbol rather than comparing them directly across exchanges.
6. On spot pairs, equities, indices, and other symbols with no derivative data, the volume and delta rows still function while the liquidation, open interest, and funding rows report as unavailable. Those three are properties of derivative contracts and have no equivalent in a spot market, so the indicator reports them as unavailable. Funding applies only to perpetual contracts, since dated futures converge through basis instead.
7. Printed figures are drawn with label objects, which TradingView caps at 500 per script shared across every enabled row. With every row enabled, the ceiling is 34 numbered bars. Color is unaffected and spans the full chart. Switching rows off buys more numbered columns.
8. Bar Replay can report a memory limit error. Volume footprint data loads across the full chart and cannot be capped by bar count, so on charts carrying a lot of history it can exceed the memory a script is allotted while replay is running. Whether you encounter it depends on how much history the chart holds, and replaying on a higher timeframe or a symbol with shorter history reduces the load. Normal charting is unaffected.
9. Order flow is most useful as a context layer rather than a standalone signal. Reading these statistics alongside price structure, market context, and your own risk management may help you assess whether a move is backed by new positioning or driven by unwinding, which could have meaningful implications for how far it extends and how quickly it might reverse.
10. Every data request uses the chart's own timeframe with lookahead disabled, and each bar's figures and shading are calculated from that bar and the ones before it, so a bar that has closed does not change afterward. The bar currently forming updates as it forms, as it does in any indicator reading live price or volume, so treat the rightmost column as provisional until that bar closes. Set alerts to trigger Once Per Bar Close if you want them evaluated on completed bars only. Indicator

CapitalCompassCoreCapital Compass Core
Capital Compass Core is the shared Pine Script framework for the Capital Compass ecosystem. It centralizes reusable calculations, state definitions, visual standards, market-context logic, risk logic, portfolio helpers, strategy utilities, panel functions, formatting tools, and alert infrastructure used across Capital Compass scripts.
The library is designed to keep Market Navigator, Tactical Navigator, Strategy Lab, Portfolio Compass, and future Capital Compass tools operating from the same definitions instead of maintaining duplicate implementations across multiple scripts.
Purpose
Capital Compass Core is infrastructure rather than a standalone trading indicator.
The library calculates and standardizes reusable logic. Consuming indicators and strategies remain responsible for user inputs, plots, fills, chart markers, alert conditions, strategy orders, and script-specific interpretation.
Core calculates and standardizes. The consuming script orchestrates and renders.
Core systems
Reusable functionality includes:
• EMA, SMA, RMA, WMA, VWMA, HMA, DEMA, TEMA, and VWAP
• Moving-average structure, compression, expansion, zones, crosses, and standardized MA hierarchy
• 20-SMA / 21-EMA Fast Trend Zone
• Ichimoku calculations
• Bollinger Bands
• ATR, relative volume, drawdown, price-shock, and volatility calculations
• SuperTrend and multi-SuperTrend agreement
• RSI/MFI/MACD momentum components and consolidated momentum states
• Market regime, risk, opportunity, and market-permission scoring
• Tactical market phases and transition states
• Market Navigator state aggregation
• Price structure, pivots, and regular divergence
• Asset-profile presets
• Portfolio allocation and deployment calculations
• Account-context helpers
• Position sizing, ATR stops, targets, trailing logic, reward/risk, R multiples, expectancy, and strategy-quality helpers
• Confirmed higher-timeframe data helpers
• Relative-strength calculations
• Alert-event routing and transition helpers
• JSON and text formatting
• Theme-aware panels, table cells, text, borders, fills, and semantic state backgrounds
State and color standard
Capital Compass uses a consistent semantic visual language:
• Green = bullish / favorable
• Red = bearish / unfavorable
• Orange = caution / transition / sideways / neutral / mixed
• Gray = inactive / unavailable / insufficient data
• Blue = informational / fast-trend reference
• Magenta = major structural reference
Moving-average identity colors are separate from directional state colors. This allows a moving average to retain a recognizable identity while optional Trend mode communicates bullish, bearish, or transitional conditions.
The standardized moving-average hierarchy includes:
8, 13, 20, 21, 34, 50, 55, 89, 100, and 200 periods.
Primary structural references:
• 20 / 21 = fast trend
• 50 / 55 = intermediate trend / caution zone
• 200 = major long-term structural reference
Capital Compass Core also provides theme-aware helpers derived from the active TradingView chart colors so consuming scripts can remain readable across light and dark chart themes.
Capital Compass ecosystem
Market Navigator
Long-term market condition, regime, risk, opportunity, portfolio context, and review.
Tactical Navigator
Tactical trend, momentum, transition, Fast Trend Zone, volatility, and market-phase analysis.
Strategy Lab
Research, hypothesis testing, backtesting support, position sizing, risk planning, and strategy evaluation.
Portfolio Compass
Portfolio allocation, deployment, account context, and long-term capital-management support.
Shared calculations should be imported from Capital Compass Core rather than independently duplicated inside each script.
Library usage
Import the library with:
import DrGetDown/CapitalCompassCore/1 as CC
Examples of shared functionality include:
CC.ma(...)
CC.maColor(...)
CC.fastTrendZone(...)
CC.marketNavigatorState(...)
CC.tacticalPhase(...)
CC.momentumScore(...)
CC.stateColor(...)
CC.panelPos(...)
CC.strategyPlan(...)
Published library versions are intentionally explicit. Consuming scripts should migrate only after a newer Core release has been compiled, tested, and validated.
Design principles
• Maintain one definition for shared calculations and state meanings.
• Separate market-state colors from moving-average identity colors.
• Keep reusable calculations in Core whenever technically practical.
• Keep script-specific interpretation and rendering in the consuming script.
• Avoid unnecessary duplicate or correlated calculations.
• Use confirmed higher-timeframe data where explicitly specified.
• Keep risk and position-sizing mathematics separate from actual strategy order placement.
• Preserve consistent panel placement, formatting, abbreviations, state meanings, and visual behavior across the ecosystem.
• Test significant shared changes before promoting them across dependent Capital Compass scripts.
Limitations
Capital Compass Core does not predict future prices and does not guarantee profitable trades or prevent losses.
Market regimes, momentum states, tactical phases, opportunity scores, risk scores, divergences, moving-average structures, and strategy statistics are analytical classifications based on supplied market data and configured assumptions. They should not be interpreted as guarantees of future performance.
Backtest statistics describe historical results and do not guarantee similar future results.
Portfolio, allocation, deployment, and position-sizing helpers provide mathematical and analytical context only. Actual decisions remain dependent on objectives, portfolio circumstances, risk tolerance, time horizon, liquidity needs, taxes, diversification, and independent research.
Version
Internal Core version: 1.0.0
TradingView library release: /1
Capital Compass
OBSERVE • DISCERN • PREPARE • ACT WISELY
Tuned to the signal. Anchored to the mission. Library

Regression Slope Oscillator [QuantAlgo]🟢 Overview
The Regression Slope Oscillator measures the rate of directional change in price using a robust regression estimator that resists outliers, then converts that slope into a scale free reading so a single threshold carries the same meaning across instruments and timeframes. Rather than fitting a least squares line, which a single spike or gap can pull off course, it takes the median of pairwise slopes inside a rolling window to produce a trend estimate that holds up through erratic data. A three state engine with separate entry and exit thresholds then translates the normalized slope into a bullish, bearish, or neutral regime, holding established states through pullbacks instead of flickering whenever the reading brushes the boundary.
🟢 How It Works
The indicator's core methodology lies in its combination of outlier resistant slope estimation and volatility relative normalization, where a trend regime is only established once the fitted rate of change clears a threshold expressed in units of the instrument's own volatility.
First, the source is optionally moved into log space so the fitted slope becomes a proportional rate of change rather than an absolute one, keeping readings comparable across instruments at very different price levels and across histories where price has moved by an order of magnitude:
srcMid = useLog ? math.log(srcSafe) : srcInput
Then the slope is fitted across the window using a robust estimator rather than ordinary least squares, which has an effective breakdown point of zero and lets a single gap or liquidation wick tilt the fit for the entire window. Theil-Sen takes the median of every pairwise slope inside the window, tolerating roughly 29 percent contaminated data while staying close to a least squares fit on clean data:
for i = 0 to length - 2 by 1
for j = i + 1 to length - 1 by 1
array.push(slopes, (source - source ) / (j - i))
array.median(slopes)
Repeated Median nests the same idea, taking a median of pairwise slopes anchored on each bar and then a median of those results, which lifts the breakdown point to 50 percent, the theoretical maximum, at several times the computational cost. Both estimators target the same underlying quantity, so switching between them changes robustness without shifting the scale.
The raw slope is then divided by a volatility unit to strip out the instrument's price scale and volatility regime, producing a reading that means the same thing on any chart:
normUnit = switch normMode
'ATR' => useLog ? atrUnit / srcSafe : atrUnit
'Stdev' => sdevUnit
=> useLog ? 0.01 : srcSafe / 100.0
slope = rawMid / normUnit
Each path is dimensionally self consistent with the log transform, so numerator and denominator always move together and the resulting reading stays dimensionless. In ATR mode a value of 0.10 means the trend is advancing at one tenth of an average true range per bar.
The normalized slope then drives a state engine where the level required to establish a regime and the level required to release it are deliberately different, creating a hysteresis band that suppresses boundary flicker:
if slope > entryTh
state := 1
else if slope < -entryTh
state := -1
else if useNeutral and state == 1 and slope < exitTh
state := 0
else if useNeutral and state == -1 and slope > -exitTh
state := 0
Finally, in Candles display mode the estimator runs two additional passes against the chart high and the chart low, building a synthetic OHLC series in slope space where the body spans the change in slope and the wicks reveal how far trend disperses across the bar range, with an optional Heikin-Ashi transform applied on top:
barHigh = math.max(slopeHigh, math.max(barOpen, barClose))
barLow = math.min(slopeLow, math.min(barOpen, barClose))
haClose = math.avg(barOpen, barHigh, barLow, barClose)
🟢 Signal Interpretation
▶ Bullish State (Oscillator Above the Upper Entry Band with Bullish Color)
The normalized slope has cleared the positive entry threshold, meaning price is advancing faster than the instrument's own recent volatility rather than simply drifting higher. Trend traders take the confirmation as a long entry and hold through pullbacks, since the state only releases once the slope retreats below the exit level rather than on every minor pause, and a reading that climbs deeper into the upper zones represents strengthening rather than a reason to exit. Mean reversion traders read the same plot for depth instead of direction. A reading sitting in the first zone is an ordinary trend and offers nothing to fade, but a push into the second or third upper zone means price is rising at two or three times the rate required for confirmation, which is statistically unusual and marks the region where an advance is most likely to decelerate and revert toward the band. The trigger for a fade is the turn back down out of the outer zone rather than arrival in it, because a steep slope can hold for a surprisingly long stretch in a genuine trend.
▶ Bearish State (Oscillator Below the Lower Entry Band with Bearish Color)
The normalized slope has cleared the negative entry threshold, confirming that price is declining at a rate meaningful relative to its own volatility. Trend traders use this for short entries or long exits and keep directional bias through corrective bounces that fail to reverse the underlying rate of change. Mean reversion traders again work from zone depth, treating a reading in the lower second or third zone as an accelerated decline that is stretched far enough for a bounce back toward the band to carry a favorable expected move. In either direction, a slope that decays back toward the entry band while price continues in the trend direction is an early rate of change divergence, giving mean reversion traders advance notice of exhaustion and trend traders a reason to tighten stops before the state formally releases.
▶ Neutral State (Oscillator Inside the Threshold Band with Neutral Color)
The oscillator has released into neutral, either because an established regime decayed back through its exit level or because the slope never cleared entry to begin with. This reading carries the same meaning for both styles, since price is neither trending quickly enough to follow nor stretched far enough to fade. Trend traders stand aside and watch for the compression that frequently precedes the next confirmed regime, while mean reversion traders treat the return into the band as a completed reversion and the natural place to close a fade, the move having exhausted itself by definition once the slope no longer clears the threshold.
🟢 Features
▶ Preconfigured Presets: Three optimized parameter sets tailored to different trading styles and timeframes, each configuring the slope window, normalization length, entry threshold, exit fraction, and normalization method together so the threshold always stays matched to the units it is measured in. "Default" balances noise filtering against responsiveness for swing trading on 4-hour and daily charts. "Fast Response" shortens the window and lowers the entry threshold to engage regimes early for intraday use on 5-minute to 1-hour charts, while a raised exit fraction releases them quickly. "Smooth Trend" lengthens the window and raises the entry threshold to produce few, high conviction regimes held through deep pullbacks, suited to position trading on daily and weekly charts.
▶ Built-in Alerts: Six alert conditions plus a dynamic alert message enable automated monitoring of regime transitions without constant chart observation. "Bullish State" and "Bearish State" trigger on first confirmation of a directional regime, "Neutral State" fires when a directional regime is released, and "Any State Change" provides a combined alert covering all transitions through a single setup. "Bullish Zero Cross" and "Bearish Zero Cross" track the moment the slope changes sign, offering an earlier and more sensitive trigger than threshold confirmation.
▶ Visual Customization: A Candles or Line display toggle switches between the full synthetic slope candle series and a single plotted value for a lighter, cleaner presentation. In Candles mode, an optional Heikin-Ashi transform makes sustained trend phases visually contiguous, and hollow up candles layer bar direction on top of the regime color so momentum inside a state can be read at a glance, for example a filled bar within a bullish phase indicating the slope eased on that bar. Graduated threshold zones fill at one, two, and three multiples of the entry threshold at progressively increasing transparency, giving an immediate sense of how far beyond confirmation the current reading sits.
Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, plus Custom) accommodate different chart themes with coordinated bullish and bearish schemes applied consistently across every element.
Indicator

Jurik Trend Ribbon [QuantAlgo]🟢 Overview
The Jurik Trend Ribbon is a trend-following indicator built on a phase-compensated recursive filter rather than fixed-weight averages or price crossovers. It measures the residual between price and its own running estimate, then feeds a scaled portion of that residual back into the output to recover lag without the overshoot a shorter average introduces. Direction is anchored to a stored level that only advances once the filtered path clears a volatility deadband, helping traders separate sustained directional displacement from movement contained inside the prevailing range across every timeframe and market.
🟢 How It Works
The foundation of the indicator is a three-stage recursive cascade. A preliminary stage smooths the source, a detrending stage retains the residual price leaves behind against that estimate, and a final stage applies phase compensation before accumulating the result:
stage_one := inv_alpha * src + alpha * stage_one
detrend := (src - stage_one) * (1.0 - beta) + beta * detrend
phase_shift = stage_one + phase_ratio * detrend
stage_three := (phase_shift - result) * inv_alpha * inv_alpha + alpha * alpha * stage_three
result := result + stage_three
Two coefficients govern the cascade. Beta is fixed by the sampling Length and weights the detrending stage. Alpha is the smoothing coefficient, and under Classic mode it stays fixed at the Power setting throughout. Under Adaptive mode it is rescheduled on every bar from realized volatility measured against its own longer baseline:
dynamic_exp = math.pow(volty_ratio, volty_exp)
alpha = math.pow(beta, dynamic_exp)
Because beta is less than one, a larger exponent produces a smaller alpha and a faster filter, so the cascade tracks more closely as volatility expands and settles as it contracts. Classic holds a constant response that changes only with Length, while Adaptive shifts its response with the regime and will register state changes more readily at the same envelope width.
Direction is not read from the filter's slope. A stored level tracks the filtered path at a fixed distance in ATR units and only steps when the path clears it:
if upper_bound < ratchet
ratchet := upper_bound
trend_dir := -1
else if lower_bound > ratchet
ratchet := lower_bound
trend_dir := 1
Because that level rests a full deadband away from the filter, reversing direction requires the path to travel twice that distance, roughly three ATR at default settings. The level holds still through movement contained inside the envelope and commits only once displacement clears it outright, so the state persists through pullbacks rather than resetting on every fluctuation in the filter.
🟢 Signal Interpretation
▶ Bullish Trend (Green): When the filtered path clears the lower edge of the envelope, the stored level steps upward and the indicator enters bullish mode with green coloring applied across the ribbon and its layered bands. The level then trails beneath the path and only ever ratchets higher, so the reading persists through pullbacks that fail to displace price far enough to reach it. The transition into green marks a potential long/buy opportunity, with retracements toward the ribbon during an established bullish reading offering potential continuation entries.
▶ Bearish Trend (Red): When the filtered path clears the upper edge, the stored level steps downward and the indicator enters bearish mode with red coloring across all visual elements. The level trails above the path from that point and only tracks lower, requiring a full deadband of upward displacement before the state can flip back. The transition into red marks a potential short/sell opportunity, with rallies back toward the ribbon during an established bearish reading offering potential continuation entries on the downside.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 1-hour and daily charts with a balanced filter and an envelope that holds direction through routine pullbacks. "Fast Response" shortens the filter, lightens the smoothing exponent, and tightens the envelope for intraday charts where the indicator needs to adapt to shorter-duration moves. "Smooth Trend" extends the filter, deepens the exponent, and widens the envelope 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 filter and envelope 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. Because the filter reads its source on every tick, alerts should be set to Once Per Bar Close so they fire only on values that are final.
▶ Visual Customization: Six color presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish color schemes across the ribbon, its layered bands, and optional bar and background coloring. The ribbon renders the same cascade across its phase range rather than a single line, so it opens as price runs ahead of the smoothed estimate and closes as that gap narrows, with band opacity brightening and fading on the same measure, and a width multiplier scales the whole ribbon for presence on zoomed-out charts. 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.
Indicator

Gaussian Filter Trend [QuantAlgo]🟢 Overview
The Gaussian Filter Trend passes price through a multi-pole Gaussian filter and holds the result inside an adaptive volatility deadband, producing a stepped trend path that advances only once a move has cleared the band. That band is sized by an Efficiency Ratio, tightening when price travels directionally and widening through chop, so the line tracks sustained moves and sits still through noise. Around that path, a star field orbits at two volatility-scaled radii that fade with distance, echoing the decay of the filter's own weighting and making the current trend distinctly recognizable at a glance on any instrument or timeframe.
🟢 How It Works
The indicator's core methodology combines two mechanisms: a cascaded Gaussian filter that smooths the source series, and an efficiency-driven deadband that governs when that smoothed value is permitted to move the trend line.
First, the selected source is passed through one to four cascaded single-pole stages. A beta term derived from the filter length and the pole count sets the smoothing coefficient. Because pole count enters that calculation directly, adding poles rescales the filter response rather than layering more averaging onto the same curve:
beta = (1 - math.cos(2 * math.pi / length)) / (math.pow(1.414, 2.0 / poleCount) - 1)
alpha = -beta + math.sqrt(beta * beta + 2 * beta)
Next, efficiency is measured by comparing net directional movement against the total distance traveled over the efficiency window. The ratio moves toward one when travel is more directional and toward zero when price covers ground without net progress. It is then smoothed, so the deadband width is less likely to shift sharply from one bar to the next:
efficiency_ratio = path_length == 0 ? 0.0 : net_move / path_length
smoothed_efficiency = ta.ema(efficiency_ratio, efficiency_smooth)
The smoothed reading blends between a wider chop multiplier and a tighter trend multiplier, and that result scales Average True Range into the deadband width. Higher readings pull the envelope in, so the line can follow a move more closely. Lower readings push it out, which is intended to reduce flips in conditions where they are more likely. Disabling Adaptive Width bypasses the blend and applies a single fixed multiplier:
width_multiplier = adaptive_width ? chop_multiplier + (trend_multiplier - chop_multiplier) * smoothed_efficiency : fixed_multiplier
trend_width = ta.atr(atr_length) * width_multiplier
Finally, the trend line carries its previous value forward and steps only when the envelope has moved past it. It drops when the upper band falls below the current level and rises when the lower band climbs above it, producing a stepped path rather than a continuous curve:
if upper_band < trend_line
trend_line := upper_band
if lower_band > trend_line
trend_line := lower_band
A persistent direction state records the last step and carries it through flat segments, so the line color, star field, bar coloring and alerts all read from the same value rather than diverging while the line is stationary. The star field orbits that path at a distance scaled to recent average bar range, spreading as ranges expand and drawing in as they compress, so the trend and the volatility it is being measured against are visible in one read.
🟢 Signal Interpretation
▶ Bullish Trend (Long/Buy): When the lower band climbs above the trend line, the line steps higher and the indicator enters bullish state. The trend line and star field switch to the bullish color. This condition identifies potential long or buy opportunities and remains active until the upper band falls below the line and confirms a bearish step.
▶ Bearish Trend (Short/Sell): When the upper band falls below the trend line, the line steps lower and the indicator enters bearish state. The visual elements switch to the bearish color. This condition identifies potential short or sell opportunities and holds until the lower band climbs above the line and confirms a bullish step.
▶ Flat Path (Hold): When price stays inside the deadband, neither band displaces the line and it holds level. Color does not change, so the prior state is carried rather than reconfirmed. Extended flat runs indicate the efficiency reading has widened the band against choppier conditions, and the state resolves only when one side of the envelope clears the line.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover a range of trading styles and timeframes. "Default" uses four poles over a fourteen bar window for a balanced configuration aimed at swing trading on 1-hour and daily charts. "Fast Response" shortens the filter length and drops to two poles for a tighter path on 5-minute to 1-hour charts, which may suit intraday work at the cost of more frequent steps in choppier conditions. "Smooth Trend" lengthens the filter and widens the chop multiplier for a steadier baseline on daily and weekly charts, aimed at position trading. Selecting any preset other than Default overrides every Gaussian Filter and Trend Width input beneath it.
▶ Built-in Alerts: Three alert conditions support automated monitoring of trend transitions. "Bullish Trend Signal" fires on the bar the direction state flips to bullish. "Bearish Trend Signal" fires on the bar it flips 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 Customization: Six color presets, Custom, Classic, Aqua, Cosmic, Cyber, and Neon, provide coordinated bullish and bearish color pairings suited to different chart themes and personal preferences. Selecting Custom exposes independent color pickers for both states, alongside an adjustable neutral color used during the initial warmup before the first directional step. Line width is configurable from one for a minimal look up to eight for a heavier path, and the star field toggles separately from the line so either element can be displayed on its own. Optional bar coloring and background shading tint the candles and chart field with the active trend color at configurable transparency levels, reflecting the current state without reading the line directly.
Indicator

Supertrend Confirmed Close | forexs# Supertrend Confirmed Close
Supertrend Confirmed Close is an open source modification of the classic ATR based Supertrend indicator. Its main purpose is to confirm trend reversals only after the current bar has closed, so temporary intrabar crossings do not create confirmed Buy or Sell signals.
## How it works
The indicator builds trailing volatility bands from Average True Range and a user selected price source.
Default settings:
ATR Period: 10
ATR Multiplier: 3.0
Source: HL2
ATR Method: Wilder ATR
An SMA of True Range can also be selected as an alternative ATR calculation.
During a bullish state, the lower Supertrend band trails price. During a bearish state, the upper Supertrend band trails price.
A bullish reversal is confirmed when the previous trend state is bearish and a completed bar closes above the previous bearish Supertrend band.
A bearish reversal is confirmed when the previous trend state is bullish and a completed bar closes below the previous bullish Supertrend band.
## What is different in this version
This implementation adds explicit closed bar confirmation to the reversal logic. The trend state, Buy signal, Sell signal, and direction change alerts are not confirmed until the bar is complete.
It also includes an optional "Freeze Supertrend Line Until Candle Close" setting. When enabled, the displayed active Supertrend line remains at its previous confirmed value while the realtime bar is forming, then updates when the bar closes.
Other additions include Pine Script v6 compatibility, organized inputs, optional trend change circles, trend highlighting, and separate alert conditions for bullish, bearish, and any confirmed direction change.
## Signals and alerts
BUY marks a confirmed change from a bearish Supertrend state to a bullish Supertrend state.
SELL marks a confirmed change from a bullish Supertrend state to a bearish Supertrend state.
These labels describe the indicator's trend state. They are not forecasts or guarantees of future price direction.
Alert conditions are provided for confirmed Buy, confirmed Sell, and confirmed direction changes. Users may also select TradingView's Once Per Bar Close frequency when creating an alert.
## Settings
Users can adjust the ATR period, ATR multiplier, source, and ATR calculation method. Buy and Sell labels, trend change circles, trend highlighting, and realtime line freezing can also be enabled or disabled.
## Limitations
Supertrend is a trend following method. In sideways or choppy markets it can change direction frequently and produce false or late signals.
Closed bar confirmation intentionally waits until the bar is complete. This avoids treating temporary intrabar crossings as confirmed reversals, but it can also make signals occur later than an intrabar implementation.
ATR settings materially affect sensitivity. Different symbols, market conditions, and timeframes can produce different behavior.
This indicator does not include position sizing, stop loss rules, profit targets, trade management, or performance guarantees. It should not be treated as a complete trading system.
For signal based use, apply it to standard price charts such as regular candles or bars rather than synthetic chart types whose prices do not represent directly traded market prices.
## Credits and open source reuse
This script reuses and modifies the open source SuperTrend implementation published by TradingView author KivancOzbilgic. That publication also credits everget, Alex Orekhov, for inspiration related to highlighting, signals, and alerts.
The reused Supertrend logic is credited here in accordance with TradingView's open source reuse requirements. This modified publication should remain open source unless the necessary permission for another publication mode has been obtained from the original author.
## Disclaimer
This indicator is provided for technical analysis and educational purposes only. It is not financial or investment advice. No signal or indicator can guarantee a profitable outcome.
Indicator

Wavelet Transform Trend [QuantAlgo]🟢 Overview
The Wavelet Transform Trend is a trend-following indicator built on multi-level undecimated Haar wavelet decomposition rather than moving averages or fixed volatility bands. It separates the price series into approximation components that carry structural trend and detail components that carry short-term noise, discards or shrinks the noise, then reconstructs a denoised wavelet path from what remains. That path is wrapped in an ATR confirmation band that price must close beyond before the trend state flips, helping traders separate genuine directional structure from local oscillation across every timeframe and market.
🟢 How It Works
The core engine is a dilated à trous cascade. Each stage widens the Haar filter by a factor of two and splits the series into a coarser approximation and the detail band at that scale, with no downsampling, so the decomposition stays shift invariant and every bar receives a coefficient at every level:
float a1 = (a0 + a0 ) * 0.5
float d1 = a0 - a1
float a2 = wavelet_levels >= 2 ? (a1 + a1 ) * 0.5 : a1
float d2 = a1 - a2
Wavelet Period sets how much history the trend component draws on, and Wavelet Levels determines how that span is divided across scales. The dilation schedule is derived from both, so the deepest approximation always spans the requested period. Reconstruction is exact by construction, meaning the deepest approximation plus every detail band returns the original source, so removing or shrinking detail is the only thing that changes the output. With Wavelet Approximation Only enabled the details are discarded outright. With it disabled, each band is soft thresholded against its own estimated noise magnitude, so the same setting behaves consistently on any instrument.
The resulting path is smooth but continuous, so direction comes from wrapping it in an ATR band and requiring a close through it. Each band only trails in the favorable direction and freezes otherwise:
lower_band := lower_raw > prev_lower or prev_close < prev_lower ? lower_raw : prev_lower
upper_band := upper_raw < prev_upper or prev_close > prev_upper ? upper_raw : prev_upper
The result is a binary state that holds through pullbacks inside the band and flips only on a confirmed close beyond it. The entire engine runs on confirmed bar data, so the wavelet path, the bands, the trailing level, the trend state, and the alerts all hold their last closed-bar values and the indicator does not repaint.
🟢 Signal Interpretation
▶ Bullish Trend (Green): When price closes above the upper confirmation band, the indicator enters bullish mode with green coloring applied across the trend line, glow, radial layering, wave trail, and optional bar and background coloring. The trailing level switches to the lower band and ratchets upward with the wavelet path, holding through pullbacks that fail to close beneath it.
▶ Bearish Trend (Red): When price closes below the lower confirmation band, the indicator enters bearish mode with red coloring across all visual elements. The trailing level switches to the upper band and only tracks lower from that point, requiring a close above it before the state can flip back.
🟢 Features
▶ Preconfigured Presets: Three parameter sets cover different trading approaches. "Default" targets swing trading on 1-hour and daily charts. "Fast Response" shortens the span, reduces decomposition depth, and narrows the band for intraday charts where the indicator needs to adapt to shorter-duration moves. "Smooth Trend" extends the span, deepens the decomposition, and widens the band 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 wavelet and ATR inputs.
▶ Built-in Alerts: Three alert conditions cover all directional states. "Bullish Wavelet Trend" fires on the bar where the trend direction flips from bearish to bullish. "Bearish Wavelet Trend" fires on the bar where it flips from bullish to bearish. "Any Wavelet Trend Flip" combines both into a single condition for traders who want a unified notification regardless of direction.
▶ Visual Customisation: Two display modes cover different reading styles. Line plots the confirmed trailing level with glow and optional radial layering, Wave instead builds a smoke-trail from copies of the wavelet path with configurable layers, span, and brightness. Six colour presets (Classic, Aqua, Cosmic, Cyber, Neon, and Custom) apply coordinated bullish and bearish schemes across the trend line, glow, radial layering, wave shades, 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

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

Trend Structure Scale-In👋 What's up traders,
Decided to finally share this one after a lot of testing, tweaking, and more chart staring than I'd like to admit.
Trend Mitigation Scale-In Pro is built around a simple idea: trade with the trend, wait for quality pullbacks, and let probabilities do the heavy lifting.
The strategy combines:
• EMA200 trend filtering
• Pivot structure detection
• Engulfing candle confirmation
• Mitigation-based entries
• Controlled scale-ins on pullbacks
• Fixed basket take-profit management
The goal isn't to catch every move. It's to stay aligned with the bigger trend and focus on higher-quality setups while keeping execution simple.
Like every strategy, it's not perfect and should always be tested thoroughly before being used on a live account.
I'm constantly building, testing, and improving new ideas, so feedback is always appreciated.
If you find it useful, a ⭐ Favorite, 👍 Like, or 🚀 Boost helps more than you think and motivates me to keep sharing.
Wishing everyone green charts and disciplined trading. 🏆
Good luck out there.
— Tomukasss
Strategy

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

Market Breadth Trend StrategyOverview
Many traders focus on major indexes such as the S&P 500 or Nasdaq when evaluating market conditions. While indexes show overall price movement, they do not always reflect how broadly that movement is supported across the market.
Market breadth is a way of studying participation. It can help traders understand whether strength or weakness is concentrated in a small group of stocks or spread across a wider portion of the market.
A market move supported by broad participation may provide different context than a move driven by only a few heavily weighted stocks.
Understanding Market Participation
Market breadth generally refers to the number of securities contributing to a market move.
Examples of breadth-related observations include:
The balance between advancing and declining stocks
The number of stocks reaching new highs or lows
The percentage of stocks trading above key moving averages
These measurements can provide additional perspective alongside price action and trend analysis.
Why Traders Monitor Breadth
Participation Matters
Strong participation may indicate that market activity is occurring across a wider group of stocks rather than being concentrated in a few names.
Additional Context
Breadth can be used as a supplementary tool when evaluating trends, momentum, and overall market conditions.
Market Observation
Some traders monitor breadth metrics to better understand changes in participation over time and how those changes compare with index performance.
Strategy Concept
This script uses a simplified breadth-style proxy derived from the chart's relationship to a long-term moving average.
It is important to note that this script does not use actual exchange-wide market breadth data. Instead, it creates a participation-style filter using price behavior on the current chart.
The strategy combines:
Trend identification using moving averages
A breadth-style participation filter
ATR-based risk management
The objective is to demonstrate how participation concepts can be incorporated into a trend-following framework for research and testing purposes.
Important Notes
This script uses a simplified participation-style filter and is not a substitute for exchange-wide breadth indicators.
Results will vary across symbols, timeframes, and market conditions.
The script is intended for educational, research, and testing purposes.
Disclaimer
This script is provided for educational and research purposes only. It demonstrates one way to combine trend analysis with a breadth-style participation filter. It is not financial advice and should be tested across different symbols, market conditions, and timeframes before being used in any trading workflow.
This version avoids performance claims, avoids implying predictive ability, and clearly explains the limitations of the breadth proxy. Strategy

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 TradingView-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 TradingView.
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 TradingView, 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 TradingView. 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 TradingView.
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
