Hai mai desiderato un modo semplice per visualizzare i giorni ribassisti e rialzisti nel tuo grafico di trading? Con l'indicatore Color Day per MetaTrader 5, puoi farlo! Questo strumento colorerà i giorni in base alla chiusura e all'apertura, rendendo più facile l'analisi dei trend.
Se la chiusura giornaliera è maggiore dell'apertura, il giorno verrà colorato di blu (puoi personalizzare il colore nelle impostazioni):
input color UP = Blue; // colore del giorno rialzista
Se, invece, la chiusura giornaliera è inferiore all'apertura, il giorno sarà colorato di rosso (anche questo è personalizzabile):
input color DN = Red; // colore del giorno ribassista
Questo indicatore copia i prezzi di apertura e chiusura e il tempo di apertura per il numero specificato di giorni Days:
CopyTime(NULL,PERIOD_D1,0,Days+1,tm); CopyOpen(NULL,PERIOD_D1,0,Days+1,op); CopyClose(NULL,PERIOD_D1,0,Days+1,cl);
Questi valori vengono quindi memorizzati negli array corrispondenti:
datetime tm[]; double op[]; double cl[];
Prima di installare l'indicatore nel grafico, è importante impostare la dimensione degli array:
int OnInit() { //--- mappatura dei buffer dell'indicatore Comment(""); ArrayResize(tm,Days); ArrayResize(op,Days); ArrayResize(cl,Days); //--- return(INIT_SUCCEEDED); }
Successivamente, assegna i valori delle celle degli array a variabili e determina l’orario di chiusura giornaliero time1:
datetime time0=tm[i]; datetime time1=time0+3600*24; double dopen=op[i]; double dclose=cl[i];
Utilizzando la funzione PutRect():
void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr) { ObjectDelete(0,name); //--- crea un rettangolo con le coordinate fornite ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2); //--- imposta il colore del rettangolo ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //--- abilita (true) o disabilita (false) la modalità di riempimento del rettangolo ObjectSetInteger(0,name,OBJPROP_FILL,true); }
Colora il giorno a seconda di dove si è mosso il prezzo:
if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN); if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);
Itera su tutti i giorni specificati nel parametro Days in un ciclo:
for(int i=0;i<=Days;i++) { CopyTime(NULL,PERIOD_D1,0,Days+1,tm); CopyOpen(NULL,PERIOD_D1,0,Days+1,op); CopyClose(NULL,PERIOD_D1,0,Days+1,cl); datetime time0=tm[i]; datetime time1=time0+3600*24; double dopen=op[i]; double dclose=cl[i]; if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN); if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);
Infine, quando rimuovi l'indicatore dal grafico utilizzando la funzione DeleteObjects():
void DeleteObjects() { for(int i=ObjectsTotal(0,0,OBJ_RECTANGLE)-1;i>=0;i--) { string name=ObjectName(0,i,0,OBJ_RECTANGLE); if(StringFind(name,"Rect",0)>=0) ObjectDelete(0,name); } }
Per rimuovere gli oggetti creati dal grafico:
void OnDeinit(const int reason) { Comment(""); DeleteObjects(); }
Impostazioni:
input int Days = 11; // giorni per il calcolo input color UP = Blue; // colore del giorno rialzista input color DN = Red; // colore del giorno ribassista

Fig. 1. L'indicatore sul grafico
Consigli:
- L'indicatore Color Day è un assistente visivo utile per il trading.
Commento 0