Simplified Footprint
If you've tried using volume footprint charts and been daunted with information overload, then this 'Simplified Footprint' indicator could be just what you need instead.
The POC and value area are overlayed onto regular candles on the chart.
The delta is plotted as an oscillator, but the fun part, also in the oscillator pane, are the imbalances.
A buy imbalance is shown as a green bar. If it goes upwards part way, then it is partly displaced by the price. Up to the top, and the price has fully displaced the imbalance.
If the green buy imbalance bar goes downwards however, then it's absorbed by passive sell orders. Part way, partly absorbed, all the way down, then fully absorbed.
The colour of the bars are also more transparent with low volume, and more opaque, as the volume in that direction increases.
The sell imbalances are red and do the opposite. Downwards, and they are displaced by price, upwards and they are absorbed.
To clearly see what's going on, you want the buy imbalance columns narrower than the sell imbalance columns (or vice versa).
These colours are all transparent to some degree so you can still read them when they overlay, but having the columns different widths, like piano keys, really makes reading them easier.
The absorptions are also marked with an 'A' to avoid any doubt.
Using this 'Simplified Footprint' indicator allows you to visually read all this footprint data at a glance, on a regular chart.
To make it even simpler, you can just view it as; imbalance bars and delta going upwards are bullish, going downwards, bearish.
Obviously you might want to pay attention to the absorptions, as they indicate passive participants having an effect on the market that you wouldn't otherwise see, as they don't move the price.
To use this indicator, you just need to configure the number of ticks per row, at the top of the settings.
This can be set with a number of ticks per row, or with an Average True Range (ATR), and can be scalable across different timeframes as well.
Probably the easiest way to use it is to select the timeframe on the chart you want to use, then get an ATR reading for that timeframe.
Then use that ATR value in the 'Simplified Footprint' settings.
If you scale the ticks for different timeframes, just specify the timeframe for which the ATR (or ticks) are calibrated for.
You will also probably need to tweak the narrow imbalance column width, depending on how zoomed into the chart you are, to get a piano key look for clarity.
Although the 'ticks per row' can be scaled across different timeframes, the scaling is an approximation and may not always work well, especially if the chart is far removed from the reference timeframe.
Ideally try not to scale too far from the reference timeframe, and re-calibrate nearer to the chart timeframe if necessary.
If in any doubt, check the Pine logs for configuration details and information about the last confirmed bar.
The last couple of lines, where it says:
Last confirmed bar, rows per footprint: x
Use the above 'rows per footprint' as calibration, which should be between about 3 and 30 ideally, although more may still be OK.
The rows per footprint can be checked against the actual volume footprint, and should be the same if the ticks per row are the same.
However, the default value the actual volume footprint uses is 'auto', which cannot be replicated in this script due to the platform design.
So if you want the same number of rows per footprint, and see exactly the same imbalances, you need to configure the actual volume footprint with a manual row size and set the ticks per row to the same number as in this 'Simplified Footprint' indicator.
Indicator

