Avevo fatto un errore di scrittura io ed inoltre l’uso degli array per salvare gli ultimi 10 valori in realtà era molto più complicato a causa del fatto che durante una stessa barra, l’indicatore viene eseguito più volte.
Questa è la versione corretta che ti aggiorna il grafico solo alla CHIUSURA della candela:
DEFPARAM DrawOnLastBarONLY = true
RRT = 1
DELTA = 0
IDX = 1
IF BarIndex = 0 THEN
$tempBAR[0] = 0
FOR i = 1 TO 10
$Tipo[i] = 0
$Barra[i] = 0
$RIval[i] = 0
$TGTval[i] = 0
$x[i] = 0
$y[i] = 0
$w[i] = 0
$u[i] = 0
$z[i] = 0
NEXT
ENDIF
FOR i = 1 TO 10
BarID = $Barra[i]
Ri = $RIval[i]
Tgt = $TGTval[i]
xx = $x[i]
yy = $y[i]
ww = $w[i]
uu = $u[i]
zz = $z[i]
IF $Tipo[i] = 2 THEN
drawtext ("®Long",BarID,xx,SansSerif,Bold,12)coloured (0,100,0,255)
drawtext ("Buy",BarID,yy,SansSerif,Standard,10)coloured (0,0,0,255)
drawtext ("S-t-o-p",BarID,ww,SansSerif,Standard,10)coloured (0,0,0,255)
drawtext (Ri,BarID,uu,SansSerif,Standard,10)coloured (0,0,0,1000)
drawtext ("T-g-t",BarID,zz, SansSerif,Standard,10)coloured (0,0,0,255)
ELSIF $Tipo[i] = -2 THEN
drawtext ("®Short",BarID,xx,SansSerif,Bold,12)coloured (200,0,0,255)
drawtext ("Sell",BarID,yy,SansSerif,Standard,10)coloured (0,0,0,255)
drawtext ("S-t-o-p",BarID,ww,SansSerif,Standard,10)coloured (0,0,0,255)
drawtext (Ri,BarID,uu,SansSerif,Standard,10)coloured (0,0,0,255)
drawtext ("T-g-t",BarID,zz, SansSerif,Standard,10)coloured (0,0,0,255)
ENDIF
NEXT
ROSSA = close < open
VERDE = close > open
TecSpikeGiu = verde[1] and rossa [0] and High > high[1] and (open <= Close [1] + delta or open >= Close [1] - delta)
TecSpikeSu = rossa[1] and verde [0] and low < low[1] and (open >= (Close [1] + delta) or open <= (Close [1] - delta))
IF (TecSpikeGiu[IDX] + TecSpikeSu[IDX]) > 0 THEN
IF $tempBAR[0] <> BarIndex THEN
$tempBAR[0] = BarIndex
FOR i = 10 DOWNTO 2
j = i - 1
$Tipo[i] = $Tipo[j]
$Barra[i] = $Barra[j]
$RIval[i] = $RIval[j]
$TGTval[i] = $TGTval[j]
$x[i] = $x[j]
$y[i] = $y[j]
$w[i] = $w[j]
$u[i] = $u[j]
$z[i] = $z[j]
NEXT
ENDIF
ENDIF
If TecSpikeGiu[IDX] = 1 then
IngressoShort = Open[IDX]-1
Stopp=High[IDX]+2
Ri = (Stopp)-(IngressoShort)
Tgt = IngressoShort-abs(Ri*RRT)//RRT= RISCK REWARD TARGET
SIGNAL = -2
$Tipo[1] = SIGNAL
$Barra[1] = BarIndex[IDX]
$RIval[1] = Ri
$TGTval[1] = Tgt
$x[1] = HIGH[IDX] +(7*PIPSIZE)
$y[1] = open[IDX] - 3*pipsize
$w[1] = HIGH[IDX]+4*pipsize
$u[1] = HIGH[IDX]+1.5*pipsize
$z[1] = Tgt
elsif TecSpikeSu[IDX] = 1 then
IngressoLong = Open[IDX]+1
Stopp = Low[IDX]-2
Ri = (IngressoLong)-(Stopp)
Tgt = IngressoLong+abs(Ri*RRT)
SIGNAL = 2
$Tipo[1] = SIGNAL
$Barra[1] = BarIndex[IDX]
$RIval[1] = Ri
$TGTval[1] = Tgt
$x[1] = LOW[IDX] - (7*PIPSIZE)
$y[1] = open[IDX]+3*pipsize
$w[1] = low[IDX]-4*pipsize
$u[1] = low[IDX]-1.5*pipsize
$z[1] = Tgt
ELSE
SIGNAL = 0
endif
return
Per potere vedere anche la candela in corso, devi aggiungere al grafico ANCHE l’indicatore originale (con gli stessi parametri per le variabili, ovviamente), aggiungendo come PRIMA riga questa:
DEFPARAM DrawOnLastBarONLY = true