Hi! Here you have a code similar to that one you are sharing.
prd=15
showpastFib=1
showDN=1
ShowUP=1
atr=averagetruerange[14](close)
if high=highest[prd](high) then
ph=high
phx=barindex
else
ph=0
endif
if low=lowest[prd](low) then
pl=low
plx=barindex
else
pl=0
endif
if ph and pl=0 then
dir=1
elsif pl and ph=0 then
dir=-1
else
dir=dir
endif
dirchanged=dir<>dir[1]
if ph or pl then
if dirchanged then
if dir=1 then
$zigzag[t+1]=highest[prd](high)
$zigzagidx[t+1]=barindex
$dir[t+1]=1
t=t+1
else
$zigzag[t+1]=lowest[prd](low)
$zigzagidx[t+1]=barindex
$dir[t+1]=-1
t=t+1
endif
else
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
if islastbarupdate then
drawsegment($zigzagidx[max(0,t-1)],$zigzag[max(0,t-1)],$zigzagidx[t],$zigzag[t])
if $dir[t]=1 then
fib0=$zigzag[max(0,t-1)]
fib100=$zigzag[t]
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
drawsegment($zigzagidx[max(0,t-1)],fib0,barindex+10,fib0)style(line,2)coloured("grey")
drawtext("Fib 0%",$zigzagidx[t],fib0+0.05*atr)
drawsegment($zigzagidx[max(0,t-1)],fib0236,barindex+10,fib0236)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,t-1)],fib0382,barindex+10,fib0382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,t-1)],fib0500,barindex+10,fib0500)style(dottedline,2)coloured("blue")
drawtext("Fib 50%",$zigzagidx[t],fib0500+0.05*atr)
drawsegment($zigzagidx[max(0,t-1)],fib0618,barindex+10,fib0618)style(dottedline,2)coloured("red")
drawsegment($zigzagidx[max(0,t-1)],fib0786,barindex+10,fib0786)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,t-1)],fib100,barindex+10,fib100)style(line,2)coloured("grey")
drawtext("Fib 100%",$zigzagidx[t],fib100+0.05*atr)
elsif $dir[t]=-1 then
fib0=$zigzag[t]
fib100=$zigzag[max(0,t-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
drawsegment($zigzagidx[max(0,t-1)],fib0,barindex+10,fib0)style(line,2)coloured("grey")
drawtext("Fib 0%",$zigzagidx[t],fib0+0.05*atr)
drawsegment($zigzagidx[max(0,t-1)],fib0236,barindex+10,fib0236)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,t-1)],fib0382,barindex+10,fib0382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,t-1)],fib0500,barindex+10,fib0500)style(dottedline,2)coloured("blue")
drawtext("Fib 50%",$zigzagidx[max(0,t-1)],fib0500+0.05*atr)
drawsegment($zigzagidx[max(0,t-1)],fib0618,barindex+10,fib0618)style(dottedline,2)coloured("red")
drawsegment($zigzagidx[max(0,t-1)],fib0786,barindex+10,fib0786)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[max(0,t-1)],fib100,barindex+10,fib100)style(line,2)coloured("grey")
drawtext("Fib 100%",$zigzagidx[t],fib100+0.05*atr)
endif
if showpastFib then
for i=t-1 downto 1 do
drawsegment($zigzagidx[max(0,i-1)],$zigzag[max(0,i-1)],$zigzagidx[i],$zigzag[i])
if $dir[i]=1 and showDN then
fib0=$zigzag[i-1]
fib100=$zigzag[i]
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
drawsegment($zigzagidx[i-1],fib0,$zigzagidx[i+1],fib0)style(line,2)coloured("grey")
drawtext("Fib 0%",$zigzagidx[i],fib0+0.05*atr)
drawsegment($zigzagidx[i-1],fib0236,$zigzagidx[i+1],fib0236)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[i-1],fib0382,$zigzagidx[i+1],fib0382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[i-1],fib0500,$zigzagidx[i+1],fib0500)style(dottedline,2)coloured("blue")
drawtext("Fib 50%",$zigzagidx[i],fib0500+0.05*atr)
drawsegment($zigzagidx[i-1],fib0618,$zigzagidx[i+1],fib0618)style(dottedline,2)coloured("red")
drawsegment($zigzagidx[i-1],fib0786,$zigzagidx[i+1],fib0786)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[i-1],fib100,$zigzagidx[i+1],fib100)style(line,2)coloured("grey")
drawtext("Fib 100%",$zigzagidx[i],fib100+0.05*atr)
elsif $dir[i]=-1 and ShowUP then
fib0=$zigzag[i]
fib100=$zigzag[i-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
drawsegment($zigzagidx[i-1],fib0,$zigzagidx[i+1],fib0)style(line,2)coloured("grey")
drawtext("Fib 0%",$zigzagidx[i],fib0+0.05*atr)
drawsegment($zigzagidx[i-1],fib0236,$zigzagidx[i+1],fib0236)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[i-1],fib0382,$zigzagidx[i+1],fib0382)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[i-1],fib0500,$zigzagidx[i+1],fib0500)style(dottedline,2)coloured("blue")
drawtext("Fib 50%",$zigzagidx[i-1],fib0500+0.05*atr)
drawsegment($zigzagidx[i-1],fib0618,$zigzagidx[i+1],fib0618)style(dottedline,2)coloured("red")
drawsegment($zigzagidx[i-1],fib0786,$zigzagidx[i+1],fib0786)style(dottedline,1)coloured("grey")
drawsegment($zigzagidx[i-1],fib100,$zigzagidx[i+1],fib100)style(line,2)coloured("grey")
drawtext("Fib 100%",$zigzagidx[i],fib100+0.05*atr)
endif
next
endif
endif
return