Reversal Radar PRO | Market Tops & Bottoms
↺ Reversal Radar PRO — Tops & Bottoms
Most “reversal” tools fire one arrow and disappear. This one runs three layers: a heads-up while the bar is still forming, a confirmed print after the swing is locked, and a live status on whether that reversal is still valid.
The point is not to catch every wick. It is to grade the turn, map the zone, and tell you when the chase is already late.
① Early-warning
Live-bar gauge. It can repaint — that is stated on purpose. Use it as danger / opportunity forming, not as an entry.
② Confirmed
Pivot-locked after the right-side bars. Does not repaint. Weighted 0–100 confidence with a grade, a vote floor, and a cooldown. Factors that can vote: RSI extreme, RSI divergence (quality-scored), volume climax, Bollinger pierce, over-extension from the mean, Stoch-RSI, wick rejection, engulfing, higher-TF RSI, liquidity sweep. Regime can boost or cut the score. Hidden divergence trims it — that is continuation, not a turn.'
③ Follow-through
Once a confirmed top or bottom is on, the radar tracks:
Active / late / soft invalid / hard invalid / target hit
Soft and hard invalidation distances
Chase quality (good → poor) vs progress to target
Mapped target and R:R
🗺 On the chart
Confirmed labels (confidence + grade) or simple arrows
Tiny diamonds for early-warning
Reversal zone boxes at the pivot
Clustered S/R that merge nearby swings, count touches, and flip when broken
📟 Dashboard
Regime and “best play” (fade the trend, or both sides). Trend efficiency. Volatility state. RSI / HTF RSI / Stoch-RSI. Bollinger position. Extension. Volume vs average. Divergence quality. Early-warn reading. Active signal, status, chase, target. Nearest S/R. Last print and how many bars ago.
🎯 How to use it
Wait for confirmed unless you accept that early-warning will flicker. In a strong uptrend, bottoms are the preferred fade — not every red wick. If chase already reads late, you missed the turn; do not market-order the remainder. Hard invalidation ends the idea. Soft invalidation is a warning, not a rewrite of history. อินดิเคเตอร์

