Color Day : L'indicateur incontournable pour MetaTrader 5

Mike 2017.01.18 18:27 12 0 0
Pièce jointe

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.
Liste
Commentaire 0