Indicator

Trender [IQ]IQ Trender - TradingIQ
🔹 OVERVIEW
IQ Trender is a non-repainting trend rail built around one simple visual language:
Flat = range. Ramp = trend. Brightness = conviction.
Most trend tools try to follow every movement in price. In sideways conditions, that can leave you reading a line that bends, twitches, and changes direction inside the same noise you were trying to filter.
IQ Trender is designed to behave differently. While the market remains inside its adaptive hold zone, the rail stays deliberately flat. When the underlying trend evidence becomes strong enough, it commits to a rising or falling leg and moves in one direction until that condition genuinely changes.
The result is a clean distinction between three market states:
Holding - the rail is flat and the market is being treated as a range or consolidation.
Rising - the rail has committed to an upward leg.
Falling - the rail has committed to a downward leg.
Direction is shown by color. Conviction is shown by color intensity and glow. The Trender Radar explains the current state numerically, while the Ghost Forecast extends the rail's present trajectory into a fading uncertainty cone.
This is a trend-reading and visualization tool, not a signal service. It does not issue buy or sell calls, and it makes no claim of profitability or predictive certainty.
🔹 THE ONE-LINE MENTAL MODEL
The fastest way to read IQ Trender is to ignore the mathematics at first and watch the shape of the rail:
A flat rail means the model is holding through noise.
An upward ramp means the model has committed to a rising leg.
A downward ramp means the model has committed to a falling leg.
A stronger glow means the estimated trend is showing greater statistical conviction.
This is the same sequence demonstrated in the walkthrough: a directional leg can flatten during a pause, pullback, or consolidation, then recommit if the broader move resumes. The bearish interpretation is the mirror image - falling leg, flat hold, then a renewed falling leg if downside evidence returns.
The flat section is important. It is not a prediction that a breakout is about to happen. It is the indicator saying that current movement has not earned a directional commitment.
🔸 HOW THE ENGINE WORKS
IQ Trender combines three separate jobs: estimating the trend beneath price, deciding whether that trend is statistically meaningful, and drawing a rail that cannot wiggle backward within a committed leg.
Track the underlying trend
A robust local-linear Kalman filter estimates the level and slope beneath the candles. Unlike a conventional moving average that applies a fixed weighting pattern, this is a state-estimation model: it updates its estimate from the difference between expected and observed price.
Large isolated deviations are reduced with a robust update, so a single wick cannot directly yank the rail to a new location. The model also adapts its measurement-noise estimate as conditions change.
⬞
Measure the uncertainty
The filter calculates an innovation deviation - a live estimate of how much movement is normal relative to its current model. IQ Trender uses that value to size the hold band.
When conditions are noisy, the tolerance can widen. When conditions are calmer, it can tighten. This lets the same mental model adapt across different symbols, price levels, and timeframes without using one fixed distance everywhere.
⬞
Test for commitment and change
The estimated slope is compared with its own uncertainty to produce conviction. Hysteresis uses separate thresholds for entering and leaving a committed trend, helping prevent repeated state changes near one boundary.
A two-sided cumulative change test also monitors standardized price surprises. That evidence helps the rail distinguish a genuine opposing change from ordinary counter-movement when a leg is already active.
⬞
Draw the rail
The visible rail is a separate, slew-limited ratchet guided by the Kalman center. Once an upward leg begins, the rail can only move upward until a valid reversal or hold condition is reached. Once a downward leg begins, it can only move downward.
That monotone-within-leg behavior is what creates IQ Trender's signature geometry: flat holds connected by clean directional ramps instead of a line that bends around every candle.
🔹 THE ADAPTIVE HOLD BAND
The shaded band is the rail's live range corridor.
While the rail is holding, the band opens around it to show the volatility-adjusted area in which price can move without forcing a directional leg. When the rail commits to a trend, the displayed band eases shut onto the rail because the model has left its holding state. When the rail becomes flat again, the band gradually reopens.
The band should be read as a model tolerance, not as conventional support and resistance. Price moving within it means the model can continue to hold. Movement beyond it contributes evidence for a new leg, but it is not, by itself, a guaranteed breakout or trade entry.
🔸 COLOR, GLOW & CONVICTION
IQ Trender communicates direction and commitment through one coordinated visual system:
Rising color - active upward leg.
Falling color - active downward leg.
Holding color - neutral, flat state.
Glow intensity - visual emphasis derived from the current conviction reading.
Conviction measures how strongly the estimated slope differs from zero relative to the model's uncertainty. It is a statistical strength reading, not the probability that a trade will win.
The palette is generated in the Oklab perceptual color space. Hue, lightness, and vibrancy can be adjusted as a coordinated system, while out-of-gamut colors are compressed toward neutral instead of clipping harshly.
Accessibility controls include deuteranopia, protanopia, and tritanopia modes, plus automatic contrast correction against the chart background. A selectable contrast target helps keep the rail and directional Radar accents legible across light and dark themes.
🔹 TRENDER RADAR
The Trender Radar is the live scorecard in the corner of the chart. It reports:
State - HOLDING, RISING, or FALLING.
Conviction - normalized trend commitment from 0-100%.
Slope - the rail's current rate of change per bar.
Hold Band - the current full width of the adaptive range corridor.
Behavior - the active Speed and Pursuit combination.
With Log Geometry enabled, slope is displayed as a percentage per bar and band width is expressed as a percentage of the rail. With linear geometry, both are shown in price units.
The Radar can be moved to any chart corner or disabled entirely.
🔸 GHOST FORECAST
The Ghost Forecast is a translucent forward projection of the rail's current slope.
Its centerline extends the rail's recent trajectory. The surrounding cone widens with distance to communicate increasing uncertainty, then fades away toward the horizon. Two growth modes are available:
√h - tighter near the live bar, then gradually widening like a random-walk spread.
Linear - uncertainty expands at a constant rate.
The forecast is rebuilt only at the live edge and never painted into historical bars. It can also be displayed while the rail is holding, where its centerline remains flat.
This feature is a trajectory read, not a price target. It answers, Where is the rail currently heading if its present slope persists? It does not answer, Where will price trade?
🔹 FLIP MARKERS & ALERTS
Optional markers identify confirmed changes in rail state:
▲ - committed to a rising leg.
▼ - committed to a falling leg.
◇ - flattened back into a hold, when hold markers are enabled.
Markers are created only on confirmed bars. Once printed, they do not move.
Matching alert conditions are included for:
Trender committed to a rising trend.
Trender committed to a falling trend.
Trender flattened into a hold.
These alerts report state changes in the model. They are not automated trade recommendations and should be interpreted in the context of the symbol, timeframe, market structure, and the user's own risk process.
🔸 SPEED - THE OVERALL TEMPO
Speed changes the rail's pursuit rate and the width of its hold zone together:
Glacier - calm, structural behavior for slower or higher-timeframe reading.
Slow - patient swing behavior with a wider hold zone.
Balanced - the recommended reference setting, balancing hold and tracking.
Fast - more reactive behavior for shorter intraday movement.
Scalp - the tightest and quickest micro follower.
Slower settings generally require more displacement and move the rail more gradually. Faster settings use a tighter band and pursue price more aggressively. A faster preset is not automatically better: responsiveness and noise rejection are opposing trade-offs.
🔸 PURSUIT - HOW A COMMITTED LEG MOVES
Pursuit changes the shape of an active leg without changing the underlying trend evidence:
Steady - a constant-speed ramp established when the leg begins.
Eased - pursuit speed scales with conviction and feathers toward the estimated center.
Snap - the most decisive pursuit, with a higher movement rate and faster conviction scaling.
On slower Speed presets, Snap can appear more step-like. Steady produces the cleanest constant ramps, while Eased creates a softer approach.
🔹 HOW TO READ IQ TRENDER
Start with state
Flat rail means the model is holding. Rising or falling rail means it has committed directionally. This gives the chart an immediate range-versus-trend read before any number is considered.
⬞
Weigh the leg
Use conviction, glow, and slope together. A bright rail with firm slope represents stronger model commitment. Fading conviction says the trend estimate is becoming less distinct from noise; it does not guarantee an immediate reversal.
⬞
Watch the sequence
One useful continuation framework is:
Rising rail.
Flat hold during consolidation or pullback.
New rising marker and renewed upward rail.
The bearish sequence is the inverse. This is a way to organize market context, not a complete entry system.
⬞
Keep the forecast in its proper role
Use the Ghost Forecast to visualize current trajectory and uncertainty. Do not treat the cone edge or centerline as a promised future level.
⬞
Confirm with your own process
IQ Trender can be combined with price structure, volume, liquidity, momentum, or a trader's existing risk framework. No single state, marker, or Radar value should replace position sizing and independent confirmation.
🔸 INPUTS
Behavior
Speed
Pursuit
Source & Geometry
Price Source
Use Log Geometry
Close with Log Geometry enabled is the recommended general-purpose setup for ordinary positive price series. Log mode keeps slope and band behavior proportional across different price levels.
Rail, Band & Glow
Hold Band on/off
Band transparency
Rail Glow on/off
Glow intensity
Glow spread
Rail line width
Colors
Rising, Falling, and Holding anchors
Global hue rotation
Lightness adjustment
Vibrancy adjustment
Conviction Color response
Accessibility
Color-Blind Mode
Auto Contrast
Contrast Ratio
State Readout
Show Trender Radar
Radar location
Forecast
Ghost Forecast on/off
Horizon in bars
√h or Linear cone growth
Show While Holding
Markers
Flip Markers on/off
Optional hold markers
Marker size
🔹 NON-REPAINTING BEHAVIOR
IQ Trender is calculated causally with no future-bar lookahead.
Confirmed historical rail values and confirmed flip markers remain where they were calculated. The current, still-open bar can update as new price arrives, as any live indicator can. The Ghost Forecast is intentionally rebuilt at the live edge because it represents the rail's current slope and uncertainty; it does not rewrite historical bars.
What was confirmed in history stays confirmed. What is still live remains live.
🔸 LIMITATIONS & HONEST NOTES
IQ Trender is an indicator, not a validated trading strategy. It makes no performance, win-rate, profit, or edge claim.
Kalman filtering is still a causal estimation process. It reduces noise but cannot remove lag, uncertainty, or false transitions.
Faster settings react sooner but can respond to more noise. Slower settings filter more movement but can confirm later.
A Holding state identifies insufficient directional commitment in this model; it does not guarantee that price will remain inside a range or that a breakout is imminent.
Conviction measures the strength of the estimated slope relative to uncertainty. It is not a probability of future direction or trade success.
The Ghost Forecast extrapolates the rail, not price. It is a visual scenario if the current trajectory persists, not a target or prediction.
Alerts and markers identify model state transitions only. They should not be treated as standalone entries or exits.
Results depend on symbol behavior, timeframe, data quality, and the selected Speed/Pursuit combination.
IQ Trender is built to make one difficult market question easier to see:
Is the market still ranging, or has a trend actually committed?
One rail. Three states. No hindsight redraws.
Indicator

Leg Anatomy - Measured Retracement and ExtensionEvery trader draws the same three numbers on every chart: 38.2, 50 and 61.8. Those numbers were not derived from this market, this timeframe, or this instrument. They were not derived from any market. They are a convention that spread because it spread.
This script measures the real thing instead.
WHAT IT MEASURES
Price is broken into confirmed swing legs. A running extreme is tracked, and when price closes back from that extreme by more than a configurable multiple of ATR, the extreme is confirmed as a swing and a new leg begins.
Every completed leg is measured as a ratio of the leg immediately before it. A leg that travelled 60 percent of the previous leg records 0.60. A leg that went 140 percent past it records 1.40. That single number, the leg-to-leg ratio, is the entire dataset.
From the last N legs on the chart you have open, the panel reports:
The median leg, expressed as a multiple of the one before it.
The interquartile range, the middle half of the distribution.
The share of legs that were shallow, under 0.62.
The share that were deep, between 0.62 and 1.00.
The share that were extensions, past 1.00.
On some symbols and timeframes the conventional levels sit close to the measured centre. On many they do not, and the gap between what a chart actually does and what the convention assumes is visible in one row of the panel.
THE PROJECTION
The distribution is not left as a table. It is applied forward.
The leg currently forming starts from the last confirmed swing, and the leg before it has a known size. Multiplying that size by the measured median, upper quartile and ninetieth percentile gives three projected endpoints, drawn as a shaded zone in front of price with a dashed median line and a price label.
The panel shows how far the forming leg has travelled as a percentage of its median expectation. Below 100 percent the leg is still inside its normal range. Above it, the leg has already outrun the typical case for this chart, which is information whether you are holding it or fading it.
The zone is not a forecast. It is where the middle of the distribution sits, and roughly half of past legs fell short of it.
THE SKELETON
Confirmed legs are drawn as a thick zigzag across the chart, each one labelled with its own ratio, so the distribution in the panel can be read directly off the price action that produced it. Candles are tinted by the direction of the leg currently forming.
Because swings only confirm on closed bars and a confirmed swing is never revisited, the skeleton behind price is final. Only the leg at the right edge is still forming, and the projection zone updates only when a new leg is confirmed.
SETUPS
When a swing confirms, a new leg begins, and the script produces a complete setup at that close.
The stop sits just beyond the swing that was just confirmed, plus an ATR buffer. That swing is the level the leg depends on. If it goes, the leg reading was wrong.
The three targets are the lower quartile, the median and the upper quartile of the measured distribution, projected from the swing. They are not multiples of risk and they are not conventional ratios. They are the shape of this chart's own legs.
Only one setup is tracked at a time. The panel records whether the first target or the stop was reached first, and prints collecting until the sample is large enough to mean anything. That number measures one mechanical rule and is not a backtest.
SETTINGS
Reversal Threshold is the only structural dial. It decides what counts as a leg. A low value produces many small legs and a distribution dominated by noise. A high value produces few large legs and a distribution with a small sample. The default sits between the two, and changing it changes the entire analysis, which is the point: a leg on a scalping horizon is not a leg on a swing horizon, and the measured distribution should differ between them.
Volatility Length sets the ATR lookback used for the reversal threshold and the stop buffer.
Legs Kept In Sample bounds the history, so the distribution tracks the current regime instead of averaging in a market from years ago.
REPAINTING
Swing confirmation, leg measurement, the distribution, setups and alerts all evaluate on confirmed bars. A confirmed swing is never moved and a drawn leg is never redrawn. The projection zone in front of price is recomputed only when a new leg begins. The script requests no higher timeframe data.
HOW TO READ IT
Start with the three share rows. If a chart shows most of its legs under 0.62, it is a market that retraces shallowly and continuation is the base case. If most legs sit between 0.62 and 1.00, it is a market that gives deep pullbacks and entering early is expensive. A high share above 1.00 is a trending regime where each leg outruns the last.
Then look at the forming leg's progress. A leg at 40 percent of median with a distribution that favours extension is a different situation from a leg at 130 percent in a market that rarely extends.
The ratios printed on the skeleton let you check the panel against your own eyes rather than trusting it.
This is an analysis tool, not financial advice, and not a trading system. A measured distribution describes what happened, not what will. Sample sizes are small by the standards of statistics and regimes change. Use it with your own risk management and position sizing. Indicator

