Hola, me gustaría que me hicieran un ProScreener del indicador ZigZag y Sr, que subió Iván hace un mes, lo llevo usando desde entoncces y me gusta mucho, es muy útil y para aprovecharlo al máximo me gustaría lo siguiente: He comprobado que en la vela del momento actual (con tiempo real lógicamente) según la sigla que esté en ese momento (HH,HL,LL,LH), puede variar en vivo según el movimiento del mercado que se este dando, pues si se pudiera avisar en el momento de dicho cambio me sería muy útil, gracias.
Aquí la codificación del indicador:
//————————————//
//PRC_ZigZag and SR
//version = 0
//03.12.2024
//Sharing ProRealTime knowledge
//————————————//
// Inputs
//————————————//
prd=15
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
atr=averagetruerange[14](close)
//————————————//
// 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”)
if $zigzag[t]<$zigzag[t–2] then
drawtext(“HL”,$zigzagidx[t],$zigzag[t]+0.5*atr)coloured(“green”)
else
drawtext(“HH”,$zigzagidx[t],$zigzag[t]+0.5*atr)coloured(“green”)
endif
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”)
if $zigzag[t]<$zigzag[t–2] then
drawtext(“LL”,$zigzagidx[t],$zigzag[t]–0.5*atr)coloured(“red”)
else
drawtext(“LH”,$zigzagidx[t],$zigzag[t]–0.5*atr)coloured(“red”)
endif
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
for i=t–1 downto 3 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 and $dir[i]=–1 and $zigzag[i]>$zigzag[i–2] then
drawtext(“LH”,$zigzagidx[i],$zigzag[i]–0.5*atr)coloured(“red”)
elsif showLabels and $dir[i]=–1 and $zigzag[i]<=$zigzag[i–2] then
drawtext(“LL”,$zigzagidx[i],$zigzag[i]–0.5*atr)coloured(“red”)
elsif showLabels and $dir[i]=1 and $zigzag[i]>$zigzag[i–2] then
drawtext(“HH”,$zigzagidx[i],$zigzag[i]+0.5*atr)coloured(“green”)
elsif showLabels and $dir[i]=1 and $zigzag[i]<=$zigzag[i–2] then
drawtext(“HL”,$zigzagidx[i],$zigzag[i]+0.5*atr)coloured(“green”)
endif
next
endif
//————————————//
returnZ