Uptrick: ML Kernel Regression
Introduction
This indicator applies Nadaraya-Watson kernel regression, a non-parametric machine learning estimator, directly to price data in order to produce a smooth, noise-reduced representation of the market's underlying trend. Unlike moving averages that apply equal or linearly decaying weights, this method uses a Gaussian kernel function to assign weights based on how far back in time each bar sits relative to the current one. Bars closer in time receive exponentially higher weights, while older bars decay naturally. The result is a regression curve that adapts organically to local price structure rather than imposing a fixed lag model onto the data. Residual bands are then constructed around this curve using the rolling standard deviation of the difference between price and the regression line, forming dynamic envelopes that reflect actual price dispersion rather than arbitrary multipliers of a fixed moving average.
The indicator is designed for traders who want a statistically grounded trend baseline with state-driven directional signals, without relying on lagging traditional averages. It is built in Pine Script v6 and is fully non-repainting. All state decisions are committed only on confirmed bars, meaning no signal is generated intra-bar and no future bar data influences the output.
How It Works
The core calculation is the Nadaraya-Watson estimator. At each bar the indicator looks back across a user-defined window and computes a weighted average of past closing prices. The weight assigned to each historical bar is determined by the Gaussian kernel: weight = exp( -lag² / (2 · h²) ), where lag is the number of bars back and h is the bandwidth parameter. A larger bandwidth makes the curve smoother and slower to react. A smaller bandwidth makes it more reactive but noisier.
When adaptive bandwidth is enabled, the bandwidth h is scaled dynamically by a normalised ATR factor. In volatile periods, the kernel widens, producing a smoother estimate that avoids overreacting to spike conditions. In calm periods, the kernel tightens, allowing the curve to track price more closely. This makes the regression inherently context-aware without requiring the user to manually switch settings across different market regimes.
The residual at each bar is defined as the difference between the closing price and the regression value. A rolling standard deviation of these residuals forms the sigma value, which is then smoothed via EMA. The upper and lower bands are placed at a user-controlled multiple of sigma above and below the kernel line. Because the bands are derived from actual price-to-regression deviation, they expand during high-dispersion conditions and contract when price tracks the regression tightly.
State is classified as bullish when price closes above the upper band on a confirmed bar, and bearish when price closes below the lower band on a confirmed bar. Between breakout events the state persists, meaning the indicator holds its last valid directional reading rather than flipping to neutral. This gives the signal a regime-like quality rather than a purely oscillatory one.
Features
Nadaraya-Watson Gaussian kernel regression curve computed from scratch over a fully user-controlled lookback window
Adaptive bandwidth scaling driven by a normalised ATR factor, widening the kernel during volatile conditions and tightening it during calm ones
Residual-based standard deviation bands that expand and contract with actual price-to-regression dispersion rather than fixed multipliers
Smoothing controls for both the main regression output and the band width, allowing fine-tuning of reactivity versus stability
Three visual display modes: Bands mode showing the full envelope, Single Line mode showing only the regression curve with a gradient fill toward price, and Trail mode showing only the relevant band side as a directional trail
Gradient fills in all three visual modes that fade from the regression line outward toward price, maintaining visual clarity without obscuring price action
State-based bar coloring that applies the directional regime color to every candle, using custom plotcandle rendering for full wickcolor and bordercolor consistency
Signal labels that appear only on confirmed state transitions, placed at user-selectable anchors including High or Low, the Main Line, or the Band levels, with adjustable ATR-based offset
Seven selectable color themes covering Classic, Cyber Aqua, Crimson Pulse, Royal Purple, Emerald Night, Minimal Mono, and Classic Emerald, each providing a complete set of bull, bear, neutral, background, and frame colors
A live dashboard table displaying current signal direction, kernel MA value, upper band value, lower band value, current sigma width, and active bandwidth including whether adaptive mode is engaged
Alert conditions for bullish breakout above the upper band and bearish breakdown below the lower band, both tied to confirmed crossover and crossunder events
Toggle controls for bar coloring, band fill, and the dashboard table independently
Dashboard:
Band Mode:
Single Line Mode:
Trail Mode:
Inputs
Lookback Window: controls how many historical bars the Gaussian kernel sums over. Larger values produce a slower, broader regression curve. Default is 30.
Base Bandwidth (h): sets the core width of the Gaussian kernel. Higher values create smoother, more generalized curves. Lower values track price more closely. Default is 8.0.
Adaptive Bandwidth: when enabled, the bandwidth is multiplied by a factor derived from normalised ATR, making the kernel wider in volatile conditions. Default is enabled.
ATR Length (adaptive): the period used to compute the ATR for adaptive scaling. Default is 14.
MA Output Smoothing: applies an EMA pass over the raw regression output to reduce micro-jitter in the curve. Default is 3.
Band Multiplier (sigma): how many standard deviations above and below the regression line the bands are placed. Default is 1.0.
Band Lookback (sigma): the rolling window used to compute the standard deviation of residuals. Default is 24.
Band Smoothing: EMA smoothing applied to the raw sigma value to stabilize band movement. Default is 5.
Visual Mode: selects between Bands, Single Line, and Trail display modes.
Color Bars: enables state-colored candles. Default is enabled.
Fill Bands: enables the semi-transparent fill between upper and lower bands. Default is enabled.
Show Dashboard: toggles the live data table. Default is enabled.
Color Gradient Smooth: controls color smoothing, currently reserved for future gradient transitions.
Label Anchor: selects where signal labels are pinned. Options are High or Low, Main Line, and Bands.
Offset Mult (ATR): scales how far above or below the anchor point labels are offset. Default is 0.50.
Theme: selects the color theme across all visual elements.
Alert: Cross Above Upper Band: enables the bullish breakout alert condition.
Alert: Cross Below Lower Band: enables the bearish breakdown alert condition.
Originality
The originality of this script lies in the combination of a properly implemented Nadaraya-Watson estimator with an ATR-adaptive bandwidth system, residual standard deviation bands, and a persistent non-neutral state engine, all packaged with a multi-mode visual system that adjusts its presentation to the current directional regime. The regression curve is not a modified moving average. It is a genuine weighted least squares estimate computed bar by bar using a Gaussian kernel function. The adaptive bandwidth mechanism means the indicator does not treat all market conditions equally, which is a meaningful departure from static-parameter band systems. The state logic prioritises confirmed readings and persists between band contacts, which makes the regime classification stable and avoids the false-neutral problem common in threshold-based indicators. The three visual modes serve distinct use cases: Bands for envelope and breakout context, Single Line for a clean trend baseline, and Trail for a dynamic support or resistance reference that follows the active regime. These elements are not assembled from existing published open-source scripts; the full codebase is original work by the author.
Conclusion
Uptrick: ML Kernel Regression provides a statistically grounded approach to price smoothing and trend regime classification by applying a Gaussian kernel estimator rather than a conventional moving average. The adaptive bandwidth, residual bands, and persistent state logic work together to give traders a tool that reflects actual market behaviour rather than imposing fixed parameters onto it. The multiple visual modes and theme system make it practical across a range of chart styles and use cases.
Disclaimer
This script is published for educational and analytical purposes only. Nothing in this script or its description constitutes financial advice, investment advice, or a recommendation to buy or sell any asset. All trading involves risk. Past performance of any indicator or signal does not guarantee future results. You are solely responsible for your own trading decisions.
Indicator