Average Daily Range ProjectionWHAT IT DOES
The Average Daily Range (ADR) Projection converts a historical average range into live price levels based on the range already realized during the current session.
Rather than anchoring fixed ADR bands to the session open or another single reference price, the indicator conditions each projection on the session's developing high and low. It answers a specific question: given the range already traded, where would price need to reach for this session to equal its recent average range?
Two independent sets let you compare separate baselines, such as the regular trading session versus the full futures session or a short lookback versus a longer one. This shows when price has satisfied one definition of its typical range while remaining below another.
CALCULATION
For each set, the indicator averages high minus low over up to the most recent N completed session windows. The ADR is fixed at the start of a new session; only the projected prices change as the current high and low develop. A partial session encountered when the script first loads is excluded.
Let ADR be the historical average, H the current session high, and L the current session low:
remaining = max(ADR - (H - L), 0)
upper projection = H + remaining
lower projection = L - remaining
Before the session has completed its ADR, these reduce to:
upper projection = L + ADR
lower projection = H - ADR
These are conditional range-completion thresholds. A new high raises the lower projection, while a new low lowers the upper projection. As realized range expands, the additional movement required to equal ADR decreases. A reached threshold freezes and is labeled FILLED.
HOW TO READ IT
An open projection marks the price that would complete the configured average range in that direction, assuming the opposite session extreme does not change first. Its distance from price represents remaining range relative to the benchmark, not a prediction that price will reach it.
A FILLED label means the session range has reached or exceeded that set's trailing mean. If one set is filled while the other remains open, the session has satisfied one baseline but not the other.
Previous-session lines may be retained to review completed thresholds on the selected instrument and timeframe.
INPUTS
ADR Period sets the maximum number of completed sessions in each average. During initial data collection, the indicator starts after one complete session and uses the available sample until the selected period is populated.
Session Start, Session End, and Timezone define each measurement window; overnight windows are supported. Set 1 and Set 2 may use different windows, ADR periods, and styling. Show Previous Sessions retains completed levels, while Max Previous Sessions limits their number. Other controls manage labels, first-fill emphasis, and the optional information table.
The default Pacific-time windows are:
Set 1: 06:30 to 13:55, 14-session ADR
Set 2: 15:00 to 13:55, 14-session ADR
ALERTS
Four alert conditions cover upper and lower fills for both sets.
LIMITATIONS AND CALCULATION BEHAVIOR
ADR is a trailing sample mean, not a percentile, confidence interval, forecast, or estimate of reversal probability. Reaching it does not establish that a move is rare, exhausted, or likely to reverse. Outliers and volatility-regime changes can materially affect the average.
The script does not use future data or lookahead and does not repaint completed levels from future information. Active projections intentionally update as the session high or low changes, including during an open realtime bar. Completed-session lines show final or filled levels, not every level occupied intraday. Label Offset moves labels to the right for readability only; it does not reference future prices.
Calculations use extended-hours data so a full-session window remains intact on a regular-hours chart. Results depend on the data supplied by the symbol's feed, and an off-chart fill may already be marked when the next visible bar opens.
Designed for intraday charts with standard candles. Synthetic chart types can produce ranges and alerts based on synthetic prices rather than actual traded OHLC values. Indicator

Linear Regression Drag-Drop,custom deviations & gridOverview
This indicator lets you draw a precise linear regression channel between any two points in time that you choose — simply drag two time anchors onto the chart. Unlike PulseWire's built-in regression tool, which is locked to a fixed lookback, this script gives you full manual control over the exact start and end of the regression window, plus a deviation-based channel, an optional mirrored grid, and a live stats table to help you judge the quality of the fit.
How It Works
Two draggable time anchors. You place a Start Time and an End Time directly on the chart. The script finds the bars closest to each timestamp and runs a least-squares linear regression on price between them.
Deviation channel . Around the regression line, the script plots four deviation bands (1x–4x). You can choose how the deviation is calculated:
StdDev — the statistical standard error of the residuals (how far price actually strayed from the line).
Points (Pips) — a fixed pip value you define, useful when you want consistent, comparable band widths across different sessions or instruments rather than a value that changes with volatility.
Grid. A second set of lines can be drawn as a mirror image of the regression channel, anchored at the end point. You can choose:
Mirror Lines — the mirror slopes in the opposite direction, useful for spotting counter-trend zones.
Zero Slope — the mirror is flattened to horizontal, useful for marking flat reaction levels.
None — hide the mirror set entirely.
A vertical shift input lets you offset the whole mirrored grid up or down by a multiple of the deviation, so it doesn't have to originate from the same anchor point as the main channel.
Fill and time markers . The area between the deviation bands is shaded, and vertical lines mark your two chosen times, so the exact regression window is always visible at a glance.
Stats table. A table (position and appearance configurable) shows:
Slope (%/day) — the trend's daily rate of change, normalized as a percentage of the starting price, so it's comparable across instruments and timeframes.
R² — how well the straight line actually fits price over that window (color-coded green/yellow/red).
Deviation — shown directly in pips.
Bars — the number of bars in the regression window.
How To Use
Drag the Start Time and End Time anchors onto the swing points, session boundaries, or range you want to analyze. The information table is there to help you judge whether a setup is high-probability before you act on it — not every regression window is worth trading, and the table is your filter:
Deviation tends to fit best on AUD/USD and EUR/USD when the pip size is set to a multiple of 10. Other currency pairs (JPY pairs, for example) will usually need a different pip size to get a well-scaled channel — adjust to taste per instrument.
Slope (%/day) gives you a quick read on trend strength: roughly 0.15% = a slow trend, 0.5% = a moderate trend, 1%+ = a steep trend. Use this as a guide for how aggressively price is moving through the window, not as a hard rule.
R² is helps quality check. A high R² means price tracked the line cleanly (more reliable for directional/continuation reads); a low R² means the window was choppy and the line is describing a range rather than a trend (better suited to mean-reversion reads at the deviation bands).
Grid mode adds a second dimension to your analysis: use Mirror Lines to project counter-trend/reversal zones, and Zero Slope to mark horizontal reaction levels. Combined with the ability to freely drag your time anchors to any two points on the chart, this turns the indicator into a fast, repeatable way to test different swing points and see how price is likely to react at the resulting grid levels.
Like any regression-based tool, its usefulness comes from context and repetition. The more windows and instruments you test it against, the better your feel for which slope/R²/deviation combinations mark genuinely high-probability points versus noise — the power of this indicator unfolds with practice.
Notes
This tool describes historical price behavior over a chosen window; it does not predict future price with certainty. Always combine it with your own risk management and additional confluence.
Deviation bands are descriptive statistics, not guaranteed support/resistance — treat penetrations of the outer bands as information, not automatic signals.
Indicator

FractalMemoryLib [Jayadev Rana]FractalMemoryLib packages the pattern-memory engine used by the Fractal Memory Projection indicator and the Fractal Memory Strategy so any script can import it.
WHAT IT DOES
The library finds the historical window whose movement shape most resembles the most recent bars (mean squared distance between stdev-normalized log returns), replays what followed that window as a projected close path, and sizes stops and targets adaptively by volatility regime.
EXPORTED FUNCTIONS
logRet(src) - one-bar log return of a series.
bestMatch(src, winLen, scanDepth, gapAhead) - scans up to scanDepth bars back and returns the offset of the most similar window plus a 0-100 similarity score. gapAhead reserves bars after the match for a projection.
analogPath(src, offset, fcLen, scaleF) - array of fcLen projected closes built by replaying the returns that followed the match, rescaled by scaleF (for example current ATR over ATR at the match).
adaptiveR(atrLen, rankLen, base) - volatility-adaptive unit risk: ATR times (base plus its 0-1 percentile rank), plus the rank itself. Call on every bar.
volRegime(volRank) - "Low", "Normal" or "High" label from the rank.
targets(entry, dirSign, unitR, slMult) - stop loss and TP1/TP2/TP3 at 1R, 2R and 3R.
USAGE NOTES
Call adaptiveR on every bar for ta consistency. bestMatch and analogPath are loop-heavy; for display purposes call them on the last bar only, and make sure the chart has at least scanDepth plus gapAhead bars of history. When the library itself is added to a chart it draws a small demo projection line from the best analog.
The analog projection is a statistical reference to a similar past episode, not a prediction, and not financial advice. Library

