Se podría hace Screener de este indicador
defparam drawonlastbaronly=true
//----------------------------------------------------------------------------//
//PRC_Fibonacci Retracement / Extension
//version = 0
//07.02.2025
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//----------------------------------------------------------------------------//
//-----Inputs-----------------------------------------------------------------//
//ZZpercent=1
//prd=8
//percent=5
//N=1 // check last n zig
//checkUp=1 // check uptrend or downtrend
//----------------------------------------------------------------------------//
atr=averagetruerange[14](close) //Only drawing porpouse
//----------------------------------------------------------------------------//
//-----Pivots High&Low--------------------------------------------------------//
if ZZpercent then
//-----Mode Percent--------------------------------------------------------//
zz = zigzag[percent](close)
ph = zz<zz[1] and zz[1]>zz[2]
pl = zz>zz[1] and zz[1]<zz[2]
//-----Mode Highest/lowest Values------------------------------------------//
else
ph = high=highest[prd](high)
pl = low=lowest[prd](low)
endif
//----------------------------------------------------------------------------//
//-----Direction Calculation--------------------------------------------------//
if ph and pl=0 then
dir=1
elsif pl and ph=0 then
dir=-1
else
dir=dir
endif
dirchanged=dir<>dir[1]
//----------------------------------------------------------------------------//
//-----Calculate Arrays for each pivot----------------------------------------//
if ph or pl then
if dirchanged then
if dir=1 and not ZZpercent then
$zigzag[t+1]=highest[prd](high)
$zigzagidx[t+1]=barindex
$dir[t+1]=1
t=t+1
elsif dir=-1 and not ZZpercent then
$zigzag[t+1]=lowest[prd](low)
$zigzagidx[t+1]=barindex
$dir[t+1]=-1
t=t+1
elsif dir=1 and ZZpercent then
$zigzag[t+1]=zz[1]
$zigzagidx[t+1]=barindex[1]
$dir[t+1]=1
t=t+1
elsif dir=-1 and ZZpercent then
$zigzag[t+1]=zz[1]
$zigzagidx[t+1]=barindex[1]
$dir[t+1]=-1
t=t+1
endif
else
if not ZZpercent then
if dir=1 and highest[prd](high)> $zigzag[t] then
$zigzag[t]=highest[prd](high)
$zigzagidx[t]=barindex
elsif dir=-1 and lowest[prd](low)< $zigzag[t] then
$zigzag[t]=lowest[prd](low)
$zigzagidx[t]=barindex
endif
endif
endif
endif
//----------------------------------------------------------------------------//
//-----Drawing conditions-----------------------------------------------------//
if islastbarupdate then
//-----Draw zig-zag--------------------------------------------------------//
for i=1 to t do
drawsegment($zigzagidx[max(0,i-1)],$zigzag[max(0,i-1)],$zigzagidx[i],$zigzag[i])coloured("grey",75)style(line,2)
next
//-----Draw Last N Zig and Fibonacci Levels---------------------------------//
if $dir[t]=1 and checkUp then
pos=t-2*N
elsif $dir[t]=1 and not checkUp then
pos=t-2*N-1
elsif $dir[t]=-1 and checkUp then
pos=t-2*N-1
elsif $dir[t]=-1 and not checkUp then
pos=t-2*N
endif
drawsegment($zigzagidx[max(0,pos-1)],$zigzag[max(0,pos-1)],$zigzagidx[max(0,pos)],$zigzag[max(0,pos)])
drawpoint($zigzagidx[max(0,pos-1)],$zigzag[max(0,pos-1)],2)coloured("blue",100)
drawpoint($zigzagidx[max(0,pos)],$zigzag[max(0,pos)],2)coloured("blue",100)
if $dir[t]=1 then
//-----Calculation when trend Up----------------------------------------//
fib0=$zigzag[max(0,pos-1)]
fib100=$zigzag[max(0,pos)]
diff=fib100-fib0
fib0236=fib100-diff*0.236
fib0382=fib100-diff*0.382
fib0500=fib100-diff*0.500
fib0618=fib100-diff*0.618
fib0786=fib100-diff*0.786
if t>pos then
extdiff=fib100-$zigzag[max(0,pos+1)]
else
extdiff=diff
endif
fib1618=fib100+extdiff*0.618
fib2000=fib100+extdiff*1.0
fib2382=fib100+extdiff*1.382
fib2618=fib100+extdiff*1.618
fib3382=fib100+extdiff*2.382
fib3618=fib100+extdiff*2.618
fib4618=fib100+extdiff*3.618
fib5236=fib100+extdiff*4.236
drawsegment($zigzagidx[max(0,pos-1)],fib0,barindex+10,fib0)style(line,2)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib0236,barindex+10,fib0236)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib0382,barindex+10,fib0382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib0500,barindex+10,fib0500)style(dottedline,2)coloured("blue")
drawsegment($zigzagidx[max(0,pos-1)],fib0618,barindex+10,fib0618)style(dottedline,2)coloured("red")
drawsegment($zigzagidx[max(0,pos-1)],fib0786,barindex+10,fib0786)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib100,barindex+10,fib100)style(line,2)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib1618,barindex+10,fib1618)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib2000,barindex+10,fib2000)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib2382,barindex+10,fib2382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib2618,barindex+10,fib2618)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib3382,barindex+10,fib3382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib3618,barindex+10,fib3618)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib4618,barindex+10,fib4618)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib5236,barindex+10,fib5236)style(dottedline,1)coloured("grey")
drawrectangle($zigzagidx[max(0,pos-1)],fib1618,barindex+10,fib2000)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib2382,barindex+10,fib2618)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib3382,barindex+10,fib3618)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib4618,barindex+10,fib5236)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib0,barindex+10,fib0618)style(dottedline,1)coloured("grey",0)fillcolor("blue",30)
drawtext("Fib 0%: #fib0#",barindex+10,fib100+0.05*atr)
drawtext("Fib 50%: #fib0500#",barindex+10,fib0500+0.05*atr)
drawtext("Fib 100%: #fib100#",barindex+10,fib0+0.05*atr)
elsif $dir[t]=-1 then
//-----Calculation when trend Down--------------------------------------//
fib0=$zigzag[max(0,pos)]
fib100=$zigzag[max(0,pos-1)]
diff=fib100-fib0
fib0236=fib0+diff*0.236
fib0382=fib0+diff*0.382
fib0500=fib0+diff*0.500
fib0618=fib0+diff*0.618
fib0786=fib0+diff*0.786
if t>pos then
extdiff=$zigzag[max(0,pos+1)]-fib0
else
extdiff=diff
endif
fib1618 = fib0 - extdiff * 0.618
fib2000 = fib0 - extdiff * 1.0
fib2382 = fib0 - extdiff * 1.382
fib2618 = fib0 - extdiff * 1.618
fib3382 = fib0 - extdiff * 2.382
fib3618 = fib0 - extdiff * 2.618
fib4618 = fib0 - extdiff * 3.618
fib5236 = fib0 - extdiff * 4.236
drawsegment($zigzagidx[max(0,pos-1)],fib0,barindex+10,fib0)style(line,2)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib0236,barindex+10,fib0236)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib0382,barindex+10,fib0382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib0500,barindex+10,fib0500)style(dottedline,2)coloured("blue")
drawsegment($zigzagidx[max(0,pos-1)],fib0618,barindex+10,fib0618)style(dottedline,2)coloured("red")
drawsegment($zigzagidx[max(0,pos-1)],fib0786,barindex+10,fib0786)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,pos-1)],fib100,barindex+10,fib100)style(line,2)coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib1618, barindex + 10, fib1618) style(dottedline, 1) coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib2000, barindex + 10, fib2000) style(dottedline, 1) coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib2382, barindex + 10, fib2382) style(dottedline, 1) coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib2618, barindex + 10, fib2618) style(dottedline, 1) coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib3382, barindex + 10, fib3382) style(dottedline, 1) coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib3618, barindex + 10, fib3618) style(dottedline, 1) coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib4618, barindex + 10, fib4618) style(dottedline, 1) coloured("grey")
drawsegment($zigzagidx[max(0, pos-1)], fib5236, barindex + 10, fib5236) style(dottedline, 1) coloured("grey")
drawrectangle($zigzagidx[max(0,pos-1)],fib1618,barindex+10,fib2000)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib2382,barindex+10,fib2618)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib3382,barindex+10,fib3618)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib4618,barindex+10,fib5236)style(dottedline,1)coloured("grey",0)fillcolor("orange",30)
drawrectangle($zigzagidx[max(0,pos-1)],fib100,barindex+10,fib0618)style(dottedline,1)coloured("grey",0)fillcolor("blue",30)
drawtext("Fib 0%: #fib0#",barindex+10,fib0+0.05*atr)
drawtext("Fib 50%: #fib0500#",barindex+10,fib0500+0.05*atr)
drawtext("Fib 100%: #fib100#",barindex+10,fib100+0.05*atr)
endif
endif
return
Gracias