Uptrick: Volatility Aggregation ModelIntroduction
Uptrick: Volatility Aggregation Model (VAM) is a very simple overlay indicator that classifies market direction using a five-speed ensemble of volatility-adaptive range engines. Instead of relying on a single trend filter, VAM evaluates direction across multiple responsiveness settings and converts those states into a normalized score. The script then uses configurable score thresholds to define bullish, bearish, and neutral regimes, and it visualizes those regimes directly on the chart through candle recoloring and optional Up/Down labels.
Overview
VAM is built around an ensemble concept: five independent “speed” layers each determine a directional state by testing whether price breaks above or below a volatility-defined band. The five states are combined into a single score ranging from -1.0 (fully bearish across all speeds) to +1.0 (fully bullish across all speeds). This score is compared to user-defined buy and sell thresholds to determine regime. For visual context, the indicator also plots directional trail layers derived from the middle speed for stability, and can optionally fill the space between trail layers to make regime changes easier to spot at a glance.
Originality and value
This script’s originality comes from how it frames direction as a consensus problem rather than a single-indicator outcome. Each speed layer uses a volatility range defined from true range smoothing and applies a breakout-based state flip using upper and lower bands. Because the layers differ in lookback length, volatility scaling, band width, and smoothing, they respond differently to the same price movement. Aggregating them into a normalized score creates a compact, interpretable measure of directional agreement that can be tuned to be more selective or more permissive using thresholds. The result is a regime tool that is transparent, parameterized, and suitable for traders who want a directional filter that adapts to volatility and avoids treating all market conditions as equally “trendable.”
How it works
Start date gating
The script includes a start date filter that can be used to restrict when labels (and any signal interpretation) begin. Bars before the start date will still plot normally, but Up/Down labels are suppressed until the chart time is greater than or equal to the configured start date.
Five-speed volatility range engines
Each of the five speeds computes:
➜ A volatility measure based on true range (TR), smoothed with an EMA over the speed’s length, then scaled by a speed-specific volatility multiplier.
➜ An internal center line that “snaps” toward price only when price moves beyond the current volatility allowance. When price movement is smaller than the allowance, the center remains unchanged.
➜ Upper and lower bands around the center, spaced by the volatility allowance multiplied by a speed-specific band multiplier, then smoothed.
➜ A directional side state:
━━━━➤ Side flips bullish when source crosses above the upper band.
━━━━➤ Side flips bearish when source crosses below the lower band. This breakout-only flip logic is fixed in the script (no center-cross mode), so direction changes occur only when price breaks out of the band envelope.
Ensemble scoring
The five side states are summed and divided by 5 to produce a normalized ensemble score:
➜ +1.0 means all five speeds are bullish.
➜ -1.0 means all five speeds are bearish.
➜ Values between reflect partial agreement and mixed conditions.
The script then classifies the current regime using your thresholds:
➜ Bullish regime when score is greater than the buy threshold.
➜ Bearish regime when score is less than the sell threshold.
➜ Neutral regime otherwise.
Signals
Signals are generated from score crossing events:
➜ A buy signal occurs when the score crosses over the buy threshold.
➜ A sell signal occurs when the score crosses under the sell threshold.
These signals are used for labels (if enabled) and alert conditions. They are not strategy orders and do not simulate fills.
Visual system: trails, ATR layer, and fill
For stability, the trail structure is derived from the middle speed (Speed 3). The script computes smoothed lower and upper bands from Speed 3 as internal reference levels.
It then plots ATR-offset layers based on true range smoothed over the ATR Layer Length and scaled by the ATR Layer Mult. The bullish ATR layer is positioned below the Speed 3 lower band, and the bearish ATR layer is positioned above the Speed 3 upper band.
These ATR-offset layers are the primary visible trail elements. Optional fill appears between each reference band and its ATR layer only during the active bullish or bearish regime.
The script can optionally fill between the trail and ATR layer lines, but only in the corresponding regime:
➜ Bull fill appears only when the regime is bullish.
➜ Bear fill appears only when the regime is bearish.
Neutral conditions suppress the regime fill emphasis.
Candle recoloring
The indicator uses plotcandle to recolor candles based on the current regime:
➜ Bull color when bullish regime is active.
➜ Bear color when bearish regime is active.
➜ Neutral gray when neither threshold condition is met.
This makes regime identification possible without relying on separate panels.
Inputs and how to use them
Plot group
Start Date
Defines the earliest chart time at which labels and signal annotations are allowed. This is useful for limiting label clutter when reviewing long history or when you only want signals after a certain market regime, contract listing date, or personal testing period.
Ensemble group
Buy Threshold
A score level above which the script considers the market bullish. Higher values make bullish classification more selective because more of the five speeds must agree bullishly. Lower values allow bullish classification with weaker consensus.
Sell Threshold
A score level below which the script considers the market bearish. More negative values make bearish classification more selective. Values closer to zero will classify bearish regimes more readily.
Show Up/Down Labels
Toggles the display of directional labels on threshold cross events. When enabled, labels are only printed on bars at or after the Start Date, and only when score crosses the relevant threshold (not merely when it remains above or below).
Visuals group
Fill Between Trail Layers
Enables or disables the filled region between each trail and its ATR layer. When disabled, trail lines can still be visible (depending on the regime) but the emphasis fill is removed.
Trail Smooth
Controls EMA smoothing applied to the trail lines and their ATR-offset layers. Higher values produce smoother, slower-reacting trails; lower values make trails respond more quickly but can increase visual noise.
ATR Layer Length
Controls the EMA length used to smooth true range for the ATR-style layer. Larger values produce a steadier ATR layer; smaller values track volatility changes more quickly.
ATR Layer Mult
Scales the ATR layer offset distance from the trail. Increasing this value expands the buffer around the trail; decreasing it tightens the buffer.
Colors group
Bull
Sets the color used for bullish candles, bullish trail visuals, and bullish label styling.
Bear
Sets the color used for bearish candles, bearish trail visuals, and bearish label styling.
Neutral Gray
Sets the candle color used when the score is between thresholds (neutral regime).
5 Speeds group
Source
Chooses the price series used for band breakouts and side calculations (default close). Changing the source changes what the engines consider the breakout trigger. For example, using hl2 or ohlc4 can reduce sensitivity to closes alone, while using close keeps breakouts tied to settlement values.
Speed 1 Length, Speed 2 Length, Speed 3 Length, Speed 4 Length, Speed 5 Length
These define the EMA length used to smooth true range for each speed’s volatility allowance. Smaller lengths typically react faster to volatility changes; larger lengths smooth volatility more.
Speed 1 Vol Mult through Speed 5 Vol Mult
These scale the volatility allowance for each speed. Increasing a speed’s volatility multiplier makes its center and bands more tolerant to price movement, which can reduce how often that layer flips direction. Decreasing it tightens the allowance, potentially increasing flip frequency.
Speed 1 Band Mult through Speed 5 Band Mult
These control how far bands are placed from the center relative to the volatility allowance. Higher band multipliers widen bands (requiring larger breakouts to flip side). Lower band multipliers narrow bands (making flips easier to trigger).
Speed 1 Smooth through Speed 5 Smooth
These apply EMA smoothing to the volatility allowance and the band outputs for each speed. Higher smoothing reduces jitter and slows reaction; lower smoothing increases responsiveness.
Alerts
The script provides two alert conditions:
Ensemble Buy: triggers when the score crosses above the buy threshold.
Ensemble Sell: triggers when the score crosses below the sell threshold.
These alerts correspond directly to the label events (when labels are enabled), but alerts can be used independently of label visibility.
Trail
The trail in Uptrick: Volatility Aggregation Model (VAM) acts as a dynamic support and resistance band derived from the middle engine (Speed 3) for stability. In bullish regimes, the lower trail functions as volatility-adjusted support. During a long trade, stops can be positioned below this band, and pullbacks into the trail while the regime remains bullish may be treated as opportunities to add to the position.
In bearish regimes, the upper trail functions as volatility-adjusted resistance. During a short trade, stops can be placed above the band, and rallies back into the trail while the regime remains bearish may be considered potential add-on zones.
The trail is designed for trade management and structural guidance within the ensemble-defined regime, not as a standalone entry signal.
Summary
Uptrick: Volatility Aggregation Model (VAM) is a volatility-adaptive, five-speed ensemble direction indicator that converts multiple breakout-based range states into a single normalized score. You control regime sensitivity using buy/sell score thresholds, and you can visualize regimes through candle recoloring, optional labels, and trail layers derived from the middle speed plus an ATR-based buffer. The indicator is designed to help traders interpret directional agreement across multiple responsiveness settings and to mark regime transitions when score crosses the chosen thresholds.
Disclaimer
This indicator is for informational and educational purposes only and does not constitute financial advice. Trading involves risk, and you are responsible for your own decisions. Past performance and historical signals do not guarantee future results.
Indicator

