Zone Shift — Trend Zones and Retests

Category: Indicators By: Iván González Created: November 10, 2025, 9:19 AM
November 10, 2025, 9:19 AM
Indicators
7 Comments

What is Zone Shift?

Zone Shift is a trend-and-channel indicator designed for clear, actionable context. It highlights when price escapes a dynamic envelope and then retests the breakout level. The tool works across timeframes:

  • Swing & positional: clean visual structure and reliable “zone memory.”

  • Intraday: responsive enough for trend days; still mindful of retests.

Use it to:

  • Confirm trend bias (green/red candles).

  • Track dynamic zones (top/bottom bands).

  • Spot retests of the trend-start level (diamond signals) that often precede continuation.

How it works

  1. Core averages

    • ema: an exponential-style average of close using length (user-driven).

    • hma: a faster, HMA-like average using max(20, length − 40) for the period.

    • Middle line (mid) = average of ema and hma.

  2. Dynamic distance

    • dist = simple average of the true bar range (high − low) over 200 bars.

    • Top (itop) = mid + dist; Bottom (ibot) = mid − dist.

  3. Trend flip logic

    • Bull flip: when the low closes above itop while the prior bar’s low was below the prior itop.
      trend = 1, trendStart = low, candles turn green.

    • Bear flip: when the high falls below ibot while the prior bar’s high was above the prior ibot.
      trend = 0, trendStart = high, candles turn red.

  4. Retest logic (⯁)

    • After a flip, the indicator tracks the trend-start level (trendStart).

    • Bull trend: prints a green ⯁ when price crosses back above trendStart.

    • Bear trend: prints a red ⯁ when price crosses back below trendStart.

    • Markers are spaced by ≥ 5 bars to avoid clutter, and positioned using ATR(14) x 0.2 for visibility.

Visual elements & interpretation

  • Three lines

    • Top (blue): upper zone boundary.

    • Middle (dotted): blended trend mean (EMA/HMA-style).

    • Bottom (blue): lower zone boundary.

  • Candle coloring

    • Green candles = active bull regime after a confirmed upside escape.

    • Red candles = active bear regime after a confirmed downside escape.

  • Retest diamonds (⯁)

    • Plot a green ⯁ below price in bull regimes (reclaiming trend-start).

    • Plot a red ⯁ above price in bear regimes (rejecting trend-start).

Inputs & settings

  • Length (per)

    • Default: 100

    • Range enforced: 60–200 (automatically clamped).

    • Effect: Governs the smoothness of the core averages. Larger = smoother bands; smaller = more responsive.

  • Candle coloring (colorCandles)

    • 1 = on (default), 0 = off. When on, the indicator draws candles with regime colors.

  • ATR(14) for marker offset

    • Used only to place ⯁ slightly away from bars (±0.2 × ATR) for readability.

Note: Internally, length feeds both the EMA-like and HMA-style calculations, with the HMA-style period set to max(20, length − 40) to maintain responsiveness.

Signals & trade ideas (not financial advice)

  • Breakout → Trend initiation
    When price escapes the Top/Bottom and candles flip color, consider the new regime as in force.

  • Retest continuation (⯁)
    The diamond marks when price re-tests the trend-start level and reaffirms the regime. Many traders look for follow-through candles after the ⯁.

  • Middle-line pullbacks
    In an established trend, pullbacks toward the Middle can act as dynamic mean reversion spots for continuation, especially when the regime color remains intact.

ProBuilder code

// ------------------------------------------------------
//PRC_Zone Shift [ChartPrime]
//version = 1
//06.11.2025
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
// ------------------------------------------------------
// inputs
// ------------------------------------------------------
per = 100 // Length 60-200 / minval = 60, maxval = 200
if per >200 then
   length=200
elsif per <60 then
   length=60
else
   length=per
endif
colorCandles=1
showsignals=1
showcloud=1
showlevel=1
UPcolorR=100
UPcolorG=200
UPcolorB=200
DNcolorR=200
DNcolorG=200
DNcolorB=100
atr=averagetruerange[14](close)
// ------------------------------------------------------
// Indicator calculations
// ------------------------------------------------------
once trend = 0
once trendStart = 0
once lastRetest = 0

ema= average[length,1](close)
hma= average[max(20,length-40),8](close)
dist=average[200](high-low)
mid = (ema+hma)/2
itop = mid+dist
ibot = mid-dist

if low > itop and low[1] < itop[1] and not trend then
   drawsegment(trendStartidx,trendStart,barindex,trendStart)style(dottedline)coloured("grey",255*showlevel)
   trend=1
   trendStart=low
   trendStartidx=barindex
   r=UPcolorR
   g=UPcolorG
   b=UPcolorB
endif

if high < ibot and high[1] > ibot[1] and trend then
   drawsegment(trendStartidx,trendStart,barindex,trendStart)style(dottedline)coloured("grey",255*showlevel)
   trend=0
   trendStart=high
   trendStartidx=barindex
   r=DNcolorR
   g=DNcolorG
   b=DNcolorB
endif

// Retest TrendStart Level

if (close > trendStart and close[1] < trendStart or low > trendStart and low[1] <trendStart) and trend and barindex-lastRetest>5 then
   lastRetest=barindex
   drawtext("⯁",barindex,low-0.2*atr)coloured(r,g,b,255*showsignals)
endif

if (close[1]>trendStart and close<trendStart or high[1]>trendStart and high<trendStart) and not trend and barindex-lastRetest>5 then
   
   lastRetest=barindex
   drawtext("⯁",barindex,high+0.2*atr)coloured(r,g,b,255*showsignals)
endif

if islastbarupdate then
   drawsegment(trendStartidx,trendStart,barindex,trendStart)style(dottedline)coloured("grey",255*showlevel)
endif
// ------------------------------------------------------
// PLOT
// ------------------------------------------------------
if showtrend then
   drawrectangle(barindex,5,barindex+1,15)anchor(bottom,index,yshift)coloured(r,g,b,0)fillcolor(r,g,b)
endif
colorbetween(itop,ibot,r,g,b,95*showcloud)
// ------------------------------------------------------
return mid as "Middle"style(dottedline), itop as "Top", ibot as "Bottom"

Download
Filename: PRC_Zone-Shift.itf
Downloads: 82
Iván González Master
Currently debugging life, so my bio is on hold. Check back after the next commit for an update.
Author’s Profile

Comments

Logo Logo
Loading...