Volatility Forecast [EXCAVO]Forward Projection of the Bollinger Envelope with Adaptive Horizon and Slope Clamp
The Volatility Forecast takes the classical Bollinger Bands and
projects the basis and the bands forward by a configurable number of bars.
Slopes of the basis, standard deviation and ATR are estimated from linear
regression over a lookback window, then extrapolated through a smooth
curve into the right side of the chart. Small orange dots mark band
reclaim events on confirmed closed bars.
The forecast horizon adapts to the chart timeframe so the projection
stays meaningful at every TF, and a slope clamp prevents the bands from
ballooning into unrealistic territory after sharp regime shifts.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ HOW TO USE
Step 1 → Add the indicator. The current Bollinger Bands are
plotted on the chart and a dashed envelope extends to the
right with the projected basis and bands.
Step 2 → Read the projection. The projected upper and lower
bands show the most likely volatility envelope over the
next bars under the current trend and volatility regime.
Wider end = expansion expected; narrower end = compression.
Step 3 → Use the reclaim dots. A small orange dot below a bar
marks a confirmed bull band reclaim (price tagged the lower
band and pulled back inside). A dot above a bar marks a
bear reclaim. These are context, not entries.
Step 4 → Check the dashboard. The top right panel reads the
projection mode, current width vs its rolling average,
band state, and the last reclaim.
Step 5 → Combine with structure. The envelope pairs well with
trend and structure tools. A breakout that aligns with an
expanding projected envelope tends to continue; one against
a contracting envelope tends to fade.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ HOW IT CALCULATES
◆ Bollinger Bands
Basis is a simple moving average of the source over Length (default 20).
Standard deviation is computed over the same window. Bands are basis plus
or minus Multiplier times standard deviation (default 2.0). These are the
solid plotted lines on the chart.
◆ Linear Regression Slopes
For the projection, the algorithm estimates per-bar slopes from a linear
regression of the basis, the standard deviation, and the ATR over the
Slope Lookback window (default 40). Slope is taken as the difference
between the linreg value at offset 0 and offset 1 - the per-bar drift
the regression expects to continue.
◆ Slope Clamp
Each slope is then clamped to a safety bound so that the cumulative
projected displacement stays sensible. End to end, the projected basis
cannot drift more than two current band-widths, and the projected
standard deviation or ATR cannot grow more than 50% of its current value.
Sign of the slope is preserved so trend direction is intact, only the
magnitude is bounded. This keeps the projection meaningful after sharp
regime shifts.
◆ Forward Projection
Three modes turn slopes into a projected envelope across the forecast
horizon:
Linear extends basis and width on a straight line using the
current slope at every step.
Smooth Curve (default) eases from the current value toward a
dynamic endpoint via a smoothstep curve so the projection has a
natural arc instead of a hard linear extrapolation.
Adaptive Volatility drives the projected width with ATR slope
instead of standard-deviation slope. Useful when volatility is
regime-dependent and the ATR captures it better than stdev.
A projection floor at 50% ensures the envelope never collapses to a
single point on declining-volatility regimes.
◆ Auto Timeframe Forecast
Forecast Bars defaults to Auto, which picks the horizon from the chart
timeframe: 40 bars on 4h and below, 20 on Daily, 10 on Weekly, 6 on
Monthly+. Manual override is available for operators who want a fixed
bar count regardless of timeframe.
◆ Band Reclaim Markers
A bull reclaim fires when the prior bar's low touched the lower band,
the current bar's low has pulled back above the lower band, and the
close sits below the basis. A bear reclaim is symmetric on the upper
band. Cooldown of Length bars prevents same-direction stacking. The
optional Trend MA filter keeps bull marks only above the MA and bear
marks only below. By default markers fire only on confirmed closed bars
(no repaint); Real-time Markers can be enabled if intra-bar feedback is
preferred.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ WHAT MAKES IT DIFFERENT
◆ Adaptive Horizon
The forecast horizon scales with the chart timeframe. The projection
shows a comparable arc on intraday, daily, weekly and monthly without
manual tuning per chart.
◆ Slope Clamp Safety Net
Linear-regression slopes can overshoot after sharp moves or on long
horizons. The clamp caps the cumulative displacement so the projection
cannot grow into unrealistic ranges, regardless of the underlying slope.
◆ Three Projection Modes
Linear, Smooth Curve and Adaptive Volatility cover the common shapes a
volatility envelope can take. Smooth Curve uses smoothstep easing for
a natural arc; Adaptive Volatility ignores stdev drift and tracks ATR
instead.
◆ Confirmed Reclaim Markers
Small orange dots above or below the bar mark band reclaim events. They
fire on confirmed closed bars by default (no repaint), with an optional
real-time mode for operators who prefer intra-bar feedback. A trend-MA
filter keeps the bias clean.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ DASHBOARD
Real-time panel with the current state read:
Mode - Linear / Smooth Curve / Adaptive Volatility
Width vs Avg - current band width relative to its rolling average
Band State - where price sits in the bands (Above Upper / Below Lower / Upper Half / Lower Half)
Last Marker - direction and bars since the last band reclaim
Legend table explains every on-chart element. Both panels toggle in the
Dashboard settings.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ SETTINGS
Bollinger Bands
Source - close (price series used for basis and stdev)
Length - 20 (lookback for basis and stdev)
Multiplier - 2.0 (band width in stdev units)
Basis / Band / Fill Colors - default palette
Forecast Envelope
Forecast Bars Mode - Auto (adapts to chart TF) or Manual
Forecast Bars (Manual) - 40 (used when Mode = Manual)
Slope Lookback - 40 (linreg window for slope estimation)
Mode - Smooth Curve (Linear / Smooth Curve / Adaptive Volatility)
Projection Style / Width / Colors - dashed, default palette
Fill Projection - ON
Reclaim Markers
Show Markers - ON
Real-time Markers - OFF (no repaint by default; closed bars only)
Filter by Trend MA - ON
Trend MA Type - SMA (SMA / EMA / WMA / HMA)
Trend MA Length - 100
Marker Color - orange (#FF8C00)
Show Trend MA - OFF
Dashboard
Show Dashboard - ON
Dashboard Position - Top Right
Show Legend - ON
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ ALERTS
Two directional alertconditions are exposed:
Bull Band Reclaim - fires on a confirmed bull reclaim event
Bear Band Reclaim - fires on a confirmed bear reclaim event
Set the alert condition to "Once Per Bar Close" for clean, non-repainting
delivery. Trend-MA filter and cooldown apply to alerts the same way they
apply to the on-chart markers.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Best regards,
EXCAVO
Disclaimer
Trading involves significant risk. This indicator is a technical analysis
tool and does not constitute financial advice, investment recommendations,
or a guarantee of future results. Past indicator behavior does not
guarantee future performance. Always use proper risk management and your
own judgment.
Indicator

EMA Horizon█ OVERVIEW
The EMA Horizon indicator offers a modern, structural upgrade to the classic Exponential Moving Average. While standard EMAs are indispensable tools for trend identification, they inherently suffer from "live candle blindness" —flickering wildly on the current unclosed bar and causing traders to miss critical intraday touches or fall into false breakout traps.
EMA Horizon solves this by calculating an immediate forward-looking volatility corridor based on the asset's actual physical extremes (High/Low), anchored tightly to its closing history. It provides an unchanging, reliable boundary range for the current candle asset space, allowing traders to see exactly where the EMA would be pushed under extreme conditions.
---
█ THE PROBLEM WITH STANDARD EMAs
A standard EMA updates continuously based on the live ticking close . During highly volatile periods, the indicator line bends and flexes dramatically inside the current bar. This real-time distortion creates two major issues:
The Flicker Trap: Price can spike out of an EMA zone and snap back before the candle closes, leaving no historical trace of the breach and causing missed execution opportunities.
Lagging Boundaries: Standard bands (like envelopes or Keltner channels) look backward at historical averages. They fail to tell you how a single massive, aggressive live expansion bar will mathematically impact the underlying moving average trend line right now.
---
█ THE SOLUTION & MECHANICAL EDGE
EMA Horizon does not simply calculate an EMA of all Highs or all Lows (which smoothly degrades accuracy over time). Instead, it preserves the integrity of pure historical closing prices up to the immediate moment.
From that clean historical baseline, it executes a "one-off" look-ahead calculation: it processes the current candle's High and Low as if they were the immediate next closing prices .
The High Band shows the ultimate ceiling the EMA could reach on the next step.
The Low Band shows the absolute floor the EMA could drop to on the next step.
By utilizing the built-in Bands Offset parameter, you can shift this entire calculation forward across your timeline. When shifted, the boundaries sitting under your live candle are locked—derived entirely from the previous candle's completed structure. This eliminates real-time repainting and gives you an unshakeable roadmap for price interaction.
---
█ FEATURES
Pure History Anchoring: The base EMA line relies strictly on closing prices, ensuring your core trend logic remains untainted by extreme wicks.
Next-Bar Step Simulation: Dynamically maps out the mathematical limits of the moving average based on immediate price expansion boundaries.
Global Visual Alignment: The script features a unique global offset parameter that shifts both the baseline EMA and its projection bands uniformly. This completely avoids visual distortion and allows you to perfectly map historical structures without losing physical perspective.
---
█ HOW TO USE
Add to Chart: Search for "EMA Horizon" in your PulseWire indicator panel and apply it.
Configure your Length: Adjust the Length input to match your primary trend tracking asset class (e.g., 9 for short-term momentum, 21 or 50 for structural trends).
Set your Offset Look:
Set Bands Offset to 0 to observe the real-time maximum range expansion matching the current candle's high/low.
Set Bands Offset to 1 to push the indicator one bar to the right. This allows you to track how the current live asset price responds to the locked, unchangeable projection generated by the previous closed bar.
Identify True Deviations: Watch for instances where a candle aggressively drives through the green horizon cloud. If the asset price slices cleanly past the projected bands, it indicates an exhaustion phase or an institutional velocity breakout that goes beyond standard mathematical trend boundaries.
Indicator

Market State Forecast Projection EngineThis indicator is a **forecast projection tool**. It looks at the current market environment, searches history for the most similar environments, then plots what usually happened afterward. It is not trying to predict the future with certainty. It is saying: “When the market looked like this before, what tended to happen next?”
The engine defines the current market environment using three things:
* **Trend**, based on moving averages.
* **Momentum**, based on RSI.
* **Volatility**, based on ATR.
Then it finds the closest historical matches, studies their future paths, and draws a forecast line with optional upper and lower bands.
---
## What You See on the Chart
### Forecast Midline
The main forecast line shows the **average path** of the selected historical matches.
In simple terms:
* If similar past situations usually moved higher, the line slopes up.
* If similar past situations usually moved lower, the line slopes down.
* If similar past situations were mixed, the line may be flat or choppy.
### Upper Band
The upper band shows the stronger side of historical outcomes.
It means:
* Some similar historical setups moved better than the average.
* The upper band gives you a visual idea of the upside range from those past examples.
* It is not a guaranteed target.
### Lower Band
The lower band shows the weaker side of historical outcomes.
It means:
* Some similar historical setups moved worse than the average.
* The lower band gives you a visual idea of downside risk from those past examples.
* It is not a guaranteed support level.
### Band Width
The space between the bands matters.
* Tight bands mean historical outcomes were more consistent.
* Wide bands mean historical outcomes were scattered and less reliable.
* A forecast with wide bands should be treated with more caution.
---
## Main Inputs
### Non-Repaint Mode
**Default: On**
This controls whether the forecast uses the live candle or the last completed candle.
Use **Non-Repaint Mode On** when:
* You want more stable signals.
* You want the forecast to update only after the candle closes.
* You care about cleaner historical testing.
Use **Non-Repaint Mode Off** when:
* You want the forecast to react during the current live candle.
* You accept that the forecast may change before the candle closes.
For most use cases, leave this **On**.
---
## Model Group
### Forecast Horizon
This controls how far into the future the indicator projects.
Example:
* On a daily chart, `20` means 20 trading days.
* On a 1-hour chart, `20` means 20 hours.
* On a 5-minute chart, `20` means 20 five-minute candles.
Use a lower value when:
* You are trading short-term moves.
* You want a tighter forecast window.
* You do not want the projection stretched too far.
Use a higher value when:
* You are looking for swing-trade context.
* You want to see the broader projected path.
* You are using higher timeframes.
A practical range is usually:
* `10–20` for shorter-term analysis.
* `20–50` for swing-style analysis.
---
### Search Depth
This controls how much history the engine searches.
Example:
* `1000` means the engine searches roughly 1,000 prior bars.
* `2000` means it searches more history.
* `500` means it searches less history.
Use a higher Search Depth when:
* You want a larger historical sample.
* You are on a short timeframe with lots of bars.
* You want more possible market-state comparisons.
Use a lower Search Depth when:
* You want the model to focus on more recent market behavior.
* You are on a slower chart like daily or weekly.
* You want less influence from older market regimes.
The tradeoff is simple:
* More history gives more examples.
* Less history may be more relevant to the current market regime.
---
### Pattern Matches
This controls how many of the closest historical matches are used.
This is one of the most important inputs.
If set to `30`, the engine finds the **30 closest historical market states** and builds the forecast from those.
Use fewer matches when:
* You want stricter, more specific comparisons.
* You want only the closest historical examples.
* You are okay with a forecast that may be more reactive.
Use more matches when:
* You want a smoother forecast.
* You want less noise from individual examples.
* You want a broader historical sample.
General interpretation:
* `10–20` = stricter, more selective.
* `25–40` = balanced.
* `50+` = broader, smoother, but less specific.
---
### Weight Closer Matches
This controls whether the best matches receive more influence.
When turned **On**:
* The closest historical matches matter more.
* Weaker matches still count, but less heavily.
* The forecast becomes more focused on the most similar examples.
When turned **Off**:
* Every selected match is treated equally.
* The forecast becomes more democratic.
* A very close match and a weaker match have the same influence.
For most users, leave this **On**.
---
## Advanced Model Inputs
### Forecast Model
This chooses how the engine defines the market environment.
All models use:
* EMA trend.
* RSI momentum.
* ATR volatility.
The difference is how each model emphasizes those ingredients.
---
### Conservative
Use **Conservative** when you want a slower, smoother model.
It is designed to:
* React less aggressively.
* Favor more stable market environments.
* Put more importance on trend and volatility.
* Reduce noisy forecast changes.
Best for:
* Daily charts.
* Swing trading.
* Slower-moving stocks or ETFs.
* Users who want fewer false shifts.
---
### Balanced
Use **Balanced** as the general-purpose default.
It is designed to:
* Give trend, momentum, and volatility a normal balance.
* Work across many markets.
* Avoid being too slow or too fast.
Best for:
* Most users.
* Most chart timeframes.
* General market forecasting.
* Starting point before testing other models.
---
### Aggressive
Use **Aggressive** when you want a faster model.
It is designed to:
* React more quickly to changing momentum.
* Give more influence to short-term market shifts.
* Be more sensitive to fresh moves.
Best for:
* Intraday trading.
* Fast-moving markets.
* Crypto.
* Momentum names.
* Traders who want earlier, more responsive shifts.
The downside is that it may be noisier.
---
### Trend Following
Use **Trend Following** when you want the model to emphasize persistent directional moves.
It is designed to:
* Care more about trend structure.
* Care less about short-term momentum noise.
* Favor markets that continue moving in the same direction.
Best for:
* Strong trending stocks.
* Indexes.
* Breakout environments.
* Higher-timeframe directional trading.
This model is less ideal in sideways or choppy markets.
---
### Mean Reversion
Use **Mean Reversion** when you want the model to focus on stretched conditions.
It is designed to:
* Emphasize momentum extremes.
* Look for environments where price may snap back or reverse.
* Care less about long-term trend persistence.
Best for:
* Range-bound markets.
* Overbought/oversold setups.
* Countertrend analysis.
* Shorter-term reversal ideas.
This model may fight strong trends, so use it carefully in momentum-heavy markets.
---
## Historical Lookback Inputs
### Lookback Bars
This lets you move the forecast backward in time.
Example:
* `0` means current forecast.
* `50` means show what the forecast would have looked like 50 bars ago.
* `250` means show what the forecast would have looked like 250 bars ago.
Use this for:
* Visual backtesting.
* Studying old setups.
* Checking whether the forecast was useful historically.
* Comparing forecast paths against what actually happened.
This is one of the most valuable testing features.
---
### Lock to Candle
This lets you anchor the forecast to a specific candle time instead of a simple bar offset.
Use it when:
* You want to test a specific time of day.
* You trade a regular session open.
* You want repeatable historical anchors.
Example:
* You can lock to the 13:30 UTC candle, which often corresponds to the U.S. stock market open during daylight saving time.
When this is off, the indicator uses **Lookback Bars** instead.
---
### Days Back
This works with **Lock to Candle**.
It tells the indicator how many matching anchor candles to go back.
Example:
* `0` = most recent matching candle.
* `1` = one matching session back.
* `2` = two matching sessions back.
Use this when:
* You want to test the most recent open.
* You want to test yesterday’s open.
* You want to step through past sessions one by one.
---
### Hour UTC
This is the UTC hour used for candle locking.
Use it with **Minute UTC** to identify the exact candle you want.
Example:
* `13` means 13:00 UTC.
* Combined with `30`, it means 13:30 UTC.
This is useful because PulseWire symbols and sessions can vary, but UTC gives a consistent anchor.
---
### Minute UTC
This is the UTC minute used for candle locking.
Example:
* Hour UTC = `13`
* Minute UTC = `30`
Together, that means:
* Lock to the 13:30 UTC candle.
Use this for precise historical testing.
---
### Auto Previous Session
This controls what happens if today’s target candle has not printed yet.
When turned **On**:
* The indicator automatically uses the most recent previous matching candle.
* This keeps the forecast visible even before today’s target time exists.
When turned **Off**:
* If today’s target candle has not printed, the lock may show no match and fall back.
For most users, leave this **On**.
---
## Bias Logic Inputs
### Bias Threshold %
This controls how strong the bull or bear probability must be before the indicator labels the forecast bullish or bearish.
Example:
* If Bias Threshold is `60`, Bull Probability must be at least 60% before a bullish label can appear.
* If Bear Probability is at least 60%, a bearish label can appear.
Use a lower threshold when:
* You want more frequent bias labels.
* You are okay with weaker directional evidence.
Use a higher threshold when:
* You want stricter signals.
* You only want stronger historical agreement.
Practical range:
* `60%` = balanced.
* `70%+` = more conservative.
* `50–55%` = loose and more signal-heavy.
---
### Minimum Bull/Bear Edge %
This controls how large the gap must be between Bull Probability and Bear Probability.
Example:
* Bull Probability = 65%
* Bear Probability = 35%
* Edge = 30 percentage points
If the minimum edge is `15`, this would qualify.
But:
* Bull Probability = 58%
* Bear Probability = 42%
* Edge = 16 percentage points
This may still fail if Bull Probability is below the Bias Threshold.
This input prevents weak differences from being labeled as strong directional bias.
Use a higher edge when:
* You want cleaner bias labels.
* You want the model to avoid borderline calls.
Use a lower edge when:
* You want more frequent directional bias.
* You accept more uncertainty.
---
## Display Inputs
### Show Forecast Midline
This turns the main forecast line on or off.
Turn it **On** when:
* You want to see the projected average path.
Turn it **Off** when:
* You only want the info box probabilities.
* You want a cleaner chart.
---
### Show Confidence Bands
This turns the upper and lower forecast bands on or off.
Turn it **On** when:
* You want to see the historical range of outcomes.
* You care about uncertainty.
* You want to know whether the forecast is tight or messy.
Turn it **Off** when:
* You only want the central forecast.
* The chart feels too cluttered.
---
### Band Width Multiplier
This controls how wide the bands are.
Higher values make the bands wider.
Lower values make the bands tighter.
Use lower values when:
* You want a cleaner, tighter visual range.
* You want bands closer to the average forecast.
Use higher values when:
* You want to see a broader range of historical outcomes.
* You want a more conservative uncertainty envelope.
Default `1.0` is a good starting point.
---
## Forecast Midline Style Inputs
### Forecast Midline Color
Controls the color of the main projection line.
The default aqua color makes it visually distinct from price candles.
### Forecast Midline Width
Controls how thick the midline is.
Use a thicker line when:
* You want the forecast to stand out.
* You are using a busy chart.
Use a thinner line when:
* You want a cleaner chart.
* You use many overlays.
### Forecast Midline Type
Controls whether the line is:
* Solid.
* Dashed.
* Dotted.
Solid is usually best for the main forecast line.
---
## Upper Band Style Inputs
### Upper Band Color
Controls the color of the upper forecast band.
The default green tone suggests upside range.
### Upper Band Width
Controls how thick the upper band is.
A thin dashed line usually works best because it should be secondary to the midline.
### Upper Band Type
Controls whether the upper band is solid, dashed, or dotted.
Dashed is usually best because it visually communicates “range” rather than “target.”
---
## Lower Band Style Inputs
### Lower Band Color
Controls the color of the lower forecast band.
The default red tone suggests downside range.
### Lower Band Width
Controls how thick the lower band is.
A thin line keeps it useful without dominating the chart.
### Lower Band Type
Controls whether the lower band is solid, dashed, or dotted.
Dashed is usually best for the same reason as the upper band.
---
## Info Box Inputs
### Show Info Box
This turns the dashboard on or off.
Turn it **On** when:
* You want the probabilities and diagnostics visible.
* You are actively evaluating the forecast.
Turn it **Off** when:
* You only want the chart projection.
* You want a cleaner visual layout.
---
### Info Box Position
Controls where the dashboard appears.
Options:
* Top Left.
* Top Right.
* Bottom Left.
* Bottom Right.
Use the position that interferes least with price action on your chart.
---
### Text Size
Controls the dashboard text size.
Use:
* **Tiny** for compact charts.
* **Small** for normal use.
* **Normal** if you want easier reading.
* **Large** for presentations or large monitors.
---
### Background
Controls the info box background color.
A darker background usually works best on most PulseWire chart themes.
### Border
Controls the info box border color.
This helps separate the dashboard from the chart.
### Header Text
Controls the title/header text color.
### Header Background
Controls the top header row background.
This gives the dashboard its polished look.
---
## Info Box Metrics
### Bull Prob %
This shows the weighted percentage of selected historical matches that ended bullish.
Simple meaning:
> Of the similar historical market states, how many tended to move up?
A high number means bullish outcomes dominated the selected historical matches.
---
### Bear Prob %
This shows the weighted percentage of selected historical matches that ended bearish.
Simple meaning:
> Of the similar historical market states, how many tended to move down?
A high number means bearish outcomes dominated the selected historical matches.
---
### Direction Bias
This shows the final label after applying the bias rules.
Possible outputs:
* Bullish.
* Bearish.
* None.
* Weak Data.
* No Matches.
A bullish or bearish label only appears when the probability and edge requirements are met.
---
### Bull/Bear/Flat
This shows how many selected matches ended:
* Bullish.
* Bearish.
* Flat.
Example:
* `18 / 9 / 3`
This means:
* 18 bullish historical outcomes.
* 9 bearish historical outcomes.
* 3 flat historical outcomes.
This gives you a quick look at the underlying distribution.
---
### Match Count
This shows how many historical matches were actually used.
If Pattern Matches is set to `30`, Match Count should usually show `30`.
If it shows less, there may not have been enough valid historical data.
---
### Fit Quality
This tells you how closely the selected historical matches resemble the current market state.
High Fit Quality means:
* The current market environment closely resembles the selected historical examples.
Low Fit Quality means:
* The engine found matches, but they were not very close.
Important:
* Fit Quality is not win rate.
* Fit Quality is not probability.
* Fit Quality is not accuracy.
* It only measures how good the historical comparisons are.
Best interpretation:
* High Fit Quality + strong Bull/Bear Probability = more compelling.
* High Fit Quality + split probabilities = similar markets existed, but outcomes were mixed.
* Low Fit Quality = be cautious.
---
### Model
This shows which Forecast Model is active.
Examples:
* Balanced.
* Conservative.
* Aggressive.
* Trend Following.
* Mean Reversion.
This is useful for screenshots and reviewing past setups.
---
### Anchor
This tells you where the forecast is anchored.
Examples:
* `0 bars · NR` means current forecast using Non-Repaint Mode.
* `50 bars · NR` means historical forecast from 50 bars ago.
* `Locked` means it is anchored to a specific UTC candle.
This helps you know whether you are looking at a current forecast or a historical replay.
---
### Search Depth
This shows the actual number of bars being searched.
It may be lower than your input if the chart does not have enough loaded history.
---
## Best Practical Way to Use It
A clean workflow would be:
* Start with **Balanced** model.
* Keep **Non-Repaint Mode On**.
* Use **Pattern Matches around 30**.
* Use **Search Depth around 1000**.
* Watch **Fit Quality**.
* Watch **Bull/Bear Probability**.
* Treat the forecast line as a scenario path, not a guaranteed prediction.
* Use **Lookback Bars** to test whether the forecast was historically useful.
* Avoid trusting any forecast where the bands are very wide and probabilities are split.
The strongest setup is usually when:
* Fit Quality is high.
* Bull or Bear Probability is clearly dominant.
* The forecast bands are not extremely wide.
* The projection agrees with price structure.
Indicator

CISD Projection Ledger [JOAT]CISD Projection Ledger
Introduction
CPL CISD Projection Ledger is an open-source projection overlay that detects confirmed directional delivery shifts, then projects a structured target ledger from the qualifying run range.
The indicator focuses on one job: finding a qualifying run, confirming the open-cross shift on a closed bar, and tracking which projection tiers have been reached or invalidated.
Core Concepts
1. Directional Run Engine
Bars are grouped into directional runs based on close-to-close progression. A run must meet the minimum bar count before it can qualify.
2. Edge Filter
The prior run must form near the upper or lower region of the recent lookback range before a CISD event can trigger.
3. Open-Cross Confirmation
A bullish CISD requires a prior bearish run and a confirmed close back above the prior run open. Bearish logic is mirrored.
4. Projection Ledger
Five tiers are projected from the confirmed run range using configurable multipliers.
5. Reached and Invalid States
Each tier fades after it is reached. The whole ledger invalidates if price closes beyond the opposite reference side.
Features
Confirmed CISD trigger: Uses closed-bar open-cross confirmation
Range edge filter: Avoids projecting every minor run flip
Five-tier ledger: Customizable projection multipliers
Reached-level tracking: Levels visually fade after completion
Invalidation logic: Opposite-side failure changes state
Ledger band: Transparent fill from base to furthest target
Top-right dashboard: Shows base, range, tier prices, reached status, and active state
Alerts: Includes bullish and bearish CISD confirmations
Input Parameters
Run Engine:
Minimum Run Bars
Range Lookback
Edge Window
Ledger:
Tier 1 through Tier 5 multipliers
How to Use
Step 1: Wait for a confirmed bullish or bearish CISD state in the dashboard.
Step 2: Use the base level and projected tiers as a structured map of possible delivery objectives.
Step 3: Watch reached status. Faded levels indicate completed tiers.
Step 4: Respect invalidation. An invalid ledger means the original delivery thesis failed.
Limitations
Projection levels are analytical references, not guaranteed targets
Strong reversals can invalidate a ledger quickly
The edge filter may skip valid-looking setups that are not near the configured range edge
The indicator should not be used without independent trade management
Originality Statement
CPL is an original JOAT implementation that transforms directional run logic into a confirmed CISD ledger with tier tracking, invalidation, and a restrained institutional visual system.
Disclaimer
This script is for educational and informational purposes only. It is not financial advice and does not guarantee future results. Trading involves risk, and users should apply their own risk management.
Made with passion by jackofalltrades
Indicator

Supertrend Extensions [BOSWaves]Supertrend Extensions - Trend Flip Extension Mapping with Volume-Captured Deviation Level Progression
Overview
Supertrend Extensions is a trend extension mapping system that projects a structured set of deviation levels from each trend flip, where level spacing, crossing detection, and volume capture behavior are driven by the instrument's average range rather than fixed price distances, creating a dynamic extension framework that scales to any instrument or timeframe and records participation data at each milestone as price progresses through the projected levels.
Instead of treating a trend flip as simply a directional signal, each flip generates an immediate sequence of extension levels projected from the flip price in the new trend direction. These levels serve as structured targets and monitoring points throughout the developing move. When price crosses each level, it converts from a numbered solid line to a dashed reference displaying the crossing bar's volume, building a running record of participation quality at each stage of the trend's extension.
This creates a framework that transforms every trend flip into the origin point of a fully mapped extension sequence. The Supertrend band provides the directional anchor that triggers and validates each new projection set, while the deviation levels and their volume capture layer provide the structural and participatory intelligence needed to monitor how the trend is developing from flip through to full extension.
Price is therefore tracked not just for direction but for progression through a volatility-calibrated extension map where participation at each crossing reveals whether the move is being driven by conviction or fading with each successive level.
Conceptual Framework
Supertrend Extensions is founded on the principle that the most valuable information in a trending market is not just the direction of the trend but how price is progressing through extension space from the structural origin, and whether participation at each extension milestone is confirming or undermining the case for further progression.
Standard trend indicators identify direction and provide a trailing band but offer no framework for understanding extension behavior or monitoring participation quality as price moves away from the flip. This framework addresses that gap by treating each trend flip as the start of a measurable extension sequence, projecting levels at range-calibrated distances and capturing volume data as each level is crossed to build a continuously updating picture of trend health from origin to target.
Three core principles guide the design:
Each trend flip should immediately generate a structured extension map anchored to the flip price, providing a pre-calculated sequence of levels that serve as targets and monitoring points without requiring manual analysis.
Deviation level spacing should adapt to the instrument's actual average range, ensuring levels are meaningfully spaced relative to how the instrument typically moves rather than applying identical distances across all markets and timeframes.
Volume participation at each level crossing should be captured and permanently displayed, providing an objective record of whether price is moving through each extension milestone on strong or deteriorating participation.
This shifts trend analysis from directional signal monitoring into active extension progression tracking with volume evidence accumulated at every structural milestone.
Theoretical Foundation
The indicator combines a Supertrend band as the directional trigger, SMA-averaged range-derived deviation spacing for extension level placement, an array-managed line and label object system for level lifecycle management, and volume standard deviation normalization for candle color intensity.
Deviation level distances are derived from the 100-bar SMA of the high-low range multiplied by the configured deviation size, producing spacing that reflects the instrument's typical bar-level price movement and scales automatically as volatility expands or contracts between trend cycles. The array-managed line and label system clears all existing levels on each flip and projects a fresh numbered set, extending each line rightward until price crosses it or the next flip resets the map. Volume normalization divides raw volume by its rolling standard deviation to produce a score that drives candle color intensity relative to recent participation history rather than absolute values.
Four internal systems operate in tandem:
Deviation Level Projection System : On each trend flip, clears all existing deviation lines and labels and projects a fresh numbered sequence at average range-scaled intervals from the flip price in the new trend direction.
Level Extension and Crossing Engine : Extends each active deviation line rightward on every bar and monitors for price crossings in the trend direction, converting crossed levels to dashed references and replacing the level number label with the crossing bar's formatted volume.
Supertrend Band Engine : Provides the directional anchor that triggers each new projection set, maintaining trailing upper and lower bands that define current trend state and flip conditions.
Volume Intensity Candle System : Normalizes volume against its rolling standard deviation and maps the resulting score to a color gradient between a muted and fully saturated version of the trend color, communicating participation strength on every bar.
This design ensures that every trend flip immediately produces a complete extension framework, level crossings accumulate a volume evidence trail, and candle coloring provides continuous participation context throughout the trend's development.
How It Works
Supertrend Extensions evaluates price through a sequence of extension-aware and participation-monitoring processes:
Trend Flip Detection : The Supertrend band registers a flip when price closes through the opposing trailing band, triggering both the signal label and the deviation level projection sequence.
Deviation Distance Calculation : The 100-bar SMA of the high-low range is multiplied by the configured deviation size to produce the spacing distance between consecutive deviation levels for the new trend cycle.
Level Projection on Flip : All existing deviation lines and labels are deleted and a fresh numbered set is projected from the flip bar's close, with each level placed at a sequential multiple of the deviation distance in the new trend direction.
Level Extension : On each bar following the flip, all active deviation lines extend their right endpoint to the current bar, maintaining continuous horizontal reference lines across the developing trend.
Crossing Detection : Each active level is tested for price crossing on every bar, with bar highs tested against bullish levels and bar lows tested against bearish levels to identify genuine price contact with each extension milestone.
Volume Capture on Crossing : When a level is crossed, its line converts to dashed style with a dimmed color and the label text replaces the sequential number with the crossing bar's volume formatted for readability, permanently recording participation at that extension point.
Volume Intensity Candle Coloring : Each bar's volume is divided by its 200-bar rolling standard deviation to produce a normalized score capped at four, which maps to a color gradient from muted transparency at low participation to full trend color saturation at peak volume.
Signal Label Placement : Bullish flips produce a triangle-up label with the flip price below the Supertrend line and bearish flips produce a triangle-down label with the flip price above, anchoring each new extension map to its precise origin price.
Together, these elements form a continuously updating extension monitoring system where flip events generate structured projection maps, level crossings accumulate volume evidence, and candle intensity communicates participation strength throughout every stage of the trend.
Interpretation
Supertrend Extensions should be interpreted as a trend extension progression system with volume participation captured at each structural milestone:
Bullish Trend State (Green) : Active when price has closed above the trailing upper band, with deviation levels projected upward from the flip price as sequential bullish extension targets.
Bearish Trend State (Red) : Active when price has closed below the trailing lower band, with deviation levels projected downward from the flip price as sequential bearish extension targets.
Deviation Levels (Solid, Numbered) : Uncrossed extension levels projected from the most recent flip price, numbered sequentially from one outward in the trend direction, representing the structured target sequence for the current trend cycle.
Deviation Levels (Dashed, Volume Labeled) : Levels that have been crossed by price, converted to dashed style and displaying the crossing bar's volume rather than the level number. These form a permanent record of participation quality at each extension milestone already reached.
Volume Labels on Crossed Levels : Volume readings at crossed levels reveal whether price moved through each extension point on meaningful participation or on thin activity, providing an accumulated evidence trail for assessing trend conviction across the full extension sequence.
Supertrend Line : The solid colored band line provides the active trailing support or resistance reference for the current trend, serving as the invalidation boundary for the current directional state and the trigger for each new deviation level projection cycle.
Trend Fill : Gradient fill between the Supertrend line and the bar midpoint provides a continuous visual representation of the gap between price and the structural boundary.
▲ / ▼ Flip Signals : Triangle labels displaying the flip price mark each trend change origin, providing a clean visual anchor that corresponds to the starting point of the current deviation level projection set.
Volume Intensity Candles : Optional candle coloring brightens with above-average participation and fades toward a muted version of the trend color on low-volume bars, providing bar-level conviction readings without leaving the price chart.
Deviation level progression, volume at crossed levels, and candle intensity collectively provide more information than trend direction alone.
Signal Logic & Visual Cues
Supertrend Extensions presents two primary trend transition signals alongside continuous extension level monitoring:
Bullish Flip (▲) : Triggered when price closes above the trailing upper band, displaying the flip price below the bar and projecting a fresh set of upward deviation levels from the flip price.
Bearish Flip (▼) : Triggered when price closes below the trailing lower band, displaying the flip price above the bar and projecting a fresh set of downward deviation levels from the flip price.
Deviation level crossings provide continuous secondary context throughout each trend cycle, converting each extension milestone into a volume-stamped reference that builds a participation evidence log from flip to target.
Alert generation covers bullish and bearish trend flips for systematic trend monitoring and notification workflows.
Strategy Integration
Supertrend Extensions fits within structured extension target and trend progression monitoring approaches:
Deviation Level Target Sequencing : Use the projected deviation levels as a staged exit framework, planning partial position reductions at each sequential level rather than targeting a single fixed price, allowing structured progression management calibrated to each trend's specific origin and volatility context.
Volume Confirmation at Levels : Monitor the volume displayed when deviation levels are crossed to assess participation quality at each extension stage. Sustained or increasing volume at successive crossings supports further progression, while declining volume at each level warns of weakening extension commitment.
Flip-Based Trend Entries : Use Supertrend flip signals as primary trend initiation triggers, with the immediately projected deviation levels providing an instant target framework from the moment of entry.
Supertrend Band Pullback Reference : Use the Supertrend line as a dynamic pullback reference within established trends, monitoring candle volume intensity on band retests for participation evidence supporting continuation rather than breakdown.
Deviation Size Calibration by Timeframe : Adjust the deviation size multiplier to match the instrument's typical trend range at the target timeframe, ensuring the extension map spans a realistic distance relative to expected directional movement.
Multi-Timeframe Extension Alignment : Apply higher-timeframe Supertrend state as a directional bias filter, engaging with lower-timeframe extension level sequences only when they align with the established higher-timeframe trend direction.
Technical Implementation Details
Deviation System : 100-bar SMA of high-low range scaled by configurable deviation size multiplier with configurable level count
Level Lifecycle : Array-managed line and label objects cleared on each flip, extended rightward each bar, and converted to dashed references with volume labels on crossing
Supertrend Engine : ATR-scaled trailing band with configurable multiplier and length as directional anchor and flip trigger
Volume Normalization : 200-bar standard deviation-based scoring mapped to candle color gradient intensity
Visualization : Solid and dashed deviation levels with volume labels, Supertrend line with trend fill, flip signal labels, and volume-intensity candle coloring
Signal Logic : Band crossover state-switch detection with independent bullish and bearish flip conditions
Performance Profile : Optimized for real-time execution with array-based object management and max_bars_back configuration supporting deep historical calculation
Optimal Application Parameters
Timeframe Guidance:
1 - 5 min : Intraday extension mapping for scalping with tighter deviation spacing and lower level count for fast-moving target sequences
15 - 60 min : Session-level extension progression with balanced deviation size and moderate level count for structured intraday target management
4H - Daily : Swing-level extension mapping with wider deviation spacing and higher level count reflecting larger price swings between flip events
Suggested Baseline Configuration:
ATR Multiplier : 5.0
ATR Length : 14
Deviation Size : 2.7
Deviation Count : 4
Show Signals : Enabled
Color Candles : Enabled
These suggested parameters should be used as a baseline; their effectiveness depends on the instrument's typical extension range, average bar size, and preferred level density, so fine-tuning is expected for optimal performance.
Parameter Calibration Notes
Use the following adjustments to refine behavior without altering the core logic:
Deviation levels too close together : Increase Deviation Size to spread levels further apart relative to the average bar range, producing a wider extension map that better reflects the instrument's typical trend range at the target timeframe.
Deviation levels too far apart : Decrease Deviation Size toward 1.0 to tighten level spacing, producing more granular extension targets suited to lower timeframes or lower-volatility instruments.
Too many levels cluttering the chart : Reduce Deviation Count to limit projected levels to the nearest and most actionable targets, focusing the extension map on realistic near-term progression milestones.
Too few levels to cover the typical trend range : Increase Deviation Count up to the maximum of six to extend the projection sequence further, covering a wider range of potential extension targets for instruments with larger typical trending moves.
Too many trend flips resetting the extension map : Increase the ATR Multiplier to widen the Supertrend band and require more significant price displacement before a flip resets the deviation level sequence.
Trend flips too slow to capture structural changes : Decrease the ATR Multiplier toward 2.0 for a more responsive band that generates fresh extension maps closer to actual structural shifts in price direction.
Candle coloring too uniform : The volume intensity gradient operates on a standard deviation basis. On instruments with very consistent volume distribution the gradient range may appear compressed, which is expected and reflects genuinely low variation in participation levels.
Adjustments should be incremental and evaluated across multiple session types rather than isolated market conditions.
Performance Characteristics
High Effectiveness:
Trending markets with sustained directional moves where deviation levels are reached sequentially and volume at each crossing provides meaningful progression confirmation
Instruments with consistent average range behavior where deviation spacing calibrates reliably to the instrument's typical bar-level price movement across different trend cycles
Structured target-based approaches where the deviation level sequence provides a systematic exit framework calibrated to each trend's specific origin and volatility context
Multi-timeframe workflows where higher-timeframe trend direction filters lower-timeframe flip signals for directional alignment with the broader trend
Reduced Effectiveness:
Choppy, range-bound markets where frequent trend flips reset the extension map before price reaches the first deviation level, preventing a useful progression sequence from developing
Extremely volatile instruments where large individual bars cause the average range to spike, producing deviation spacing that overstates typical extension potential for subsequent trend cycles
Low-volume instruments where the standard deviation-based candle coloring loses discriminative power due to irregular or thin volume distribution
News-driven or gap-heavy markets where trend flips occur on discontinuous price action that distorts the average range calculation and misaligns deviation level placement relative to actual structural extension potential
Consolidation environments where price oscillates near the Supertrend band without establishing the sustained directional movement required for sequential deviation level progression
Integration Guidelines
Confluence : Combine with BOSWaves momentum tools, order flow analysis, or market structure indicators to validate trend flip signals and assess the broader analytical context before committing to deviation level target sequences
Volume Label Monitoring : Review volume labels on crossed deviation levels as a running confirmation log for the trend. Declining volume at successive levels suggests weakening extension commitment and warrants caution about remaining target progression.
Deviation Level Respect : Treat uncrossed deviation levels as active areas of potential price reaction rather than guaranteed targets. Monitoring candle behavior and volume intensity as price approaches each level provides early indication of whether the level will be crossed or act as a reversal point.
Extension Map Freshness : Recognize that deviation levels are anchored to the most recent flip price and reflect the volatility conditions at that specific origin point. As time passes within a trend cycle, reassess whether the projected levels remain relevant to current market conditions.
State Discipline : Maintain directional bias aligned with the current Supertrend state until a confirmed flip occurs. Temporary pullbacks toward the active band that do not close through it do not constitute trend changes and should not trigger premature exits from active extension target sequences.
Disclaimer
Supertrend Extensions is a professional-grade trend extension mapping and volume participation tracking tool. It uses range-calibrated deviation level projection with volume capture at each crossing but does not predict future price movements. Results depend on market conditions, instrument volatility characteristics, parameter selection, and disciplined execution. BOSWaves recommends deploying this indicator within a broader analytical framework that incorporates momentum context, order flow analysis, and comprehensive risk management. Indicator

Moving Average XLMoving Average XL is a customizable multi-moving-average overlay that allows traders to plot up to three separate moving averages on the chart at the same time. Each moving average can be independently enabled, adjusted, styled, and color-coded, making it useful for trend direction, dynamic support and resistance, crossover analysis, and multi-timeframe-style trend context.
Each MA group includes the same core settings. “Show MA” turns that moving average on or off. “Length” controls the number of candles used in the calculation, with shorter lengths reacting faster to price and longer lengths smoothing price action more heavily. “Type” lets the user choose between SMA, EMA, WMA, VWMA, RMA, and HMA depending on how responsive or smooth they want the line to be. “Line Style” changes the visual display between solid, stepline, or circles. “Line Thickness” controls the weight of the plotted line, and “Color” lets the user customize each average for easier chart reading.
This indicator is designed for traders who want a clean, flexible moving average tool without unnecessary clutter. Use shorter averages to track near-term momentum, medium averages to define intermediate trend direction, and longer averages to identify major trend bias or high-probability support and resistance areas. Indicator

Measured Move Projection Zones [AGPro Series]Measured Move Projection Zones
🔹 OVERVIEW
Measured Move Projection Zones is a premium price-action visualization tool built around one clear sequence: impulse, base, projection, and invalidation.
The script detects a qualified impulse leg, waits for a compact base range, then projects a measured-move target band from the base boundary. It also displays invalidation context, event labels, and a compact AGPro panel so the structure can be reviewed quickly on the chart.
The default profile is tuned for 1-hour charts, where measured-move structures need enough responsiveness to appear consistently while still avoiding low-quality micro-swings. The result is a clean projection map for traders who want structured continuation context without turning the chart into a dense extension grid.
This script is not designed to promise outcomes or mark every possible target. It is designed to make the measured-move workflow easier to see, compare, and audit.
🔹 WHAT MAKES IT DIFFERENT
Most projection tools start from a manual anchor, a generic extension grid, or a simple breakout distance. Measured Move Projection Zones is more selective.
It requires a directional impulse first. It then waits for a compact base. Only after the base qualifies does it create the projected target band and invalidation framework.
That sequence matters because it prevents the chart from becoming a collection of random forward boxes. The visual logic is always tied to a specific price-action chain:
Impulse leg -> base range -> projection band -> invalidation context.
The script also avoids the look of a traditional support/resistance map. The rectangles are not generic zones. They represent measured-move components: impulse body, base range, projected target band, and invalidation reference.
For public PulseWire presentation, the script is deliberately visual but controlled: moderated labels, visible structure boxes, no expired-label flood, and a compact panel that summarizes the current state.
🧭 WHY THIS DOES NOT OVERLAP WITH OTHER AGPRO TOOLS
This script stays in a narrow measured-move projection lane.
It does not overlap with ATR compression or volatility-map scripts because the core logic is not volatility contraction, expansion, or envelope behavior. ATR is only used for normalization, tolerance, and spacing.
It does not overlap with breakout-quality tools because it does not score a breakout event as the main product. Breakout beyond the base boundary only changes the measured-move state from armed to active.
It does not overlap with premium/discount or valuation-zone tools because it does not map equilibrium, discount, OTE, rebalance pockets, or fair value areas. Its target band is derived from an impulse leg and base boundary, not a valuation model.
It does not overlap with wedge, reversal, or pattern-scanner tools because it does not require converging rails, neckline behavior, double tops, double bottoms, head-and-shoulders logic, or multi-pattern classification.
It does not overlap with liquidity heatmap, bias dashboard, or volume-profile tools because it does not estimate liquidity fields, higher-timeframe directional bias, POC gravity, acceptance ladders, or volume shelves.
The differentiator is simple and specific: this is an impulse-base measured-move projection visualizer with target-band and invalidation context.
⚙️ METHODOLOGY
The methodology is built in stages:
1. Swing Confirmation
The script uses pivot confirmation to identify meaningful swing points. The default pivot setting is tuned for 1-hour chart rhythm.
2. Impulse Qualification
After a valid pivot sequence appears, the script measures the leg size in ATR units. The impulse must be large enough and must form within a reasonable bar window.
3. Base Validation
Once the impulse is confirmed, the script waits for a compact base range. The base must stay within a defined ATR height and avoid excessive retracement from the impulse end.
4. Projection Construction
When the base qualifies, the script projects a measured-move target band from the base boundary. The default multiplier is 1.00, representing a classic equal measured move.
5. Invalidation Context
The opposite side of the base receives an ATR-buffered invalidation guide. This does not create a trade command; it simply marks where the measured-move structure is no longer clean.
6. State Tracking
The setup moves through clear states: Waiting, Building Base, Armed, Projecting, Target Band, Invalidated, and Expired.
7. Visual Management
The script keeps a moderated amount of historical structure visible. Event labels are capped, expired labels are disabled by default, and the projection guide line is optional to keep the chart clean.
📊 PANEL
The AGPro panel is designed for quick structure review.
Panel rows include:
- State
- Direction
- Impulse Quality
- Projection Progress
- Target Distance
- Target Band
- Base Range
- Invalidation
The first panel row follows the AGPro public-release standard: one merged blue header row containing only the panel title.
Panel location is adjustable. Panel theme is adjustable. Panel font size is adjustable. The default size is Normal for a clean public-chart look.
🎛️ KEY INPUTS
1H Pivot Confirmation Length
Controls the swing confirmation used to anchor impulse legs. Lower values are more responsive. Higher values are more selective.
1H Minimum Impulse Size
Defines the minimum impulse strength in ATR units. The default is tuned to keep 1-hour charts active without accepting very small swings.
1H Base Range Bars
Controls how many bars are used to validate the post-impulse base. The default is shorter for hourly chart pacing.
1H Maximum Base Height
Limits how tall the base can be in ATR terms. This prevents wide ranges from being treated as clean measured-move bases.
1H Maximum Base Retracement
Controls how deeply price can retrace from the impulse end while still qualifying as a measured-move structure.
Measured Move Multiplier
Controls the projection distance. The default value of 1.00 represents an equal measured move.
1H Target Band Width
Controls the ATR-based visual tolerance around the projected target.
Invalidation Buffer
Places the invalidation guide beyond the opposite side of the base range.
1H Projection Bars
Controls how far the projected target band and base extension reach forward.
1H Projection Expiration
Controls how long an armed or active projection can remain open before it expires.
1H Event Label Retention
Controls whether the chart keeps a moderated history of event labels or only the latest event label.
1H Balanced Event Labels
Caps event labels so the chart remains informative but not overloaded.
Show Projection Guide Line
Optional dotted guide from the base boundary to the target band. Disabled by default on 1-hour charts to reduce diagonal clutter.
🔍 HOW TO READ IT
Waiting
No valid impulse-base sequence is active.
Building Base
An impulse has been detected and the script is watching for a compact base.
Armed
A valid base has formed. The projection framework is ready, and the target band is mapped forward.
Projecting
Price has moved beyond the base boundary and the measured-move structure is active.
Target Band
Price has interacted with the projected target band.
Invalidated
Price has closed beyond the invalidation guide, meaning the measured-move framework is no longer clean.
Expired
The projection did not complete within the selected expiration window.
Event labels provide a fast visual timeline. The boxes show where the measured structure came from, where the base formed, and where the projected band sits.
🧩 BEST USE CASES
This script is best used on 1-hour charts where traders want a clean view of impulse-base-continuation behavior.
Strong use cases include:
- Measuring continuation structures after a directional leg
- Comparing active projections against nearby price action
- Reviewing whether a base is compact enough to support a projection
- Mapping projected target zones without using a full extension grid
- Studying failed measured moves through invalidation labels and zones
- Creating cleaner screenshots for price-action review
The script can also be used on other timeframes, but the default settings were intentionally tuned around 1-hour structure density and visual balance.
🧠 VISUAL DESIGN PHILOSOPHY
The visual design is built around premium restraint.
The chart should not look empty, but it also should not look like every candle is receiving a signal. Measured Move Projection Zones keeps the main structural elements visible:
- Impulse boxes
- Base range boxes
- Projected target bands
- Invalidation zones or guides
- Moderated event labels
- Compact AGPro panel
Expired labels are disabled by default because they can quickly become noisy on hourly charts. Event labels are still preserved in a moderated amount so the chart has enough visual context.
The optional projection guide line is disabled by default because long diagonal lines can dominate a 1-hour screenshot. Users can enable it when they want a more explicit projection path.
The goal is a chart that looks structured, premium, and publication-ready while still being easy to read.
🔔 ALERTS
The script includes alert conditions for the core lifecycle events:
- Measured Move Armed
- Projection Active
- Target Band Interaction
- Projection Invalidated
- Projection Expired
These alerts are designed around structure states, not trade commands. They help users monitor when a measured-move framework forms, activates, interacts with the projected band, invalidates, or expires.
🔹 LIMITATIONS AND TRANSPARENCY
Measured Move Projection Zones is a structural visualization tool. It does not predict future price and does not claim that a projected target band will be reached.
Pivot-based swing logic confirms structure after the necessary bars have formed. This creates cleaner anchors, but it also means the script is not trying to label every move in real time before confirmation.
The target band is a measured projection derived from the impulse and base, not a certainty zone. Invalidation and expiration states are part of the design because failed measured moves are also useful information.
Settings matter. More aggressive inputs will create more structures. More conservative inputs will create fewer, cleaner structures.
✅ IDEAL USER
This script is ideal for traders who:
- Use 1-hour charts for price-action review
- Study impulse-base-continuation behavior
- Want measured-move target zones without a cluttered extension grid
- Prefer visual structure over heavy signal text
- Want a clean AGPro-style panel for quick state review
- Care about invalidation and failed projection context
- Need a public-chart-friendly tool that looks polished, focused, and easy to understand
Measured Move Projection Zones is built for users who want a disciplined projection framework on the chart: enough structure to be useful, enough restraint to stay premium. Indicator

ABCD Projection Zones [AGPro Series]ABCD Projection Zones
🔹 OVERVIEW
ABCD Projection Zones is a premium price-action projection tool built for traders who want a clean ABCD pattern map without turning the chart into a full harmonic scanner, Auto Fib suite, retracement dashboard, or broad pattern-recognition system.
The script focuses on one specific market-structure idea: a confirmed A-B-C swing sequence can project a forward D completion area when the A-B leg is measured from point C. Instead of plotting a single thin target line, the script converts that measured move into a practical projected completion zone. This makes the result easier to read on real charts where reactions often happen around an area rather than at one exact tick.
The tool detects the structure, measures the leg relationship, projects the completion zone, tracks the distance to that zone, and then follows the reaction lifecycle after price reaches it. The goal is a premium, readable ABCD projection workflow that helps traders understand where the current structure is, how mature it is, and how price is behaving around the projected completion area.
🔹 WHAT MAKES IT DIFFERENT
Many ABCD, projection, and pattern tools try to do too much at once. They combine multiple Fibonacci ratios, harmonic pattern names, extended target ladders, retracement grids, reversal labels, and broad pattern scanning into one chart overlay. That can look busy, but it often makes the active structure harder to understand.
ABCD Projection Zones takes a narrower and cleaner route.
It does not attempt to label every harmonic family.
It does not expose a full Fibonacci framework.
It does not place several competing projection targets on the chart.
It does not turn the layout into a generic support and resistance map.
The difference is the focused lane: confirmed ABCD swing projection, one projected completion zone, one reaction lifecycle, and a concise panel that explains the active setup.
The visual language is also different. The D area is shown as a forward rectangle with centered zone text inside the box. Active and archived zones stay named, labels use consistent sizing, and archived context remains muted so the active projection remains dominant.
🧭 WHY THIS DOES NOT OVERLAP WITH OTHER AGPRO TOOLS
This script is intentionally separated from other AGPro tools by scope, visual behavior, and analytical purpose.
It is not an Auto Fib Structure tool. It does not publish multiple retracement and extension levels, does not expose a full Fib grid, and does not present itself as a broad Fibonacci framework.
It is not a harmonic scanner. It does not label Gartley, Bat, Butterfly, Crab, Shark, or other harmonic families. It does not rank multiple harmonic candidates or compare pattern families.
It is not a generic support and resistance zone script. The rectangles are not general S/R zones. They are specifically ABCD completion and reaction zones derived from swing-leg symmetry.
It is not a trend dashboard, volatility map, liquidity sweep scanner, or broad price-action suite. Its job is only to map a confirmed A-B-C structure into a projected D completion zone and monitor the reaction state around that zone.
This makes the public release lane clear: a focused ABCD projection and reaction-zone tool for measured-move structure, not a duplicate of existing AGPro zone, Fib, S/R, harmonic, or dashboard concepts.
⚙️ METHODOLOGY
The script starts by detecting confirmed swing highs and lows using pivot-based structure logic. This gives the model cleaner A, B, and C points and helps reduce random candle noise.
After the A-B-C sequence is confirmed, the script measures the A-B leg and the B-C pullback. The B-C pullback is evaluated as a ratio of A-B, but this ratio is used as a structure-quality filter, not as a visible Fibonacci grid.
The projected D area is calculated by applying the A-B leg from point C. This creates an AB=CD style measured-move projection. The projected D price is then expanded into a rectangle using ATR-based padding so the completion area behaves like a practical reaction zone rather than a thin target.
The script then tracks the active projection lifecycle:
- Waiting: price has not yet approached the projected zone.
- Approaching: price is close enough to the zone to matter.
- Completed: price has reached the projected D area.
- Reacting: price is moving away from the zone after contact.
- Overrun: price has moved beyond the zone buffer.
- Expired: the projection window passed without completion.
The scoring model combines impulse quality, pullback quality, and structural alignment into a 0-100 score. This score is not a standalone signal; it is a compact way to summarize the quality of the active ABCD projection structure.
📊 PANEL
The AGPro panel is designed for quick chart reading without forcing the trader to inspect every object manually.
Panel fields:
- Leg Ratio: shows the B-C pullback size relative to A-B.
- Completion Distance: shows the current distance to the projected D zone in price and ATR terms.
- Reaction State: shows the active lifecycle state of the projection.
- Symmetry Quality: classifies the active setup as Weak, Developing, Clean, or Strong with directional context.
- Projection Progress: shows how far price has traveled from point C toward the projected D area.
- Score: summarizes the active setup quality from 0 to 100.
Panel standards:
- The first row is one merged blue AGPro header row.
- The header contains only the panel title.
- Panel location is adjustable.
- Panel theme is adjustable.
- Panel font size is adjustable.
🎛️ KEY INPUTS
Detection:
- Swing Left Strength
- Swing Right Strength
- ATR Length
- Minimum AB Leg Size ATR
- Minimum BC Pullback Ratio
- Maximum BC Pullback Ratio
Projection Zone:
- Projection Length Bars
- Zone Padding ATR
- Approach Distance ATR
- Overrun Buffer ATR
- Zone Fill Transparency
- Archived Zones
- Archived Zone Transparency
- Show Text Inside Zones
Visuals:
- Show ABCD Path
- Show ABCD Labels
- Show Completion Marker
- Label Font Size
- Label Offset ATR
- Completion Marker Offset Bars
Panel:
- Show Panel
- Panel Location
- Panel Theme
- Panel Font Size
🔍 HOW TO READ IT
Start with the A-B-C labels. Point A and point B define the impulse leg. Point C defines the pullback from which the measured-move projection begins.
The dotted projected path shows the C-D measured move. The forward rectangle marks the projected completion zone. If price is still far from that rectangle, the panel will usually show Waiting and a lower Projection Progress value.
As price moves toward the rectangle, Projection Progress increases and the Completion Distance decreases. When price reaches the zone, the script marks D Hit and changes the lifecycle state. After that, the most important reading is whether the zone becomes a Reaction Zone or an Overrun Zone.
Archived zones should be read as context, not as the main decision layer. They show previous projected reaction areas in a muted style so the chart does not feel empty, but the active zone remains the priority.
🧩 BEST USE CASES
This script is best suited for traders who study market structure, measured moves, swing projection, ABCD patterns, and reaction-zone behavior.
Strong use cases include:
- Mapping a clean ABCD completion area after a confirmed A-B-C structure.
- Tracking how close price is to a projected D area.
- Separating developing projections from completed projections.
- Watching for reaction behavior after price reaches a projected completion zone.
- Reviewing recent projected zones without overcrowding the chart.
- Keeping a clean price-action workflow without a full harmonic or Fib suite.
The script can be useful across different markets and timeframes, but it is most readable when swing structure is clear enough for pivot-based detection to identify meaningful A-B-C sequences.
🧠 VISUAL DESIGN PHILOSOPHY
The visual design is built around premium restraint.
The chart should not be empty, but it should also not be overloaded. The active ABCD projection needs to stand out clearly, while archived zones should provide background context without taking attention away from the current structure.
Visual standards used in this script:
- Active completion and reaction zones are drawn as forward rectangles.
- Zone text is written inside the rectangle.
- Zone text is horizontally and vertically centered.
- Zone text uses transparent label-center styling instead of extra external tags.
- Active and archived zone text uses the same label font-size control.
- Swing labels are offset with ATR so they do not sit inside candle bodies.
- The completion marker is compact and shifted away from nearby swing labels.
- The projected C-D path is visible but not visually dominant.
- Archived zones are muted to keep the active projection clean.
The result is a chart that communicates structure, projection, and reaction state without looking like a crowded signal board.
🔔 ALERTS
Included alert conditions:
- New ABCD Projection Zone: triggers when a new qualified ABCD projection is detected.
- ABCD Completion Reached: triggers when price reaches the active projected completion zone.
- ABCD Reaction Confirmed: triggers when price reacts away from the active completion zone.
- ABCD Zone Overrun: triggers when price moves beyond the configured zone buffer.
🔹 LIMITATIONS AND TRANSPARENCY
The script waits for confirmed pivot structure, so A, B, and C labels appear after swing confirmation rather than at the exact live turning point.
The projected D area is based on AB=CD symmetry and ATR-based zone padding. It is designed to map structure and reaction context, not to predict every reversal.
The script intentionally avoids a full harmonic library and full Fibonacci framework. This is a design choice, not a missing feature. The goal is to keep the public tool focused on ABCD projection zones.
During choppy or low-structure conditions, fewer clean setups may appear. Increasing or decreasing swing strength and leg-size filters can make the tool more selective or more responsive depending on the market and timeframe.
✅ IDEAL USER
This script is designed for traders who prefer clean structure tools over crowded all-in-one indicators.
The ideal user:
- Studies price action and swing structure.
- Wants a focused ABCD projection tool.
- Prefers zones over single-line targets.
- Wants reaction-state context after completion.
- Values clean chart presentation.
- Wants adjustable labels, panel location, and visual density.
- Does not want a full harmonic scanner or public Auto Fib suite.
ABCD Projection Zones is built for traders who want one clean projected completion lane: A-B-C structure, measured D zone, reaction state, and a premium AGPro visual presentation. Indicator

Indicator

Custom Opening Range + STDV📊 Custom Opening Range + STDV by GRCtrader
=== OVERVIEW ===
A flexible, professional-grade opening range analysis tool for any market session. Unlike fixed-time tools, this indicator lets you define the exact opening range start time (hour and minute), making it perfect for forex, crypto, indices, and alternative trading sessions. Automatically visualizes the opening range, center encroachment, and standard deviation extensions across multiple timeframes.
=== KEY FEATURES ===
✓ Custom Opening Range Time
- Define ANY start hour and minute (0-23 hours, 0-59 minutes)
- Perfect for 9:30 AM (US futures), London 08:00, Asian open, or any session
- Timezone offset adjustment for regional traders (ET, CT, PT, etc.)
- COMEX auto-detection for gold, silver, and other commodities
✓ Dynamic Opening Range Framework
- High/Low lines from your custom session start
- Center Encroachment (C.E.) midpoint for directional bias
- Multi-session historical tracking (configurable 1-20 sessions)
- Real-time label updates showing exact session times
✓ Extended Standard Deviation Bands
- Base STDV: 0.5, 1.0, 1.5, 2.0, 2.5 (always enabled)
- Extended STDV: 3.0, 3.5, 4.0, 4.5 (toggle via settings)
- Scales dynamically with opening range size
- Clean styling: solid, dotted, or dashed lines
✓ Intelligent Session Detection
- 30-minute bar analysis for accurate range capture
- Zero lag structure detection
- Duplicate session filtering
- Scales to any timeframe without distortion
=== USE CASES ===
• Forex Traders: London 08:00 open, Asian 00:00 open, NY 09:30 session
• Crypto Traders: Binance 00:00 UTC, custom exchange openings
• Commodity Traders: COMEX gold/silver opens, ICE energy sessions
• Stock Traders: Market open 09:30 ET, pre-market analysis
• Multi-Market Analysis: Compare opening range behavior across sessions
• Range Traders: Fade breaks, trade C.E. bounces on any opening
• Volatility Hunters: Extended STDV targets for breakout traders
=== SETTINGS ===
Opening Range Start Time:
• Opening Range Hour (0-23): Set the session hour
• Opening Range Minute (0-59): Set the session minute
• Example: 9:30 = "9" and "30" for US market open
Timezone & Market Detection:
• Futures Timezone Offset: Align charts to ET (-1 for CT, -2 for MT, -3 for PT)
• Auto-detects COMEX (GC, SI) for proper timezone handling
Display Options:
• Number of Opening Ranges: Show 1-20 historical sessions
• Show Opening Range: Toggle OR high/low lines
• Show Center Encroachment: Toggle C.E. midpoint line
• Show STDV Lines: Toggle all standard deviation bands
• Show Extended 3.0–4.5 STDV: Add extended targets for aggressive trades
Styling:
• OR Line Width & Color: Customize opening range visualization
• C.E. Line Width & Color: Customize center encroachment
• STDV Color, Width, Style: Choose solid/dotted/dashed lines
• STDV Labels: Toggle labels for clean chart (especially useful on crowded timeframes)
• Label Size: Tiny, small, normal, large
=== TECHNICAL DETAILS ===
Built on Pine Script v6 with:
- Efficient 30-minute bar data fetching via request.security()
- Dynamic time detection in America/New_York timezone reference
- Flexible offset adjustment for regional markets
- Smart line/label management (500 lines, 500 labels max)
- Full customization via Settings panel
- Zero repainting on bar close
=== OPEN SOURCE ===
This indicator is published as an open-source tool. Feel free to:
- Fork, modify, and redistribute for personal use
- Build derivatives and extended tools (multi-session comparisons, custom alerts, etc.)
- Share improvements with the community
- Use commercially with attribution
MPL 2.0 License: mozilla.org
=== TIPS ===
• For 9:30 AM ET futures: Hour = 9, Minute = 30, Offset = 1 (or 0 for COMEX)
• For London 08:00: Hour = 8, Minute = 0, Offset = 5 (adjust based on chart timezone)
• For 00:00 UTC (crypto): Hour = 0, Minute = 0, Offset adjusted to UTC reference
• Extended STDV is useful for swing traders; day traders typically use base 0.5–2.5 range
• Reduce label size on lower timeframes to avoid chart clutter
=== DISCLAIMER ===
This tool is for analysis and education purposes. Past performance does not guarantee future results. Always use proper risk management, position sizing, and confirm signals with your trading strategy. No financial advice is implied.
=== CREDITS ===
@grctrader | Built for traders, by traders | Open source for the community Indicator

HTF Volume Spike & Imbalance Projection [LuxAlgo]The HTF Volume Spike & Imbalance Projection indicator provides a comprehensive multi-timeframe analysis tool that projects higher timeframe (HTF) candle structures, volume spikes, and volume profiles directly onto the current chart. This script aims to bridge the gap between different time horizons, allowing traders to identify institutional interest, supply/demand zones, and significant order flow imbalances within an HTF context without ever switching timeframes.
🔶 USAGE
🔹 The Core Concept
While standard charts only show the OHLC of a candle, this indicator deconstructs a single large candle (e.g., a 1-hour candle) into its individual internal components. It looks for Volume Spikes (moments of high activity) and Stacked Imbalances (where aggressive participants stepped in repeatedly) to reveal the "story" inside the bar.
🔹 Reading the Projection
The indicator projects two visual blocks to the right of your current price action:
Ghost Bar (Left Block): This represents the previous completed HTF candle. It is faded out to provide historical context and show where the previous "value" was established. Current Bar (Right Block): This represents the HTF candle currently forming and updates in real-time as new data arrives.
Each block is divided into three distinct visual sections:
HTF Candle: A standard candle representation of the higher timeframe (Open, High, Low, Close). Scatter Plot (The Bubbles): Every bubble represents a volume spike that occurred on the lower timeframe (LTF) granularity. The size of the bubble indicates higher volume, while the color indicates buying (Green) or selling (Red) pressure. Dotted lines connect the High and Low of the candle to this zone for reference. Volume Profile (The Histogram): Displays the total distribution of volume across the entire HTF candle, highlighting high-volume nodes.
🔹 Key Feature: Stacked Imbalances
Look for the solid colored boxes behind the scatter plot bubbles. These "Stacked Imbalances" appear when 3 or more volume spikes of the same direction occur at the same price level within one HTF candle.
Bullish Imbalance (Green Box): Indicates a strong area of buying interest. These often act as support levels. Bearish Imbalance (Red Box): Indicates a strong area of selling interest. These often act as resistance levels.
🔹 On-Chart Bubbles
The bubbles visible on the actual candles of your chart are the same spikes shown in the projection.
A cluster of large bubbles at the top of a candle indicates exhaustion or heavy selling at the highs. Large bubbles at the bottom indicate a strong floor being built by buyers.
🔶 DETAILS
The indicator uses
request.security_lower_tf()
to pull granular data. By analyzing volume at this "Spike Granularity," the script can pinpoint specific price levels where volume exceeded a moving average by a user-defined multiplier.
🔹 Trading Tips
Identify Point of Control: Use the Volume Profile in the projection to see where the "Value" is. Trading usually gravitates back to high-volume areas. Trade the Imbalances: When price returns to a previously formed "Stacked Imbalance" box from the Ghost Bar, look for a reversal. These are high-probability areas where institutional activity was detected. Volatility Detection: If the scatter plot is empty, the current move is "low conviction" (low volume). If it's filled with large bubbles, big players are active.
🔶 SETTINGS
🔹 Higher Timeframe (Anchor)
HTF Anchor Timeframe: Defines the timeframe of the main projection. The "Auto" setting selects a logical HTF based on your current chart.
🔹 Volume Spike Detection
Spike Granularity: The lower timeframe used to find individual spikes. Volume Spike Multiplier: The threshold used to define a "spike" relative to the volume average. Volume MA Length: The lookback period for the volume average.
🔹 Advanced Features
Show Ghost (Previous) Bar: Toggles the visualization of the previous HTF period. Highlight Stacked Imbalances: Enables detection of price zones with high-frequency aggressive volume. Show Anchor Connection Lines: Toggles lines connecting chart levels to the projection block. Show Bubbles on Chart Candles: Toggles the LTF volume spikes directly on the main chart bars. Indicator

Volume Delta with Fibonacci Projection [UAlgo]Volume Delta Profile with Fibonacci Projection is a structure driven profiling tool that combines swing discovery, lower timeframe volume allocation, delta analysis, Fibonacci mapping, and forward target projection inside a single chart overlay. Its purpose is not only to show where price has moved, but also to show how participation was distributed inside that move and where the next projected objective levels may sit.
The script begins by identifying a dominant recent swing inside a user defined lookback window. Once that swing is found, it becomes the structural anchor for everything else in the indicator. The swing defines the full high to low range, the Fibonacci ladder, the profile segmentation, the delta bands, and the forward projection path. This creates a unified framework where all visual components are tied to the same market structure instead of being calculated independently.
A key part of the script is its lower timeframe profiling engine. It requests intrabar data from a lower timeframe and uses that data to distribute volume into price rows and Fibonacci bands inside the active swing. This allows the indicator to estimate where buying activity and selling activity were concentrated with far more detail than a simple bar based approximation. If lower timeframe data is unavailable for a given bar, the script falls back to the chart bar itself so the profile can still be built.
The profile section shows how total activity was distributed across the swing range, while the delta section shows which Fibonacci bands leaned more bullish or bearish in terms of estimated participation. A Point of Control line can also be drawn to highlight the most active profile row. In addition, the script projects a continuation path from a chosen Fibonacci level toward target extensions such as 100 percent, 127.2 percent, and 161.8 percent of the swing.
The result is a tool that can be used for structure analysis, premium and discount mapping, participation study, and projection planning. It is especially useful for traders who want to combine profile logic and Fibonacci logic inside the same structural framework rather than treating them as separate tools.
🔹 Features
🔸 Structure Based Swing Detection
The script automatically finds a recent dominant swing inside the selected lookback period and requires a minimum separation between the major high and low. This gives the indicator a clean structural base before any profile or projection is drawn.
🔸 Auto Lower Timeframe Intrabar Analysis
The indicator can automatically choose a lower timeframe for intrabar volume analysis based on the current chart timeframe. A custom intrabar timeframe can also be used if desired.
🔸 Volume Profile Across the Swing Range
The full swing range is divided into profile rows, and lower timeframe volume is distributed into those rows according to price overlap. This builds a true participation map across the swing rather than a simple one point volume assignment.
🔸 Delta by Fibonacci Band
In addition to row based profiling, the script also groups volume into six Fibonacci bands between the swing extremes. Each band receives estimated buy and sell volume, and the script calculates directional delta for each band.
🔸 Fib POC Highlighting
A Point of Control line can be displayed at the profile row with the highest total accumulated volume, giving the user a quick view of the strongest participation level inside the swing.
🔸 Flexible Row Sizing
Profile row size can be determined automatically from ATR and tick size, or it can be defined manually through ticks per row. This makes the profile adaptable to very different instruments.
🔸 Forward Projection Path
The script draws a projection path starting from a selected retracement level and extends it toward major target levels such as 100 percent, 127.2 percent, and 161.8 percent of the swing range.
🔸 Optional Target Boxes
Target zones can be shown as compact boxes around the projected objective levels, helping the user visualize likely reaction areas rather than only exact lines.
🔸 Bull and Bear Participation Coloring
The profile and delta display use directional coloring to separate estimated buying volume from estimated selling volume. This makes the participation structure much easier to read visually.
🔸 Complete Structural Integration
The swing line, Fibonacci levels, volume profile, delta profile, Point of Control, and projection targets all come from the same underlying swing. This keeps the whole tool internally consistent.
🔹 Calculations
1) Defining the Swing Object
type Swing
int startIndex
int endIndex
float startPrice
float endPrice
float lowPrice
float highPrice
float swingRange
bool bullish
int recentOffset
int olderOffset
This object stores the full structural context of the move being analyzed.
It contains:
where the swing starts,
where it ends,
the starting price,
the ending price,
the full low and high of the move,
the total range,
the direction,
and the bar offsets used for the profiling loop.
This is important because the script does not calculate the profile on an arbitrary fixed range. It first defines a real market swing and then builds all later logic from that anchor.
2) Choosing the Lower Timeframe Automatically
autoLowerTf() =>
if timeframe.isseconds
"1S"
else if timeframe.isminutes and timeframe.multiplier == 1
"1S"
else if timeframe.isintraday
"1"
else if timeframe.isdaily
"5"
else
"60"
This function selects a lower timeframe automatically according to the current chart timeframe.
Very fast charts use one second data.
Intraday charts use one minute data.
Daily charts use five minute data.
Higher charts default to sixty minute data.
The goal is to obtain more granular intrabar structure without forcing the user to choose a lower timeframe manually every time.
3) Computing Automatic Row Size
autoTicksPerRow(int atrLen) =>
int t = int(math.round((0.2 * ta.atr(atrLen)) / syminfo.mintick))
math.max(1, t)
When row size mode is set to Auto, the script derives the profile row size from ATR and tick size.
It takes twenty percent of ATR, converts that value into ticks, then enforces a minimum of one tick.
This creates a profile row height that adapts to the instrument’s current volatility instead of staying fixed across very different market conditions.
4) Finding the Major Swing
makeSwing(int lookback, int minBars) =>
int hiOff = -ta.highestbars(high, lookback)
int loOff = -ta.lowestbars(low, lookback)
int minSep = math.min(minBars, math.max(1, lookback - 1))
bool bullish = loOff > hiOff
int startIndex = bullish ? bar_index - loOff : bar_index - hiOff
int endIndex = bullish ? bar_index - hiOff : bar_index - loOff
float startPx = bullish ? lo : hi
float endPx = bullish ? hi : lo
This function discovers the dominant swing inside the selected lookback.
First, it locates the highest bar and lowest bar inside the lookback window. Then it determines which came first in time. If the low occurred earlier and the high occurred later, the swing is bullish. If the high occurred earlier and the low occurred later, the swing is bearish.
The function also forces a minimum separation between the swing endpoints. If the raw highest and lowest points are too close together, it searches farther out to build a more meaningful move.
So the swing used by the indicator is not just the highest high and lowest low. It is a structurally filtered move with time separation and direction.
5) Fibonacci Price Calculation
method fibPrice(Swing s, float ratio) =>
s.bullish ? s.highPrice - s.swingRange * ratio : s.lowPrice + s.swingRange * ratio
This method converts a Fibonacci ratio into an actual price inside the current swing.
For bullish swings, ratios are measured downward from the swing high.
For bearish swings, ratios are measured upward from the swing low.
So the Fibonacci ladder always respects swing direction and preserves the standard premium and discount interpretation.
6) Defining the Six Internal Fibonacci Bands
method bandRatioAt(Swing s, int slot) =>
float r = 0.0
if s.bullish
switch slot
0 => r := 1.000
1 => r := 0.786
2 => r := 0.618
3 => r := 0.500
4 => r := 0.382
5 => r := 0.236
6 => r := 0.000
else
switch slot
0 => r := 0.000
1 => r := 0.236
2 => r := 0.382
3 => r := 0.500
4 => r := 0.618
5 => r := 0.786
6 => r := 1.000
r
These ratio slots define the six profiling bands used in the delta section.
The bands span the space between:
1.000 and 0.786
0.786 and 0.618
0.618 and 0.500
0.500 and 0.382
0.382 and 0.236
0.236 and 0.000
The order is reversed automatically for bearish swings so the structure remains directionally consistent.
So the delta section is not arbitrary. It measures directional participation inside familiar Fibonacci zones.
7) Mapping Prices Into Profile Rows
locateRowIndex(float lowPrice, float highPrice, float step, int rows, float price) =>
float clampedPrice = math.max(lowPrice, math.min(highPrice, price))
int idx = int(math.floor((clampedPrice - lowPrice) / step))
math.max(0, math.min(rows - 1, idx))
This helper function converts any price into its corresponding profile row.
The price is first clamped inside the swing boundaries. Then the script measures how far above the swing low the price sits and divides that by the row step size.
This gives the row index where the price belongs. That mapping is necessary for distributing intrabar volume into the correct profile level.
8) Mapping Prices Into Fibonacci Bands
locateBandIndex(Swing s, float price) =>
float clampedPrice = math.max(s.lowPrice, math.min(s.highPrice, price))
int idx = 5
for b = 0 to 5
float p1 = s.bandPriceAt(b)
float p2 = s.bandPriceAt(b + 1)
float bandLow = math.min(p1, p2)
float bandHigh = math.max(p1, p2)
bool inside = b == 5 ? (clampedPrice >= bandLow and clampedPrice <= bandHigh) : (clampedPrice >= bandLow and clampedPrice < bandHigh)
if inside
idx := b
break
idx
This function assigns a price to one of the six Fibonacci bands.
It walks through the band boundaries one by one, checks where the price sits, and returns the matching band index.
That index is later used when a bar or an intrabar has zero height or when band overlap needs to be accumulated. So this function is the bridge between raw prices and the delta profile zones.
9) Lower Timeframe Data Request
string ltf = useCustomLtf ? customLtf : autoLowerTf()
= request.security_lower_tf(syminfo.tickerid, ltf, )
This is the intrabar engine.
The script first decides whether to use the automatic lower timeframe or the custom user defined one. Then it requests arrays of lower timeframe open, high, low, close, and volume values for each chart bar.
This means every bar inside the swing can be broken down into smaller internal bars, allowing a more detailed volume allocation than a single chart timeframe candle would allow.
10) Determining Effective Profile Row Size
int ticksPerRow = rowSizeMode == "Auto" ? autoTicksNow : manualTicksPerRow
float minRowStep = math.max(syminfo.mintick, ticksPerRow * syminfo.mintick)
float rowStep = math.max(minRowStep, swing.swingRange / rowsInput)
int rowsEff = math.max(1, int(math.ceil(swing.swingRange / rowStep)))
rowStep := swing.swingRange / rowsEff
This block finalizes the profile geometry.
It first determines the tick size per row, either from the automatic ATR based logic or from the manual input. Then it ensures the row step is not smaller than that minimum. After that, it calculates how many rows are actually needed to cover the full swing range.
Finally, it recalculates the row height so the entire swing fits perfectly into the effective row count.
So the profile is always both instrument aware and range aligned.
11) Estimating Intrabar Direction
int dir = prevDir
if ic > io
dir := 1
else if ic < io
dir := -1
else
if not na(prevClose)
if ic > prevClose
dir := 1
else if ic < prevClose
dir := -1
else
dir := prevDir
else
dir := prevDir
This block decides whether a lower timeframe bar should be treated as bullish or bearish for volume allocation.
If close is above open, the bar is treated as buying.
If close is below open, the bar is treated as selling.
If the bar is neutral, the script falls back to its relation versus the previous close. If that is also neutral, it inherits the previous direction.
This gives the script a practical directional model for classifying intrabar volume into buy side or sell side participation.
12) Distributing Intrabar Volume Into Profile Rows
for r = 0 to rowsEff - 1
float rowLow = swing.lowPrice + rowStep * r
float rowHigh = rowLow + rowStep
float overlap = math.min(ih, rowHigh) - math.max(il, rowLow)
if overlap > 0
float frac = overlap / iRange
rowBuy.addAt(r, buyV * frac)
rowSell.addAt(r, sellV * frac)
This is one of the most important calculations in the script.
For every lower timeframe bar, the script checks how much of that bar overlaps each profile row. If overlap exists, volume is distributed proportionally according to the fraction of the bar’s range that passed through that row.
So if an intrabar spends more range inside a certain row, more of its volume is assigned there.
This is much more realistic than placing the full volume into a single price row because it respects the bar’s actual vertical path through price.
13) Distributing Intrabar Volume Into Fibonacci Bands
for b = 0 to 5
float p1 = swing.bandPriceAt(b)
float p2 = swing.bandPriceAt(b + 1)
float bandLow = math.min(p1, p2)
float bandHigh = math.max(p1, p2)
float bandOverlap = math.min(ih, bandHigh) - math.max(il, bandLow)
if bandOverlap > 0
float bFrac = bandOverlap / iRange
bandBuy.addAt(b, buyV * bFrac)
bandSell.addAt(b, sellV * bFrac)
The same overlap logic is then applied to the six Fibonacci bands.
Each intrabar contributes buy volume and sell volume into the band or bands it overlaps. The contribution is proportional to the amount of overlap relative to the bar’s own range.
So the delta section is not built from row totals. It is built directly from participation inside each Fibonacci segment of the swing.
14) Fallback Logic When Lower Timeframe Arrays Are Empty
else
float bo = open
float bh = high
float bl = low
float bc = close
float bv = math.max(volume , 0)
int dir = barDirFromOffset(off)
If the lower timeframe request returns no intrabar data for a specific chart bar, the script falls back to the bar itself.
It reads the normal chart timeframe OHLCV values, determines a direction using the helper method, and then distributes that bar’s volume into rows and bands using the same overlap logic.
This is important because it makes the indicator robust. The profile can still be constructed even when granular intrabar data is unavailable.
15) Point of Control Calculation
float pocVol = 0.0
float pocPrice = na
for r = 0 to rowsEff - 1
float totalRow = rowBuy.get(r) + rowSell.get(r)
if totalRow > pocVol
pocVol := totalRow
pocPrice := swing.lowPrice + rowStep * (r + 0.5)
This block finds the Point of Control.
The script scans every profile row, calculates total row volume as buy plus sell, and keeps track of the highest one. The midpoint of that strongest row becomes the Point of Control price.
So the POC is the single most active price area inside the swing based on the constructed row profile.
16) Building the Horizontal Volume Profile
int totalWidthBars = math.max(1, int(math.round(profileWidthBars * (total / maxRowTotal))))
sellWidthBars := int(math.round(totalWidthBars * (sellVol / total)))
buyWidthBars := totalWidthBars - sellWidthBars
if sellWidthBars > 0
pushBox(boxPool, profileStartX, rowHigh, profileStartX + sellWidthBars, rowLow, color.new(bearColor, 72), color.new(bearColor, 100))
if buyWidthBars > 0
int buyLeftX = profileStartX + sellWidthBars
int buyRightX = buyLeftX + buyWidthBars
pushBox(boxPool, buyLeftX, rowHigh, buyRightX, rowLow, color.new(bullColor, 72), color.new(bullColor, 100))
This is the profile drawing engine.
Each row’s total participation is scaled relative to the strongest row. That determines how wide the full profile bar should be.
Then the script splits that width between sell volume and buy volume according to their relative shares. The selling segment is drawn first, followed by the buying segment.
So each row shows both:
how much total volume was traded there,
and how that volume split between bearish and bullish participation.
17) Delta Calculation by Fibonacci Band
float deltaV = buyV - sellV
float deltaPct = totalV > 0 ? (deltaV / totalV) * 100.0 : 0.0
color dColor = math.abs(deltaV) <= 0.0000001 ? fibColor : deltaV > 0 ? bullColor : bearColor
This block calculates directional delta inside each Fibonacci band.
Delta is simply buy volume minus sell volume.
Delta percent then normalizes that difference by total volume inside the band.
If the result is positive, the band leaned bullish.
If the result is negative, the band leaned bearish.
If the result is near zero, the band was balanced.
So the delta section tells the user not just how much activity occurred in a band, but which side dominated it.
18) Scaling the Delta Bars
maxBandAbs := math.max(maxBandAbs, math.abs(buyV - sellV))
int dWidthBars = maxBandAbs > 0 and math.abs(deltaV) > 0 ? math.max(1, int(math.round(deltaWidthBars * (math.abs(deltaV) / maxBandAbs)))) : 1
pushBox(boxPool, deltaStartX, bandHigh, deltaStartX + dWidthBars, bandLow, color.new(dColor, 76), color.new(dColor, 100))
The script first finds the maximum absolute delta among all bands. Then it uses that value as the scaling reference for the delta boxes.
A band with the strongest absolute delta receives the widest box. Smaller delta bands receive proportionally narrower boxes.
So the delta profile communicates both direction and relative strength across the Fibonacci segments of the swing.
19) Drawing the Core Fibonacci Ladder
for i = 0 to fibRatios.size() - 1
float ratio = fibRatios.get(i)
float price = swing.fibPrice(ratio)
bool keyLevel = math.abs(ratio - projBaseRatio) < 0.0001 or ratio == 0.0 or ratio == 1.0
color lc = keyLevel ? color.new(fibColor, 10) : color.new(fibColor, 68)
pushLine(linePool, swing.startIndex, price, fibEndX, price, lc, keyLevel ? line.style_dashed : line.style_dotted, 1)
This loop draws the Fibonacci levels across the swing.
Every ratio from zero to one is converted into price using the earlier swing based Fibonacci method. The selected projection base level plus the zero and one boundaries are emphasized, while the other internal levels are drawn more softly.
So the user gets a full retracement map tied directly to the chosen swing.
20) Building the Projection Path and Targets
float cPrice = swing.fibPrice(projBaseRatio)
float target1 = swing.bullish ? cPrice + swing.swingRange * 1.000 : cPrice - swing.swingRange * 1.000
float target2 = swing.bullish ? cPrice + swing.swingRange * 1.272 : cPrice - swing.swingRange * 1.272
float target3 = swing.bullish ? cPrice + swing.swingRange * 1.618 : cPrice - swing.swingRange * 1.618
pushLine(linePool, swing.endIndex, swing.endPrice, cX, cPrice, color.new(projColor, 30), line.style_dashed, 2)
pushLine(linePool, cX, cPrice, t1X, target1, color.new(projColor, 0), line.style_solid, 2)
pushLine(linePool, t1X, target1, t2X, target2, color.new(projColor, 18), line.style_solid, 2)
pushLine(linePool, t2X, target2, t3X, target3, color.new(projColor, 35), line.style_solid, 2)
This is the forward projection engine.
The chosen Fibonacci retracement level becomes point C. From that point, the script projects three forward targets based on the swing range:
100 percent,
127.2 percent,
and 161.8 percent.
For bullish swings, the targets are projected upward.
For bearish swings, the targets are projected downward.
The script then connects the swing end to point C and extends the projection path forward through each target.
So the projection section transforms the structural swing into a directional roadmap.
21) Drawing Target Boxes
float zoneHalf = math.max(swing.swingRange * 0.015, syminfo.mintick * 8)
if showTargets
pushBox(boxPool, t1X - 1, target1 + zoneHalf, t1X + 2, target1 - zoneHalf, color.new(projColor, 87), color.new(projColor, 55))
pushBox(boxPool, t2X - 1, target2 + zoneHalf, t2X + 2, target2 - zoneHalf, color.new(projColor, 89), color.new(projColor, 60))
pushBox(boxPool, t3X - 1, target3 + zoneHalf, t3X + 2, target3 - zoneHalf, color.new(projColor, 91), color.new(projColor, 68))
Instead of marking the targets as exact single prices only, the script can draw small target boxes around them.
The vertical thickness of each box is based on a fraction of the swing range, with a minimum tick based width. This helps present the targets as realistic reaction zones rather than razor thin levels.
So the projection module provides both precise target labels and visual target areas. Indicator