Smooths Heat Seeker Liquidity MapOverview
This indicator maps resting liquidity by detecting confirmed swing highs and lows at three independent lookback lengths, then rendering each one as a zone that visibly fades the longer it goes untouched. Instead of a static box that holds one shade until it's swept, each zone is built from small time-segments, and each segment locks in whatever color the zone's fade formula produces at the moment it's drawn — so a single zone shows a genuine gradient across its own lifetime, brightest where it formed and dimmer toward the present if nothing has happened to it since.
Concepts used
Tiered pivot detection: ta.pivothigh()/ta.pivotlow() run at three separate lookback lengths (Fast/Mid/Slow). A pivot only confirms after "Confirmation Bars" bars have passed with no higher high / lower low, which is what prevents repainting the level's location after the fact.
Age-based color decay: each level stores the bar index it was formed on. Every time a new segment is drawn, the indicator computes how many bars old the level is, runs that through a decay curve (fadeStrength input controls the curve's steepness), and converts the result into a transparency value for that segment only. Because past segments are never redrawn, the visual history of the fade is preserved rather than the whole zone jumping to one shade at once.
Mitigation vs. retest: a level is deleted the instant price crosses it (wick or close, user's choice) — that's treated as the liquidity being consumed. If price merely touches the level without crossing it, and "Refresh Fade On Retest" is on, the level's age resets to zero, so a level that keeps getting defended stays bright while one that's simply being ignored keeps fading toward removal.
Tier-priority merging: if a new pivot lands at the same price as an existing level, the indicator keeps the higher tier rather than creating a duplicate zone, so a level significant on the Slow lookback doesn't get visually diluted by a Fast-tier duplicate sitting on top of it.
How to use it
Add it to any chart/timeframe with default settings. Brighter zones are recent or actively-retested liquidity; dimmer zones are levels the market has drifted away from without touching. Use Fast/Mid/Slow tier colors to separate minor intraday levels from more structurally significant ones, and adjust Fade/Lifetime, Fade Strength, and Cell Width to control how far back the map looks and how coarse or smooth the fade appears.
Originality
This is not a combination of other publications — there's a single detection-and-rendering pipeline here (pivot detection → age tracking → per-segment decay → mitigation/retest handling), and every part of it was written for this script. No code, calculations, or visual techniques are reused from another publication.
Inputs
Fast / Mid / Slow — pivot lookback lengths for the three liquidity tiers
Confirmation Bars — bars required after a swing point before it's confirmed
Mitigate On — wick or close removes a level
Fade/Lifetime, Fade Strength, Cell Width — control how long a zone lives and how its decay curve is shaped
Refresh Fade On Retest — restarts a zone's age on an unmitigated touch
Box Height Multiplier — sets zone thickness as a multiple of ATR
Weak / Mid / Strong colors — one color per tier
This indicator has no signals, alerts, or trade markers — it's a pure visualization of where liquidity currently sits on the chart, and how fresh or stale each level is. อินดิเคเตอร์

Divergence Confirmation Oscillator [Pineify]Divergence Confirmation Oscillator
Overview
This RSI divergence indicator starts from one timing fact: a pivot is knowable only after its right-side bars close. It scores regular and hidden events, showing both the formation location and the later confirmation time.
Problem Definition
A divergence line drawn back to a pivot can look actionable there, although several bars were still required to confirm it. Binary markers also give equal weight to shallow disagreements and well-separated price/RSI moves. The failures are timing ambiguity and absent evidence quality. This script exposes the delay and ranks completed events; it does not assume divergence predicts reversal.
Design Rationale
Price pivots are the anchors, with RSI sampled on those exact bars. A solid diagonal shows formation; a dotted track from the second pivot to the confirmation bar shows knowledge time. Quality combines spacing, ATR-normalized price movement, RSI movement, threshold context, and RSI departure by confirmation. ATR avoids raw-point scale dependence. Unconfirmed turns would appear earlier, but would break the timing invariant. The chosen tradeoff is delay and selectivity for auditable events.
Key Features
Confirmed regular/hidden bullish and bearish divergence.
Adjustable 0–100 quality gate.
Pivot bridge plus confirmation wait track.
Bounded follow-through, invalidation, or expiry state.
Four close-confirmed alerts and optional dashboard.
How It Works
RSI uses closes. Price highs/lows become pivots only after the configured bars on both sides; processing occurs when the right-side bar closes.
Regular bullish means lower price low and higher RSI; hidden bullish means higher price low and lower RSI. Bearish definitions are symmetric at highs.
Only consecutive confirmed pivots inside the separation range interact. Each new pivot becomes the next reference even if no event passes.
The score weights spacing 25%, ATR-normalized price displacement 25%, RSI displacement 25%, threshold context 15%, and departure from the second pivot 10%. Price ATR and RSI delta inputs define full component scores.
Passing events receive a solid bridge, a dotted pivot-to-confirmation track, and a REG/HID label with Q at confirmation. Nearby labels rotate through three vertical lanes.
After confirmation, the watch records favorable ATR movement or RSI midpoint reclaim as follow-through, a buffered close beyond the pivot as invalidation, or the time limit as expiry. Circles and crosses mark these later outcomes without duplicate edge text; they are not alert signals.
Warm-up requires valid RSI, ATR, and pivot history; invalid spacing suppresses events.
How Multiple Indicators Work Together
Price pivots supply auditable anchors; RSI measures momentum there; ATR normalizes price distance; the score ranks the completed disagreement; and the lifecycle observes only later evidence. Removing any part changes the result: without pivots timing is undefined, without RSI divergence disappears, without ATR price scale leaks into quality, and without the wait track confirmation delay is hidden. This is one causal chain, not an unrelated mashup.
Trading Ideas and Insights
Regular events show price extending while RSI disagrees; hidden events show price holding structure while RSI pulls back. Compare the confirmation bar, Q, and lifecycle before forming a thesis. Repeated invalidation suggests retuning the pivot scale. The indicator supplies no entry, stop, size, or expected return.
Unique Aspects
Confirmation geometry is the structural contribution. The diagonal shows where the relationship formed; the dotted track and label show when it became knowable. Five score components rank evidence without altering RSI, and the bounded lifecycle keeps later behavior separate. A historical bridge is therefore created at confirmation, not proof of availability at the pivot.
How to Use
Start with defaults. Cyan/green lower labels show bullish confirmations; orange/red upper labels show bearish ones. Nearby labels rotate through three lanes. Follow the dotted track to confirmation and read Q. Triangles mark events; circles/crosses mark later outcomes named in the dashboard. Use the four close-confirmed alerts.
Customization
Short pivot sides reduce delay but admit noise; long sides select broader swings and confirm later. Separation limits choose pivots. Price ATR, RSI delta, quality, and context calibrate scoring. Follow distance, buffer, and window control lifecycle. Label spacing sets the clustering window. Visual layers and retained events are switchable.
Assumptions and Limitations
Confirmed does not mean correct or profitable. Pivots lag, and historical bridges are drawn only at confirmation. Events and lifecycle changes require a closed bar. ATR is scale, not probability. Consecutive-pivot logic can miss a relationship that skips an intermediate pivot. Trends may invalidate regular divergence; ranges may create many pivots; gaps, thin trading, parameters, and synthetic chart prices can distort results. The script uses chart OHLC only, requests no external or lower-timeframe data, infers no order flow, and performs no execution backtest.
Conclusion
The oscillator makes RSI divergence auditable through confirmed anchors, scale-aware quality, explicit knowledge time, and bounded follow-up. It exposes delay and evidence while preserving uncertainty.
อินดิเคเตอร์

Pattern Atlas : Geometric Indicator [AxeAlgo]Pattern Atlas : Geometric Indicator
A chart-native scanner for 16 classical price-structure ("geometric") chart
patterns. It tracks confirmed swing pivots as they form and, when a run of
pivots satisfies the geometry of a known pattern and its breakout condition, it
marks the pattern on the chart with an outline box, an optional construction
skeleton, a measured-move target, and a labelled pin signal. It also keeps a
live status table of every pattern it knows.
All pattern-recognition logic lives in the companion Pine library
"Pattern Atlas : Geometric ". This script is the visualization and
alerting layer on top of it, so the detection rules stay in one place that can
be maintained and audited on their own.
Patterns detected
Reversal patterns: Head & Shoulders and its Inverse; Double Top and Double
Bottom; Triple Top and Triple Bottom; Rounding Top and Rounding Bottom; Diamond
Top and Diamond Bottom; Broadening Formation; and the V-Top / V-Bottom spike.
Continuation patterns: Ascending Triangle; Descending Triangle; Symmetrical
Triangle; Rising and Falling Wedge; Bull and Bear Flag; Bull and Bear Pennant;
Rectangle; and Cup & Handle with its Inverted form.
Structural patterns: Island Reversal and Bump-and-Run Reversal.
How it works
First, a rolling list of confirmed swing highs and lows is maintained. The
"Pivot left bars" and "Pivot right bars" inputs set how many bars on each side
of a candidate must be less extreme for it to count as a pivot. Higher values
give fewer, more significant pivots and a longer confirmation lag.
Next, each pattern function inspects the recent pivot sequence for its defining
shape together with the price move that confirms it. For example, Head &
Shoulders looks for three peaks with a lower-shoulder relationship and a close
back through the neckline; an Ascending Triangle looks for a flat resistance
base with a rising support line and a close through the base.
Each match reports its direction (bullish or bearish), the exact pivots it was
built from, a text description, a strength score, and a measured-move price
target.
Strength score
The strength score runs from 0 to 100 percent and measures how decisively price
broke through the pattern's confirmation level, relative to the pattern's own
price range. A higher score means a cleaner, more committed break.
Patterns defined by a single point, such as the Spike and the Island Reversal,
have no internal range to measure against and always score a neutral 50 percent.
The "Minimum pattern strength to show" input filters marginal matches off the
chart and out of the alerts.
Measured-move targets
The target is a classical projection: the pattern's own height added to or
subtracted from the breakout point, shown as a small price label. No ray is
drawn out to it.
Targets are not shown for the Spike, the Island Reversal, or the Bump-and-Run
Reversal, because those patterns have no reliable height to project from.
Repainting
Every box, line, target, and pin is drawn only on a closed bar. Each match is
gated so it appears, and alerts, only once, on the bar it is first confirmed.
Swing pivots are only known a number of bars after they occur, equal to
"Pivot right bars". That confirmation lag is structural to pivot-based analysis,
not repainting. Nothing already drawn is moved or removed on later bars.
What you see on the chart
A box outlines the full pivot span of each match, coloured by direction.
Construction lines draw a zig-zag through the exact pivots that built the
pattern. This is off by default.
Construction points place a small circle on each of those pivots. This is also
off by default.
A target label shows the measured-move price.
A pin signal is a thin stem with a glowing gem at its tip, placed below the bar
for a bullish match and above it for a bearish one. Hovering the gem shows the
full list of matches on that bar with their strength and targets.
The scanner table lists every pattern with a live status column. When a pattern
matches on the current bar the row shows its name and strength percent; when it
does not, the row shows a dash. Hovering any row shows that pattern's
description.
Inputs
Pivot Detection controls the left bars, right bars, and the maximum number of
pivots tracked.
The Reversal, Continuation, and Structural groups each have a master enable
switch plus one checkbox per pattern, so a whole category can be turned off in
one click.
Display controls the boxes, construction lines, construction points, targets,
and pin signals; the minimum strength filter; the table on/off, position, and
text size; and the bullish and bearish colours.
Watermark switches between a Dark and a Light theme.
Alerts
There is one alert condition per pattern, plus an "Any Bullish Chart Pattern"
and an "Any Bearish Chart Pattern" condition.
There is also a single dynamic alert() call that fires once per closed bar with
the full list of patterns found on that bar, along with their strength and
targets. Add it using the "Any alert() function call" option when creating the
alert.
Every alert condition is gated to confirmed bars in the code itself, so none of
them can fire from a still-forming bar regardless of the alert frequency chosen.
Notes
Chart-pattern recognition is inherently approximate. Treat matches as structured
context rather than mechanical trade signals, and confirm them with your own
analysis.
The indicator works best on liquid instruments and on timeframes where swings
are well defined. Very low timeframes produce noisy pivots.
This is not financial advice.
Dependency: Pattern Atlas : Geometric , a Pine library.
อินดิเคเตอร์

Pivot MA StructurePivot MA Structure— Complete User Guide
1. General Purpose
This indicator combines several independent market-reading components into one framework:
Pivot-controlled directional moving averages
Bullish and Bearish market-structure shifts
Pre-break structure candidates
Trend-continuation markers
Shift-direction MA retests
Anchored VWAP equilibrium
RSI 50 equilibrium
Fair Value Gaps and breakers
Long/Short health scores
A real-time information dashboard
Selectable alerts
It is an indicator, not an automated strategy. It does not place orders, calculate position size, or automatically manage stop-loss and take-profit orders.
Its primary objective is to answer five questions:
What is the latest structural direction?
Which directional Pivot MA is currently active?
Do structure and the active MA agree?
Do VWAP and RSI support the same direction?
Is there a suitable continuation or retest location for entry?
2. The Core Reading Model
The indicator separates market information into three layers.
Structural layer
This layer detects:
Bullish Shift
Bearish Shift
Bullish continuation
Bearish continuation
Unbroken bullish and bearish candidates
A Shift represents a change in the direction of confirmed structure breaks.
Directional MA layer
This layer determines whether the active moving-average condition is:
Bullish
Bearish
Ghost/inactive
Still waiting for a valid pivot
Only one directional MA can be active at a time.
Confirmation layer
The following secondary filters measure the quality of the directional condition:
Anchored VWAP
RSI relative to 50
Fair Value Gaps
Directional MA retests
Health score
A structural signal does not automatically imply that all confirmation filters agree.
3. Pivot Moving Average System
Default settings
MA type: EMA
MA length: 50
Pivot strength: 5
Pivot qualification: All Confirmed Pivots
Source: Pivot Side
The MA type can be changed to:
EMA
SMA
WMA
RMA
HMA
Pivot Side source
When MA Source = Pivot Side:
The bullish MA is calculated from low.
The bearish MA is calculated from high.
This creates two distinct directional averages:
Green MA for bullish conditions
Red MA for bearish conditions
If Close or HL2 is selected, both averages use the selected common source.
How a Pivot MA is created
A bullish Pivot MA becomes available after a qualifying confirmed low pivot.
A bearish Pivot MA becomes available after a qualifying confirmed high pivot.
The pivot does not become known immediately. With Pivot Strength set to 5, the system requires five bars on the right side of the pivot before confirming it.
Therefore, pivot activation is intentionally delayed.
Pivot Qualification
All Confirmed Pivots
This is the default mode.
Every confirmed low pivot can refresh the bullish MA state.
Every confirmed high pivot can refresh the bearish MA state.
This allows higher lows in an uptrend to reactivate the bullish side and lower highs in a downtrend to refresh the bearish side.
HH / LL Only
This is a more selective mode.
A bearish MA trigger requires a pivot high above the previous pivot high.
A bullish MA trigger requires a pivot low below the previous pivot low.
This mode generates fewer MA refresh events and may leave an MA in ghost mode for longer.
4. Active and Ghost MA Logic
Active bullish MA
The bullish MA is eligible to become active when:
The bullish MA exists.
It has not remained locked by an unresolved break.
Price is at or above the bullish MA.
The bullish MA is rising.
Active bearish MA
The bearish MA is eligible when:
The bearish MA exists.
It has not remained locked by an unresolved break.
Price is at or below the bearish MA.
The bearish MA is falling.
One active MA at a time
The indicator does not allow both MAs to be active simultaneously.
If only the bullish side is eligible:
Bullish MA becomes active.
Bearish MA becomes ghost.
If only the bearish side is eligible:
Bearish MA becomes active.
Bullish MA becomes ghost.
If neither side is eligible:
Both lines can appear as ghost lines.
If both sides are technically eligible during compression:
A new bearish pivot or downward bar movement gives priority to the bearish MA.
Otherwise, the bullish MA receives priority.
Active line thickness
The active directional MA is always displayed one step thicker than a ghost MA.
This allows the currently accepted directional condition to be identified visually without relying only on color.
Ghost lines
A ghost line is a faded directional MA.
Ghost status means that the MA still exists and is still calculated, but it is not currently accepted as the active directional condition.
A ghost line is not frozen. Its value continues to move because the underlying MA calculation continues.
MA break behavior
The bullish MA is broken when price crosses below it according to the selected break confirmation.
The bearish MA is broken when price crosses above it.
The break method can be:
Close: requires the closing price to cross the MA.
Wick: reacts to the bar’s low or high crossing the MA.
After a genuine break, the line becomes ghosted. A new qualifying same-side pivot can reset its broken state.
5. Market Structure Engine
Default structure length
Structure Length: 12
The engine uses an odd-length fractal model. An even input is internally advanced to the next odd number.
Therefore:
Input 12 becomes an internal 13-bar fractal.
Pivot strength becomes 6 bars on each side.
This is different from using 12 left bars and 12 right bars. It is a full fractal-window interpretation.
Confirmed structure pivots
The engine continuously tracks:
Latest confirmed fractal high
Latest confirmed fractal low
These become potential break candidates.
A structure pivot appears only after its required right-side bars have completed.
6. Candidate Lines
Bullish Break Candidate
A confirmed fractal high creates a bullish break candidate.
It is displayed as:
Green dotted line
Bullish Break Candidate text above the line
This level represents the price that must be exceeded for an upward structure break.
Bearish Break Candidate
A confirmed fractal low creates a bearish break candidate.
It is displayed as:
Red dotted line
Bearish Break Candidate text below the line
This level represents the price that must be broken for a downward structure break.
Candidate projection
The default projection is five bars to the right.
The candidate does not extend infinitely. On every new bar:
Its right endpoint moves forward.
It remains five bars ahead of the current bar.
It stops when broken or replaced by a newer same-side pivot.
Candidate replacement
When a newer confirmed pivot of the same side appears:
The previous unbroken candidate is deleted.
A new candidate begins from the newer pivot.
This ensures that the chart emphasizes the latest actionable structure level.
7. Bullish and Bearish Shift Logic
The internal logic follows a CHoCH-style direction-change model, but the chart does not display the word “CHoCH.”
It uses:
Bullish Shift
Bearish Shift
Bullish Shift
A Bullish Shift occurs when:
The last confirmed structure break was downward.
Price subsequently breaks the latest unbroken fractal high.
The break can be confirmed by:
Close above the level, or
Wick above the level
depending on the selected Break Confirmation.
When confirmed:
The candidate line ends at the breakout bar.
The line becomes a stronger green dotted shift segment.
Bullish Shift appears above the middle of the segment.
The dashboard’s Latest Shift changes to Bullish Shift.
The bullish retest detector becomes armed.
Bearish Shift
A Bearish Shift occurs when:
The last confirmed structure break was upward.
Price subsequently breaks the latest unbroken fractal low.
When confirmed:
The candidate line ends at the breakdown bar.
It becomes a stronger red dotted shift segment.
Bearish Shift appears below the middle of the line.
The dashboard changes to Bearish Shift.
The bearish retest detector becomes armed.
First structure break
The first break establishes the initial direction.
Because no previous opposite break exists, it is not classified as a Shift.
It is treated as a continuation break and receives a directional triangle.
8. Trend-Continuation Triangles
The indicator does not draw BOS lines.
Instead, a same-direction continuation break is marked directly on the breaking candle.
Bullish continuation
A bullish continuation is shown as:
Green upward triangle
Located below the breakout candle
It means that an upward break occurred without reversing the previous break direction.
Bearish continuation
A bearish continuation is shown as:
Red downward triangle
Located above the breakdown candle
It means that a downward break occurred without reversing the previous break direction.
How to interpret continuation marks
Continuation triangles are not fresh reversal signals.
They are better interpreted as confirmation that the existing structural direction is continuing.
A continuation marker is generally more useful when:
The matching directional MA is active.
Price is on the correct side of VWAP.
RSI supports the same direction.
The breakout is not entering directly into an opposing FVG or major swing level.
Avoid treating every continuation triangle as an automatic market entry. Entering immediately after an extended breakout can create poor risk-to-reward.
9. Directional MA Retest — “R” Marker
Important definition
In the current version, the R marker detects a retest of the same-direction Pivot MA, not the horizontal dotted shift line.
After a Bullish Shift:
The indicator monitors the green bullish Pivot MA.
After a Bearish Shift:
It monitors the red bearish Pivot MA.
Bullish retest
After a Bullish Shift, the retest detector waits for a later candle whose range intersects the green bullish MA:
Candle low is at or below the MA.
Candle high is at or above the MA.
When the first valid touch occurs:
A green R appears below the candle.
The bullish retest alert can trigger.
The retest detector stops waiting until a new Shift occurs.
The green line can be active or ghost. The retest detector only requires the corresponding bullish MA to exist.
Bearish retest
After a Bearish Shift, the first later candle that intersects the red bearish MA produces:
A red R
Located above the candle
A bearish retest alert opportunity
Why an R may not appear
An R will not appear when:
No valid Bullish or Bearish Shift has occurred.
The contact happens on the Shift candle itself.
The candle does not actually intersect the MA value.
The first retest after that Shift has already been marked.
A new opposite Shift replaced the previous retest direction.
The corresponding directional MA does not yet exist.
Show Directional MA Retests is disabled.
The visual toggle does not disable the underlying alert calculation.
10. Anchored VWAP Equilibrium
Default status
The VWAP line is enabled by default.
Available anchors
Session
Week
Month
Session
The VWAP resets with the daily/session boundary.
Week
The VWAP resets at the beginning of each week.
Month
The VWAP resets at the beginning of each month.
Horizontal VWAP presentation
The indicator does not plot the entire conventional curved VWAP history.
Instead, it takes the latest anchored VWAP value and displays it as a horizontal equilibrium reference.
Default presentation:
100 bars to the left
10 bars to the right
VWAP label on the right
Dashed neutral-colored line
The right-side length and label offset are adjustable.
Bullish interpretation
Price above VWAP suggests that current price is trading above the volume-weighted equilibrium.
This supports a bullish setup.
Bearish interpretation
Price below VWAP suggests that price is trading below the volume-weighted equilibrium.
This supports a bearish setup.
VWAP as a trade-management filter
For an existing long:
Remaining above VWAP supports the health of the position.
Losing VWAP removes one bullish health point.
Reclaiming VWAP can restore that point.
For an existing short:
Remaining below VWAP supports the bearish condition.
Moving above VWAP weakens the short health score.
VWAP alone is not an entry or exit signal. It is an equilibrium filter.
11. RSI 50 Price Equilibrium
Default settings
RSI Length: 14
RSI line: enabled
Midpoint: 50
HUD interpretation
RSI at or above 50 is bullish.
RSI below 50 is bearish.
Horizontal RSI 50 price line
A literal RSI value of 50 cannot be plotted meaningfully on the same price scale as BTC, forex, or commodities.
Therefore, the indicator stores the closing price where RSI most recently crossed 50.
That price becomes the RSI 50 horizontal equilibrium level.
It represents the latest price associated with a momentum-regime transition.
The line:
Is green when the current RSI is above 50.
Is red when the current RSI is below 50.
Extends a configurable number of bars left and right.
Has an offset label on the right.
Practical use
For a long position:
RSI above 50 supports positive momentum.
RSI falling below 50 reduces long health.
For a short position:
RSI below 50 supports negative momentum.
RSI reclaiming 50 reduces short health.
RSI 50 should be used as confirmation, not as a standalone trigger.
12. Fair Value Gap Engine
The FVG engine is enabled by default.
It supports:
Standard FVG mode
Breaker mode
Bullish and bearish zones
ATR threshold filtering
Multiple mitigation methods
Overlap filtering
Midlines
Optional right extension
Optional raid tracking
Bullish FVG
A bullish FVG is created when the current low is above the high from two bars earlier, producing a three-candle imbalance.
The engine also applies the selected ATR threshold to filter insignificant gaps.
A bullish FVG is normally interpreted as:
An imbalance below price
A possible pullback support area
A potential location for bullish continuation or mitigation
Bearish FVG
A bearish FVG is created when the current high is below the low from two bars earlier.
It is generally interpreted as:
An imbalance above price
A possible resistance area
A potential bearish pullback or mitigation location
Show Last
Show Last determines how many recent bullish and bearish FVGs are displayed.
With a value of 5, the engine can show:
Five recent bullish zones
Five recent bearish zones
subject to mitigation and overlap removal.
Threshold
The threshold applies an ATR-based significance filter.
A value of 0 accepts all qualifying gaps.
Higher values require a stronger displacement relative to ATR.
Increasing the threshold generally produces fewer but more significant FVGs.
Mitigation modes
Close
Uses the candle body boundary as the mitigation trigger.
For a bullish FVG, the body must penetrate below the relevant lower boundary.
For a bearish FVG, the body must penetrate above the relevant upper boundary.
Wick
Uses the candle’s full high/low range.
This is the most sensitive mitigation method.
Avg
Uses the midpoint of the gap.
This treats a move through the FVG’s average price as mitigation.
FVG mode
In standard FVG mode:
The zone remains visible while active.
It is removed when the selected mitigation condition is satisfied.
Breakers mode
In Breakers mode:
The original FVG is tracked.
When mitigated, it becomes a breaker.
Its directional display changes to the opposite-side color.
It remains until the breaker’s opposite invalidation condition occurs.
Hide Overlap
When enabled, overlapping FVGs are filtered.
The newest FVG is compared against:
Older FVGs in the same direction
FVGs in the opposite direction
Overlapping stored zones can be removed to reduce visual clutter.
Midline
When enabled, the midpoint of each FVG is displayed.
The midpoint can be useful as:
A partial mitigation level
A mean-reversion reference
A refined entry or invalidation location
Extend FVG
When disabled, FVG drawings end at the current bar.
When enabled, active FVG zones extend to the right.
Display Raids
Raid tracking looks for liquidity interactions around an active FVG.
For a bullish FVG, it can track a move below the upper FVG boundary followed by a close back above it.
For a bearish FVG, it can track a move above the lower boundary followed by a close back below it.
Raid locations are displayed with a line and an x marker.
13. Information HUD
The information table summarizes the indicator’s current state.
Latest Shift
Possible values:
Bullish Shift
Bearish Shift
Waiting
This row stores the most recent genuine opposite-direction structure break.
It does not reset to neutral after a few bars. It remains bullish or bearish until an opposite Shift occurs.
Bullish Pivot MA
Possible values:
Waiting
Active
Ghost
Waiting
No qualifying bullish pivot has created the bullish MA state yet.
Active
The bullish MA currently satisfies the directional activation logic.
Ghost
The bullish MA exists but is not currently accepted as active.
Bearish Pivot MA
Uses the same status definitions for the red bearish MA.
Shift + MA
Possible values:
Bullish Match
Bearish Match
No Match
Bullish Match
Requires:
Latest Shift is bullish.
Bullish Pivot MA is active.
Bearish Match
Requires:
Latest Shift is bearish.
Bearish Pivot MA is active.
No Match
Structure and the active directional MA do not currently agree.
This is a warning that the setup lacks core confluence.
VWAP
Possible values:
Price Above
Price Below
Unavailable
This reports the current price’s relationship with the selected anchored VWAP.
RSI
Displays:
Current RSI value
Above 50 or Below 50
Example:
56.4 / Above 50
Long Health
The long score counts currently satisfied bullish conditions.
Short Health
The short score counts currently satisfied bearish conditions.
Composite Bias
Possible values:
Bullish
Bearish
Balanced
The result is determined by comparing Long Health with Short Health.
Long Health greater than Short Health → Bullish
Short Health greater than Long Health → Bearish
Equal values → Balanced
Composite Bias is a comparison of rule counts, not a forecast.
14. Health Score Calculation
With all default score filters enabled, each side has four factors.
Long Health factors
One point is awarded for each condition:
Latest Shift is Bullish.
Bullish Pivot MA is active.
Price is above VWAP.
RSI is at or above 50.
Short Health factors
One point is awarded for each condition:
Latest Shift is Bearish.
Bearish Pivot MA is active.
Price is below VWAP.
RSI is below 50.
Score examples
100% — 4/4
All directional conditions agree.
This is the strongest confluence state produced by the dashboard.
It does not mean the trade has a 100% probability of success.
75% — 3/4
The setup is directionally favorable, but one filter disagrees.
Examples:
Bullish Shift and bullish MA are aligned, but RSI is below 50.
Bearish structure is aligned, but price is still above VWAP.
50% — 2/4
The condition is mixed.
This often occurs during:
Transition
Consolidation
Pullback
Delayed confirmation
Conflict between structure and momentum
25% — 1/4
Only one filter supports the direction.
This is generally a weak environment for initiating a new position.
0% — 0/4
None of the directional filters support that side.
Disabling score filters
If VWAP is removed from the score, the denominator decreases.
If RSI is also removed, only two core factors remain:
Shift direction
Active directional MA
The displayed percentage automatically adjusts to the number of enabled factors.
Important limitation
Health is a confluence percentage, not a statistically measured win probability.
A 100% Long Health reading means four out of four programmed bullish conditions are true. It does not mean the market has a 100% chance of rising.
15. Suggested Long Entry Framework
Core long condition
The preferred long environment is:
Latest Shift = Bullish Shift
Bullish Pivot MA = Active
Shift + MA = Bullish Match
This is the minimum structural and directional agreement.
Additional confirmation
A higher-quality long condition may also include:
Price above VWAP
RSI above 50
Long Health at 75% or 100%
Bullish FVG below or around the entry
No large bearish FVG immediately above
A green R retest marker
Aggressive long entry
An aggressive trader may enter near the Bullish Shift breakout.
Risks:
The breakout may be extended.
Stop distance may be large.
Price may return to the broken structure or MA before continuing.
Conservative long entry
A more conservative sequence is:
Bullish Shift appears.
Bullish MA becomes active or remains directionally valid.
Price stays above or reclaims VWAP.
RSI remains above or reclaims 50.
Price pulls back into the green MA.
A green R appears.
The retest candle shows rejection or closes constructively.
This avoids chasing the initial breakout.
Continuation entry
A green triangle can support a continuation entry when:
The dashboard already has bullish alignment.
Price is not excessively extended above the MA.
The continuation break has room before the next bearish FVG or swing resistance.
A triangle by itself is not enough.
16. Suggested Short Entry Framework
Core short condition
The preferred short environment is:
Latest Shift = Bearish Shift
Bearish Pivot MA = Active
Shift + MA = Bearish Match
Additional confirmation
A higher-quality short may include:
Price below VWAP
RSI below 50
Short Health at 75% or 100%
Bearish FVG above or near the entry
No major bullish FVG immediately below
A red R retest marker
Conservative short entry
A conservative bearish sequence is:
Bearish Shift appears.
Bearish Pivot MA becomes active.
Price remains below or rejects VWAP.
RSI remains below 50.
Price rallies back into the red MA.
A red R appears.
The retest candle rejects the MA or closes bearishly.
17. How to Stay in a Position
Staying in a long
A long remains structurally healthier while:
Latest Shift remains bullish.
Bullish Pivot MA remains active.
Price remains above VWAP.
RSI remains above 50.
Long Health remains at 75% or 100%.
Bullish FVGs below price continue to act as support.
No Bearish Shift is created.
Early long weakness
Potential deterioration begins when:
RSI falls below 50.
Price falls below VWAP.
Bullish MA becomes ghost.
Long Health falls from 100% to 75% or 50%.
One lost factor is not necessarily an exit. It is a warning that confluence is decreasing.
Strong long invalidation
More serious invalidation can include:
Bearish Shift
Bearish Match
Bullish MA break
Price remaining below VWAP
RSI remaining below 50
Bullish FVG support being fully mitigated
Staying in a short
A short remains healthier while:
Latest Shift remains bearish.
Bearish MA remains active.
Price remains below VWAP.
RSI remains below 50.
Short Health remains high.
Bearish FVGs above price act as resistance.
No Bullish Shift appears.
Strong short invalidation
Potential invalidation includes:
Bullish Shift
Bullish Match
Bearish MA break
Sustained price above VWAP
RSI above 50
Bearish FVG resistance being invalidated
18. Stop-Loss and Profit Management
The indicator does not place stops or targets.
Possible stop references include:
For long trades
Below the retest candle low
Below the latest confirmed swing low
Below the bullish FVG
Below the bullish MA with an ATR buffer
Below the structure level that would invalidate the setup
For short trades
Above the retest candle high
Above the latest swing high
Above the bearish FVG
Above the bearish MA with an ATR buffer
Possible profit references
Previous swing high/low
Opposing FVG
Major VWAP deviation area
Fixed risk-to-reward target
Partial exit at 1R and trailing remainder
Opposite Shift
Health score deterioration
Stops should not be moved farther away simply to avoid accepting a loss.
19. Alerts
The script provides selectable conditions for:
Bullish Shift Created
Bearish Shift Created
Bullish Directional MA Retest
Bearish Directional MA Retest
Bullish Pivot MA Broken
Bearish Pivot MA Broken
Bullish Shift + Bullish MA alignment
Bearish Shift + Bearish MA alignment
Alert toggles
The shift and retest alerts have individual enable/disable inputs.
These settings control whether the corresponding alert condition can trigger.
Important TradingView behavior
Enabling an alert condition in the indicator settings does not automatically create a TradingView alert.
You must still:
Open TradingView’s alert dialog.
Select the indicator.
Select the desired alert condition.
Choose the frequency.
Create the alert.
For confirmed signals, using Once Per Bar Close is generally the most consistent choice.
20. Repainting and Confirmation Considerations
Pivot delay
Confirmed pivots require future right-side bars.
This means:
Pivot signals are delayed.
Once confirmed, the historical pivot itself is stable.
The indicator does not know a pivot at the exact moment the pivot bar first forms.
Bar-close confirmation
Confirm Signals On Bar Close is enabled by default.
This reduces intrabar signal changes for:
MA breaks
Structure breaks
Shift creation
Retests
Intrabar movement
The current MA, VWAP, RSI, and live candidate values may still visually move while the current candle is forming.
Using bar-close confirmation does not freeze the current bar’s underlying price calculations.
FVG evolution
FVGs can disappear when:
Mitigated
Invalidated
Removed by overlap filtering
Excluded by the Show Last setting
This is normal lifecycle behavior, not necessarily historical repainting.
21. Practical Decision Hierarchy
A disciplined way to use the indicator is:
Step 1 — Identify structure
Check Latest Shift.
Bullish Shift → prioritize long ideas.
Bearish Shift → prioritize short ideas.
Waiting → insufficient shift history.
Step 2 — Confirm the directional MA
Check Shift + MA.
Bullish Match → bullish structure and MA agree.
Bearish Match → bearish structure and MA agree.
No Match → wait or reduce conviction.
Step 3 — Check equilibrium
For longs:
Prefer price above VWAP.
Prefer RSI above 50.
For shorts:
Prefer price below VWAP.
Prefer RSI below 50.
Step 4 — Check location
Use:
Directional MA retest
FVG support/resistance
Recent swing levels
VWAP
A good directional idea entered at a poor location can still have poor risk-to-reward.
Step 5 — Check health
75–100%: favorable confluence
50%: mixed
0–25%: weak for that direction
Step 6 — Define invalidation before entry
Determine:
Stop level
Position size
Maximum acceptable loss
First target
Conditions for partial or full exit
Disclaimer
This indicator is provided for informational, educational, and analytical purposes only. It does not constitute financial advice, investment advice, trading advice, a solicitation, or a recommendation to buy or sell any financial instrument.
Market-structure shifts, moving averages, VWAP, RSI, Fair Value Gaps, retest markers, continuation symbols, health scores, and alerts are mathematical interpretations of historical and real-time market data. They do not guarantee future price movement or profitable outcomes.
The Health Score is a count of aligned indicator conditions. It is not a probability of success, an expected return, or a measure of actual trade risk.
Trading cryptocurrencies, forex, commodities, futures, CFDs, and other leveraged products involves substantial risk and may result in the loss of some or all invested capital. Historical performance does not guarantee future results. Signals may be delayed because of pivot confirmation, and real-time values may change before a candle closes.
Always perform independent analysis, use appropriate position sizing, define a stop-loss before entering a trade, account for fees and slippage, and never risk capital you cannot afford to lose. The user remains solely responsible for all trading and investment decisions. อินดิเคเตอร์

Volume-Weighted Order Block Zones [BigBeluga]🔵 OVERVIEW
The Volume-Weighted Order Block Zones is an advanced technical indicator created by BigBeluga to identify and map institutional order blocks using pivot points and price displacement. Traditional order block indicators often highlight every single pivot zone, resulting in chart clutter and low-probability setups. In order to provide a solution to this problem, this indicator integrates volume-weighted strength calculations and ATR-based displacement triggers, ensuring that only high-momentum structural zones backed by significant volume are plotted.
The indicator aims to visualize institutional order-building and subsequent market expansions. The core element of its calculation involves tracking volume-weighted metrics against moving averages alongside a dynamic displacement formula defined as:
bearLevel = bearObHigh - atr * displacement
bullLevel = bullObLow + atr * displacement
where atr is the standard Average True Range of period 100, and displacement is the sensitivity multiplier. Higher values of displacement and minVolStrength allow the indicator to filter out weak market noise and focus exclusively on major institutional footprints.
🔵 FEATURES
The system utilizes a multi-layered matrix structure to provide actionable market intelligence:
1 — Swing & Volume-Weighted Detection Engine
Pivot Identification: Automatically tracks structural pivot highs and lows using a customizable swing length via pHigh = ta.pivothigh(high, swLen, swLen) and pLow = ta.pivotlow(low, swLen, swLen) .
Volume Strength Filtering: Calculates volume intensity percentages via f_getVolumeColor(vol, sma, baseColor) to filter out blocks falling below the minVolStrength threshold.
2 — Displacement Triggers & Order Block Mapping
Dynamic Trigger Lines: Projects live dashed trigger lines using line.new(bullObBar, bullLevel, bar_index, bullLevel, style=line.style_dashed) that extend dynamically until price achieves the required ATR displacement threshold.
Zone Visualization & Peak Labels: Plots high-precision order block boxes with volume percentage text alongside structural pivot high ( PH ) and pivot low ( PL ) labels.
3 — Active Zone Management & Retest Signals
Mitigation & Invalidation: Continuously monitors active zones inside the loop structure, automatically deleting order blocks when price breaches opposite boundaries or gets fully mitigated.
Retest Signals ( B / S ): Generates clear B (Bullish OB bounce) and S (Bearish OB rejection) signal labels when price retests active institutional zones.
🔵 HOW TO USE
Apart from the basic visualization of institutional market zones, this tool can also act in alternative ways to support decision-making:
Identify High-Volume Order Blocks: Look for newly formed order block boxes displaying strong volume percentages (e.g., above 20%+) to locate institutional liquidity entry points.
Manage Risk with Retest Labels: Monitor B and S retest signal labels to guide entries and manage stop losses as price interacts with active institutional zones.
🔵 NOTES
Why this implementation is unique:
It combines volume profile weighting directly with order block detection, filtering out low-volume traps automatically.
The dynamic live trigger line engine adapts seamlessly to real-time price action without cluttering historical chart data.
The script is fully optimized for Pine Script version 6, integrating robust array management var OB obBoxes = array.new() and dynamic box rendering for maximum performance.
อินดิเคเตอร์

BarrettFVG HTF Pivot Reaction Model**BarrettFVG HTF Pivot Reaction Model**
Higher-timeframe swing levels that have to **earn** their place before they can produce a signal. Rather than plotting every pivot high and low from a higher timeframe and treating them all as equally valid, this indicator tracks how price has actually behaved at each level and only qualifies the ones price has demonstrably reacted to.
---
### The core idea
Most multi-timeframe S/R tools draw every HTF pivot as a level. The problem is that a swing high is just a price where the market happened to turn once — and one turn doesn't make an area meaningful. Some of those levels get respected repeatedly; most get cut straight through and never mattered.
This indicator separates the two by observation rather than assumption. Every 1H, 30m, and 15m pivot is tracked from the moment it forms, but it starts as a **Potential Level** — visible, monitored, and unable to produce any signal. It only becomes a qualified level once price has come back and genuinely reacted at it.
A **reaction** is defined mechanically:
1. Price enters the level's tolerance band
2. Price then moves away from it — in the direction the level should push it (down from a resistance, up from a support)
3. That move reaches a configurable distance, measured in multiples of the higher timeframe's ATR
Direction is enforced deliberately. A candle spiking straight through a level covers plenty of distance, but that's the opposite of respecting it, so only movement on the correct side counts. A sharp rejection and a slow stall-then-drift-away both qualify, as long as price eventually clears the required distance within the reaction window.
Each level displays its running reaction count, so you can see exactly how many times price has responded there.
---
### Levels
- **Three source timeframes**: 1H, 30m, and 15m by default, each individually toggleable and configurable
- **Automatic merging**: pivots from different timeframes landing within the same tolerance band become one level tagged with all of its sources (`15m+30m+1H`), keeping the accumulated reaction history rather than double-counting
- **Extended across the chart**: levels run in both directions, so a level formed days ago stays visible as a flat reference — a level is a price that stays relevant, not a segment tied to when it formed
- **Proximity display**: only the closest levels to current price are drawn, so the chart shows what's in play rather than every level in history
- **Two display modes**: a clean midpoint line, or the full tolerance band shown as a zone box so you can see exactly what the logic is using
**Timeframe consistency:** all sizing, ageing, and reaction timing is anchored to the higher timeframe's ATR and to real clock time rather than to chart bars. This means the same levels appear whether you're on a 1-minute chart or a 15-minute one. A bar-based implementation would silently produce different level sets on different chart timeframes from identical source data.
---
### Entry model
Two paths, both requiring a Break of Structure to fire:
**1 — TAP**
Price reaches a qualified level, taps it or slightly overshoots within a configurable tolerance, then breaks structure in the reversal direction. The overshoot allowance is what separates a tap from a break; beyond it, the level is treated as broken and only the reclaim path remains available.
**2 — RECLAIM (break and retest)**
Price breaks through the level, **builds structure on the far side**, then returns to the level and breaks structure back in the reversal direction.
The far-side structure requirement is the important part. A break only counts as significant once a confirmed swing forms beyond the level — for a broken resistance, that means a swing low printing above it, showing price pulled back up there and held. This is deliberately a *structural* test rather than a candle-size threshold: a single large wick through a level doesn't qualify, while a slow grind that builds a genuine swing does.
Both paths then wait for the same Break of Structure confirmation within a configurable bar window, using independent pivot tracking rather than the level's own geometry — so the confirmation is a real structural event, not a restatement of the level that armed it.
**Level flipping:** when a reclaim confirms, the level inverts its polarity. A resistance that price broke above and then held as support becomes a support level, marked with a flip indicator. This changes its behaviour, not just its appearance — future taps arm the correct direction from that point on.
---
### Signals and alerts
Entry markers plot as directional arrows on the confirming candle, with a dotted line showing the swing that broke to produce the BOS — anchored at the swing's actual formation bar so it points at the structure it's referencing.
Alerts carry the full context of what fired:
`MNQ1! — LONG RECLAIM | 1H+15m level @ 29,437.75 | 3 reactions`
Which entry path fired, which timeframes formed the level, the level's price, and how many times price has reacted there.
Signals are restricted to configurable trading session windows, with a cooldown preventing repeated same-direction entries off a single move.
**This indicator does not plot stop-loss or take-profit levels.** It identifies levels and signals entries; risk placement is left to the trader.
---
### Settings
Grouped by how often you'd change them:
1. **HTF Levels** — source timeframes, pivot length, band width, storage limits, level age
2. **Reaction Qualification** — minimum reactions, move-away distance, reaction window
3. **Entry Model** — path toggles, BOS pivot length and window, overshoot tolerance, cooldown
4. **Reclaim Structure** — far-side pivot length, retest window
5. **Sessions** — trading windows
6. **Display** — level visibility, colours, markers, labels
Every input has a tooltip explaining what it does and how it interacts with the rest.
---
### Notes on defaults
Defaults are **starting points, not optimised values.** They have not been backtested or tuned for any particular instrument or timeframe. The reaction distance, band width, and BOS window in particular will likely need adjusting for whatever you trade — start with Potential Levels visible so you can see what's being tracked and how quickly levels accumulate reactions before tightening anything.
Because reactions are earned through observed price behaviour rather than assumed from pivot geometry, levels start unqualified and accumulate history as the chart loads. Expect fewer qualified levels near the left edge of a freshly-loaded chart.
---
## Disclaimer
*This script is provided for educational and informational purposes only. It does not constitute financial, investment, or trading advice, nor a recommendation or solicitation to buy or sell any financial instrument.*
*Trading futures, forex, stocks, cryptocurrencies, and other leveraged instruments carries a substantial risk of loss and is not suitable for every investor. You may lose some or all of your invested capital, and with leveraged products you can lose more than your initial deposit. You should not trade with money you cannot afford to lose.*
*No indicator, system, or method can predict future price movement. The signals produced by this script are pattern-based observations derived from historical price data — they describe what has already happened, not what will happen next. Levels identified as "qualified" have met a mechanical definition of prior reaction; this does not imply price will react at them again.*
*Past performance, backtested results, hypothetical results, and historical signals are not indicative of future results. Backtested and hypothetical performance carries inherent limitations, including the benefit of hindsight and the absence of real execution factors such as slippage, spread, commissions, liquidity constraints, and the psychological pressures of live trading.*
*The default settings included with this script are unoptimised starting points. They have not been tuned or validated for any specific market, timeframe, account size, or risk tolerance. Test thoroughly on historical data and in simulation before considering any use with real capital.*
*This script does not plot or calculate stop-loss or take-profit levels. Position sizing, risk management, and trade management decisions are entirely the responsibility of the user.*
*You are solely responsible for your own trading decisions and for any outcomes resulting from them. The author makes no representations or warranties as to the accuracy, completeness, or suitability of this script for any purpose, and accepts no liability whatsoever for any losses, damages, or costs incurred through its use.*
อินดิเคเตอร์

Repainting Statistics: Displayed vs Tradeable Win RateRepainting means that an indicator draws or changes signals on bars
that have already closed, using information that did not exist when
those bars closed. Before you trust an indicator whose arrows mark
every top and bottom - or a backtest built on such arrows - this script
shows how much of that performance hindsight alone can create, on any
chart.
On randomly generated price bars - data with no trend and no pattern to
find - a pivot-reversal arrow showed a 75.84% win rate. The same arrow,
entered at the first moment it was actually visible on a live chart,
won 50.0% - the coin flip that random data must produce. The 25.9-point
gap is the repainting premium.
On real market data - a crypto pair, an FX pair and an equity index
future - the premium at the default settings is 18.9 percentage points
of win rate. That is the average amount by which the displayed history
of a repainting signal overstates what a real-time user of the same
signal could have achieved.
This script measures the two kinds of repainting that place future
information onto past bars: signals computed from data that had not yet
happened, and signals drawn backwards onto earlier bars with a plot
offset. A third kind - signals that appear and disappear while the live
bar is still forming - is a separate phenomenon and is out of scope
here. This script itself does not repaint: every marker it draws is
created only after the signal is confirmed, and is never moved.
The measurements behind this publication were made on BTCUSDT (crypto),
EURUSD (forex) and ES1! (an equity index future). The script runs on any
symbol and timeframe.
What to Use It For
Putting a number on a widely known warning. Traders are routinely
warned that repainting indicators look better than they perform. The
warning is correct, but it usually comes without a number. This script
produces the number, on your chart, with a method you can audit row by
row in its panel.
Understanding what a hindsight chart is worth. Arrows planted at
exact tops and bottoms - ZigZag-style reversal markers, fractal arrows
drawn several bars back - are the most common repainting signals. The
script scores the same signal twice on the same bars: where history
draws it, and where a live user could first have acted on it. The
difference is what the hindsight display is worth.
Testing before trusting. If a signal on your chart is drawn
in the past - the arrow sits several bars behind the bar where it first
appeared - this measurement applies to it. The pivot rule used here is
the cleanest representative of that family, with the hindsight distance
as an explicit setting, so you can see how the premium grows as signals
are drawn deeper into the past.
A pivot-reversal signal on a real chart. The orange triangle is the
displayed placement: history draws the signal at the exact swing bar.
The circle marks the confirmation bar: the first bar on which the signal
was actually knowable in real time. The dotted line connects the two -
the bars in between are the hindsight gap. The panel scores every such
pair on the loaded chart - 5,512 of them here, not just the two visible
- in both ways and reports the difference.
The Result in Plain Language
Every tested configuration showed a large, positive repainting premium.
Across three instruments at the default settings, the displayed version
of the signal won 18.9 percentage points more often than the tradeable
version of the same signal - about 68% against about 50%. The result
repeated on every instrument, on two timeframes, and in a separate
calendar year that shares no data with the main test window.
The deeper the hindsight, the larger the premium: painting the signal 2
bars into the past cost 13.1 points; painting it 10 bars back cost 34.5
points. Filling the trade at the exact swing price - which is what a
naive backtest of a repainting signal does - nearly doubled the premium
compared with filling at the signal bar's close.
The tradeable version of the signal, meanwhile, stayed at the baseline
in every cell. The gap between the two versions is not produced by the
rule finding good trades. It is produced by where history draws them.
Terms Used in the Panel
Displayed arm. The trade as the chart's history shows it: entry
at the close of the bar where the signal is drawn - the pivot bar, the
swing bar the arrow points at - even though the signal did not exist yet
on that bar.
Tradeable arm. The same signal entered at the close of the bar
where it first became knowable - the confirmation bar. This is the best
a real-time user of the signal could have done.
Premium ("disp - trad"). The displayed arm's win rate minus the
tradeable arm's win rate, in percentage points. This is the primary
result: the part of the displayed performance that hindsight placement
alone creates.
Percentage point (pp). An absolute difference between
percentages: 68% minus 50% is 18 percentage points.
Discordant pairs. Events where the two arms disagreed - one won
and the other lost. The premium's z score comes from a paired test
(McNemar's test) on exactly these events: it asks whether the
disagreements favour one arm more often than chance allows. A paired
test is used because both arms trade the same events on the same price
path, so their outcomes rise and fall together.
z score. The result divided by a measure of its statistical noise.
As a widely used threshold, an absolute z score above 2 is treated as a
first sign of a real effect; this study also required the result to
repeat on two more instruments before calling it a finding.
95% confidence interval (95% CI). A range around the estimate
showing its uncertainty. When the range excludes zero, the direction of
the effect is established at that confidence level.
Ambiguous outcome. A bar whose range contains both the target and
the stop. Bar data cannot show which was reached first, so the case is
counted against the win rate - the safe choice.
Censored outcome. A trade that reached neither barrier before the
time limit. It is reported separately and leaves the paired comparison;
a pair only counts when both arms produced a real outcome.
Replay errors. An internal integrity counter for the part of the
measurement that reconstructs the displayed arm's trade from closed
bars. It must read 0; any other value voids the run and says so.
The Rule Being Measured
A pivot low is a bar whose low is strictly below the lows of a set
number of bars on each side - the pivot length. A pivot high is the
mirror image. In this script a pivot low is a long signal and a pivot
high a short signal, ties disqualify the bar, and the test uses the
strict definition throughout.
A pivot with length 3 can only be recognised 3 bars after the pivot bar
prints: its definition depends on the bars that come after it. History
nevertheless draws the signal at the pivot bar. That gap - the signal
exists in the display 3 bars before it existed in reality - is not a
flaw of one particular indicator. It is the defining feature of the
whole family of reversal markers this rule represents, and its size is
the pivot length, which makes the hindsight distance measurable as a
setting rather than an accident.
How the Measurement Works
Both arms of every pair use one shared risk unit: the average true range
(ATR) measured at the pivot bar. Average true range is roughly how far
price typically travels in one bar, so barriers set in ATR mean the same
thing on a volatile instrument and a quiet one. A barrier size of 2R
places a target and a stop two risk units from the entry, one on each
side.
The displayed arm enters at the pivot bar's close. The tradeable arm
enters at the confirmation bar's close. Each arm then races its own
symmetric barriers: whichever of the target or stop is reached first
decides the outcome, with a time limit for trades that reach neither.
Entries are recorded at closes because a bar's high or low has no known
time inside the bar; a close is a defined moment.
The displayed arm's early bars are reconstructed at confirmation time
from bars that have already closed. Nothing about the measurement uses
future data; the future data is entirely inside the thing being
measured - the entry placement.
Why the displayed arm cannot help winning more. A pivot low is,
by definition, lower than every low for the next several bars. So while
the displayed trade runs through those bars, price cannot reach a stop
placed at or below the pivot low - but it can reach the target. Losing
outcomes are suppressed during the hindsight gap; winning outcomes are
not. The panel shows this directly: the displayed arm's average adverse
excursion (how far a trade goes against the entry before resolving) is
0.56-0.61R across the baseline cells, while the tradeable arm's is
0.85-0.89R on the same events.
The built-in validation. Price is replaced internally with a random walk
that contains no signal by construction, so the correct answer is known:
the tradeable arm must win 50%, and here it reads 50.2% with a
confidence interval containing 50. The displayed arm wins 76.1% on this
run of the test. The premium exists before any market data is involved,
because it is a property of hindsight placement, not of markets.
Results
The study contains 18 runs: 4 validation runs on synthetic data and 14
market runs producing 15 estimates. All 15 market estimates are
positive, ranging from +12.2 to +34.5 percentage points, with the
smallest z score at +12.8. The smallest difference the design can
detect is about 1 percentage point, measured on data with no edge.
The decision rule was fixed before any market run: an absolute z score
above 2 on one configuration, plus a repeat of the result on the two
other instruments, before anything counts as a finding. The rule was
met in full.
Baseline configuration, 30 minutes, 2025-01-01 to 2026-08-01:
Instrument Premium z Pairs
BTCUSDT +18.0pp +29.0 5,348
EURUSD +20.1pp +25.4 3,618
ES1! +19.2pp +22.6 3,276
Pooled +18.9pp 95% CI +18.1 to +19.7
A heterogeneity check (Cochran's Q, which asks whether the three
instruments disagree more than sampling noise allows) does not reject
pooling: Q 4.43, p 0.11.
The same three instruments, 1-hour timeframe: +17.4, +20.6 and +20.1
points - each within one point of its 30-minute counterpart. At 1 hour
the heterogeneity check is marginal (Q 6.02, p 0.049), so the 1-hour
result is reported as the range +17.4 to +20.6 rather than as one
pooled number.
Calendar year 2024, which shares no data with the window above: +15.8,
+18.0 and +18.9 points, pooled +17.3 (95% CI +15.8 to +18.7, Q p 0.19).
The premium grows with hindsight depth. On BTCUSDT 30m, changing
only the pivot length - how many bars into the past the signal is
drawn:
Hindsight depth Premium z Pairs
2 bars +13.1pp +27.6 7,364
3 bars (default) +18.0pp +29.0 5,348
5 bars +24.8pp +27.7 3,428
10 bars +34.5pp +24.0 1,775
The relationship is strictly monotone, and it was stated as the expected
pattern in the study design before any run: a longer protected gap
suppresses more losing outcomes. A measurement artifact would have no
reason to follow the dose this way.
The premium shrinks as barriers widen. Same events, scored at
three barrier sizes: +29.4 points at 1R, +18.0 at 2R, +12.2 at 3R. The
hindsight gap protects a fixed number of bars; a wider barrier makes the
race last longer, so the protected bars are a smaller share of it.
Filling at the arrow price nearly doubles the premium. The
default displayed fill is the signal bar's close. Filling at the pivot's
exact extreme instead - which is what a backtest that trusts the arrows
does - raises the premium from +18.0 to +34.2 points on the same
events. The displayed arm's average adverse excursion collapses to
0.28R: trades that appear to suffer almost no drawdown. In that
configuration, across 5,349 pairs, there was not a single event where
the tradeable arm won and the displayed arm lost. That is exactly what
the geometry requires, and it serves as an additional consistency check
on the measurement.
The tradeable arm stayed at its baseline everywhere. In all nine
baseline market cells its win rate was between 49.3% and 51.2%, and its
confidence interval contained 50% every time. This is reported as a
property of the measurement design, not as a claim about pivot trading;
see the limitations.
To reproduce the published figures: the script defaults match the
baseline configuration. Switch the date range on (2025-01-01 to
2026-08-01), disable compact panel mode, and load the full chart
history. The three instruments are BTCUSDT, EURUSD and ES1!.
Validation
Known-answer test. Synthetic mode replaces price internally with
a random walk that contains no signal, so the correct answers are known
in advance: the tradeable arm must win 50%, and the displayed arm must
win more - if either fails, the measurement is broken. Across three
seeds (three different artificial price series), the tradeable arm
pooled to 49.96% on 11,637 pairs, within a twentieth of a point of 50%,
with every seed's confidence interval containing 50%. The displayed arm
pooled to 75.84%. The premium on data with no edge: +25.9 points.
Drift stress test. The same test repeated with a steady upward
drift added to the artificial data. Drift moved the long and short win
rates apart, as it must - the tradeable arm read 59.0% long and 41.3%
short - but the premium barely moved: +24.9 points against +25.9
driftless. Both arms inherit the drift, and it cancels in the pairing.
This is the test that shows the premium is not a trend artifact.
The drift stress test. Artificial data with a steady upward drift and
still no signal by construction. Drift splits the tradeable arm's two
directions apart - 59.0% long against 41.3% short - exactly as a trend
must. The premium is nearly unchanged: +24.9 points against +25.9
without drift, because both arms inherit the drift and it cancels in
the pairing. Synthetic mode replaces price internally, so the chart
behind the panel does not show the tested data.
Resolution. On no-edge data the design resolves differences down
to about 1 percentage point. Every market estimate in this study is at
least twelve times that floor.
Accounting. The panel reconciles every confirmed pivot into
exactly one category (measured, out of range, no ATR available, or
filtered), reports any mismatch as an explicit error, and carries a
replay-error counter that must read zero. Across all 18 runs, every
reconciliation was exact and every replay-error count was zero.
Settings
Signal definition. Pivot length sets how many bars on each side
define a pivot - and with it, how far into the past the displayed signal
is drawn. Minimum separation optionally rejects events too close to the
previous one.
Measurement. ATR length sets the risk unit. Barrier size sets the
target and stop distance in risk units. The time limit censors trades
that reach neither barrier. Displayed fill chooses where the displayed
arm enters: the pivot bar's close (default) or the pivot's exact extreme
(labelled biased; it adds the fill bias on top of the placement bias).
Sample. The date range uses explicit year, month and day fields
rather than a date picker, so a published sample can be reproduced
exactly.
Validation. Synthetic mode, seed, step size and drift per bar.
Display. Compact panel mode, the signal markers with their gap
lines, and the marker size.
Limitations
One rule family was measured. The pivot-reversal signal is the
cleanest and most common representative of hindsight placement, but
other repainting mechanisms - such as higher-timeframe data requested
with lookahead - share the deception without being measured here. The
numbers in this description apply to the measured rule.
The tradeable arm's 50% is not a verdict on pivot trading. This
design pairs two versions of one rule; it contains no control for the
rule itself, so it cannot say whether pivot reversals have or lack an
edge against other entries. The premium - the difference between the
two versions - is the only claim.
Long/short splits are unreliable under trend. In the drift test,
drift displaced the two directions' win rates by about nine points each
way while the aggregate premium held. Read the aggregate rows; treat
directional splits as descriptive.
Instruments may differ by a small amount. BTCUSDT showed the
lowest premium in every window, and at 1 hour the heterogeneity check
was marginal. A real instrument-level spread of roughly two points
around +19 is possible. No cell was below +12.
Loaded chart history bounds every sample. The number of bars the
chart loads, not only the calendar range, limits each run. The windows
and sample sizes are stated per cell above.
Historical measurement is not a forecast. The script reports what
happened under the specified rules and samples. It does not predict the
future behavior of any signal or instrument.
Disclaimer
This script and its description are provided for educational and
research purposes only. They do not constitute financial, investment,
trading or other professional advice, and they do not recommend buying,
selling or holding any asset. Historical and simulated results do not
guarantee future performance. Trading involves risk, including the
possible loss of capital. You are solely responsible for your trading
and investment decisions and should conduct your own research and,
where appropriate, consult a qualified financial professional.
อินดิเคเตอร์

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

Anchored VWAP Origin Chronicle - Manual Swing High and LowOverview
Anchored VWAP Origin Chronicle is an open-source chart overlay for studying chart-reported volume-weighted price from three independently managed origins:
* one manually selected chart point;
* the latest accepted, confirmed swing-high origin;
* the latest accepted, confirmed swing-low origin.
The manual time selects the first chart bar included in the manual anchored VWAP. The manual price is used only to position the M marker; moving that marker vertically does not change the calculation.
This is not a session-reset VWAP, a deviation-band study, a prediction model, a strategy, or a buy/sell signal system. Its purpose is to make origin selection, confirmation timing, volume availability, visible-window context, and the relationship between two independently anchored structural means explicit and researchable.
What the script calculates
For each active origin, the calculation is:
AVWAP = sum(source x positive chart-reported volume) / sum(positive chart-reported volume)
The manual, swing-high, and swing-low AVWAPs maintain independent numerators and denominators. The implementation uses compensated floating-point accumulation to reduce numerical cancellation that can occur when recent anchored values are obtained by subtracting large chart-wide cumulative totals.
Missing, zero, negative, or otherwise unusable volume receives zero weight. The script does not replace unavailable volume with equal bar weighting or TWAP. The calculation can therefore remain unavailable on symbols or ranges that do not provide positive chart volume.
Manual origin
When the indicator is added, select the chart point that should act as the manual origin.
* The selected time determines the first included bar.
* The selected price positions the M marker only.
* The cyan manual AVWAP is independent of the two automatic AVWAPs.
* If the selected time is earlier than the loaded dataset, the manual calculation is blocked instead of silently substituting the first loaded bar.
* By default, the manual AVWAP is hidden when its origin is outside the current visible horizontal range. This prevents an off-screen manual anchor from appearing as an unexplained line. Disable "Hide manual AVWAP when origin is outside view" when a long-horizon manual projection should remain visible.
Hiding the manual curve is a presentation rule only. It does not redefine the selected origin or convert the calculation into a visible-range VWAP.
Confirmed swing origins
The magenta high-origin AVWAP and green low-origin AVWAP are managed independently. Replacing one origin does not force the other side to reset.
An automatic origin is not accepted solely because it is a local high or low. Users can control:
* bars required on the left and right of a pivot;
* minimum local prominence normalized by ATR;
* minimum spacing between same-type origins;
* an optional relative-volume requirement at the pivot bar;
* the replacement policy.
The available replacement policies are:
* Latest qualified: accepts each new candidate that passes the active filters.
* More prominent only: requires a candidate to improve on the active same-type origin by the configured ATR-normalized margin.
* New price extreme only: requires a higher high for the high-origin curve or a lower low for the low-origin curve.
Confirmation chronology
Automatic pivots require the configured number of right-side bars. A pivot therefore becomes knowable only after its confirmation delay has elapsed.
H and L labels identify the historical origin bars after confirmation. The optional confirmation marker identifies the later bar where the pivot became available, and the dotted bridge shows the origin-to-confirmation delay.
The automatic AVWAP includes chart-reported volume beginning at the actual pivot bar. However, the curve is not backfilled through the origin-to-confirmation interval. It first appears after confirmation and is broken on an anchor-replacement bar so the previous and replacement origins are not visually connected.
This distinction is important: the calculation starts at the pivot, but the automatic origin is not treated as known before confirmation.
Visible-window historical research
The indicator is designed to support both live observation and historical chart research.
Plots, endpoint symbols, retained origin drawings, visible-range volume statistics, and the status panel follow the chart's current visible horizontal range. Scrolling or zooming the chart re-evaluates that research view.
The status panel is evaluated at the rightmost visible bar:
* LIVE means the visible right edge is the developing realtime bar.
* CLOSED means the visible right edge is the latest confirmed bar.
* HISTORY means the latest chart bar is outside the visible range and the panel is reporting a historical research state.
When HISTORY is shown, later bars do not redefine the panel state displayed for the visible right edge. A pivot that would only be confirmed after that visible right edge is not drawn as an available historical origin in that research view.
The underlying AVWAP accumulation still begins at the true accepted origin. The script does not restart an automatic AVWAP at the left edge of the screen.
Swing-pair relationship model
When both automatic AVWAPs are available, the script reports:
* whether the selected context source is above both curves, below both curves, or between them;
* the separation between the two curves in ATR units;
* whether the pair is within the user-defined convergence threshold;
* whether the high-origin curve is above or below the low-origin curve;
* optional confirmed order-flip events when the curves cross.
The transparent fill describes the current price context. When the two automatic curves are close enough to satisfy the convergence threshold, an amber midpoint spine helps preserve visual separation without moving either AVWAP.
These relationships are descriptive. They are not directional forecasts, entries, exits, or trade recommendations.
Visual design
The default presentation uses:
* cyan for the manual AVWAP;
* magenta for the confirmed swing-high-origin AVWAP;
* green for the confirmed swing-low-origin AVWAP;
* a dark contrast halo;
* an optional one-pixel precision core;
* compact endpoint symbols at the rightmost visible values;
* a transparent relationship fill;
* an amber convergence spine when the automatic curves overlap closely.
Cross, convergence-event, and order-flip markers are available but disabled by default to keep the chart readable. Colors, widths, transparency, retained marker history, panel position, panel size, and right-axis clearance are configurable.
Status panel
The panel summarizes:
◆ Manual anchor
▲ High origin
▼ Low origin
● Price context
↔ Pair relation
✓ or ! Data integrity
The panel can report states including WAITING, ORIGIN OUTSIDE VIEW, OUTSIDE LOADED DATA, BLOCKED, NO VOLUME, SYNTHETIC, PARTIAL, and READY.
READY has a narrow meaning: the percentage of visible bars with positive usable chart volume meets the configured threshold. It is not a certification of exchange data, broker data, data-vendor accuracy, or market quality.
Chart-type and volume handling
Standard chart prices are accepted by default.
Heikin Ashi, Renko, Kagi, Line Break, Point & Figure, Range, and other calculated-price chart types are blocked by default because their displayed prices are synthetic or transformed. Users can opt in intentionally. When enabled on such charts, the panel identifies the state as SYNTHETIC.
The panel also reports the chart's volume type when available. Depending on the symbol, volume can represent exchange volume, base volume, quote volume, tick volume, another reported measure, or no usable value.
Alerts
All optional events are routed through one dynamic alert call. To use alerts:
1. Enable "Dynamic alerts" in the indicator settings.
2. Create a TradingView alert.
3. Select this indicator.
4. Choose "Any alert() function call."
Dynamic messages can report:
* newly accepted confirmed swing origins;
* confirmed price crosses of the manual, high-origin, or low-origin AVWAP;
* transitions into above-both or below-both context;
* entry into swing-pair convergence;
* order flips between the two automatic AVWAPs.
Automatic anchor replacement, event conditions, and alerts are evaluated on confirmed bar close. Active AVWAP values can still change while the current realtime bar is forming because its price and cumulative volume are not final.
The visible-window presentation does not redefine the alert conditions. Alert events use the underlying live series and confirmed-bar logic.
Suggested workflow
1. Add the indicator and select a meaningful manual origin.
2. Confirm that the chart provides the type of volume you intend to study.
3. Read H and L as confirmed historical origins, not as signals available on the original pivot bar.
4. Compare the independent manual, high-origin, and low-origin AVWAP paths.
5. Use the panel to inspect price context, pair separation, curve order, visible-range volume coverage, and LIVE/CLOSED/HISTORY state.
6. Adjust pivot qualification and replacement policy to study how different origin definitions change the result.
7. Enable optional event markers or alerts only when they are useful to the research question.
Limitations
* Results depend entirely on the price and volume series supplied by the chart and data provider.
* No AVWAP is produced when total positive chart-reported volume from an origin is zero.
* Tick volume, base volume, quote volume, and exchange volume are not interchangeable economic measures.
* Pivot confirmation necessarily occurs after the pivot bar. Larger right-side settings increase the delay.
* H and L labels are placed on historical origin bars only after confirmation.
* The open realtime bar can change the current AVWAP values until that bar closes.
* Scrolling or zooming changes the visible-window research scope and therefore the panel's visible-range statistics and right-edge state.
* Default settings are general research starting points. They are not optimized for a symbol, timeframe, market, or outcome.
* ATR prominence, relative volume, convergence, curve order, fills, markers, and alerts describe observed chart relationships only.
* This indicator does not claim profitability, predictive accuracy, or future performance and does not provide financial advice.
Open-source note
This is an independent open-source implementation built from the conventional definition of volume-weighted average price and standard Pine Script features. It does not incorporate third-party indicator source code, a proprietary trading methodology, or a paper-specific implementation.
อินดิเคเตอร์

Swing Anchored VWAP Deviation [Pineify]Swing Anchored VWAP Deviation
Overview
Swing Anchored VWAP Deviation maps volume-weighted equilibrium after a swing. Its line, field, marker, and dashboard encode origin, dispersion, zone, and volume status.
Problem Definition
Session VWAP resets by time even when the boundary is unrelated to a contextual swing. Manual anchors require hindsight; naive pivot automation can reset on small zigzags or imply knowledge before confirmation. Fixed-width bands also equate distances across tight and dispersed auctions. The invariant needed is a confirmed anchor, statistics beginning at the real swing without an early signal, and distance scaled by post-anchor volume.
Design Rationale
Confirmed left/right pivots provide structural origins. ATR-scaled distance from the latest opposing pivot filters small candidates; zero disables the gate. After acceptance, a finite replay covers pivot through confirmation, retaining the real statistical origin while delaying visible state until it is knowable. Online weighted moments reduce cancellation versus squared-price sums. Backward plots were rejected as misleading, and reset bars cannot trigger crosses caused only by the new frame.
Key Features
Confirmed swing anchors with an ATR prominence gate.
Online volume-weighted mean, variance, and nested bands.
Stable zone colors with optional markers, bar colors, wash, and dashboard.
Close-confirmed crosses and outer entries that ignore reset bars.
How It Works
HLC3 is the default source. On each closed bar, pivots use left/right windows. Distance from the latest opposing pivot is divided by ATR at the pivot bar; if both types confirm, the larger score wins.
Acceptance clears state and processes pivot through confirmation in order. Valid volume weights each sample. Online updates produce total weight, mean, and second moment; deviation is the square root of moment divided by weight. Later bars extend state once. Missing volume has zero weight, with no fallback.
Bands are AVWAP plus or minus selected deviation multiples. Close-to-AVWAP distance divided by deviation supplies sigma; a one-tick floor prevents zero division. Cyan/blue means positive deviation, orange/pink negative, and gray equilibrium. Low anchors are cyan and highs amber. Markers are placed on the swing after confirmation; bands start or jump at confirmation and never backfill.
How Multiple Indicators Work Together
This is one causal chain, not unrelated signals. Pivot confirmation defines origin; the ATR gate decides replacement; volume weights define equilibrium; weighted variance normalizes distance; and zone state drives visuals and alerts. Without confirmation there is hindsight ambiguity, without the gate there is reset noise, without volume equilibrium changes meaning, and without dispersion raw distances are incomparable.
Trading Ideas and Insights
Treat AVWAP as context for post-swing acceptance or rejection, not an entry command. Sustained closes on one side show where value is forming. An outer visit is large relative to volume-weighted dispersion, but does not choose continuation over mean reversion. Compare it with structure, liquidity, and holding period. Alerts are observation prompts, not orders or performance claims.
Unique Aspects
The contribution is confirmation-to-origin replay. Common automation either starts at the later confirmation bar or draws pivot history where the pivot was unknowable. This state includes genuine pivot-to-confirmation observations, yet changes visuals and alerts only after confirmation. Online weighted moments keep center and dispersion together; the opposing-swing gate limits trivial resets; reset suppression separates price movement from a changed frame.
How to Use
Begin with liquid stocks, futures, or crypto on roughly 15-minute to daily charts. Require Volume Weight ACTIVE in the dashboard. Read AVWAP as current equilibrium, the inner field as ordinary variation, and outer fields as larger normalized displacement. H or L marks the source swing but appears only after the right window completes. Configure each cross and outer-entry alert separately.
Customization
Left and Right Bars set swing scale and confirmation delay; larger values usually mean fewer, later anchors. Minimum Opposing Swing Distance filters in ATR units: raising it extends anchor life, while zero accepts all candidates. Source selects the weighted sample. Inner choices are 0.5, 1.0, and 1.5; outer choices are 2.0, 2.5, and 3.0. Field, markers, extreme wash, bar colors, and dashboard are independent switches, leaving AVWAP readable alone.
Assumptions and Limitations
Pivots arrive after Right Bars; marker location is not discovery time. The realtime bar can change AVWAP, variance, bands, colors, and dashboard, while anchors and alerts require a close. Volume must be reliable: absent, synthetic, delayed, or inconsistent data can remove output or distort the center. Results are path- and parameter-dependent because each anchor replaces the prior distribution. ATR gating can miss small turns or admit noisy large ones. Deviation is descriptive, not a probability guarantee, especially for skewed data. The script does not infer orders, profitability, or future price.
Conclusion
This indicator connects confirmed structure with volume-weighted distance while keeping timing auditable. Statistics originate at the swing, become visible only after confirmation, and expose volume, latency, reset, and realtime limits.
อินดิเคเตอร์

อินดิเคเตอร์

Support & Resistance Zones [HexaTrades]
This indicator automatically finds the price levels where the market has turned around before the places where buyers stepped in (support) and where sellers took over (resistance) and draws them as clean rectangular zones on your chart.
Instead of a thin line, each level is drawn as a zone with real thickness, because support and resistance are never one exact price; they are areas where price reacts. The zones update live, extend forward as long as they are valid, and turn into light "ghost" boxes once price finally breaks through them, so you always keep the full picture of the market's history.
Bitcoin 4h: the indicator marking support and resistance zones
How it works
- Finds swing points. A swing high is a candle whose high is higher than the 10 candles on each side of it (the "Swing Length" setting). A swing low is the same idea upside down. These are the exact spots where the market turned.
- Builds a zone from the candle. The zone covers the candle's wick from the extreme tip to the candle body. That wick is where orders actually pushed price back, so it becomes the zone.
- Keeps zone size sensible. Very small wicks get padded to a minimum height, and no zone can grow taller than a maximum height (both measured in ATR, so they adapt automatically to each market's volatility).
- Merges duplicate levels. If a new swing forms at a level that already has a zone, the two are combined into one box instead of stacking clutter on your chart.
- Watches for breaks. When a candle closes beyond a zone, the zone is "broken." what happens next is up to you (see below).
What happens after a zone breaks?
The indicator provides three different zone-management options.
Keep As Past Zone: The broken zone stops extending and remains visible as a faded historical zone. This makes it easier to review how price behaved around previous levels.
Flip Support/Resistance: A broken resistance zone becomes support, while a broken support zone becomes resistance.
This is useful for studying the common market concept of role reversal, where old resistance may act as new support and old support may act as new resistance.
Delete Zone: The zone is completely removed after it breaks. This option is useful for traders who prefer a cleaner chart showing only active zones.
Optional volume filter:
Volume-Confirmed Zones Only can be enabled to filter out lower-volume swing points.
When enabled, the volume of the swing candle must be higher than: Average Volume × Volume Multiplier
For example, with a Volume Multiplier of 1.2, the swing candle’s volume must be greater than 120% of its average volume.
The volume filter is automatically ignored when volume data is unavailable. Volume quality can vary between markets, exchanges and brokers.
Indicator settings
- Swing Length: Controls how significant a swing must be. Lower values create more zones, while higher values create fewer but potentially more significant zones.
- Maximum Zones: Limits the number of active zones displayed. When the limit is exceeded, the oldest active zone is removed.
- ATR Length: Sets the calculation period used to measure volatility.
- Minimum Zone Height: Sets the minimum zone thickness as a multiple of ATR.
- Maximum Zone Height: Prevents zones from becoming excessively wide.
- Merge Overlapping Zones: Combines overlapping or nearby active zones.
- Merge Distance: Controls the ATR-based distance used when deciding whether zones should be merged.
- Maximum Past Zones: Limits how many broken historical zones remain on the chart.
- Past Zone Transparency: Controls how clearly broken zones are displayed.
Alerts
- Built-in alerts
- Zone Touched — price entered a support or resistance zone.
- Resistance Broken — a candle broke above a resistance zone.
- Support Broken — a candle broke a support zone below.
- Set them up from TradingView's alert dialog: Create Alert → Condition → S/R Zones.
How to use it in trading
🔶Bounce trades: when price falls into a support zone and prints a rejection candle, that's a long setup with a stop just below the zone.
A blue support zone represents an area where buyers previously entered the market.
When price returns to support:
- Wait for price to enter or test the zone.
- Look for evidence that buyers are responding.
- Consider an entry only after confirmation.
- Place the stop beyond the opposite side of the zone, with an appropriate buffer.
- Use the next resistance zone as a possible target.
Possible bullish confirmation includes:
- A candle rejecting the lower part of the zone.
- A long lower wick followed by a bullish close.
- A bullish engulfing candle.
- Price closing back above the support zone.
- Increasing volume during the reaction.
- A higher low forming near the zone.
A support touch by itself is not a long signal. Price can move directly through the zone, especially during a strong downtrend.
Example image below:
🔶Rejection from resistance
A pink resistance zone represents an area where sellers previously entered the market.
When price reaches resistance:
- Wait for price to test the zone.
- Look for signs of selling pressure.
- Consider an entry only after bearish confirmation.
- Place the stop beyond the upper edge of the zone, with a suitable buffer.
- Use the next support zone below as a possible target.
Possible bearish confirmation includes:
- A long upper wick inside the resistance zone.
- A bearish engulfing candle.
- Price entering the zone and closing back below it.
- A lower high forming near resistance.
- Increasing selling volume during the rejection.
A resistance touch alone is not a short signal. Strong bullish momentum can break through resistance without producing a meaningful reversal.
Example image:
🔶Trading a breakout
A breakout occurs when price moves beyond an active zone.
- A break above resistance may indicate increasing bullish strength.
- A break below support may indicate increasing bearish strength.
For more conservative confirmation, select Close under Break Confirmation. In this mode, a resistance zone breaks only after a candle closes above it, while a support zone breaks only after a candle closes below it.
The Wick option reacts as soon as price trades beyond the zone. It responds faster but is more sensitive to temporary spikes and false breakouts.
Before considering a breakout trade, traders may look for:
- A strong candle closing beyond the zone.
- A candle body that closes clearly outside the zone.
- Higher-than-average volume.
- Momentum in the breakout direction.
- Alignment with the broader market trend.
- A successful retest of the broken zone.
🔶Trading a role reversal
Support and resistance can sometimes exchange roles after a breakout.
-Broken resistance may later act as support.
- Broken support may later act as resistance.
Select Flip Support/Resistance under the When Broken setting to display this behaviour automatically.
For example, after price closes above a pink resistance zone, the indicator converts that area into a blue support zone. If price later returns to it, traders can watch for a bullish reaction.
Similarly, when price breaks below blue support, the indicator converts the zone into pink resistance. A later retest may provide an area to watch for bearish confirmation.
Role reversal is a commonly observed price-action concept, but it does not occur successfully after every breakout. Wait for confirmation instead of entering only because price has returned to a flipped zone.
🔶Using zones for targets and stops
Zones can also help organise trade management.
For a long setup:
- A stop may be placed below the support zone.
- The next resistance zone may be used as an initial target.
- A higher resistance zone may be considered as a secondary target if momentum remains strong.
For a short setup:
- A stop may be placed above the resistance zone.
- The next support zone may be used as an initial target.
- A lower support zone may be considered as a secondary target.
Avoid placing the stop exactly on the edge of a zone. Price may briefly move beyond the boundary before reacting. The appropriate buffer depends on the symbol, timeframe, volatility and the trader’s risk plan.
Always calculate the potential risk and reward before entering a trade. A visible zone does not automatically make a setup worth taking.
🔶 Using multiple timeframes
Higher-timeframe zones can provide broader market context, while lower timeframes can help refine entries.
A simple process is:
- Identify important support and resistance on a higher timeframe.
- Determine whether the broader structure is bullish, bearish or ranging.
- Move to the preferred trading timeframe.
- Wait for price to reach a relevant zone.
- Use candle structure, volume or momentum for confirmation.
Higher timeframes generally produce fewer but more widely watched zones. Lower timeframes produce more zones and may contain more market noise.
Support and Resistance Zones help traders identify and manage important price areas with less chart clutter. Its volatility-based sizing, zone merging, break confirmation, role reversal, and alerts make it suitable for different markets and timeframes. Use the zones as areas to watch—not automatic trade signals and always combine them with price confirmation, broader market structure and proper risk management.
We would love to hear your suggestions. If you have ideas for new features, indicators, analytics, or improvements, please share your feedback. Your input helps guide future updates and improve the indicator for all traders.
Wedge pattern detector indicator is for educational and analytical purposes only. It is not financial advice. Trading involves risk. Always use proper risk management and combine this indicator with your own analysis before taking any trade.
อินดิเคเตอร์

XauLabs Swing PointsENGLISH
What it does
It marks confirmed swing highs and swing lows, labels each one relative to the previous one of the same type — HH, HL, LH, LL — and connects them with a zigzag. That labelled sequence is the raw material of every structure-based method: HH + HL is the skeleton of an uptrend, LH + LL the skeleton of a downtrend, anything mixed is no man's land.
How it works (full method)
Confirmation. A swing high is confirmed only when the highs of the N bars before AND the N bars after are all lower (mirrored for swing lows). N is user-defined, default 7, range 5–21.
Labelling. On confirmation, the new swing high is compared to the previous confirmed swing high: higher gives HH, lower gives LH. The first one, with no predecessor, is labelled H. Swing lows are compared to previous swing lows: HL or LL, first one labelled L. Highs are never compared to lows.
Zigzag. Each confirmed pivot is joined to the previous confirmed pivot by a straight line, regardless of type. The result is the chart's skeleton with the intermediate noise removed.
Two levels of structure. Major structure uses the main sensitivity and is the default view. An optional minor structure, with its own smaller sensitivity (default 3), plots the internal waves inside each major leg. It is off by default: the skeleton first, the ripples afterwards. Reading a minor swing as if it were a major one is the most common way to end up flipping bias several times a day.
No repainting
Labels appear N bars after the extreme they mark, are drawn at the true historical position of that extreme, and never move or disappear afterwards. What history shows is what would have been visible live. The confirmation delay is the cost, and it is stated rather than hidden.
On-chart output
HH / HL / LH / LL labels on every confirmed major pivot.
Zigzag connecting major pivots.
Optional minor pivot dots.
A badge in the top-right corner showing the two most recent readings, with selectable text size.
Two alert conditions: major swing high confirmed, major swing low confirmed.
Suggested use
Start on H4. Read the badge: HH · HL means the bullish skeleton is intact. Structure has to be read on one sensitivity, applied consistently — not on whichever swing supports the trade you already want to take.
This is an educational structure-reading tool. It gives no buy or sell signals and makes no performance claim. Trading involves substantial risk of loss.
FRANÇAIS
Ce que fait l'indicateur
Il marque les sommets et creux de swing confirmés, étiquette chacun par rapport au précédent du même type — HH, HL, LH, LL — et les relie par un zigzag. Cette séquence étiquetée est la matière première de toute méthode structurelle : HH + HL forme le squelette d'une tendance haussière, LH + LL celui d'une tendance baissière, tout ce qui est mixte est une zone grise.
Comment il fonctionne (méthode complète)
Confirmation. Un sommet n'est confirmé que si les N bougies avant ET les N bougies après ont toutes un plus haut inférieur (symétrique pour les creux). N est réglable, 7 par défaut, plage 5–21.
Étiquetage. À la confirmation, le nouveau sommet est comparé au sommet confirmé précédent : plus haut donne HH, plus bas donne LH. Le premier, sans prédécesseur, est étiqueté H. Les creux sont comparés aux creux : HL ou LL, le premier étiqueté L. Un sommet n'est jamais comparé à un creux.
Zigzag. Chaque pivot confirmé est relié au pivot confirmé précédent par une droite, quel que soit son type. On obtient le squelette du graphique, débarrassé du bruit intermédiaire.
Deux niveaux de structure. La structure majeure utilise la sensibilité principale : c'est la vue par défaut. Une structure mineure optionnelle, avec sa propre sensibilité plus courte (3 par défaut), trace les vagues internes de chaque jambe majeure. Elle est désactivée par défaut : le squelette d'abord, les vagues ensuite. Lire un swing mineur comme s'il était majeur est la façon la plus courante de changer de biais cinq fois par jour.
Aucun repaint
Les étiquettes apparaissent N bougies après l'extrême qu'elles marquent, sont tracées à la vraie place historique de cet extrême, et ne bougent ni ne disparaissent ensuite. Ce que montre l'historique est ce qui aurait été visible en direct. Le délai de confirmation est le prix à payer, et il est affiché plutôt que masqué.
Affichage
Étiquettes HH / HL / LH / LL sur chaque pivot majeur confirmé.
Zigzag reliant les pivots majeurs.
Points de pivots mineurs, optionnels.
Un badge dans le coin supérieur droit affichant les deux dernières lectures, avec taille de texte réglable.
Deux conditions d'alerte : sommet majeur confirmé, creux majeur confirmé.
Utilisation suggérée
Commencer en H4. Lire le badge : HH · HL signifie que le squelette haussier est intact. La structure se lit sur une seule sensibilité, appliquée avec constance — pas sur le swing qui arrange le trade qu'on a déjà envie de prendre.
Outil éducatif de lecture de structure. Il ne donne aucun signal d'achat ou de vente et ne formule aucune promesse de performance. Le trading comporte un risque de perte important. อินดิเคเตอร์

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

Zone Flow S/R StrategyZone Flow S/R Strategy
📌 Strategy Overview
Zone Flow is a multi‑timeframe support/resistance strategy that uses dynamic pivot‑derived zones to identify high‑probability reversal and breakout setups.
Unlike static support/resistance lines, this 9‑level zone system (R4–R1, P, S1–S4) automatically adapts to market structure changes at each new period (Daily/Weekly/Monthly). Each zone has a configurable width (Percentage, ATR, or Fixed) to account for volatility, and a breakout threshold to filter out minor wicks.
# Unique Synergy
Most pivot strategies treat levels as static lines, leading to false breakouts. Most engulfing strategies ignore the bigger picture, catching falling knives. This strategy solves both problems by combining these components in a specific sequence:
1- Dynamic Zones + Gap State Machine (The Context)
Instead of just drawing lines, we create zones (R1-R4, P, S1-S4) with adaptive width. More importantly, the Gap State Machine tracks which gap price sits in (e.g., between R1 and Pivot). This tells us exactly where we are in the market structure. If price moves from upper Gap to lower Gap, the strategy instantly switches sentiment from Bullish to Bearish.
- Why this matters: It prevents the strategy from trading blindly; it only trades when price is transitioning between structural levels, and price retrace to the zone drastically reducing false signals in the middle of nowhere.
2- Pin Bar Sweep + Engulfing Combo (The Momentum Trigger)
A standard pin bar alone is a weak reversal signal. A standard engulfing pattern alone is common. However, when a Pin Bar sweeps the N-bar high/low (proving a breakout attempt failed) and is immediately followed by an Engulfing pattern on the next candle, this combo represents a "double confirmation" of exhaustion.
Crucially, this specific combo overrides the EMA confirmation.
- Why this matters: Strong momentum sweeps often happen against the short-term EMA trend. By allowing this specific combo to bypass the EMA, the strategy captures powerful reversals that pure trend-following strategies miss.
3- Dynamic Zone Width (The Volatility Adaptation)
Instead of using fixed support/resistance, the zone width changes based on the selected Period's ATR or Percentage.
- Why this matters: This ensures the strategy scales perfectly across any asset (Gold, Crypto, Forex) without manual width adjustments, making it robust across different volatility regimes.
4- Selective Zone Activation (The Manual Override)
Unlike standard pivot systems that force trades on every level, the Zone Selection inputs allow users to disable specific zones (e.g., turn off R3 if price often fakes out there or turn off S4 market is always get exhausted lower probability trade).
- Why this matters: This turns the strategy from a rigid algorithm into a customizable framework where the user can apply their own discretion based on historical price behavior.
5. Hierarchical EMA Architecture (The Structural Governor)
This strategy does not treat all EMAs equally. It uses a two-tier EMA system with a strict hierarchy:
Lower TF EMA (Optional & Overrideable): The Lower TF EMA on the current timeframe acts as a micro-trend filter. However, as explained above, the Pin Bar Sweep + Engulfing Combo can override this filter. Why? Because strong institutional reversals often happen against the short-term trend, and we want to capture them.
Higher TF EMA (Absolute & Non-Negotiable): Higher TF EMA on the selected Higher Timeframe acts as an "Absolute Structural Governor." Unlike the lower EMA, this filter cannot be overridden by any pattern.
For Long entries: Price must be above this HTF EMA.
For Short entries: Price must be below this HTF EMA.
Most strategies either ignore the HTF entirely. By making the HTF EMA absolute and the LTF EMA overrideable, this strategy achieves the perfect balance:
The HTF EMA prevents catastrophic drawdowns by keeping you on the right side of the bigger trend.
The LTF EMA override allows you to catch sharp, high-probability reversals within that trend without being delayed by a slow-moving micro-filter.
6. Optional Risk Architecture (The Management Layer)
The strategy includes a built-in partial-take-profit and breakeven module. By default, this module is disabled to provide a clean, straightforward 1:3 risk-reward backtest without the complexity of multiple exit orders.
This default setting allows users to evaluate the core entry logic (zones + patterns) without interference from partial exits.
However, for traders who want to reduce psychological pressure or manage Gold's notorious retracements, they can enable Allow Breakeven and Allow Partial TP. When activated, the strategy closes a percentage of the position (e.g., 50%) at a lower R:R threshold (TP1) and moves the remaining position to breakeven—locking in early profits while letting the rest of the trade run.
# Zone Calculation
The strategy calculates 9 zones using a modified pivot point formula from the selected period (Daily, Weekly, Monthly, Quarterly, Yearly):
The pivot formula can be one of 5 methods: Classic, Fibonacci, Woodie, Camarilla, or DM.
The Classic Pivot (shown below) is the most widely used and serves as the default:
Pivot (P) = (H + L + C) / 3
R1 = (2 × P) – L
S1 = (2 × P) – H
R2 = P + (H – L)
S2 = P – (H – L)
(R3, R4, S3, S4 are logical extensions of this same principle)
Additional Methods (Briefly Explained):
Fibonacci: Uses the golden ratio multipliers (0.382, 0.618, 1.000, 1.618) to place support/resistance levels between the pivot and the high/low range.
Woodie: Gives extra weight to the closing price (Formula: P = (H + L + 2C) / 4), making it more sensitive to the current session's momentum.
Camarilla: Uses multipliers based on the previous range to place levels very close to the current price, ideal for range-bound trading and scalping.
DM: Adjusts the pivot formula conditionally based on whether the close was higher or lower than the open, making it adaptive to daily sentiment.
From these, the strategy derives:
- 4 Resistance Zones (R4, R3, R2, R1) – above the pivot
- 1 Pivot Zone (P)
- 4 Support Zones (S1, S2, S3, S4) – below the pivot
Each zone is expanded by a Zone Width to create a buffer, making the levels more practical.
# Zone Width Calculation
Three modes:
- Percentage – zone width as a percentage of current price
- ATR Multiplier – width = ATR × Multiplier
- Fixed – fixed price distance
# Gap Index Mapping (0–9):
Gap 0 – Above R4 → Aggressive (no trades)
Gap 1 – Between R4 and R3 → Bearish near R4, Bullish near R3
Gap 2 – Between R3 and R2 → Bearish near R3, Bullish near R2
Gap 3 – Between R2 and R1 → Bearish near R2, Bullish near R1
Gap 4 – Between R1 and Pivot → Bearish near R1, Bullish near Pivot
Gap 5 – Between Pivot and S1 → Bearish near Pivot, Bullish near S1
Gap 6 – Between S1 and S2 → Bearish near S1, Bullish near S2
Gap 7 – Between S2 and S3 → Bearish near S2, Bullish near S3
Gap 8 – Between S3 and S4 → Bearish near S3, Bullish near S4
Gap 9 – Below S4 → Aggressive (no trades)
Based on the gap index and price action, the strategy sets allowLong or allowShort – and displays the status on the info table.
Market Status Displayed:
- Bullish – near support zones; long trades allowed
- Bearish – near resistance zones; short trades allowed
- Waiting – new period started; zones recalculating; no trades
- Aggressive – above R4 or below S4; no trades
- Zone disabled – manually disabled zone; no trades
# Entry Signals
1. Engulfing Patterns
Detects bullish and bearish engulfing with filters:
- Body Only – if true, only bodies must engulf (not full range)
- Min/Max Range – can be Percentage, ATR Multiplier, or Fixed
- Gap Allowance – max price gap between previous close and current open
- Previous or Prior Candle – at least one of the last two candles must be the opposite. color (bearish for bullish engulf; bullish for bearish engulf).
This is not a random condition. The strategy only considers trades when price is near a strong structural zone (support/resistance). Because the zone itself provides the primary context for a potential reversal, the immediate previous candle does not need to be strictly opposite in color.By relaxing the requirement to "at least one of the last two," the strategy captures valid reversals at key levels that a strict, textbook rule would miss—while remaining highly selective because it only trades near strong zones.
2. Pin Bar + Engulfing Combo (EMA Override)
Identifies hammers/shooting stars with:
- Wick/Body Ratio (Wick 3× body)Requires a clearly defined pin bar with a very small body.
- Max Body/Range (Body is at most 20% of range) Ensures the body is genuinely small relative to the total range. This is the textbook definition of a pin bar/hammer. Captures true rejection candles.
- Min Wick/Range (70% of range) This is the classic pin bar definition. A 70%+ wick means price aggressively rejected the level and reversed.
- Sweep Lookback – bullish pinbar must break the lowest low of the previous N bars;
bearish must break the highest high
a pin bar that sweeps a recent extreme (lookback) and the very next candle forms an engulfing pattern in the same direction. This combo overrides the Lower TF EMA confirmation – a unique feature that captures strong momentum after a sweep.
Combined Entry Requirements
All of the following must be true:
1. Valid engulfing or pin+engulf combo
2. Pattern occurs near a zone (open inside zone boundaries or crossing it)
3. Market status aligns with trade direction
4. Daily trade limit not exceeded (default: 2)
5. Relevant zone is enabled
6. Price is on the correct side of EMAs (unless overridden by combo)
7. HTF EMA confirms (if enabled)
8. RSI not overbought/oversold (if enabled)
9. Not within the no‑trade window (if enabled)
-----------------------------------------------------
# Confirmation Filters
Current TF EMA – ensures micro‑trend alignment. Overridden by pin+engulf combo.
Higher TF EMA (default 150 on 1H) – filters out counter‑trend moves in the bigger picture.
RSI – prevents buying above 70 and selling below 30.
Bollinger Bands – blocks trades when volatility is too low (BB width below threshold).This filter is specifically designed for assets that range heavily—choppy, sideways markets.
No‑Trade Window – avoids end‑of‑day volatility (active only for timeframes ≤15min).
# Risk & Position Management
1- Position Sizing:
- Risk per trade – percentage of equity for first trade, separate for second
- Position size = (Account Risk) / (Entry – SL distance).
- Second trade does not increment the daily trade counter:
This is a deliberate design choice. The daily trade counter tracks new trade initiations, not total positions. The second trade (pyramiding) is considered a continuation of the existing position, not a new independent decision. This ensures the strategy can scale into strong trends without consuming the daily limit, while still respecting the maximum number of new entries per session.
2-Stop Loss Options:
- Low-High – entry bar low/high ± buffer Tight, reactive stops. Best for scalping or when you want the SL to follow the immediate price action of the entry candle.
- Swing high/low – N-bar low/high ± buffer Broader, structural stops. Ideal for swing trading or when you want the SL to respect recent market structure rather than a single bar.
- Zone – zone boundary ± buffer Structural stops aligned with pivot levels. Best when you want the SL to be placed exactly at the structural support/resistance level that defines the trade.
- Fixed distance – fixed price distance Simple, static stops. Useful when you know your exact risk tolerance in dollar/pip terms and want a consistent SL distance regardless of volatility.
- ATR Multiplier – entry ± (ATR × multiplier) Volatility-adaptive stops. Best for Gold's changing volatility—widens during news/high volatility, tightens during calm periods.
3- Take Profit:
- Main R:R ratio – main R:R ratio (default 1:3), plus optional partial TP and breakeven at a lower R:R ratio.
- Partial TP – close a percentage of position at a lower R:R (TP1)
- Breakeven – optionally move stop to entry at TP1
4- Trade Counter Reset:
- For TF ≤ 15m: resets at NY (9:30 AM) and London (3:30 AM) starts (configurable)
This aligns with Gold's session-specific volatility and allows fresh participation in each session while preventing over-trading within a single session.
- For TF > 15m: resets once per day at session start (Every new day) Session-specific behavior is less relevant on higher timeframes, and a simple daily cap is more appropriate for swing trading.
5- No‑Trade Window:
- Avoids high‑volatility periods (e.g., end of day)
- Active only for TF ≤ 15m (16:00 PM – 18:30 PM NY time, configurable) End-of-day volatility spikes can cause excessive slippage and erratic price action on short timeframes. on TF > 15 The window is too short to be meaningful; higher timeframe traders are less affected by brief volatility spikes.
6- Session Close:
- TF ≤ 15m: can close at day end and/or week end (configurable). Scalping trades on 1m–15m charts typically last minutes to a few hours. These trades are highly sensitive to Overnight gaps, Weekend gaps
- 15m < TF ≤ 10h: only week end. Swing trading on 30m–4H charts typically lasts hours to several days.
- TF > 10h: feature disabled. Position trading on daily+ charts lasts days to weeks. These trades aim to capture large macro moves.
# Chart Display
- Zone boxes – semi‑transparent red/pink with labels (R4…S4), auto‑cleanup (max 55 periods)
- Trade management lines – entry (white), SL (red), TP (green), TP1/breakeven (dashed),
with green/red fills; auto‑cleanup ((4) * max 125)
- Info table (top‑right) :
1. shows Market Status(Bullish/Bearish/Aggressive/Waiting).
2. EMA confirmations.
3. Zone Width, Breakout threshold.
4. Engulf range max min.
5. SL settings(SL refrence, sL bufer)
- EMA plots – light blue (lower TF) and light red (higher TF)
- Signal shapes – hidden by default (can be enabled via style settings)
- arrowdown shapes - "Reset trade counter"
- Background 1 color – yellow during no‑trade window
- Background 2 color – white close all position on week/day end.
UI Note: Inputs are hidden from the status line to keep your chart clean. All settings (zones, EMAs, risk, patterns) remain fully adjustable in Settings → Inputs.
# Default Settings – Optimized for XAUUSD (Gold)
All default values have been calibrated specifically for Gold's typical volatility and intraday structure.
(Setting : Default : Why This Works for Gold)
----------------------------------------------------------------------------------------
Period : Daily : Gold respects daily highs/lows as key structural levels.
-----------------------------------------------------------------------------------------
Pivot Type : Classic : Most widely used and reliable for Gold.
-----------------------------------------------------------------------------------------
Zone Width : ATR (0.053× ATR(14)) : ATR(14) provides a stable, week-to-week view of Gold's volatility (roughly two trading weeks of data).Adapts to Gold's daily volatility (Zone Width often $4–$10 range).
-----------------------------------------------------------------------------------------
Breakout Threshold : 7% of zone width : Zone width ≈ $3.00–$10.00 (Daily ATR × 0.053). 7% ≈ $0.21–$0.70 (21–70 ticks)—filters noise wicks, captures genuine breaks.Prevents false transitions caused by standard stop-hunting wicks
-----------------------------------------------------------------------------------------
Engulfing Range : ATR(14) (0.375× – 2.5×) : ATR(14) sits in the "sweet spot"—responsive enough to capture shifts in Gold's volatility relatively quickly, yet long enough to smooth out the daily noise and provide a reliable, consistent measure. Captures meaningful moves $3–$15—ensures candle has enough size to be meaningful, rejecting tiny $0.30–$0.50 noise patterns, while filtering out massive blow-off spikes (> $20–$25 on 15m).
-----------------------------------------------------------------------------------------
Pin Bar Sweep : 12 bars : 12 bars – Calibrated for Gold's 3-hour intraday cycle and session transitions. Long enough to capture genuine liquidity grabs, short enough to avoid outdated levels.
-----------------------------------------------------------------------------------------
Risk per trade : 2% (1st), 1% (2nd) : Balances risk with Gold's occasional false breakouts. For Gold's volatile nature, 2%-1% provides the best balance between survival and growth.
-----------------------------------------------------------------------------------------
Risk:Reward : 1:3 : Gold routinely moves 1.5–2× its ATR in a single directional push. A 1:3 target is well within Gold's typical daily range.
-----------------------------------------------------------------------------------------
Stop-Loss Reference : ATR Multiplier : For Gold's volatile nature, a static stop-loss (Fixed or Low-High) cannot adapt to changing volatility. ATR-based SL scales with market conditions—widening during high volatility (news, session opens) and tightening during calm periods. This ensures the stop-loss is always "fair" relative to current market conditions, preventing premature stops during normal volatility spikes
-----------------------------------------------------------------------------------------
Stop-Loss Multiplier : 1.8× ATR(14) : A 1.8× ATR(14) stop-loss represents 1.8 times Gold's average 14-period range. Why 1.8× and not 2.0× or 1.5×? Backtesting revealed that 1.8× is the "sweet spot"—wide enough to survive Gold's normal volatility spikes without being stopped out by noise, yet tight enough to limit losses
-----------------------------------------------------------------------------------------
Current TF EMA : 21 (Enabled, Overrideable) : On 15m chart = 5.25 hours—perfectly captures Gold's average intraday move length. Can be overridden by Pin Bar + Engulfing Combo to catch institutional reversals that occur against the short-term trend.
-----------------------------------------------------------------------------------------
Higher TF EMA : 150 on 1H : On Gold, a 150-period EMA on a 1H chart represents roughly 6.5 days (one full trading week) of data. By making this filter absolute, the strategy guarantees it will never take a counter-trend trade against the weekly macro-structure.trend.
-----------------------------------------------------------------------------------------
Filter (RSI) : length 12 : Most traders default to RSI(14), but RSI(12) is intentionally faster for Gold's volatile intraday moves. Gold often spikes into overbought/oversold territory and reverses quickly. A 12-period RSI reacts ~15% faster than RSI(14), catching these reversals earlier while remaining smooth enough to avoid excessive whipsaws.
-----------------------------------------------------------------------------------------
Filter (Bollinger Bands) : Disabled by default : Gold is historically a trending asset with strong directional moves. A low-volatility filter would unnecessarily block valid entries during these trends. Designed for range-bound assets (choppy crypto, certain forex crosses)—enable it only if your market consolidates heavily.
-----------------------------------------------------------------------------------------
These values are a starting point – you may adjust them for other assets or personal risk tolerance.
# Important Notes on Backtest Realism
- Commission – Most ECN/raw-spread brokers charge $3.00–$3.50 per side (round-turn commission of $6.00- $7.00) for 1 standard lot (100 oz) of XAUUSD. Standard accounts usually build the fee into a wider spread instead of charging a separate cash. This strategy deducts $3.50 per entry and $3.50 per exit ($0.035 × 100 oz)round-turn commission of $7.00. Adjust this to match your broker's exact fees.
- 4 ticks Slippage - For XAUUSD, 1 tick = $0.01 per ounce. 4 ticks = **$0.04 per ounce (unit)**. Accounts for real-world price . Prevents overly optimistic backtest equity curves.
Always adjust the commission value to your broker's exact fee structure before relying on the results.
"A backtest without realistic commission and slippage is a fantasy. A backtest with realistic commission and slippage is a truthful reflection of what you can expect when trading live."
- Intra-Bar Execution: The strategy uses calc_on_every_tick = true, meaning it recalculates on every price tick during real-time trading. This allows the breakeven and partial TP logic to trigger immediately when price hits TP1, protecting the trade from intra-bar reversals.
Note: Backtests use OHLC data only, so intra-bar fills and breakeven triggers cannot be perfectly simulated. Real-time performance may differ from backtest results due to this limitation
# The Core Innovation (Why This Isn't Just a Mashup)
This strategy is built on a three-layer validation system. Each layer solves a specific problem that the other layers cannot solve alone.
Layer 1 (The Structure): Dynamic Pivot Zones
Layer 2 (The Trigger): Pin-Bar Sweep + Engulfing Combo
Layer 3 (The Execution): Gap State Machine
Here is how they interdepend to create a unique edge:
1. Adaptive Pivot Mathematics (The "Regime Matching" Logic)
Instead of offering multiple pivot types just for the sake of it, this strategy provides them so the trader can match the mathematical formula to the market's current behavioral regime:
Why this matters: Most strategies lock you into one formula. This strategy acknowledges that price dynamics change, and it gives you the mathematical weapon to adapt without rewriting the entire code.
2. The "Liquidity Grab" Trigger (Sweep + Engulfing Combo)
This is the most critical edge of the strategy. A standard Engulfing pattern is common. A standard Pin Bar is common. But when they occur sequentially—a Pin Bar that sweeps the 12-bar extreme, immediately followed by an Engulfing candle—it represents a textbook institutional "liquidity grab."
- The Logic: Large players often push price to sweep obvious stop-losses (above highs or below lows) before reversing the trend.
- The Override: Crucially, this specific combo overrides the Lower TF EMA confirmation.
- Why this is a breakthrough: Standard trend-following strategies with a hard EMA filter will miss these reversals because price is moving against the EMA in the short term. By programming this specific override, the strategy captures the exact moment of institutional reversal—catching the move before the EMA flips and the trend-followers finally enter.
3. The Gap State Machine (Dynamic Sentiment Tracking)
Unlike static support/resistance scripts that just plot lines and wait for touches, this strategy features a state machine that tracks which of the 9 gaps (between R4-R1, Pivot, S1-S4) the price currently occupies.
- The Mechanism: A Breakout Threshold (default 7% of zone width) acts as a "dead-zone" filter. Price must exceed this threshold to officially transition from one gap to another.
- The Alpha: This prevents the strategy from whipsawing during minor noise. When price crosses from Gap 4 (between R1 and Pivot) into Gap 3 (between R2 and R1), the strategy instantly and autonomously switches market status from "Bearish" to "Bullish" or vice versa.
4. Selective Zone Activation (Strategic Discretion)
- This strategy allows the user to completely disable specific zones (e.g., turn off R3).
- The Value: By disabling a weak level, the user forces the strategy to wait for the next stronger level, instantly increasing the win rate and filtering out historically weak signals without altering any other code.
5. Non-Invasive Risk Architecture (Clean Defaults)
For traders who want to reduce psychological pressure or optimize for Gold's notorious retracements, they can enable these modules. When activated, the strategy closes % of the position at a lower R:R threshold and moves the remaining position to breakeven—locking in profits while letting the rest run.
In Summary: The "Mashup" Justification
This is not a random collection of indicators.
1. The State Machine provides the structural context.
2. The Pin+Engulf combo provides the high-conviction trigger that overrides slow-moving filters.
3. The Selectable Pivot Types provide the mathematical adaptability to different assets.
4. The Selectable Zones provide the manual discretion to avoid historical losing levels.
5. The Disabled TP/BE by default provides a clean baseline for evaluating the core logic.
Author: Awab_Hassan
กลยุทธ์

Swing Persistence Profile - Pivot Width SurvivalSwing Persistence Profile ranks every swing high and swing low on the chart by the widest pivot
window it survives. It is also explicit about the exact bar on which that rank becomes knowable,
and it shades the region where it is not knowable yet.
THE IDEA
A pivot is not a property of a bar on its own. It is a property of a bar together with the width
of the window it was compared against. The same high is a swing high when you look two bars either
side, and is not a swing high when you look thirteen. Tools that ask you to pick one width and
then draw the result bury that choice inside a single number.
This script evaluates up to five widths at once - 2, 3, 5, 8 and 13 bars each side by default -
and records, for every bar, the widest width at which that bar is still the extreme of its window.
That number is the bar's persistence depth.
Because widening a window can only add constraints, the widths are strictly nested: a bar that is
the highest of its 13-bar neighbourhood is necessarily also the highest of its 8, 5, 3 and 2-bar
neighbourhoods. Depth is therefore a single ordered rank rather than five separate opinions that
have to be reconciled. A depth-13 swing is a depth-3 swing that kept going.
TIMING
A pivot of width w cannot be identified until w bars have closed after it. That is arithmetic, not
an implementation detail, and it means a bar's persistence depth is not final until the deepest
active width has passed.
There is one further subtlety that most pivot scripts leave in place. The w-th bar after the
candidate is itself still forming while it is the live bar, and its own high or low can still
invalidate the pivot. A script that reads the verdict during that bar will show a marker that
changes, or vanishes, before the bar closes.
This one waits one bar longer. Every verdict it reads comes from a bar that has already closed, so
the confirmation lag is the deepest active width plus one bar. A marker is created once, on the
bar it describes, and is then left alone: it is not moved, recoloured or deleted on later bars,
and it does not flicker intrabar either.
The bars still inside that delay are shaded, so the region where the answer can still change is
visible on the chart instead of being left to inference. Nothing inside the shaded region has been
ranked yet, so an empty shaded region means "not decided," not "no swings here."
WHAT IS DRAWN
A marker on each qualifying swing, placed on the bar that made the extreme, coloured and sized by
depth, optionally printing the depth as a number.
An optional structure line joining swings at or above one chosen depth, alternating between highs
and lows. The most recent segment extends if a later bar sets a more extreme value in the same
direction; once a swing in the opposite direction closes a segment, that segment is fixed.
An optional higher-timeframe reference: the price of the most recent confirmed swing high and
swing low measured on a higher timeframe, drawn as a stepped level. The requested expression is
offset by one bar and the request uses lookahead, which is the pair the Pine Script documentation
specifies for confirmed higher-timeframe values, so historical and realtime bars receive the same
series. The level therefore lags by the reference width plus one bar of the reference timeframe,
and that lag is the point rather than a defect.
Optional alerts on a swing reaching a chosen depth. The alert fires as many bars after the swing
as the deepest active width plus one; the swing itself is on the earlier bar. Because every
verdict is read from a closed bar, "Once Per Bar" and "Once Per Bar Close" fire on the same bar.
THE TABLE
"Swings" counts how many swings reached at least that depth across loaded history, highs and lows
together. "Kept" is the share of the previous row's swings that survived into this row. "Bars ea"
is the average number of bars per swing at that depth. The footer reports the confirmation lag in
bars and how many bars have been rated.
The survival ratios describe the instrument and timeframe you are looking at, not any particular
trade. If most depth-2 swings die at depth 3, the chart is producing many local extremes that do
not extend. If they survive, the same series is producing fewer and longer swings. Comparing that
profile across timeframes or across symbols is a way of choosing a swing width that matches how a
market actually moves, rather than choosing 5 because 5 is a common default.
Counts cover every bar of history the chart has loaded, so they are comparable between symbols
only when the loaded history is comparable.
SETTINGS
Depths in use activates between two and five of the width slots. Reducing it also shortens the
undecided region at the right edge, because that region is as long as the deepest active width
plus one settling bar.
Every depth threshold in the script - minimum depth to mark, minimum depth for the structure line,
and the alert depth - is stated in BARS EACH SIDE, not as a slot number. With the default widths,
"minimum depth 3" means the second of the five slots. A threshold set above the deepest active
width produces nothing, by design.
Enter the widths in ascending order. The ranking itself does not require it, but the table only
reads as a survival sequence when they ascend, and "Kept" can exceed 100% if they do not.
The higher-timeframe reference width is counted in bars of that timeframe: a width of 5 on a daily
reference means five daily bars each side.
WHO IT IS FOR
Anyone who uses swing points as an input to something else - reading structure, choosing the
lookback for a range or a channel, deciding how far back a level should be considered relevant -
and would rather see how sensitive those points are to window width than settle it by habit. It is
also usable as a calibration step before fixing a pivot length in another tool.
WHAT IT DOES NOT DO
It produces no entries, exits, targets, direction or bias, and nothing in it should be read as
one. It measures the geometry of the price series and stops there. Persistence depth describes
what has already happened; a deep swing is not evidence about what happens next.
NOTES
Highs and lows come from the chart series. On non-standard chart types - Heikin Ashi, Renko, Kagi,
Point and Figure, Range - those values are synthetic, and the depths will describe the synthetic
series rather than the market. The script declares alert conditions, so it should be used and
presented on a standard chart type.
TradingView permits 500 labels and 500 lines per script. On long histories the platform drops the
oldest drawings as newer ones are created, so the left edge of a deep history may be bare. This
does not affect the table, which counts every rated bar.
Persistence depth for highs and lows, and the bar index each verdict refers to, are available in
the Data Window. Those values describe the bar named by "Swing bar index," not the bar the cursor
is on.
One data request is made for the higher-timeframe reference whether or not it is displayed, so
enabling it costs nothing extra.
ORIGINALITY
The built-in ta.pivothigh() and ta.pivotlow() functions are used as the primitive, as they are in
a great many scripts. Everything above them is written for this script: running several widths in
parallel, aligning their verdicts onto a common bar so that they can be compared, reducing them to
one nested rank, deferring every drawing until that rank is final on closed data, marking the
region where it is not yet final, and reporting the survival ratios between widths.
Open source under the Mozilla Public License 2.0. The logic is described above in enough detail to
be checked line by line against the source. อินดิเคเตอร์

HH/LL Trendlines [twr]Automatically detects swing structure (HH/HL/LH/LL) using pivot highs/lows, labels each swing point, and — the key feature — draws trendlines connecting same-type consecutive pivots: LH→LH on the high side, HL→HL on the low side. This visualizes the two "structure lines" traders watch for trend continuation and potential breaks.
How it works
Pivot detection & classification
Uses ta.pivothigh()/ta.pivotlow() with a user-defined Swing Length (fractal-style, symmetric lookback/lookforward)
Each new swing high is compared to the prior swing high: higher → labeled HH (bullish, green), lower → labeled LH (bearish, red)
Each new swing low is compared to the prior swing low: lower → labeled LL (bearish, red), higher → labeled HL (bullish, green)
First pivot on each side gets a neutral "x" label since there's nothing to compare against yet
Trendline logic
Only connects pivots of the same classification — so a LH connects to the previous LH (skipping over any HH in between), and a HL connects to the previous HL. This produces clean descending-resistance / ascending-support structure lines rather than zigzagging between every pivot.
Lines are capped per side (Max Trend Lines Shown) using an array-based pool with oldest-first trimming, so the chart doesn't get cluttered over time
Live projection
If Project Lines Forward is enabled, each line's slope is recalculated every bar and extended to the current bar (getProjectedY()), so the structure line behaves like a live trend channel boundary rather than a static segment frozen at the two pivot points
Optional Remove Line Once Price Crosses It will auto-delete a line when price closes (or wicks, depending on Cross Source) through the projected level — useful for treating the line as an invalidated trendline break
Inputs summary
Structure: swing length, label toggle
Trend Lines: enable high/low connections independently, line width/style, max lines per side
Projection: forward extension toggle, cross-removal toggle, cross source (Close vs High/Low)
Colors: bullish/bearish color customization
อินดิเคเตอร์

Pivot Sniper Method [trade_w_samet]🎯 Pivot Sniper Method
Pivot Sniper Method is a confirmed pivot-reversal, signal-quality, session-filtering, trade-mapping, alert, and loaded-history statistics indicator designed to convert confirmed price pivots into a structured chart-review workflow.
The script is built around one central idea:
Not every confirmed pivot should be treated as an equal-quality reversal setup.
Instead of displaying every pivot as an identical signal, Pivot Sniper Method evaluates each confirmed pivot through a five-part Signal Strength model, applies the selected directional and session rules, maps a complete Entry / Stop Loss / TP1 / TP2 / TP3 structure, manages optional Break-Even behavior, and records the result through an internal R-based tracker.
When an eligible pivot is confirmed, the script can:
• Display a confirmed BUY or SELL label
• Show the calculated Signal Strength percentage directly below the direction label
• Evaluate Pivot Distance, Wick Quality, Confirmation Candle, Volume Participation, and Trend Alignment
• Apply Bullish, Bearish, or Both directional bias
• Restrict new signals to London, New York, London + New York, All Sessions, or a Custom session
• Apply an adjustable signal cooldown
• Calculate the Entry at the confirmation-candle close
• Calculate Stop Loss using ATR, Pivot Level, Pivot + ATR Buffer, or Signal Candle
• Calculate independently adjustable TP1, TP2, and TP3 targets
• Move the active Stop Loss to Break-Even after TP1 or TP2
• Add an optional favorable Break-Even tick offset
• Replace the current active tracked trade when a new eligible signal appears
• Display active Entry, Stop / Break-Even, TP1, TP2, and TP3 lines and labels
• Remove the separate Entry line and label after Break-Even becomes active
• Display compact tooltips containing signal, price, risk, target, and status information
• Track Trades, Win Rate, NET R, Average R, TP1 / TP2 / TP3 hit rates, and Break-Even results
• Display a compact premium desktop dashboard
• Display a reduced Phone Mode dashboard
• Move the dashboard to any chart corner
• Support Auto, Dark, Light, and Phone visual modes
• Support static alertcondition() events
• Support one combined “Any alert() function call” workflow
• Include symbol, timeframe, strength, Entry, Stop, targets, Stop Loss mode, Break-Even mode, and session context in dynamic alerts
The purpose of the script is to provide a transparent framework for studying confirmed pivots, setup quality, session context, predefined risk, multiple reward targets, Break-Even behavior, and bar-based historical outcomes.
It is not financial advice.
It is not an automated trading system.
It does not execute broker orders.
It does not calculate position size.
It does not guarantee that a confirmed pivot will produce a reversal.
It does not guarantee that historical Win Rate or NET R will continue in future market conditions.
It does not include spread, commission, slippage, latency, financing, taxes, partial fills, or broker-specific execution.
It does not reconstruct the exact intrabar path inside historical candles.
━━━━━━━━━━━━━━━━━━━━━━
📌 OVERVIEW
━━━━━━━━━━━━━━━━━━━━━━
At a high level, Pivot Sniper Method performs the following sequence:
• Searches price for confirmed pivot lows and pivot highs.
• Requires the selected number of completed candles on the right side of a pivot.
• Rejects simultaneous bullish and bearish pivot confirmation on the same calculation.
• Evaluates the selected Trend Bias.
• Evaluates the selected Trading Session.
• Evaluates the signal cooldown.
• Calculates a 0–100 Signal Strength score.
• Rejects signals below the selected minimum strength when the strength filter is enabled.
• Displays a BUY or SELL label only when all active signal rules pass.
• Opens a tracked trade at the close of the confirmation candle.
• Selects a Stop Loss using the active Stop Loss Mode.
• Uses ATR as a safety fallback when a structural Stop Loss is invalid.
• Calculates TP1, TP2, and TP3 from the actual Entry-to-Stop risk distance.
• Tracks target and stop touches from the candle after entry.
• Moves the active Stop Loss to Break-Even after the selected target condition.
• Replaces an active tracked trade at the current close when a new eligible signal appears.
• Records each completed trade in R.
• Updates a compact dashboard with state, trade, performance, and quality information.
• Generates static and dynamic TradingView alert events.
The script does not use machine learning.
It does not claim to predict every market reversal.
Its dashboard is not TradingView Strategy Tester.
Its statistics are calculated internally from the script’s own confirmed-signal, OHLC-touch, replacement-exit, and Break-Even rules.
━━━━━━━━━━━━━━━━━━━━━━
🧠 CORE IDEA
━━━━━━━━━━━━━━━━━━━━━━
A pivot low identifies a price point that is lower than the selected number of candles on both sides.
A pivot high identifies a price point that is higher than the selected number of candles on both sides.
Confirmed pivots can provide useful reversal context, but a pivot alone does not answer:
• whether the setup agrees with the selected directional bias
• whether the setup occurs during the selected trading session
• whether the pivot candle contains a meaningful rejection wick
• whether price has moved sufficiently away from the confirmed pivot
• whether the confirmation candle supports the intended direction
• whether volume participation is elevated or ordinary
• whether price and the selected EMA structure support the direction
• where Stop Loss should be placed
• how the trade should be mapped in R
• when Break-Even should become active
• how a new signal should affect an existing tracked trade
• how the setup behaved under the script’s historical bar-touch rules
Pivot Sniper Method therefore treats the pivot as the first stage of a complete process rather than the final decision.
The complete workflow is:
potential pivot
→ right-side pivot confirmation
→ same-bar conflict rejection
→ directional-bias validation
→ session validation
→ cooldown validation
→ five-part quality scoring
→ minimum-strength validation
→ BUY or SELL signal
→ confirmation-candle Entry
→ Stop Loss selection
→ TP1 / TP2 / TP3 mapping
→ active-trade management
→ optional Break-Even
→ TP3, Stop, Break-Even, or replacement exit
→ internal R result
→ dashboard update
→ alert event
━━━━━━━━━━━━━━━━━━━━━━
🧩 WHY THIS IS NOT A SIMPLE PIVOT MARKER
━━━━━━━━━━━━━━━━━━━━━━
A basic pivot script can stop after placing a shape on a confirmed swing high or swing low.
Pivot Sniper Method continues beyond pivot detection.
Each eligible setup passes through a coordinated structure:
confirmed price pivot
→ 0–100 quality evaluation
→ bias and session permission
→ structured Entry
→ selectable Stop Loss model
→ independent TP1, TP2, and TP3 targets
→ optional Break-Even transition
→ live target-status updates
→ active-trade replacement logic
→ historical R accounting
→ compact statistics dashboard
→ static and dynamic alerts
The pivot module defines the confirmed reversal location.
The Signal Strength module evaluates quality.
The Trend Bias module controls permitted directions.
The Time Filter controls when new setups may be accepted.
The trade-mapping module converts the setup into explicit price levels.
The Break-Even module changes active risk only after the selected target is confirmed.
The statistics module summarizes the exact results produced by those rules.
The alert module communicates signal and trade-management events.
These modules are not unrelated indicators placed together.
They form one process for identifying, filtering, mapping, monitoring, and reviewing confirmed pivot-reversal setups.
━━━━━━━━━━━━━━━━━━━━━━
⚙️ HOW THE SCRIPT WORKS
━━━━━━━━━━━━━━━━━━━━━━
The script runs directly on the main price chart.
It calculates confirmed price pivots using independently adjustable left-side and right-side lengths for highs and lows.
The default pivot configuration is:
• Pivot High Left Bars: 10
• Pivot High Right Bars: 10
• Pivot Low Left Bars: 10
• Pivot Low Right Bars: 10
The signal engine then combines:
• confirmed pivot status
• Bullish / Bearish / Both bias permission
• selected session permission
• Signal Strength threshold
• cooldown permission
• same-bar dual-pivot rejection
• confirmed chart-bar status
A BUY signal is based on a confirmed pivot low.
A SELL signal is based on a confirmed pivot high.
The signal label is placed on the confirmation candle, not on the original historical pivot candle.
The Entry is also stored at the close of the confirmation candle.
This separation is important:
Pivot Price
The historical swing level that became confirmed after the selected right-side bars.
Signal Candle
The later candle where the script knows the pivot exists and all active filters pass.
Entry Price
The close of that later signal-confirmation candle.
━━━━━━━━━━━━━━━━━━━━━━
🔍 PIVOT DETECTION MODEL
━━━━━━━━━━━━━━━━━━━━━━
Pivot High Left Bars determines how many candles to the left must have lower highs than a potential pivot high.
Pivot High Right Bars determines how many completed candles must form to the right before the potential pivot high is confirmed.
Pivot Low Left Bars determines how many candles to the left must have higher lows than a potential pivot low.
Pivot Low Right Bars determines how many completed candles must form to the right before the potential pivot low is confirmed.
Higher left and right values generally identify larger and less frequent swing structures.
Lower values generally identify smaller and more frequent structures.
The high and low settings are independent.
This allows users to study symmetrical configurations such as 10 / 10 for both directions, or asymmetrical configurations when market behavior requires different sensitivity for pivot highs and pivot lows.
The central pivot calculation is:
float confirmedPivotHigh = ta.pivothigh(
high,
leftHighInput,
rightHighInput
)
float confirmedPivotLow = ta.pivotlow(
low,
leftLowInput,
rightLowInput
)
bool rawBuySignal =
barstate.isconfirmed and
not na(confirmedPivotLow)
bool rawSellSignal =
barstate.isconfirmed and
not na(confirmedPivotHigh)
These functions return a confirmed pivot value only after the required right-side bars exist.
A confirmed pivot does not automatically become a signal.
It must still pass:
• same-bar conflict rejection
• Trend Bias
• Trading Session
• Signal Strength
• cooldown
━━━━━━━━━━━━━━━━━━━━━━
⏳ PIVOT CONFIRMATION AND SIGNAL TIMING
━━━━━━━━━━━━━━━━━━━━━━
This section is essential for correct interpretation.
The script uses confirmed pivot functions.
A pivot is not known on the original pivot candle.
For example, with Pivot Low Right Bars set to 10:
• the potential pivot low occurs
• ten additional candles must complete to its right
• the pivot becomes confirmed on the later calculation candle
• the BUY candidate can then be evaluated
The signal label is displayed on the later confirmation candle.
The trade Entry is stored at the close of that confirmation candle.
The script does not backdate the BUY or SELL trade label to the original pivot candle.
This means:
• the pivot price belongs to an earlier historical candle
• the signal becomes available later
• the displayed Entry reflects the later confirmation close
• increasing right-side bars increases confirmation delay
• decreasing right-side bars confirms smaller structures earlier
The script also requires barstate.isconfirmed for raw pivot candidates.
Signals are therefore based on completed chart candles.
This reduces unfinished current-candle changes, but it does not remove the inherent delay required by pivot confirmation.
━━━━━━━━━━━━━━━━━━━━━━
🟢 CONFIRMED BUY LOGIC
━━━━━━━━━━━━━━━━━━━━━━
A BUY candidate begins when a pivot low is confirmed.
The candidate is rejected when a pivot high is also confirmed on the same calculation.
The remaining BUY candidate must satisfy:
• Trend Bias is Bullish or Both
• the selected Trading Session is active
• the BUY Signal Strength meets the minimum threshold when filtering is enabled
• the cooldown is ready
• the chart bar is confirmed
When accepted, the script displays:
▲ BUY
strength%
The strength percentage appears on the second line to keep the label compact.
The compact two-line BUY label is constructed as:
string buyLabelText =
showStrengthOnSignalInput
? "▲ BUY " + str.tostring(buySignalStrength) + "%"
: "▲ BUY"
The SELL label uses the mirrored ▼ SELL format.
The label is placed below the signal candle.
The BUY tooltip can display:
• Confirmed BUY
• Signal Strength
• Confirmed Pivot price
The tracked Entry is the signal-confirmation candle close.
The BUY Stop Loss is placed below Entry using the selected Stop Loss Mode.
TP1, TP2, and TP3 are calculated above Entry from the actual Entry-to-Stop risk distance.
━━━━━━━━━━━━━━━━━━━━━━
🔴 CONFIRMED SELL LOGIC
━━━━━━━━━━━━━━━━━━━━━━
A SELL candidate begins when a pivot high is confirmed.
The candidate is rejected when a pivot low is also confirmed on the same calculation.
The remaining SELL candidate must satisfy:
• Trend Bias is Bearish or Both
• the selected Trading Session is active
• the SELL Signal Strength meets the minimum threshold when filtering is enabled
• the cooldown is ready
• the chart bar is confirmed
When accepted, the script displays:
▼ SELL
strength%
The strength percentage appears on the second line.
The label is placed above the signal candle.
The SELL tooltip can display:
• Confirmed SELL
• Signal Strength
• Confirmed Pivot price
The tracked Entry is the signal-confirmation candle close.
The SELL Stop Loss is placed above Entry using the selected Stop Loss Mode.
TP1, TP2, and TP3 are calculated below Entry from the actual Entry-to-Stop risk distance.
━━━━━━━━━━━━━━━━━━━━━━
💪 SIGNAL STRENGTH MODEL
━━━━━━━━━━━━━━━━━━━━━━
Signal Strength is a 0–100 quality score.
The final score contains five components worth up to 20 points each:
1. Pivot Distance
2. Wick Quality
3. Confirmation Candle
4. Volume Participation
5. Trend Alignment
The score is intended to compare the internal characteristics of confirmed pivot setups under the same script rules.
It is not a probability forecast.
A 75% label does not mean there is a guaranteed 75% probability of profit.
It means the setup received 75 points out of the script’s 100-point quality model.
The Minimum Signal Strength input controls the required score.
Default:
55
When the filter is enabled:
• scores below the minimum are rejected
• scores equal to or above the minimum are eligible
• lower thresholds generally create more signals
• higher thresholds generally create fewer signals
The strength percentage can be hidden from the BUY / SELL label without disabling the strength filter.
The five component values are combined into the final score:
int buySignalStrength = int(math.round(
math.min(
buyPivotDistanceScore +
buyWickScore +
buyCandleScore +
volumeScore +
buyTrendScore,
100.0
)
))
int sellSignalStrength = int(math.round(
math.min(
sellPivotDistanceScore +
sellWickScore +
sellCandleScore +
volumeScore +
sellTrendScore,
100.0
)
))
A score is therefore the sum of five internal measurements, capped at 100.
━━━━━━━━━━━━━━━━━━━━━━
📏 PIVOT DISTANCE COMPONENT
━━━━━━━━━━━━━━━━━━━━━━
Pivot Distance evaluates how far the confirmation-candle close is from the confirmed pivot relative to ATR.
For BUY candidates, the model measures the distance from the confirmed pivot low to the current close.
For SELL candidates, it measures the distance from the current close to the confirmed pivot high.
The normalized value is capped internally.
The maximum contribution is 20 points.
This component does not claim that a larger distance is always better.
It only measures the amount of price separation used by this quality model.
━━━━━━━━━━━━━━━━━━━━━━
🕯️ WICK QUALITY COMPONENT
━━━━━━━━━━━━━━━━━━━━━━
Wick Quality evaluates the rejection wick on the original pivot candle.
For BUY candidates:
• lower wick size is compared with the full pivot-candle range
For SELL candidates:
• upper wick size is compared with the full pivot-candle range
A larger relevant wick can contribute more points, up to 20.
This component attempts to represent rejection behavior at the confirmed swing.
A large wick does not guarantee reversal continuation.
━━━━━━━━━━━━━━━━━━━━━━
📊 CONFIRMATION CANDLE COMPONENT
━━━━━━━━━━━━━━━━━━━━━━
The Confirmation Candle component evaluates the candle where the pivot becomes confirmed and the signal is processed.
The model considers:
• body size relative to the full candle range
• bullish close direction for BUY candidates
• bearish close direction for SELL candidates
The body ratio contributes most of the component score.
A directional close can add an additional internal bonus.
The maximum contribution is 20 points.
The confirmation candle is not the original pivot candle.
━━━━━━━━━━━━━━━━━━━━━━
🔊 VOLUME PARTICIPATION COMPONENT
━━━━━━━━━━━━━━━━━━━━━━
Volume Participation compares current volume with an adjustable volume average.
Default volume length:
20
Higher relative volume can contribute more points, up to 20.
The component is internally capped.
When usable volume data is unavailable, the script applies a neutral fallback contribution instead of automatically assigning zero.
Volume behavior differs across asset classes and data feeds.
For some symbols, displayed volume can represent exchange volume.
For others, it can represent tick activity or a provider-specific value.
━━━━━━━━━━━━━━━━━━━━━━
📈 TREND ALIGNMENT COMPONENT
━━━━━━━━━━━━━━━━━━━━━━
Trend Alignment uses an adjustable EMA.
Default EMA length:
50
For BUY candidates, the component evaluates:
• whether price is above the EMA
• whether the EMA is rising
For SELL candidates, it evaluates:
• whether price is below the EMA
• whether the EMA is falling
Each condition contributes part of the 20-point component.
This EMA is used as one component of Signal Strength.
It is not a separate hard directional filter.
A setup can still receive points from the other four components when Trend Alignment is weak.
━━━━━━━━━━━━━━━━━━━━━━
🧭 TREND BIAS
━━━━━━━━━━━━━━━━━━━━━━
Trend Bias controls which signal directions are permitted.
Available modes:
• Bullish
• Bearish
• Both
Bullish
Allows only confirmed BUY signals.
Bearish
Allows only confirmed SELL signals.
Both
Allows confirmed signals in both directions.
Trend Bias does not change pivot detection.
It changes which confirmed candidates are allowed to become signals and tracked trades.
The final signal gate combines pivot confirmation, directional permission, session permission, Signal Strength, and cooldown:
bool buySignal =
buyCandidate and
bullishBiasAllowed and
timeFilterPassed and
buyStrengthPassed and
cooldownReady
bool sellSignal =
sellCandidate and
bearishBiasAllowed and
timeFilterPassed and
sellStrengthPassed and
cooldownReady
Only candidates that pass every active condition become BUY or SELL signals.
━━━━━━━━━━━━━━━━━━━━━━
🕒 SESSION FILTER
━━━━━━━━━━━━━━━━━━━━━━
The Trading Session input controls when new signals can be accepted.
Available modes:
• All Sessions
• London
• New York
• London + New York
• Custom
London uses:
08:00–17:00
Europe/London time
New York uses:
09:30–16:00
America/New_York time
London + New York accepts signals during either defined session.
Custom allows the user to define a session and select:
• Exchange
• UTC
• Europe/London
• America/New_York
• Europe/Istanbul
• Asia/Tokyo
The session filter affects new entries only.
An already active tracked trade continues to be managed outside the selected session.
The dashboard displays whether the current session rule is OPEN or CLOSED.
━━━━━━━━━━━━━━━━━━━━━━
⏳ COOLDOWN AND CONFLICT HANDLING
━━━━━━━━━━━━━━━━━━━━━━
Signal Cooldown Bars defines the minimum number of completed candles required between accepted signals.
Default:
0
A value of 0 disables additional cooldown filtering.
Higher values reduce how frequently new signals can be accepted.
When a pivot high and pivot low are both confirmed on the same calculation, the script rejects both candidates.
This prevents contradictory BUY and SELL signals from being accepted on the same candle.
━━━━━━━━━━━━━━━━━━━━━━
🎯 ENTRY AND ACTIVE-TRADE REPLACEMENT MODEL
━━━━━━━━━━━━━━━━━━━━━━
The Entry is stored at the close of the accepted signal candle.
The script maintains one active tracked trade.
However, new eligible signals are not ignored while a trade is active.
When a new eligible BUY or SELL signal appears:
• the current active trade is valued at the new signal candle’s close
• its current R result is added to statistics
• its active lines and labels are removed
• the new signal opens a new tracked trade
This behavior applies to eligible same-direction and opposite-direction signals.
The replacement exit is not a broker fill.
It is an internal close-based accounting rule used to keep only one active tracked trade.
Because replacement exits can occur before TP3, Stop Loss, or Break-Even, NET R can include partial positive or negative R outcomes.
━━━━━━━━━━━━━━━━━━━━━━
🛑 STOP LOSS SYSTEM
━━━━━━━━━━━━━━━━━━━━━━
The script includes four Stop Loss modes:
• ATR
• Pivot Level
• Pivot + ATR Buffer
• Signal Candle
ATR
BUY:
Entry − ATR × multiplier
SELL:
Entry + ATR × multiplier
Default ATR length:
14
Default ATR multiplier:
2.0
Pivot Level
BUY:
confirmed pivot low
SELL:
confirmed pivot high
Pivot + ATR Buffer
BUY:
confirmed pivot low − ATR × pivot buffer
SELL:
confirmed pivot high + ATR × pivot buffer
Default pivot buffer:
0.25 ATR
Signal Candle
BUY:
signal candle low
SELL:
signal candle high
The script validates the selected Stop Loss.
For BUY, Stop Loss must be meaningfully below Entry.
For SELL, Stop Loss must be meaningfully above Entry.
When the selected structural stop is invalid, the script uses the ATR Stop Loss as a safety fallback.
The actual risk distance is:
absolute difference between Entry and the validated Stop Loss
That distance becomes 1R for all target calculations.
The requested Stop Loss is selected from the active mode:
requestedStopPrice :=
stopLossModeInput == "ATR"
? activeEntryPrice - atrFallbackDistance
: stopLossModeInput == "Pivot Level"
? confirmedPivotLow
: stopLossModeInput == "Pivot + ATR Buffer"
? confirmedPivotLow - atrValue * pivotBufferATRInput
: low
For SELL trades, the same logic is mirrored above Entry.
The script then validates the requested structural stop.
When the selected price is not on the correct side of Entry, ATR is used as the fallback.
━━━━━━━━━━━━━━━━━━━━━━
🏆 TP1 / TP2 / TP3 SYSTEM
━━━━━━━━━━━━━━━━━━━━━━
TP1, TP2, and TP3 are independently adjustable.
Default values:
• TP1: 1R
• TP2: 2R
• TP3: 3R
For BUY:
target = Entry + risk distance × selected R multiple
For SELL:
target = Entry − risk distance × selected R multiple
TP1 and TP2 are intermediate target events.
TP3 is the final target and closes the active tracked trade.
When TP3 is touched:
• TP1 is also recorded if it was not already recorded
• TP2 is also recorded if it was not already recorded
• TP3 is recorded
• the trade closes at the selected TP3 R value
Users should normally keep:
TP1 < TP2 < TP3
The script allows independent values, so users are responsible for maintaining a logical target sequence.
After the validated Stop Loss is stored, the script defines 1R and calculates each target:
activeRiskDistance :=
math.max(
math.abs(activeEntryPrice - activeStopPrice),
syminfo.mintick
)
activeTP1Price :=
activeTradeDirection == 1
? activeEntryPrice + activeRiskDistance * tp1RRInput
: activeEntryPrice - activeRiskDistance * tp1RRInput
activeTP2Price :=
activeTradeDirection == 1
? activeEntryPrice + activeRiskDistance * tp2RRInput
: activeEntryPrice - activeRiskDistance * tp2RRInput
activeTP3Price :=
activeTradeDirection == 1
? activeEntryPrice + activeRiskDistance * tp3RRInput
: activeEntryPrice - activeRiskDistance * tp3RRInput
The target calculations therefore remain proportional to the actual Entry-to-Stop distance.
━━━━━━━━━━━━━━━━━━━━━━
🟡 BREAK-EVEN SYSTEM
━━━━━━━━━━━━━━━━━━━━━━
Break-Even Mode includes:
• Off
• After TP1
• After TP2
After TP1
The Stop Loss moves to Entry after the TP1-touch candle closes.
After TP2
The Stop Loss moves to Entry after the TP2-touch candle closes.
The updated Break-Even stop applies from the following candle.
An optional favorable tick offset can be added.
For BUY:
Break-Even = Entry + offset
For SELL:
Break-Even = Entry − offset
When Break-Even becomes active:
• the Stop Loss line changes to the Break-Even color
• the Stop label changes from SL to BE
• the separate Entry line is deleted
• the separate Entry label is deleted
• only the BE level remains at or near Entry
This prevents Entry and Break-Even labels from overlapping at the same price.
A Break-Even stop with zero offset produces approximately 0R.
A positive favorable offset can produce a small positive R result.
━━━━━━━━━━━━━━━━━━━━━━
⚠️ SAME-CANDLE STOP AND TARGET HANDLING
━━━━━━━━━━━━━━━━━━━━━━
Historical OHLC candles do not reveal the exact sequence of all intrabar price movement.
A candle can include both the active Stop price and one or more target prices.
When the active Stop and a target are both touched inside the same historical candle, the script uses a conservative rule:
The active Stop receives priority.
This applies to the original Stop Loss and the active Break-Even stop.
Trade-management checks begin on the candle after Entry.
The Entry candle cannot immediately close the new tracked trade.
The conservative priority rule can produce different results from lower-timeframe reconstruction or tick-level execution data.
━━━━━━━━━━━━━━━━━━━━━━
📐 ACTIVE TRADE VISUAL SYSTEM
━━━━━━━━━━━━━━━━━━━━━━
While a tracked trade is active, the script can display:
• Stop Loss or Break-Even line
• Entry line
• TP1 line
• TP2 line
• TP3 line
• Stop Loss or Break-Even label
• Entry label
• TP1 label
• TP2 label
• TP3 label
The lines project to the right by the selected number of bars.
Default:
20 bars
Stop and Entry use solid lines.
Targets use dashed lines.
After TP1 or TP2 is reached:
• the corresponding target label changes to a completed state
• the corresponding line becomes more transparent
After Break-Even activates:
• the Entry line and Entry label disappear
• the active Stop line and label become BE
When the trade closes or is replaced:
• active trade lines are deleted
• active trade labels are deleted
The script does not preserve completed trade lines as permanent historical drawings.
━━━━━━━━━━━━━━━━━━━━━━
🏷️ LABELS, TOOLTIPS, AND TEXT
━━━━━━━━━━━━━━━━━━━━━━
BUY and SELL labels use two lines when strength display is enabled:
direction
strength%
Available Label Size values:
• Tiny
• Small
• Normal
• Large
• Huge
The setting controls:
• BUY
• SELL
• Entry
• Stop Loss
• Break-Even
• TP1
• TP2
• TP3
Phone Mode overrides the selected label size with Tiny.
Visible chart labels use bold and italic formatting.
Signal tooltips can show:
• direction
• strength
• pivot price
Trade-level tooltips can show:
• Entry strength
• risk distance
• Stop Loss mode
• Stop or BE price
• target R value
• target price
• target status
• Break-Even tick offset
Tooltips are informational chart elements.
They do not represent broker orders.
━━━━━━━━━━━━━━━━━━━━━━
📟 COMPACT PREMIUM DASHBOARD
━━━━━━━━━━━━━━━━━━━━━━
The desktop dashboard is divided into four sections:
STATE
• symbol and timeframe
• active signal and strength
• current trade status
• session status
TRADE
• active Stop Loss mode
• Entry and Stop / Break-Even
• TP1 / TP2 / TP3 scale
• live R
PERFORMANCE
• total trades started
• closed trades
• Win Rate
• NET R
• Average R
• TP1 / TP2 / TP3 hit rates
QUALITY
• latest strength
• Trend component
• Volume component
• Wick component
• Confirmation Candle component
• Pivot Distance component
• Trend Bias
• Break-Even mode
• Minimum Strength
Quality components are displayed in a compact format:
T = Trend
V = Volume
W = Wick
C = Candle
P = Pivot Distance
The dashboard can be positioned at:
• Top Right
• Bottom Right
• Top Left
• Bottom Left
The selected input is translated into a TradingView table position:
string dashboardTablePosition =
dashboardPositionInput == "Top Right" ? position.top_right :
dashboardPositionInput == "Top Left" ? position.top_left :
dashboardPositionInput == "Bottom Left" ? position.bottom_left :
position.bottom_right
if barstate.islast
table.set_position(
statisticsTable,
dashboardTablePosition
)
━━━━━━━━━━━━━━━━━━━━━━
📊 STATISTICS METHODOLOGY
━━━━━━━━━━━━━━━━━━━━━━
The statistics are produced by the script’s internal bar-based tracker.
They are not imported from a broker.
They are not verified account results.
They are not TradingView Strategy Tester results.
Total Trades Started
Number of accepted signals that opened a tracked trade.
Total Trades Closed
Number of tracked trades closed by:
• Stop Loss
• Break-Even
• TP3
• active-trade replacement
TP1 Hit Rate
TP1 touches divided by Total Trades Started.
TP2 Hit Rate
TP2 touches divided by Total Trades Started.
TP3 Hit Rate
TP3 touches divided by Total Trades Started.
NET R
Sum of all recorded closed-trade R outcomes.
Average R
NET R divided by Total Trades Closed.
Win Rate
Positive-R trades divided by positive-R plus negative-R trades.
Exact 0R Break-Even results are excluded from the Win Rate denominator.
A favorable Break-Even offset can produce a small positive R result and can therefore be classified as a positive-R trade.
Replacement exits use the close of the new signal candle and can contribute partial R.
Statistics depend on:
• loaded chart history
• symbol
• timeframe
• exchange or broker feed
• left and right pivot settings
• Trend Bias
• session setting
• cooldown
• strength threshold
• EMA and volume lengths
• ATR settings
• Stop Loss mode
• target settings
• Break-Even settings
• replacement-signal sequence
Changing any of these inputs can change historical results.
━━━━━━━━━━━━━━━━━━━━━━
🎨 THEME SYSTEM
━━━━━━━━━━━━━━━━━━━━━━
The script includes:
• Auto
• Dark Mode
• Light Mode
• Phone Mode
Auto
Detects the chart background and selects the corresponding light or dark visual palette.
Dark Mode
Uses:
• darker green and red signal colors
• dark dashboard surfaces
• white chart-label text
• dark Entry color
• muted dashboard text
• red brand header
Light Mode
Uses:
• brighter green and red signal colors
• light dashboard surfaces
• dark BUY text where required
• adjusted Entry and dashboard colors
• red brand header
Theme selection changes presentation.
It does not change pivot detection, Signal Strength, trade levels, statistics, or alerts.
━━━━━━━━━━━━━━━━━━━━━━
📱 PHONE MODE
━━━━━━━━━━━━━━━━━━━━━━
Phone Mode is designed for smaller chart areas.
It uses:
• Tiny signal labels
• Tiny active-trade labels
• one-pixel trade-level lines
• dark visual palette
• compact dashboard text
• reduced dashboard rows
The Phone Mode dashboard displays:
• Signal and Strength
• Status
• Win Rate and NET R
• Session
The compact layout intentionally removes most desktop details.
Phone Mode changes presentation only.
It does not change calculations.
━━━━━━━━━━━━━━━━━━━━━━
🚨 ALERT SYSTEM
━━━━━━━━━━━━━━━━━━━━━━
The script includes static TradingView alert conditions for:
• Confirmed BUY
• Confirmed SELL
• Stop Loss Hit
• Break-Even Activated
• Break-Even Hit
• TP1 Hit
• TP2 Hit
• TP3 Hit
Static BUY and SELL messages can include:
• exchange
• ticker
• timeframe
• Signal Strength
• Entry
• Stop
• TP1
• TP2
• TP3
The script also includes dynamic alert() events for:
• BUY signal
• SELL signal
• Stop Loss hit
• Break-Even activation
• Break-Even hit
• TP1 hit
• TP2 hit
• TP3 hit
Dynamic signal messages can include:
• trade_w_samet identifier
• event type
• direction
• symbol
• timeframe
• Signal Strength
• Entry
• Stop
• TP1
• TP2
• TP3
• Stop Loss Mode
• Break-Even Mode
• Trading Session
• session OPEN / CLOSED state
Dynamic trade-management messages preserve the active trade’s stored values before the trade state is reset.
Alert events use once-per-bar-close frequency.
A dynamic signal message is assembled from the stored trade values:
string buyEntryAlertMessage =
"trade_w_samet | Pivot Sniper Method" +
" Event: BUY SIGNAL" +
" Direction: BUY" +
" Symbol: " + syminfo.tickerid +
" Timeframe: " + timeframe.period +
" Strength: " + str.tostring(buySignalStrength) + "%" +
" Entry: " + str.tostring(activeEntryPrice, format.mintick) +
" SL: " + str.tostring(activeStopPrice, format.mintick) +
" TP1: " + str.tostring(activeTP1Price, format.mintick) +
" TP2: " + str.tostring(activeTP2Price, format.mintick) +
" TP3: " + str.tostring(activeTP3Price, format.mintick)
alert(
message=buyEntryAlertMessage,
freq=alert.freq_once_per_bar_close
)
The complete live message also includes Stop Loss Mode, Break-Even Mode, and session context.
Alerts are monitoring tools.
They do not execute or modify broker orders.
━━━━━━━━━━━━━━━━━━━━━━
🔔 HOW TO USE ALERTS
━━━━━━━━━━━━━━━━━━━━━━
For a specific static event:
1. Add Pivot Sniper Method to the chart.
2. Open TradingView’s Create Alert window.
3. Select the indicator as the condition.
4. Select the required BUY, SELL, Stop, Break-Even, TP1, TP2, or TP3 event.
5. Select the notification method.
6. Test the alert before relying on it.
For one combined dynamic workflow:
1. Add the indicator to the chart.
2. Open Create Alert.
3. Select Pivot Sniper Method .
4. Select Any alert() function call.
5. Configure the delivery method.
6. Test signal and trade-management messages.
TradingView saves a snapshot of the script, its inputs, and chart context when an alert is created.
After materially changing the script, symbol, timeframe, or inputs, delete and recreate the alert so it uses the intended configuration.
━━━━━━━━━━━━━━━━━━━━━━
🧪 PRACTICAL WORKFLOW
━━━━━━━━━━━━━━━━━━━━━━
A practical review process:
1. Add Pivot Sniper Method to a standard candlestick chart.
2. Select Auto, Dark, Light, or Phone Mode.
3. Start with symmetrical pivot settings.
4. Observe how right-side bars affect confirmation delay.
5. Select Both Trend Bias when studying raw signal behavior.
6. Select Bullish or Bearish when reviewing one direction only.
7. Begin with All Sessions when studying general behavior.
8. Test London, New York, or Custom session filtering.
9. Begin with the default Minimum Signal Strength.
10. Compare signal frequency at higher and lower thresholds.
11. Review the strength percentage below each BUY or SELL label.
12. Use the tooltip to inspect the confirmed pivot price.
13. Compare the five quality components in the dashboard.
14. Select the preferred Stop Loss Mode.
15. Verify that the structural stop is logically positioned.
16. Review the ATR fallback behavior.
17. Set TP1, TP2, and TP3 in increasing order.
18. Select the Break-Even rule.
19. Review when the Entry label disappears and BE replaces it.
20. Observe how new eligible signals replace an active tracked trade.
21. Review Live R and historical NET R.
22. Review failed setups as well as successful setups.
23. Create and test alerts.
24. Define personal position size independently.
25. Account for spread, commission, liquidity, news, and execution conditions.
The indicator is designed for structured study and monitoring.
It should not be treated as an automatic decision-maker.
━━━━━━━━━━━━━━━━━━━━━━
⚙️ SETTINGS REFERENCE
━━━━━━━━━━━━━━━━━━━━━━
📈 Trend Bias
Trend Bias
• Bullish
• Bearish
• Both
━━━━━━━━━━━━━━━━━━━━━━
⚙️ Pivot Settings
Pivot High Left Bars
Default:
10
Pivot High Right Bars
Default:
10
Pivot Low Left Bars
Default:
10
Pivot Low Right Bars
Default:
10
━━━━━━━━━━━━━━━━━━━━━━
🚨 Signal Settings
Show BUY / SELL Signals
Shows or hides signal labels.
Signal Cooldown Bars
Default:
0
━━━━━━━━━━━━━━━━━━━━━━
🕒 Time Filter
Trading Session
• All Sessions
• London
• New York
• London + New York
• Custom
Custom Session
Default:
08:00–17:00
Custom Session Time Zone
• Exchange
• UTC
• Europe/London
• America/New_York
• Europe/Istanbul
• Asia/Tokyo
━━━━━━━━━━━━━━━━━━━━━━
💪 Signal Strength
Enable Signal Strength Filter
Default:
On
Minimum Signal Strength
Default:
55
Show Strength on Signal
Default:
On
Strength Trend Length
Default:
50
Strength Volume Length
Default:
20
━━━━━━━━━━━━━━━━━━━━━━
📦 Trade Levels
Show Active Trade Levels
Default:
On
Stop Loss Mode
• ATR
• Pivot Level
• Pivot + ATR Buffer
• Signal Candle
ATR Length
Default:
14
Stop Loss ATR Multiplier
Default:
2.0
Pivot ATR Buffer
Default:
0.25
TP1 Risk / Reward
Default:
1.0R
TP2 Risk / Reward
Default:
2.0R
TP3 Risk / Reward
Default:
3.0R
Level Projection Bars
Default:
20
━━━━━━━━━━━━━━━━━━━━━━
🟡 Break-Even
Break-Even Mode
• Off
• After TP1
• After TP2
Default:
After TP1
Break-Even Offset Ticks
Default:
0
━━━━━━━━━━━━━━━━━━━━━━
📊 Statistics Dashboard
Show Statistics Dashboard
Default:
On
Dashboard Position
• Top Right
• Bottom Right
• Top Left
• Bottom Left
━━━━━━━━━━━━━━━━━━━━━━
🎨 Visual Settings
Theme Mode
• Auto
• Dark Mode
• Light Mode
• Phone Mode
Label Size
• Tiny
• Small
• Normal
• Large
• Huge
Phone Mode always uses Tiny.
━━━━━━━━━━━━━━━━━━━━━━
🔔 Alert Settings
Enable BUY Alerts
Default:
On
Enable SELL Alerts
Default:
On
Enable Dynamic Alerts
Default:
On
All public input values are hidden from TradingView’s status line to reduce chart-header clutter.
━━━━━━━━━━━━━━━━━━━━━━
🧠 WHAT MAKES THIS SCRIPT ORIGINAL
━━━━━━━━━━━━━━━━━━━━━━
Pivots, ATR, EMA, volume comparison, session filters, risk/reward levels, Break-Even, alerts, and performance statistics are established technical-analysis concepts.
These concepts are not unique by themselves.
The originality of Pivot Sniper Method lies in the coordinated implementation applied to them:
confirmed high and low pivots
→ same-bar directional-conflict rejection
→ Bullish / Bearish / Both permission
→ session filtering
→ cooldown
→ five-part 0–100 quality model
→ minimum-quality acceptance
→ compact two-line BUY / SELL labels
→ confirmation-close Entry
→ four selectable Stop Loss models
→ ATR structural-stop validation fallback
→ independently adjustable TP1 / TP2 / TP3
→ target-state visual updates
→ TP1- or TP2-based Break-Even
→ Entry-to-BE visual replacement
→ active-trade replacement at current close
→ internal partial-R accounting
→ desktop and Phone dashboards
→ theme-aware colors
→ dashboard-corner selection
→ detailed static and dynamic alerts
Distinctive implementation features include:
• using five quality dimensions inside one pivot-reversal workflow
• separating pivot confirmation from Entry timing
• using the original pivot candle for wick quality
• using the later confirmation candle for candle quality and Entry
• applying session control only to new entries
• supporting four Stop Loss construction methods
• validating structural stops and falling back to ATR when required
• removing the Entry visual after Break-Even replaces it
• tracking replacement exits in R
• showing latest quality components in a compact dashboard
• supporting both individual events and one combined dynamic-alert workflow
The script is not a collection of unrelated indicators.
Every component supports the same objective: evaluating and managing a confirmed pivot-reversal setup under explicit, reviewable rules.
━━━━━━━━━━━━━━━━━━━━━━
⚠️ IMPORTANT PRACTICAL NOTES
━━━━━━━━━━━━━━━━━━━━━━
Signal frequency depends on:
• symbol
• timeframe
• data provider
• pivot left and right settings
• Trend Bias
• selected session
• cooldown
• minimum strength
• EMA length
• volume length
• ATR availability
• historical data availability
Higher right-side pivot values increase confirmation delay.
Higher strength thresholds reduce accepted signals.
Session filtering can remove otherwise valid setups.
The strength score is not a probability forecast.
The Trend component is part of the score, not a separate hard trend filter.
The script replaces an active tracked trade when a new eligible signal appears.
The script does not retain completed trade lines historically.
Dashboard statistics use loaded chart history only.
Different exchanges, brokers, and data feeds can produce different:
• highs
• lows
• closes
• pivots
• wick measurements
• volume values
• ATR values
• EMA values
• signals
• stop levels
• target levels
• replacement exits
• historical statistics
Changing available history can change the first eligible setup and later active-trade sequencing.
━━━━━━━━━━━━━━━━━━━━━━
⚠️ LIMITATIONS AND SHORTCOMINGS
━━━━━━━━━━━━━━━━━━━━━━
This script has important limitations.
It does not guarantee profitable trades.
It does not predict future price movement with certainty.
It does not execute orders.
It does not place broker Stop Loss orders.
It does not place broker Take Profit orders.
It does not calculate position size.
It does not calculate account risk.
It does not include spread.
It does not include commission.
It does not include slippage.
It does not include latency.
It does not include swap or financing.
It does not include taxes.
It does not model partial fills.
It does not model order rejection.
It does not model contract specifications.
It does not model tick-by-tick execution.
It uses historical OHLC bars.
It cannot always determine whether Stop or target occurred first inside one candle.
It resolves same-candle ambiguity in favor of the active Stop.
It begins trade-management checks on the candle after Entry.
It requires right-side pivot confirmation.
It cannot identify a confirmed pivot on the original pivot candle.
It can react with delay when larger right-side values are used.
It rejects simultaneous high and low pivot confirmation.
It can reject setups through bias, session, strength, or cooldown rules.
It replaces an active tracked trade when a new eligible signal appears.
A replacement exit can close a trade before its mapped Stop or TP3.
Its Signal Strength is an internal score, not a probability.
Its volume component depends on available volume data.
Its dashboard is not Strategy Tester.
Its statistics are not audited.
Its Win Rate excludes exact 0R Break-Even results.
A positive Break-Even offset can classify a BE hit as positive R.
Its target hit rates use total trades started.
Its statistics depend on loaded chart history.
Changing settings recalculates historical behavior.
Alerts depend on TradingView and user configuration.
Alerts do not guarantee broker execution.
━━━━━━━━━━━━━━━━━━━━━━
👤 WHO THIS SCRIPT MAY BE USEFUL FOR
━━━━━━━━━━━━━━━━━━━━━━
This script may be useful for traders who:
• understand pivot confirmation
• want BUY and SELL signals based on confirmed price pivots
• prefer a quality score instead of equal treatment for every pivot
• want separate Bullish and Bearish direction controls
• want London, New York, or Custom session filtering
• want selectable ATR or structural stops
• want independently adjustable R targets
• want TP1- or TP2-based Break-Even
• want active trade levels on the chart
• want compact tooltips
• want loaded-history R statistics
• want a compact desktop dashboard
• want a reduced Phone Mode
• want detailed TradingView alerts
• understand that historical chart results are not verified execution
It may be less suitable for users who:
• want signals on the original unconfirmed pivot candle
• want no pivot delay
• want tick-level backtesting
• want multiple simultaneous tracked trades
• want new signals ignored while a trade is active
• want historical completed-trade lines preserved
• want automatic broker execution
• want position sizing
• want commission and slippage modeling
• want guaranteed reversal signals
• interpret Signal Strength as win probability
• expect historical Win Rate to continue unchanged
━━━━━━━━━━━━━━━━━━━━━━
🧭 BEST-PRACTICE SUGGESTIONS
━━━━━━━━━━━━━━━━━━━━━━
For studying pivot sensitivity:
• begin with equal high and low pivot settings
• compare smaller and larger left / right values
• remember that right-side values directly affect delay
For studying raw signal behavior:
• use Both Trend Bias
• use All Sessions
• use a moderate minimum strength
• review every accepted BUY and SELL
For directional study:
• use Bullish or Bearish
• compare results separately
• do not assume one direction will remain superior
For session-based review:
• compare All Sessions with London or New York
• use the exchange’s actual liquidity characteristics
• remember that active trades remain managed outside the session
For Signal Strength:
• begin with 55
• compare frequency at 45, 55, and 65
• review the five components
• do not interpret the percentage as guaranteed probability
For risk mapping:
• begin with ATR 14 and 2.0 multiplier
• compare ATR with Pivot Level
• compare Pivot Level with Pivot + ATR Buffer
• maintain logical TP1 < TP2 < TP3 values
For Break-Even:
• compare Off with After TP1
• test After TP2 for wider trade development
• keep the tick offset realistic for the instrument
For chart clarity:
• use Auto for general use
• use Dark or Light when manual control is preferred
• use Phone Mode on smaller screens
• move the dashboard away from important price action
• adjust label size according to chart density
Always:
• wait for confirmed signals
• review broader market structure
• review liquidity and volatility
• review news risk
• define personal account risk
• calculate position size independently
• test the exact symbol, timeframe, and data feed
• inspect failed trades as well as successful trades
• recreate alerts after important configuration changes
━━━━━━━━━━━━━━━━━━━━━━
🔓 PUBLICATION NOTE
━━━━━━━━━━━━━━━━━━━━━━
Pivot Sniper Method is published as an educational pivot-confirmation, signal-quality, session-filtering, risk-mapping, Break-Even, statistics, and alert tool.
The purpose of this description is to explain:
• how pivots are confirmed
• why signals appear after the original pivot
• how BUY and SELL candidates are formed
• how simultaneous pivot conflicts are rejected
• how Trend Bias affects eligibility
• how session filtering affects new entries
• how cooldown affects frequency
• how the five Signal Strength components work
• why Signal Strength is not a probability
• how Entry is defined
• how each Stop Loss Mode works
• how invalid structural stops fall back to ATR
• how TP1, TP2, and TP3 are calculated
• how Break-Even activates
• why Entry disappears after BE becomes active
• how same-candle Stop / target ambiguity is handled
• how active trades are replaced by new eligible signals
• how internal R statistics are calculated
• what the dashboard displays
• how Phone Mode differs
• what alerts include
• what the script does not simulate
• why historical results can change
The script is designed to support structured review.
It does not promise profitable results.
It does not remove market risk.
It does not replace independent analysis.
It does not replace personal risk management.
━━━━━━━━━━━━━━━━━━━━━━
🕒 REPAINTING, BACKPLOTTING, AND TIMING DISCLOSURE
━━━━━━━━━━━━━━━━━━━━━━
Pivot Sniper Method uses confirmed price pivots.
Pivot confirmation requires future candles relative to the original pivot location.
The number of required right-side candles is controlled independently for pivot highs and pivot lows.
The script does not know that a pivot exists on the original pivot candle.
After the required right-side candles complete:
• the pivot becomes confirmed
• the candidate is evaluated
• Signal Strength is calculated
• filters are applied
• the BUY or SELL label can appear on the confirmation candle
• the tracked Entry can open at the confirmation-candle close
The BUY or SELL trade label is not plotted back on the original pivot candle.
The Entry is not backdated.
Signals require confirmed chart bars.
This reduces unfinished current-bar variation.
It does not remove:
• pivot confirmation delay
• differences between historical OHLC and tick sequence
• data-feed differences
• changes caused by settings
• changes caused by loaded history
• market risk
Historical results can change when:
• pivot settings change
• Trend Bias changes
• session settings change
• cooldown changes
• strength settings change
• ATR settings change
• Stop Loss Mode changes
• target settings change
• Break-Even settings change
• symbol changes
• timeframe changes
• exchange or broker feed changes
• available chart history changes
Users should interpret the original pivot price as historical structure and the later BUY / SELL candle as the actual confirmed signal timing.
━━━━━━━━━━━━━━━━━━━━━━
🛡️ DISCLAIMER
━━━━━━━━━━━━━━━━━━━━━━
Pivot Sniper Method is provided for educational and informational purposes only.
It does not constitute financial, investment, trading, legal, accounting, or tax advice.
No indicator can guarantee future results.
Markets are uncertain.
Price structure changes.
Volatility changes.
Liquidity changes.
Volume behavior changes.
Session behavior changes.
Historical chart behavior does not ensure future performance.
Every user is responsible for their own:
• analysis
• validation
• symbol selection
• timeframe selection
• pivot settings
• directional bias
• session selection
• quality threshold
• Stop Loss selection
• target planning
• Break-Even selection
• position sizing
• risk management
• alert configuration
• trading decisions
• broker execution
• legal obligations
• tax obligations
The pivots, BUY labels, SELL labels, Signal Strength values, Entry levels, Stop Loss levels, Break-Even levels, TP1 levels, TP2 levels, TP3 levels, active lines, labels, tooltips, dashboard values, Win Rate, NET R, Average R, target hit rates, and alerts are visual analysis tools only.
A confirmed pivot is not a guaranteed reversal.
A high Signal Strength value is not a guaranteed winning trade.
A TP label is not proof of an actual broker fill.
A Stop Loss event is not proof of an actual broker fill.
The dashboard is not verified account performance.
The statistics are not audited.
The script does not include spread, commission, slippage, latency, financing, taxes, partial fills, order rejection, position sizing, account equity, or broker-specific execution.
Use the script as a structured pivot-reversal review, trade-mapping, and monitoring framework—not as a promise of profitability or a substitute for independent judgment.
อินดิเคเตอร์

Previous Day / Week / Month Highs & LowsPrevious Day / Week / Month Highs & Lows.
A precision multi-period key-level tool that automatically draws previous-period highs and lows from the Daily, Weekly and Monthly timeframes — plus optional midpoints, an optional grid of psychological round-number levels around price, and a compact right-side info table with distance-to-price for every visible level. Built for intraday, scalping and swing traders who want a clean, opinionated read of the reference levels that institutional desks actually watch.
How it works:
The indicator pulls the previous completed candle from D, W and M via request.security and anchors each level line at the exact open time of that source bar — so a Weekly line starts on last week's Monday, not on the current week's first bar. Lines stay live and extend to the right through the chart's future offset area, so the reference points from yesterday, last week and last month are always visible on the current bar. The optional round-number grid re-anchors to price on every bar, so the closest N round levels above and below are always in view.
What it calculates:
- Previous Day High / Low + optional Midpoint (PDH, PDL, PD MID)
- Previous Week High / Low + optional Midpoint (PWH, PWL, PW MID)
- Previous Month High / Low + optional Midpoint (PMH, PML, PM MID)
- Psychological round-number grid centered on the current price, with adjustable step and count
- Live distance from the current close to every enabled level (in %)
Key features:
- Per-period visibility toggles: enable exactly the levels you use, hide everything else
- Configurable history depth — keep 1 to 20 previous daily / 1 to 12 weekly / 1 to 6 monthly sessions on the chart
- Auto-hide only when the chart timeframe strictly exceeds the level period: Daily levels stay on 1D, Weekly stay on 1W, Monthly never hide
- Lines anchored at the source bar (open time of the previous D/W/M candle), not at the first bar of the new period — you see the actual range the level came from
- Label anti-collision system: each label sits on its own horizontal slot in the right-offset area, with configurable Label Spacing — PDH / PWH / PMH texts never overlap even when their prices are close together
- Compact right-side info table with three columns (level name, price, +/- % distance to close), positioning across 6 chart corners, three text sizes, adjustable background transparency
- Three line styles (Solid / Dashed / Dotted) applied independently to main lines, midpoints and round levels
- Adjustable line width, label size and label visibility for a clean or a dense look
- Line extension modes: Right (default), Both, or None
- Fully customizable color per period — defaults follow a heat-scale palette (Daily = yellow, Weekly = orange, Monthly = red — nearest to furthest horizon)
- Round-number step tuned per asset class (BTC / ETH / FX / index / equities)
- Built-in alerts: PDH / PDL touched, same for weekly and monthly
- Auto-adapts to any instrument and any chart timeframe
Who it's for:
Intraday, scalping and swing traders — SMC / ICT, price-action, order-flow, or classical technicals — who want the exact levels institutional desks pin their orders around, cleanly drawn, without the visual noise of a dozen overlapping tools. อินดิเคเตอร์

Pivot Matrix + Zones [AFD]Overview
Pivot Matrix + Zones brings up to three independently configured pivot systems into one coordinated overlay. It combines exact pivot ladders, standard Central Pivot Range (CPR), ATR- or tick-scaled reaction zones, formula-aware cross-pack confluence, retained untested levels, a compact context dashboard, and seven bar-close alert conditions.
Each pack can use a different formula and anchor, allowing combinations such as Daily Traditional, Daily Camarilla, and Weekly Fibonacci to be compared without merging their identities.
The script is designed for descriptive market context. It does not produce trade recommendations, forecasts, performance statistics, or automated orders.
What makes it different
The script's original contribution is its identity-aware coordination of the three packs rather than a simple stack of pivot lines. Each pack has its own formula, anchor, tier ceiling, formula-pivot and CPR visibility, labels, R/S color, and line style. One shared lifecycle model freezes reaction width at origin, carries formula and anchor provenance into retained levels and alerts, and keeps dashboard and drawing state aligned.
Confluence requires overlapping reaction zones from at least two distinct enabled packs. Multiple levels or historical origins from only one pack do not create confluence, and duplicate canonical levels do not inflate the displayed pack count. Exact formula-and-anchor duplicates are marked inactive instead of drawing the same configuration twice.
The implementation and lifecycle logic are original. The named pivot methods use standard published calculations identified below; no third-party indicator source code is reused.
Pivot formulas and anchors
The three packs can use Traditional, Floor Pivots, Fibonacci, Woodie, Classic, DM, Camarilla, Frank Dilernia, Shadow Trader, or ACD Method calculations. Traditional, Fibonacci, Woodie, Classic, DM, and Camarilla use the formulas documented for TradingView Pivot Points Standard. Floor Pivots uses the standard prior-period high, low, and close ladder through R3/S3; those levels match Traditional through the third tier, while Traditional retains its additional R4/R5 extensions.
Available anchors are Auto, Daily, Weekly, Monthly, Quarterly, and Yearly. Auto uses Daily pivots on chart resolutions through 15 minutes, Weekly pivots above 15 minutes and below one day, and Monthly pivots on daily-or-higher charts.
Each formula stops at its documented native tier. The Through Rn/Sn controls do not create unsupported extension levels. Camarilla calculations use the standard R/S equations and display H/L aliases alongside those names.
Data and session handling
Use daily-based values to request anchor data from the selected symbol context. Exchange default, RTH, and ETH choices are available. For futures, ETH uses the exchange-default electronic context, while RTH uses the named subsession entered in the settings. The default futures RTH name is us_regular, but valid names are symbol-specific.
On intraday charts, turning daily-based values off builds anchor values from the chart feed. This may reflect a visible session more closely, but Quarterly or Yearly anchors can have insufficient intraday history. On daily-or-higher charts, the script continues to use daily-based anchor data.
Most formulas use completed prior-anchor values. Woodie also uses the fixed open of the active anchor. The optional developing next CPR uses the active anchor's changing high, low, and close; it is visually separated and never enters confluence, retained history, or alerts.
CPR and reaction zones
CPR always uses the standard floor-pivot calculation from the completed period's high, low, and close. Its chart labels identify the center as PP, the lower Bottom Central boundary as Lower (BC), and the upper Top Central boundary as Upper (TC). This CPR pivot remains separate from a formula pivot when methods such as Woodie or DM produce a different value.
Reaction zones are symmetric bands around exact pivot prices. Their half-width can use confirmed Daily ATR, completed anchor ATR, or a fixed number of minimum ticks. The width is frozen when an anchor's geometry is created, so an existing zone does not drift as ATR changes inside that anchor. The exact pivot remains the center line; the surrounding fill is a configurable context band.
How to read the chart
Exact center lines are the calculated PP, resistance, support, or CPR levels. Soft surrounding fills show the configured interaction distance; they are not additional pivot levels or predictive outputs.
By default, formula PP lines and matching fills are yellow, Pack A R/S lines and fills are blue, and CPR boundaries and the central range are purple. Active labels identify Formula + Level, while CPR labels distinguish PP, Lower (BC), and Upper (TC). Price text is optional and hidden by default.
Confluence and retained levels
When eligible reaction zones from at least two distinct packs overlap, the script merges the overlap transitively into a confluence band. Each label names the unique contributing formulas and then shows the number of distinct packs represented, such as Traditional + Fibonacci x2. Enable confluence is the master control and is on by default. Turning it off removes confluence zones and labels and suppresses Confluence Touch events while the pivot packs, dashboard, retained-level lifecycle, and other alerts continue. When enabled, confluence color, text color, and projection change the display only, not the overlap or alert identity.
At an anchor rollover, eligible pivot zones that were not touched during their active period can be retained as Untested. A later confirmed wick overlap changes the record to TESTED, freezes and fades its drawing for 20 chart bars, and removes it afterward. Retained drawings are off by default, but lifecycle tracking, dashboard counts, confluence eligibility, and fill alerts continue while the drawings are hidden.
Dashboard
The compact dashboard shows only enabled packs with their selected pivot formula and any non-active status. It then classifies the two-period CPR relationship, reports whether the active-anchor open is above, below, or inside CPR, and shows the nearest retained untested level with the live count across all packs. CPR context follows the first enabled pack in A/B/C order.
Display controls
Active geometry can end at a finite current-bar offset, at the anchor end, or extend right. Confluence has its own finite current-bar, finite label-offset, and extend-right choices. Show confluence only hides non-confluence drawings while confluence is enabled; turning the master control off restores the normal layers. Calculations, the dashboard, lifecycle processing, and all enabled alerts continue.
Formula PP, CPR, labels, displayed prices, label size, line width, reaction shading, tier depth, and retained-level styling can be adjusted independently. Formula PP lines and fills default to yellow, Pack A R/S lines and fills default to blue, and CPR boundaries and the central range default to purple. The Inputs tab follows a numbered workflow and dims controls that do not apply without disabling calculations that still use their state. Prices are hidden by default, and chart labels identify formula and level without A/B/C prefixes; dashboard and alert provenance retain pack identity. Duplicate formula-and-anchor pack configurations are rejected rather than drawn twice.
Suggested setup workflow
Configure Pack A as the primary context, then enable Pack B or C when a second formula, anchor, or both are needed for comparison. Choose the highest native R/S tier, session basis, reaction-width method, and projection for the chart being reviewed. Use the dashboard and labels for identity, Show confluence only to isolate cross-pack overlaps, and retained-level drawings when the untested lifecycle should remain visible.
Create alerts only after the symbol, timeframe, sessions, pack settings, and reaction-width inputs are finalized, because those chart settings define the levels and events being monitored.
Alerts
Seven fixed conditions are available: Active Level Touch, Cross Up, Cross Down, CPR Enter, CPR Exit, Untested Level Filled, and Confluence Touch. Events confirm at chart-bar close. Optional dynamic messages aggregate supported events from the same confirmed bar and include available pack, formula, anchor, level, origin, and price context. TradingView running alerts retain the script inputs saved when they were created, so delete and recreate an alert after changing Enable confluence or another input.
Limitations
Pivot values and rollover timing depend on the selected symbol, data feed, anchor, session context, and available history. Daily and intraday feeds can differ because of extended hours, futures settlements, and feed construction. An invalid futures subsession name can fall back to the exchange default, so confirm the requested name in Inputs and compare the resulting pivots with the intended session.
Reaction zones and confluence visualize proximity; they do not predict a response. Untested means the configured zone was not touched during its tracked active period; it does not imply that price must revisit or react to it.
Use a standard time-based chart when evaluating touches, crosses, and alerts because those events use the chart's OHLC bars. Alerts still depend on TradingView alert creation, chart settings, feed updates, and bar-close processing.
The script keeps bounded histories of up to 30 live untested levels and 20 fading tested markers, with older retained records removed as those limits are reached. Confluence display is capped at 20 zones.
This is a public open-source Pine Script v6 indicator with a Mozilla Public License 2.0 source header. TradingView's open-source reuse rules apply on-platform before the license terms. It is an educational charting tool and is not financial advice. อินดิเคเตอร์

S&R + Trends | Polytrends Method (gracefultrading)SUPPORT & RESISTANCE + TRENDS | POLYTRENDS METHOD
Maps market structure automatically: every trend is detected, classified, and turned into support/resistance levels that know their own state. Built around the polytrends method of reading structure through trends and progression. This is my own independent, open-source interpretation of the framework, coded from scratch based on publicly available material. For educational purposes only — not financial advice.
TRENDS AND CONTAINMENT
Every pivot is compared against the previous pivot in the same direction. A swing that pushes past the prior trend is a valid continuation and draws in the trend colour. A swing that fails to exceed it — a lower high on the way up and or a lower low on the way down — is a containment trend, drawn in its own colour and style.
The current in-progress leg draws dashed, so you always see the swing being built. Pivot detection reacts to wick pullbacks, close-breaks of the prior candle, structural breaks, and same-bar reversals — not fixed-length lookbacks.
LEVELS WITH STATE
Each trend leaves a level at the candle body, committed only after the next opposite pivot confirms it. Every label shows the level's current state at a glance:
G — gained
SG — support gained
L — lost
RL — resistance lost
State updates bar by bar as price closes through or reclaims a level. An optional break/test offset (in ticks or percent) means a level only counts as gained, lost, or tested once price clears it by your buffer.
PAIRED STRUCTURE
Levels come from trends and draws in colour-matched pairs from a 12-colour set, each pair originating from the same piece of structure.
Tested levels draw in a different line style from untested ones and can be hidden entirely; when hidden, you choose whether each pair still shows its tested partner so pairs stay intact. At high relevance settings, clustered tested levels within a tick distance thin down to the strongest one.
POLYBOUNDS
Experimental.
A corner readout that reduces the chart to the two prices that matter:
▲ hold above — the key gained level below price. Bulls are in control while price holds above it.
▼ hold below — the key lost level above price. Bears are in control while price holds below it.
Each line is coloured to match its pair on the chart, and the box only quotes levels that are actually drawn. A Trend Day row (1H and below) reads whether the session is shaping up bullish, bearish, or rangebound based on where price sits against the bounds.
SETTINGS
Levels above/below counts. A relevance dial controlling how deep into history levels are pulled from (50 bars to full history). Independent colours, styles, and widths for trends, containment trends, and levels. Configurable label background and twelve pair colours. A right-offset so all level rays align cleanly ahead of price.
HOW TO READ IT
The market is always in progression — always attempting either a new high or a new low. Every swing this indicator draws is one attempt in that sequence, and every level is the footprint it leaves behind.
Progression rule: in an uptrend, price should not lose the previous swing low if it intends to go higher — losing it shifts probability toward the opposite objective. Mirror logic in a downtrend. Watch the level states: a support flipping from SG to L is that shift happening in real time.
Containment is the early warning. A containment trend (lower high in an uptrend, higher low in a downtrend) means the progression is failing before any level has broken. Trend weakness is the warning; level failure is the confirmation.
Levels mark accepted value. They're built from candle bodies, not wicks — the goal is to see where the market accepted or rejected value, which is why the break/test offset exists to filter wick noise.
Untested levels react first. Fresh levels are the highest-priority reaction zones; tested levels remain valid structure and become targets when price is nearer to them. The pair colours show you which structure each level came from.
Timeframes nest. Higher-timeframe levels are destinations; lower-timeframe levels are the navigation between them. Significant trends typically start from higher-timeframe pivots — the biggest swings on your chart usually trace back to them. RTH-formed levels tend to carry the most weight.
Works on any symbol and timeframe; the Trend Day readout is built for intraday. This is a tool for reading structure, not a signal service — nothing replaces risk management. อินดิเคเตอร์

Previous Day Pivot Path - Intraday Support ResistancePrevious Day Pivot Path - Intraday Support Resistance
Overview
Previous Day Pivot Path is an intraday reference-level study built from the confirmed OHLC values of the previous selected trading day. It plots the current day's central pivot and support/resistance levels, then records the first chart bar in which each level is reached and assigns a compact arrival rank.
The script is intended for traders and researchers who want to identify the current day's mathematically derived reference levels without converting them into buy/sell instructions. It does not predict whether a level will hold or break, and it does not present win-rate, profitability, or performance claims.
What makes this implementation different
1. First-arrival path instead of static lines only
Each tracked level begins the day as pending. When the selected price source first reaches it, the script records an arrival rank and can place a numbered badge at the corresponding time.
If more than one previously unreached level is reached in the same chart bar, those levels receive the same rank. OHLC bars do not reveal the true tick-by-tick order inside that bar, so the script deliberately avoids inventing an intrabar sequence that the available data cannot prove.
2. Reached-level fading and next-level focus
Reached levels can fade automatically. The nearest unreached level can receive stronger line emphasis and an optional translucent focus halo. After all displayed levels have been reached, the focus can fall back to the nearest level or remain inactive.
This visual hierarchy separates completed parts of the day's path from levels that remain unvisited, while preserving the exact horizontal prices.
3. Confirmed previous-day data
All daily formula inputs are requested from the last completed daily bar. Open time, close time, open, high, low, and close are all offset by one daily bar before they are used. The current developing daily high, low, or close is never used in the pivot formulas.
The script also checks that the completed daily session is chronologically aligned with the selected intraday source day before it initializes new levels or arrival events.
4. Source-session freshness protection
Three OHLC source modes are available:
- Automatic: uses chart-context OHLC on standard candles and standard-symbol OHLC on non-standard charts.
- Chart context: preserves the chart's ticker modifiers, session, adjustment, and chart-type context.
- Standard symbol: removes non-standard ticker modifiers and uses standard market OHLC.
When the selected standard source has no bar aligned with the current chart timestamp, the script does not reuse an old forward-filled OHLC value. Arrival events pause, and existing drawings remain fixed at the last valid source bar until aligned data becomes available again.
5. Session-aware day handling
The script uses a trading-day key suitable for markets whose sessions cross midnight. This prevents a simple calendar-date change from being treated as the session boundary on many overnight Forex and futures markets.
If the first loaded dataset begins after the selected source day's opening bar, the earlier first-arrival sequence is unknowable. For that one partial day, arrival tracking and open-dependent features are conservatively bypassed rather than reconstructed from incomplete history.
6. Time-anchored persistent drawings
Persistent lines, boxes, right-edge labels, and arrival badges use UNIX-time coordinates. This avoids relying on very old bar_index coordinates on dense second charts and keeps historical drawings independent of the number of bars elapsed since their creation.
7. Multiple formula families plus an editable research mode
The script includes:
- Traditional
- Classic
- Fibonacci
- Camarilla
- Custom research
The custom mode lets users select the pivot center and edit three previous-range multipliers. The multipliers are sorted from smallest to largest before assignment to R1/S1, R2/S2, and R3/S3.
8. Price-grid and duplicate-level controls
Calculated levels can remain raw, round to the nearest minimum tick, or round outward so resistance is rounded upward and support downward. When rounding produces the same price for multiple logical levels, the script can merge them into one line and one badge with a combined code such as P/R1.
9. Researchable arrival definitions
Users can define a first arrival with:
- Wick range
- Candle body range
- Confirmed close crossing
Optional tolerance can be exact, a number of ticks, or a percentage of the previous-day range. Gap crossings can be counted or ignored. Arrival ranking can follow only displayed levels, the selected depth, or all levels produced by the formula.
10. Deliberate chart hygiene
The default presentation prioritizes P, R1/S1, and then outer levels through width, line style, transparency, and optional reached-level fading. Right-edge labels support automatic text contrast and horizontal lane staggering when prices are close.
Optional context references include:
- Central Pivot Range (CPR)
- Previous-day high and low (PDH/PDL)
- Previous-day close (PDC)
- Current selected-source day open
- Opening bracket between the nearest displayed levels above and below the day open
- Compact session brief
All context elements can be disabled independently.
Formula reference
Let O, H, L, and C be the confirmed previous selected daily bar, and let Range = H - L.
Traditional
P = (H + L + C) / 3
R1 = 2P - L
S1 = 2P - H
R2 = P + Range
S2 = P - Range
R3 = H + 2(P - L)
S3 = L - 2(H - P)
Classic
P = (H + L + C) / 3
R1 = 2P - L
S1 = 2P - H
R2 = P + Range
S2 = P - Range
R3 = P + 2Range
S3 = P - 2Range
Fibonacci
P = (H + L + C) / 3
R1/S1 = P +/- 0.382 x Range
R2/S2 = P +/- 0.618 x Range
R3/S3 = P +/- 1.000 x Range
Camarilla
P = (H + L + C) / 3
R1/S1 = C +/- 1.1 x Range / 12
R2/S2 = C +/- 1.1 x Range / 6
R3/S3 = C +/- 1.1 x Range / 4
Custom research
The center can be HLC3, HLCC4, OHLC4, midpoint, or previous close. Three editable multipliers are applied symmetrically to the previous-day range after being sorted from smallest to largest.
Arrival timing
Confirmed bar
This is the reproducible default. An arrival is recorded only after the chart bar is confirmed.
Live bar
Live timing is available for wick arrivals. Intrabar-persistent state latches a wick touch across realtime updates of the open bar. Because all levels first reached inside the same chart bar share one rank, the script does not claim a tick-level order that bar data cannot establish.
Body and close-cross modes automatically use confirmed bars to avoid transient open-bar signals.
Non-standard charts
Heikin-Ashi, Renko, Kagi, Line Break, Point & Figure, and Range bars can be synthetic or approximate. Automatic mode uses standard-symbol OHLC for the level and event source on non-standard charts, but arrival events are paused by default. Users can explicitly allow them for research after accepting the chart-type limitation.
The script is designed for time-based intraday charts. Tick charts and daily-or-higher charts are intentionally rejected with a visible notice rather than processed with ambiguous session assumptions.
Language and user interface
English is the default dynamic chart language. Selecting 日本語 changes dynamic labels, tooltips, safety notices, session-brief text, and language-aware alert() messages. Input names remain short bilingual labels so both English and Japanese users can configure the study.
Key Japanese UI translations:
未到達 = Pending
到達 = Reached
確定足 = Confirmed bar
ライブ・ヒゲ保持 = Live wick latch
前日値幅 = Prior range
次の未到達 = Next unreached
準備完了 = Ready
ソース足なし = Source bar unavailable
日次データ整合待ち = Aligning daily data
合成足イベント停止 = Synthetic events paused
International level codes such as P, R1, S1, PDH, and PDL remain unchanged in both languages.
Alerts
Neutral alert conditions are available for:
- Any pivot's first arrival
- P, R1, S1, R2, S2, R3, and S3 first arrivals
- Confirmed close crossing above or below P
An optional language-aware alert() call can include the reached level codes, shared rank, symbol, timeframe, and selected calculation method. Alerts describe observable level events only; they are not trade recommendations.
Suggested workflow
1. Use a standard candlestick intraday chart for the most direct interpretation.
2. Keep Automatic, Traditional, Nearest tick, Confirmed bar, and Wick for the conservative defaults.
3. Select the desired level depth and optional previous-day references.
4. Enable live timing only when intrabar wick monitoring is required.
5. Create alerts from the neutral first-arrival or confirmed P-cross conditions as needed.
6. Use Market Replay and several symbols/session types before relying on customized settings.
Important limitations
- A previous-day pivot is a mathematical reference, not a prediction that price will reverse or continue.
- Data vendors can revise historical bars, and exchange session definitions can differ across instruments.
- Standard-symbol mode can intentionally have no aligned bar outside its selected session. In that case, events pause instead of carrying stale OHLC forward.
- The first loaded partial source day cannot provide a complete earlier arrival sequence.
- A chart bar cannot prove the order of multiple level touches inside that bar; those first touches share one rank.
- Live wick tracking reacts to realtime updates. Reloaded historical bars contain finalized OHLC, not the original tick stream.
- Synthetic chart bars may not represent executable market prices. Arrival tracking on such charts is disabled by default.
- The study does not provide entries, exits, position sizing, stop placement, or performance statistics.
日本語説明
概要
Previous Day Pivot Pathは、選択したデータソースの確定済み前日OHLCから、当日のP・R・Sを自動計算して描画する日中足向けインジケーターです。
単に水平線を表示するだけではなく、各水準へ当日初めて到達したチャート足を記録し、到達順を番号で表示できます。売買推奨、勝率、収益性、将来予測を提示するものではなく、当日の数理的な節目と到達経路を研究するためのツールです。
主な特徴
初回到達経路
各水準は当日開始時に未到達状態となり、選択した価格ソースが初めて到達すると順位を記録します。同じチャート足の中で複数水準へ初回到達した場合、その足の内部順序はOHLCだけでは証明できないため、すべて同順位とします。
確定前日OHLC
日足リクエストでは、時刻・始値・高値・安値・終値のすべてを1本前へオフセットして使用します。形成中の日足高安や終値はピボット計算に使いません。
ソース欠損時の安全処理
標準銘柄ソースに現在時刻と一致する足がない場合、過去のOHLCを現在足へ持ち越して判定しません。到達イベントを停止し、既存描画を最終有効ソース足で固定します。
夜間市場を考慮した日付管理
Forexや先物など、セッションが日付をまたぐ市場に対応するため、単純なカレンダー日ではなく取引日キーを使用します。
秒足で古くなった描画への耐性
長期間保持する線、ボックス、到達バッジ、右端ラベルはUNIX時刻座標で管理します。高密度な秒足でも、古いbar_index座標による制限へ近づきにくい設計です。
5種類の計算方式
Traditional、Classic、Fibonacci、Camarilla、Custom researchを選択できます。Custom researchでは中心値と3つの前日値幅倍率を変更できます。
到達判定の研究性
ヒゲ、実体、確定終値通過から選択でき、許容幅は厳密一致、ティック数、前日値幅比率から設定できます。ギャップ通過を到達扱いにするかも切替可能です。
視認性
到達済み水準のフェード、最寄り未到達水準の強調、フォーカスハロー、自動文字コントラスト、近接ラベルの横方向段組みを実装しています。
CPR、前日高安、前日終値、当日始値、始値ブラケット、セッション概要は個別に表示・非表示を変更できます。
推奨初期設定
OHLC source Automatic
Pivot method Traditional
Level rounding Nearest tick
Arrival timing Confirmed bar
Arrival basis Wick
Touch tolerance Exact
Arrival universe Displayed levels
Synthetic chart events Off
Auto-stagger labels On
Auto contrast On
Focus halo On
ライブ中のヒゲ到達を監視するときだけ、Arrival timingをLive barへ変更してください。実体・終値通過は安全のため確定足判定になります。
言語切替
Language / 言語でEnglishまたは日本語を選択できます。日本語へ切り替えると、チャート上の動的ラベル、ツールチップ、安全性メッセージ、セッション概要、言語連動alert()が日本語になります。
P、R1、S1、PDH、PDLなどの国際共通コードは両言語で同じ表記です。
重要な注意事項
- ピボットは数理的な参照水準であり、反転やブレイクを保証しません。
- 読み込み初日が選択ソースの日中途中から始まる場合、それ以前の到達順は復元できないため、その日だけ経路追跡を停止します。
- 1本の足内で複数水準へ触れた正確な順序はOHLCから判定できないため、同順位になります。
- 標準銘柄ソースのセッション外では、古い価格を流用せず到達判定を停止します。
- Heikin-Ashi、Renko、Kagiなどの合成足では、到達イベントを既定で停止しています。
- Live barのヒゲ到達はリアルタイム更新に反応します。再読み込み後の履歴足には最終OHLCが残り、当時のティック列そのものは残りません。
- 本インジケーターはエントリー、決済、ストップ、ロット、成績表を提供しません。 อินดิเคเตอร์
