L'indicateur Color Day permet de mettre en évidence les journées haussières et baissières sur votre graphique.
Si le cours de clôture quotidien est supérieur à l'ouverture, le jour sera coloré en bleu (modifiable dans les paramètres).
input color UP = Blue; // couleur du jour haussier
À l'inverse, si le cours de clôture est inférieur à l'ouverture, le jour sera coloré en rouge (également personnalisable).
input color DN = Red; // couleur du jour baissier
Il est possible de copier les prix d'ouverture, de clôture et l'heure d'ouverture pour le nombre de jours spécifié 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);
Ces valeurs sont ensuite stockées dans les tableaux correspondants :
datetime tm[]; double op[]; double cl[];
Avant d'installer l'indicateur sur le graphique, il faut définir la dimension des tableaux :
int OnInit() { //--- mappage des buffers de l'indicateur Comment(""); ArrayResize(tm,Days); ArrayResize(op,Days); ArrayResize(cl,Days); //--- return(INIT_SUCCEEDED); }
Ensuite, assignez les valeurs des cellules de tableau à des variables et déterminez l'heure de clôture quotidienne time1 :
datetime time0=tm[i]; datetime time1=time0+3600*24; double dopen=op[i]; double dclose=cl[i];
Utilisez la fonction PutRect() pour tracer les rectangles :
void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr) { ObjectDelete(0,name); //--- créer un rectangle avec les coordonnées données ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2); //--- définir la couleur du rectangle ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //--- activer (true) ou désactiver (false) le mode de remplissage du rectangle ObjectSetInteger(0,name,OBJPROP_FILL,true); }
Coloriez le jour selon l'évolution du prix :
if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN); if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);
Il ne vous reste plus qu'à itérer sur tous les jours spécifiés dans le paramètre Days :
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);
Pour supprimer l'indicateur du graphique, utilisez la fonction 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); } }
Enfin, pour retirer les objets créés du graphique :
void OnDeinit(const int reason) { Comment(""); DeleteObjects(); }
Paramètres :
input int Days = 11; // jours pour le calcul input color UP = Blue; // couleur du jour haussier input color DN = Red; // couleur du jour baissier

Fig. 1. L'indicateur sur le graphique
Conseils :
- L'indicateur Color Day est un assistant visuel pour trader.
Commentaire 0