Indicator

Monte Carlo Expected Move Distribution [LuxAlgo]The Monte Carlo Expected Move Distribution indicator is a statistical forecasting tool that uses Geometric Brownian Motion (GBM) to simulate hundreds of potential price paths, generating a vertical probability distribution to visualize where the market is mathematically expected to trade within a specific future timeframe.
🔶 USAGE
The indicator provides a forward-looking "Expected Move" profile, a concept widely used in options trading to determine the implied range of an asset. It helps traders move away from single-line price predictions and toward a probabilistic understanding of market outcomes.
🔹 Setting Realistic Price Targets
By looking at the vertical distribution at the end of the projection, traders can identify the "Median Outcome" (50th percentile). This represents the most likely price level based on current trend (drift) and volatility.
Conservative Targets: Aim for levels within the highlighted "Expected Move" (1-SD) area.
Aggressive Targets: Levels sitting in the "tails" (gray areas) are statistically less likely to be reached within the chosen timeframe.
🔹 Identifying Overextensions
The dashed projection lines represent the upper (+1 SD) and lower (-1 SD) boundaries.
Upper Expected Move: If price reaches this level ahead of the projection time, it is considered "overbought" relative to current volatility.
Lower Expected Move: If price drops to this level rapidly, it is considered "oversold" from a statistical standpoint.
🔹 Understanding the Distribution Profile
The vertical histogram (bins) at the right of the chart represents the density of the simulations. The widest part of the histogram shows the price zone where the highest number of simulated paths ended, indicating the highest mathematical probability for that price area.
🔶 HOW TO USE
To use the indicator effectively, follow these steps to align the statistical model with your trading timeframe:
Define Your Horizon: Adjust the "Projection Length" to match your trade duration (e.g., 20 bars for a swing trade or 5 bars for a scalp). The distribution will shift further into the future accordingly.
Evaluate the Drift: Enable "Include Trend (Drift)" if you believe the current price momentum will persist. If you expect a sideways market or a "random walk," disable this setting to center the distribution on the current price.
Analyze Probability Zones: Look at the colored region of the histogram. If your target price lies within this zone, there is a ~68% statistical probability (based on current volatility) of price reaching that area within the specified time.
Risk Management: Use the Lower Expected Move (-1 SD) as a guide for stop-loss placement in long positions, as prices falling below this level represent an outlier move beyond normal volatility expectations.
🔶 DETAILS
The script utilizes Monte Carlo Simulation via Geometric Brownian Motion. This model accounts for two primary factors:
Log-Volatility: Derived from the standard deviation of historical log-returns, determining how "wide" the potential price swings are.
Drift (Optional): An approximation of the current trend based on a moving average, providing a directional bias to the simulations.
The "Expected Move" is defined as the 1-Standard Deviation range (the 16th to 84th percentiles). In a normal distribution, approximately 68% of all outcomes fall within this range. The indicator highlights this specific zone in color, while the outliers (the remaining 32%) are shown in a neutral gray.
🔶 SETTINGS
🔹 Monte Carlo Simulation
Simulations: The number of paths to generate (50-500). Higher values result in a smoother, more accurate distribution profile.
Projection Length: How many bars into the future the "Expected Move" is calculated for.
Volatility Lookback: The period used to measure historical price fluctuations.
Include Trend (Drift): When enabled, the distribution will lean toward the current trend direction. When disabled, it assumes a mean-neutral random walk.
🔹 Distribution Visuals
Price Bins: The vertical resolution of the histogram. More bins allow for a more detailed view of the probability peaks.
Distribution Color: Sets the color for the "Expected Move" (68% probability) zone.
Max Distribution Width: Controls how many bars wide the histogram is drawn on the chart.
Indicator

