Buonasera a tutti.
Premetto che non ho alcuna esperienza di coding, ma avrei bisogno di creare un indicatore (del quale mi manca solo un pezzo, in realtà) che sia applicato su un grafico 30 min.
Ho trovato sul forum questo codice che mi è stato molto utile per disegnare sul prezzo un box:
starttime = 050000
endtime = 090000
if intradaybarindex=0 then
hh = 0
ll = 0
alreadydrawn = 0
endif
if time=starttime then
startbar=barindex
endif
if time=endtime then
endbar=barindex
endif
if time>=starttime and time<=endtime then
if high>hh then
hh = high
endif
if low<ll or ll=0 then
ll = low
endif
endif
if time>endtime and alreadydrawn=0 then
drawrectangle(startbar,hh,endbar,ll)
alreadydrawn=1
endif
RETURN
Ora due domande:
1) In questo modo il box viene creato correttamente, ma mi piacerebbe che disegnasse solo nella giornata di oggi (e non anche nel passato). Ho inserito (come trovato in altri post), la prima riga DEFPARAM DrawOnLastBarOnly = True
Purtroppo, così facendo, non disegna affatto.
2) Come posso confrontare il range del box con il valore di ATR Daily di ieri?
Grazie in anticipo
Ciao,
Per risolvere le tue domande:
1) Disegnare il box solo per la giornata attuale: Puoi assicurarti che il box venga disegnato solo per la sessione di oggi utilizzando la variabile date per verificare se la barra corrente è all’interno dell’intervallo di oggi. Ecco una versione aggiornata del codice che funziona per disegnare il box solo per la sessione odierna:
starttime = 050000
endtime = 090000
currentDay = date // Ottieni la data odierna
if intradaybarindex=0 then
hh = 0
ll = 0
alreadydrawn = 0
endif
if time=starttime then
startbar=barindex
endif
if time=endtime then
endbar=barindex
endif
// Disegna solo se è oggi
if time>=starttime and time<=endtime and date = currentDay then
if high>hh then
hh = high
endif
if low<ll or ll=0 then
ll = low
endif
endif
if time>endtime and alreadydrawn=0 and today = currentDay then
drawrectangle(startbar,hh,endbar,ll)
alreadydrawn=1
endif
RETURN
2) Confrontare il range del box con l’ATR del giorno precedente: Per calcolare e confrontare il range del box con l’ATR del giorno precedente, puoi usare il codice seguente. L’ATR viene calcolato e memorizzato per essere confrontato con il range del box.
atr = AverageTrueRange[14](close)
atrYesterday = atr[1] // ATR giornaliero del giorno precedente
rangeBox = hh - ll // Range del box
// Confronta il range del box con l'ATR di ieri
if rangeBox > atrYesterday then
// Codice se il range del box è maggiore
else
// Codice se l'ATR è maggiore
endif
RETURN
Grazie mille Ivan!!
Il codice per l’ATR è perfetto!
Invece, per quanto riguarda la disegnazione solo per il giorno corrente, non so perché, ma pare non funzionare. Continua a disegnare anche nei giorni precedenti.
Per carita, non è un grosso problema, era solo per creare meno confusione.
Comunque grazie di cuore!
Non capisco… Guarda il grafico allegato
Ti chiedo scusa Ivan, devo aver combinato qualcosa mentre modificavo ulteriormente. Ho ripreso in mano il tuo codice pulito: funziona tutto alla perfezione.
Grazie e scusa ancora!