Eccolo:
//------------------------------------//
//PRC_ZigZag and SR
//version = 0
//03.12.2024
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//------------------------------------//
// Inputs
//------------------------------------//
prd=18
showSR=1 //Show Support and Resistance//Boolean// 0 means false 1 means True
showLabels=1 //Boolean// 0 means false 1 means True
showZZ=1 //Boolean// 0 means false 1 means True
ONCE PrevSwing = 0
ONCE CurrSwing = 0
//------------------------------------//
// Calculate Pivot High and Low
//------------------------------------//
ph = high=highest[prd](high)
pl = low=lowest[prd](low)
//------------------------------------//
// Calculate Direction
//------------------------------------//
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 ZizZag levels and x
//------------------------------------//
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
elsif dir=-1 then
$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
//------------------------------------//
// Draw ZigZag and Levels
//------------------------------------//
$zigzag[0]=undefined
$zigzagidx[0]=undefined
if islastbarupdate then
if showZZ then
//Last ZigZag
drawsegment($zigzagidx[max(0,t-1)],$zigzag[max(0,t-1)],$zigzagidx[t],$zigzag[t])
endif
if showSR and $dir[t]=1 then
drawsegment($zigzagidx[t],$zigzag[t],barindex,$zigzag[t])style(dottedline,3)coloured("green")
drawsegment($zigzagidx[max(0,t-1)],$zigzag[max(0,t-1)],barindex,$zigzag[max(0,t-1)])style(dottedline,3)coloured("red")
elsif showSR and $dir[t]=-1 then
drawsegment($zigzagidx[t],$zigzag[t],barindex,$zigzag[t])style(dottedline,3)coloured("red")
drawsegment($zigzagidx[max(0,t-1)],$zigzag[max(0,t-1)],barindex,$zigzag[max(0,t-1)])style(dottedline,3)coloured("green")
endif
if showLabels then
drawpoint($zigzagidx[max(0,t-1)],$zigzag[max(0,t-1)],2)coloured("blue",100)
drawpoint($zigzagidx[t],$zigzag[t],2)coloured("blue",100)
endif
//Draw all ZigZag
PrevSwing = 0
CurrSwing = 0
for i=t-1 downto 1 do
if showZZ then
drawsegment($zigzagidx[max(0,i-1)],$zigzag[max(0,i-1)],$zigzagidx[i],$zigzag[i])
endif
if showSR and $dir[i]=1 then
drawsegment($zigzagidx[i],$zigzag[i],$zigzagidx[i+1],$zigzag[i])style(dottedline,3)coloured("green")
drawsegment($zigzagidx[max(0,i-1)],$zigzag[max(0,i-1)],$zigzagidx[i],$zigzag[max(0,i-1)])style(dottedline,3)coloured("red")
elsif showSR and $dir[i]=-1 then
drawsegment($zigzagidx[i],$zigzag[i],$zigzagidx[i+1],$zigzag[i])style(dottedline,3)coloured("red")
drawsegment($zigzagidx[max(0,i-1)],$zigzag[max(0,i-1)],$zigzagidx[i],$zigzag[max(0,i-1)])style(dottedline,3)coloured("green")
endif
if showLabels then
PrevSwing = CurrSwing
CurrSwing = $zigzag[i]
Difference = CurrSwing - PrevSwing
drawpoint($zigzagidx[i],$zigzag[i],2)coloured("blue",100)
Offset = (range*0.5)
myPRICE = $zigzag[i] + Offset
IF Difference <= 0 THEN
myPRICE = $zigzag[i] - Offset
ENDIF
drawtext("#Difference#",$zigzagidx[i],myPRICE,dialog,bold,10) coloured("Fuchsia")
endif
next
endif
//------------------------------------//
return
Per variare la distanza del testo sostituisci alla riga 98 il valore 0.5 con un altro valore (0, 0.1, 1, 1.2, ecc…) a tuo piacimento.
Per variare la grandezza del testo sostituisci alla riga 103 il valore 10 con un altro valore (6, 11, 20, ecc…) a tuo piacimento.