Easy [CHE] Easy — Minimalist Pine Script for detecting EMA direction changes to define fixed price zones for simple support and resistance visualization, ideal for manual trading workflows.
Summary
This indicator's programming is kept minimalist and super simple, with core logic in under 20 lines for easy comprehension and modification. It creates fixed price zones based on divergences between a base exponential moving average and its smoother counterpart, helping traders spot potential consolidation or reversal areas without dynamic adjustments. By locking the zone at the high and low of the signal bar, it avoids over-expansion in volatile conditions, offering a stable reference line colored by price position relative to the zone. This approach differs from expanding channels by prioritizing simplicity and persistence until a new qualifying signal, reducing visual clutter while highlighting directional bias through midpoint coloring.
Motivation: Why this design?
Traders often face noisy signals from moving averages that flip frequently in sideways markets or lag during breakouts, leading to premature entries or missed opportunities. This indicator addresses that by focusing on confirmed direction shifts between the base and smoothed averages, then anchoring a non-expanding zone to capture the initial price range of the shift. The result is a cleaner tool for marking equilibrium levels, assuming price respects these bounds in ranging or mildly trending conditions.
What’s different vs. standard approaches?
- Reference baseline: Traditional moving average crossovers or simple channels that update every bar.
- Architecture differences:
- Zones are set only on new divergence signals and remain fixed until reset by a gap from the prior zone.
- No ongoing high-low expansion; relies on persistent variables to hold bounds across bars.
- Midpoint plotting with conditional coloring based on close position, plus a highlight for zone initiations.
- Practical effect: Charts show persistent horizontal references instead of drifting lines, making it easier to gauge if price is rejecting or embracing the zone—useful for avoiding false breaks in low-volatility setups.
How it works (technical)
The indicator first computes a base exponential moving average of closing prices over a user-defined length, then applies a second exponential moving average to smooth that base. It checks if both the base and smoothed values are increasing or decreasing compared to their prior values, indicating aligned direction. A signal triggers when this alignment breaks, marking a potential shift.
On a new signal, if the current bar's high and low fall outside any existing zone (or none exists), the zone bounds update to those extremes and persist via dedicated variables. The midpoint of these bounds becomes the primary plot line, colored green if below the close (bullish lean), red if above (bearish lean), or gray otherwise. A secondary thick line highlights the midpoint briefly when a zone first sets, aiding visual confirmation. No higher timeframe data or external fetches are used, so updates occur on each bar close without lookahead.
Parameter Guide
EMA Length — Sets the period for the base moving average; longer values smooth more, reducing signal frequency but increasing lag. Default: 50. Trade-offs/Tips: Shorter for faster response in intraday charts (risks noise); longer for daily trends (may miss early shifts).
Smoother Length — Defines the period for the secondary smoothing on the base average; higher values dampen minor wiggles for stabler direction checks. Default: 3. Trade-offs/Tips: Keep low (2–5) for sensitivity; increase to 7+ if zones trigger too often in choppy markets, at cost of delayed signals.
Reading & Interpretation
The main circle plot at the zone midpoint serves as a dynamic equilibrium line: green suggests price is above the zone (potential strength), red indicates below (potential weakness), and gray shows containment within bounds (neutral consolidation). A sudden thick foreground line at the midpoint flags a fresh zone start, prompting review of the prior bar's context. Absence of a plot means no active zone, implying reliance on price action alone until the next signal.
Practical Workflows & Combinations
- Trend following: Enter long on green midpoint after a higher low touches the zone lower bound, confirmed by structure like higher highs; filter shorts similarly on red with lower highs.
- Exits/Stops: Use the opposite zone bound as a conservative stop (e.g., below lower for longs); trail aggressively to midpoint on strong moves, tightening near gray neutrality.
- Multi-asset/Multi-TF: Defaults work across forex and stocks on 1H–Daily; for crypto volatility, shorten EMA Length to 20–30. Pair with volume oscillators for confirmation, avoiding isolated use.
Behavior, Constraints & Performance
- Repaint/confirmation: Plots update on bar close using historical closes, so confirmed signals hold; live bars may shift until close but without future references.
- security()/HTF: Not used, eliminating related repaint risks.
- Resources: Minimal overhead—no loops, arrays, or bar limits exceeded; suitable for real-time on any timeframe.
- Known limits: Fixed zones may lag in strong trends (price drifts away without reset); signals skip if no gap from prior zone, potentially missing clustered shifts. Assumes standard OHLC data; untested on non-equity assets.
Sensible Defaults & Quick Tuning
Start with EMA Length at 50 and Smoother Length at 3 for balanced daily charts. If signals fire too frequently (e.g., in ranges), extend EMA Length to 100 for fewer but stabler zones. For sluggish response in trends, drop Smoother Length to 2 and EMA Length to 30, monitoring for added noise. In high-vol setups, widen both to 75/5 to filter extremes, trading speed for reliability.
What this indicator is—and isn’t
This is a lightweight visualization layer for EMA-driven zones, aiding manual chart reading and basic signal spotting. It is not a standalone system, predictive model, or automated alert generator—integrate with broader analysis like market structure and risk rules. (Unknown/Optional: No built-in alerts or multi-timeframe scaling.)
Disclaimer
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
Do not use this indicator on Heikin-Ashi, Renko, Kagi, Point-and-Figure, or Range charts, as these chart types can produce unrealistic results for signal markers and alerts.
Best regards and happy trading
Chervolino Indicator
