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.
Kommentar 0