Buongiorno, ho scritto un indicatore che traccia alcuni livelli sensibili (da usare solo sul timeframe Daily), che fa uso di un ciclo FOR abbastanza semplice.
L’indicatore funziona perfettamente, nel senso che il codice traccia i livelli esattamente come li avevo in mente, ma in modo random ogni tanto si “blocca” quando cambio lo strumento sul grafico. Per esempio, se visualizzo il DAX e passo a SP500o o Nasdaq può capitare che:
- o non visualizza più alcun segmento
- o traccia segmenti e testi in punti completamente sfasati rispetto a com’è stato programmato
Per risolvere, sono costretto a cambiare il numero di barre visualizzate (cambiando fra numero di unità o mesi), oppure cambiando il numero di cicli FOR. Solo in questo modo l’indicatore è come se facesse un “refresh” e torna a calcolare tutto correttamente.
Ho provato a cambiare il parametro CALCULATEONLASTBARS all’inizio del codice (o anche a rimuoverlo), a ridurre il numero dei cicli for (di default 100 giorni di ricerca all’indietro), ma nulla.
Ho provato ad aggiungere anche l’istruzione “islastbarupdate” a monte di tutto, ma apparentemente senza effetto.
Sto un po’ impazzendo, non capisco perché solo quando si cambia lo strumento a volte si blocchi tutto, come se la piattaforma sbagliasse a caricare l’indicatore dall’inizio della barra del nuovo strumento selezionato
Non so cosa stia sbagliando, ho provato un po di tutto….. 🙂
Grazie a chi vorrà darmi qualche suggerimento/spiegazione in merito
(scusate ma non vedo il pulsante <b>”Insert PRT code” </b>)
//T.F. V.0 - 08/01/2022 - Livelli comprati/venduti e min/max daily vergini - da usare solo su TF Daily
defparam DRAWONLASTBARONLY=true
rem defparam CALCULATEONLASTBARS=101
xx=100 //candele back
rem if islastbarupdate then // prova ad inserire il comando islastbarupdate
for i=1 to xx do
//livelli comprati
if dclose(i)>dopen(i) then //LIVELLI COMPRATI VERDI - SOTTO IL CLOSE DI IERI
if Dhigh(i+1)<dclose(i) and dhigh(i+1)>dlow(i) and dhigh(i+1)<=lowest[i](close)[1] then
drawsegment (barindex[i+1], dhigh(i+1), barindex+1, dhigh(i+1)) coloured (0,200,0) //max comprato 1gg prima
drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
endif
if Dhigh(i+1)<dclose(i) and Dhigh(i+2)<dclose(i) and dhigh(i+2)>dhigh(i+1) and dhigh(i+2)>dlow(i) and dhigh(i+2)<=lowest[i](close)[1] then
drawsegment (barindex[i+2], dhigh(i+2), barindex+1, dhigh(i+2)) coloured (0,200,0) //max comprato 2gg prima solo se è sopra dclose(i+1)
drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
endif
if (Dhigh(i+1)+Dlow(i+1))/2<dclose(1) and Dlow(i+1)>dlow(i) and dlow(i+1)<=lowest[i](close)[1] then
drawsegment (barindex[i+1], dlow(i+1), barindex+1, dlow(i+1)) coloured (0,200,0)//min comprato 1gg prima
drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
endif
if (Dhigh(i+2)+Dlow(i+2))/2<dclose(1) and Dlow(i+2)<dlow(i+1) and Dlow(i+2)>dlow(i) and dlow(i+2)<=lowest[i](close)[1] then
drawsegment (barindex[i+2], dlow(i+2), barindex+1, dlow(i+2)) coloured (0,200,0)//min comprato 2gg prima solo se è sotto dopen(i+1)
drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
endif
endif
//livelli venduti
if dclose(i)<dopen(i) then
if Dlow(i+1)>dclose(i) and dlow(i+1)<dhigh(i) and dlow(i+1)>=highest[i](close)[1] then
drawsegment (barindex[i+1], dlow(i+1), barindex+1, dlow(i+1)) coloured (200,0,0) //min venduto 1gg prima
drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
endif
if Dlow(i+1)>dclose(i) and Dlow(i+2)>dclose(i) and dlow(i+2)<dlow(i+1) and dlow(i+2)<dhigh(i) and dlow(i+2)>=highest[i](close)[1] then
drawsegment (barindex[i+2], dlow(i+2), barindex+1, dlow(i+2)) coloured (200,0,0) //min venduto 2gg prima solo se è sotto dclose(i+1)
drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
endif
if (Dhigh(i+1)+Dlow(i+1))/2>dclose(1) and Dhigh(i+1)<dhigh(i) and dhigh(i+1)>=highest[i](close)[1] then
drawsegment (barindex[i+1], dhigh(i+1), barindex+1, dhigh(i+1)) coloured (200,0,0)//max venduto 1gg prima
drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
endif
if (Dhigh(i+2)+Dlow(i+2))/2>dclose(1) and Dhigh(i+2)>dhigh(i+1) and Dhigh(i+2)<high[i] and dhigh(i+2)>=highest[i](close)[1] then
drawsegment (barindex[i+2], dhigh(i+2), barindex+1, dhigh(i+2)) coloured (200,0,0)//max venduto 2gg prima solo se è sopra dopen(i+1)
drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
endif
endif
////minimi e massimi vergini
if dhigh(i)>highest[i](high) then
drawsegment (barindex[i], dhigh(i), barindex, dhigh(i)) coloured (0,0,200) //max vergine
drawtext("DH#i#",barindex+1,dhigh(i)) coloured (0,0,200)
endif
if dlow(i)<lowest[i](low) then
drawsegment (barindex[i], dlow(i), barindex, dlow(i)) coloured (0,0,200) //min vergine
drawtext("DL#i#",barindex+1,dlow(i)) coloured (0,0,200)
endif
next
return