HTF Candle Projections [LuxAlgo]The HTF Candle Projections indicator projects recent and current higher timeframe candles onto the right side of the chart, providing a clear visualization of macro trends and internal candle composition.
🔶 USAGE
The tool is designed to bridge the gap between lower timeframe execution and higher timeframe context. By projecting HTF candles into the future space (right of the current bar), traders can maintain a clear perspective on the larger trend without constantly switching tabs.
🔹 HTF Trend Alignment
Traders can use the projected candles to ensure their lower timeframe (LTF) entries align with the broader market direction. For instance, a scalp trader might only look for long setups if the current projected Daily candle is bullish. This "Top-Down" filter helps traders avoid "fighting the trend" by providing a constant visual reminder of the HTF candle's polarity and momentum.
🔹 Anticipating Reversals & Level Origins
The indicator includes connection lines that trace back from the projected HTF wicks to the exact LTF bars that established the High and Low of that period. This allows traders to pinpoint the specific price action or "order block" responsible for the HTF extrema. If price returns to the origin of an HTF wick, traders can watch for a reaction, as these levels often represent areas of significant supply or demand.
🔹 Internal Sentiment Divergence
A unique feature of this script is the "Internal Sentiment Bars." These small bars inside the HTF candle body show the ratio of bullish vs. bearish LTF bars that make up that specific HTF candle.
If a bullish HTF candle has a high bearish sentiment bar, it suggests a "weak" or "grinding" trend where sellers are actively fighting the move, potentially signaling exhaustion.
Conversely, if the sentiment bars align strongly with the HTF candle direction (e.g., a bullish candle with almost entirely bullish sentiment), it indicates a high-conviction "power move" with little resistance.
🔹 Range Play & Breakouts
The indicator highlights the absolute highest high and lowest low of the entire projected sequence with solid connection lines. These lines define the current HTF trading range. Traders can use these boundaries to identify mean reversion opportunities within the range or to prepare for high-probability breakout trades once price moves beyond these absolute levels.
🔹 Visualizing Wick Development
By observing the live development of the current HTF candle, traders can see "wicking" behavior as it happens. If the current price is far from the HTF high but the connection line remains anchored there, it visually confirms a rejection from that level. This real-time feedback is crucial for identifying if an HTF candle is closing as a "Pin Bar" or "Shooting Star" before the timeframe actually expires.
🔶 DETAILS
The script uses a custom data structure to track the Open, High, Low, and Close of the selected timeframe. It also tracks the specific bar index of the highs and lows to draw the connection lines accurately. The absolute high and low of the entire projected sequence are highlighted with solid lines to identify the "Range High" and "Range Low" of the projected window.
🔶 SETTINGS
HTF Timeframe: Sets the higher timeframe to be projected (e.g., Daily, Weekly, Monthly).
Candle Width (Bars): Determines how many bars wide each projected candle appears on the right side of the chart.
Gap Between Candles: Sets the horizontal spacing between the projected HTF candles.
Number of HTF Candles: The total number of candles to project (previous completed candles + current live candle).
Show Internal Sentiment Bars: Toggles the visibility of the internal bull/bear composition bars.
🔹 Colors
HTF Bull/Bear Body: Adjusts the colors and transparency of the main projected candle bodies.
Sentiment Bull/Bear: Sets the color for the internal composition bars (ratio of LTF closes).
Wick Color: Customizes the color of the projected candle wicks.
Connection Line: Sets the color for the dotted lines connecting HTF wicks to their LTF origins.
Absolute High/Low Connection: Sets the color for the solid lines marking the highest and lowest points of the projected set.
Indicator

