Color Day: Der hilfreiche Indikator für MetaTrader 5

Mike 2017.01.18 18:27 12 0 0
Anhang

Der Color Day Indikator ist ein praktisches Tool, das die bullischen und bärischen Tage in deinem Chart einfärbt.

Wenn der tägliche Schlusskurs über dem Eröffnungskurs liegt, wird der Tag blau eingefärbt (Farbe kann in den Einstellungen angepasst werden).

input color UP = Blue;  // Farbe des bullischen Tages

Liegt der tägliche Schlusskurs unter dem Eröffnungskurs, wird der Tag rot gefärbt (auch hier anpassbar).

input color DN = Red;   // Farbe des bärischen Tages

Der Indikator kopiert die Öffnungs- und Schlusskurse sowie die Eröffnungszeit für die angegebene Anzahl von Tagen 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);

Diese Werte werden in die entsprechenden Arrays kopiert:

datetime tm[];
double op[];
double cl[];

Bevor du den Indikator in dein Chart einfügst, musst du die Größe der Arrays festlegen:

int OnInit()
  {
//--- Zuordnung der Indikator-Puffer
   Comment("");
   ArrayResize(tm,Days);
   ArrayResize(op,Days);
   ArrayResize(cl,Days);
//---
   return(INIT_SUCCEEDED);
  }

Nun werden die Werte der Array-Zellen den Variablen zugewiesen und die tägliche Schlusszeit time1 bestimmt:

datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

Jetzt kommt die PutRect() Funktion ins Spiel:

void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr)
  {
   ObjectDelete(0,name);
//--- Erstelle ein Rechteck mit den angegebenen Koordinaten
   ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2);
//--- Setze die Rechteckfarbe
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- Fülle das Rechteck (true) oder nicht (false)
   ObjectSetInteger(0,name,OBJPROP_FILL,true);
  }

Der Tag wird dann je nach Kursbewegung gefärbt:

if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

Jetzt iterieren wir über alle Tage, die im Parameter Days festgelegt sind:

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);

Wenn du den Indikator aus dem Chart entfernst, kannst du die DeleteObjects() Funktion verwenden:

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);
     }
  }

Um die erstellten Objekte aus dem Chart zu entfernen, kannst du folgende Funktion nutzen:

void OnDeinit(const int reason)
  {
   Comment("");
   DeleteObjects();
  }

Einstellungen:

input int   Days = 11;  // Tage für die Berechnung
input color UP = Blue;  // Farbe des bullischen Tages
input color DN = Red;   // Farbe des bärischen Tages

Abb. 1. Der Indikator im Chart

Tipps:

  • Der Color Day Indikator ist dein visueller Handelsassistent.
Liste
Kommentar 0