Zone Shift — Trend Zones and Retests

Zone Shift — Trend Zones and Retests

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

Share this

Risk disclosure:

No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.

ProRealTime ITF files and other attachments : How to import ITF files into ProRealTime platform?

PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials

  1. Ciccarelli Franco • 15 hours ago #

    Non si carica

  2. yas • 12 hours ago #

    getting showtrend error undefined variable

  3. MaoRai54 • 11 hours ago #

    Anche a me non si carica e poi manca definizione di variabile SHOWTREND

  4. Iván • 10 hours ago #

    Sorry.
    You should add new line after line 21.

    showtrend=1

    // ——————————————————
    //PRC_Zone Shift [ChartPrime]
    //version = 1
    //06.11.2025
    //Iván González @ http://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
    showtrend=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”

avatar
Register or

Likes

avatar
Related users ' posts
Kanamax Hi Roberto, sorry for my confusing previous posts (forget them). My request is very simple,...
robertogozzi Please start a new topic in ProOrder support.
robertogozzi There you go: myMagicTrend = CALL “Magic Trend custom”[20, 14, 1, 5] alpha = 105 b = 0...
johann8 exactly :) Thank you all for the help!
max_92 Ciao Roberto, ho scaricato l'indicatore e come ti avevano già scritto sopra anch'io vedo la ...
ChemaGeek Bonjour Nicolas, j'ai récemment découvert cet indicateur (Regularized Momentum 2017) et je l...
YvesRobert Bonjour, nouveau sur PRT (qq jours), j'essaie un peu de voir quel type d'indicateur me convi...
Xenotrax A première vue, sa à l'air d'être un indicateur très puissant sur de petites temporalités, j...
merri Bonjour Nicolas, Comment transformer cet indicateur en bot sur PRT ?
Nicolas Cela a déjà été fait, voir ce sujet: https://www.prorealcode.com/topic/strategia-con-lindica...
Nicolas change the last line with: return v coloured(r,g,b) style(line,2), v+band coloured(168,168,1...
Paolo.B Thanks ... works as i wanted.
Kanamax Bonjour Nicolas, comme Paolo.B je souhaiterais utiliser cette indicateur au sein d'un code. ...
zilliq Thanks @Nicolas. I tried to use it as Trend in a proorder system, but don't know why, it doe...
Suzu Yuk He is right. MT and mavgMT are not defined and causing errors.....
RakeshPoluri I have a question about the bands on the candles. Is it bollinger bands or something else?
Nicolas I think that's 2 Bollinger Bands
Emperor.it "style(line,2)" C'è una guida ai parametri che si possono modificare ? Tipo stile della lin...
IV Mcm https://www.prorealcode.com/programming-with-prorealtime/
Daniele Maddaluno Écrivez-moi où vous préférez you can easily find me on LinkedIn
AK27 C'est payant visiblement sur linkdin je peux pas vous envoyer, discord vous avez ?
Pensera Bonjour Nicolas, comment est-il possible de backtester cet indicateur? cela fait une erreu...
Nicolas Oui bien sûr, il doit y avoir pas mal de sujets dans le forum à ce propos.
simmerseb Bonjour, merci beaucoup pour cet indicateur je le trouve très clair et pertinent.
Nicolas Il doit s'agir d'un mauvais copier/coller. Je suggère de télécharger le fichier itf contenu ...
Bard Hello @Nicolas, I can get this to display in a separate indicator panel but not on Price as ...
Stenozar Hi @Nicolas, how can I put the bands on price? Thanks, Stefano
Guillaume Mcm I gave the above message fix ;)
Tradingrob Is it possible to put the itf-file in the right way here in Prorealcode? so the right 'trend...
Guillaume Mcm Update link ;) https://www.prorealcode.com/topic/trend-histogramme-cci-mise-a-jour-suite-...
Screw27 Hi man, I installed the indicator and i don't know why but my graph it is so big
HelixKing sounds interesting I'll take a look
Godo Bonjour Souhait Sam, Après de nombreux essais pour le mettre en format afin d'utiliser ce c...
Nicolas Il faut supprimer celles qui existent dans la fenêtre d'optimisation et les créer en dur dan...
crusoe76 hi there, anyone can help making this strategy work, i have a message saying replace variabl...
Screw27 Salut nicolas j'aimerais savoir tes résulats grace a cettte methode
eva.g.forsgren It dose not work, I get a strap instead of candels???????????????????????????????????????????
Nicolas That indicator is the one below the chart. The indicator to put on the price chart is this o...
pyhrus P.S : IG , que j'ai contacté ,m'indique que la version V11 , ne sera pas disponible avant un...
Hasardeur Dear Nicolas, is there someting at the arry to modify in order to run the trend at the actu...
MALIMALO Dear Nicolas, just try touse your indicator with backtest but it's not working. is anybody...

Top