Indicator

Range Breakout Statistics [Honestcowboy]⯁ Overview
The Range Breakout Statistics uses a very simple system to detect ranges/consolidating markets. The principle is simple, it looks for areas where the slope of a moving average is flat compared to past values. If the moving average is flat for X amount of bars that's a range and it will draw a box.
The statistics part of the script is a bit more complicated. The aim of this script is to expand analysis of trading signals in a different way than a regular backtest. It also highlights the polyline tool, one of my favorite drawing tools on the pulsewire platform.
⯁ Statistics Methods
The script has 2 different modes of analyzing a trading signals strength/robustness. It will do that for 2 signals native to the script.
Upper breakout: first price breakout at top of box, before max bars (100 bars by default)
Lower breakout: first price breakout at bottom of box, before max bars
The analysis methods themselves are straightforward and it should be possible for pulsewire community to expand this type of analysis to other trading signals. This script is a demo for this analysis, yet some might still find the native signals helpful in their trading, that's why the script includes alerts for the 2 native signals. I've also added a setting to disable any data gathering, which makes script run faster if you want to automate it.
For both of the analysis methods it uses the same data, just with different calculations and drawing methods. The data set is all past price action reactions to the signals saved in a matrix. Below a chart for explaining this visually.
⯁ Method 1: Averages Projection
The idea behind this is that just showing all price action that happened after signal does not give actionable insights. It's more a spaghetti jumble mess of price action lines. So instead the script averages the data out using 3 different approaches, all selectable in the settings menu.
Geometric Average: useful as it accurately reflects compound returns over time, smoothing out the impact of large gains or losses. Accounts for volatility drift.
Arithmetic Average: a standard average calculation, can be misleading in trading due to volatility drift. It is the most basic form of averaging so I included it.
Median: useful as any big volatility huge moves after a signal does not really impact the mean as it's just the middle value of all values.
These averages are the 2 lines you will find in the middle of the projection. Having a clear difference between a lower break average and upper break average price reaction can signal significance of the trading signal instead of pure chaos.
Outside of this I also included calculations for the maximum and minimum values in the dataset. This is useful for seeing price reactions range to the signal, showing extreme losses or wins are possible. For this range I also included 2 matrices of highs and lows data. This makes it possible to draw a band between the range based on closing price and the one using high/low data.
Below is a visualisation of how the averages data is shown on chart.
⯁ Method 2: Equity Simulation
This method will feel closer to home for traders as it more closely resembles a backtest. It does not include any commissions however and also is just a visualisation of price reaction to a signal. This method will simulate what would happen if you would buy at the breakout point and hold the trade for X amount of bars. With 0 being sell at same bar close. To test robustness I've given the option to visualise Equity simulation not just for 1 simulation but a bunch of simulations.
On default settings it will draw the simulations for 0 bars holding all the way to 10 bars holding. The idea behind it is to check how stable the effect is, to have further confirmation of the significance of the signal. If price simulation line moves up on average for 0 bars all the way to 10 bars holding time that means the signal is steady.
Below is a visualisation of the Equity Simulation.
⯁ Signal filtering
For the boxes themselves where breakouts come from I've included a simple filter based on the size of the box in ATR or %. This will filter out all the boxes that are larger top to bottom than the ATR or % value you setup.
⯁ Coloring of Script
The script includes 5 color themes. There are no color settings or other visual settings in the script, the script themes are simple and always have colors that work well together. Equity simulation uses a gradient based on lightness to color the different lines so it's easier to differentiate them while still upper breaks having a different color than lower breaks.
This script is not created to be used in conjunction with other scripts, it will force you into a background color that matches the theme. It's purpose is a research tool for systematic trading, to analyse signals in more depth.
Metaverse color theme:
⯁ Conclusion
I hope this script will help traders get a deeper understanding of how different assets react to their assets. It should be possible to convert this script into other signals if you know how to code on the platform. It is my intention to make more publications that include this type of analysis. It is especially useful when dealing with signals that do not happen often enough, so a regular backtest is not enough to test their significance. Indicator
