#define WIDTH 50 // Breite des Rechteckes in Balken //+------------------------------------------------------------------+ //| Skript Programm Start Funktion | //+------------------------------------------------------------------+ void OnStart() { //--- aktuelle Chart-ID abrufen und grafischen Objektnamen festlegen long chart_id = ChartID(); string obj_name = MQLInfoString(MQL_PROGRAM_NAME)+"_RectLabel"; //--- zwei rechteckige Zeitkoordinaten abrufen datetime time1 = iTime(_Symbol, _Period, WIDTH); datetime time2 = iTime(_Symbol, _Period, 0); if(time1==0 || time2==0) { Print("Error getting time ", GetLastError()); return; } //--- Holen der Höchst- und Tiefstpreise im Bereich der Rechteckbreite double price1 = HighestHigh(_Symbol, _Period, 0, WIDTH); double price2 = LowestLow(_Symbol, _Period, 0, WIDTH); if(price1==EMPTY_VALUE || price2==EMPTY_VALUE) return; //--- Erstellen eines rechteckigen Objekts Print("Create a wheat-colored rectangle"); if(!ObjectCreate(chart_id, obj_name, OBJ_RECTANGLE, 0, time1, price1, time2, price2)) { Print("ObjectCreate() failed. Error ", GetLastError()); return; } //--- füllen des Rechtecks mit der Originalfarbe ObjectSetInteger(chart_id, obj_name, OBJPROP_FILL, true); ObjectSetInteger(chart_id, obj_name, OBJPROP_BACK, true); ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrWheat); ChartRedraw(); //--- Warten von einer Sekunde für das Füllen des Rechtecks mit der Farbe DodgerBlue und der Aktualisierung des Charts Sleep(1000); Print("Change color to DodgerBlue"); ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrDodgerBlue); ChartRedraw(); //--- Warten von einer Sekunde für das Füllen des Rechtecks mit der Farbe „LimeGreen“ und der Aktualisierung des Charts Sleep(1000); Print("Change color to LimeGreen"); ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrLimeGreen); ChartRedraw(); //--- Warten von einer Sekunde für das Füllen des Rechtecks mit der Farbe „OrangeRed“ und der Aktualisierung des Charts Sleep(1000); Print("Change color to OrangeRed"); ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrOrangeRed); ChartRedraw(); //--- Warten von einer Sekunde für das Füllen des Rechtecks mit der Farbe „Wheat“ und der Aktualisierung des Charts Sleep(1000); Print("Reset color to original"); ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrWheat); ChartRedraw(); //--- Entfernen des Objekts aus dem Chart nach drei Sekunden Sleep(3000); Print("Delete the rectangle"); ObjectDelete(chart_id, obj_name); } //+------------------------------------------------------------------+ //| Liefert das höchste Hoch im angegebenen Bereich der Balken | //+------------------------------------------------------------------+ double HighestHigh(const string symbol, const ENUM_TIMEFRAMES timeframe, const uint start, const uint count) { ResetLastError(); int index=iHighest(symbol, timeframe, MODE_HIGH, count, start); if(index==-1) { PrintFormat("%s: iHighest() failed. Error %d",__FUNCTION__, GetLastError()); return(EMPTY_VALUE); } GetLastError(); double price=iHigh(symbol, timeframe, index); if(price==0) { PrintFormat("%s: iHigh() failed. Error %d",__FUNCTION__, GetLastError()); return(EMPTY_VALUE); } return(price); } //+------------------------------------------------------------------+ //| Rückgabe des tiefsten Tiefs im angegebenen Bereich der Balken | //+------------------------------------------------------------------+ double LowestLow(const string symbol, const ENUM_TIMEFRAMES timeframe, const uint start, const uint count) { ResetLastError(); int index=iLowest(symbol, timeframe, MODE_LOW, count, start); if(index==-1) { PrintFormat("%s: iLowest() failed. Error %d",__FUNCTION__, GetLastError()); return(EMPTY_VALUE); } GetLastError(); double price=iLow(symbol, timeframe, index); if(price==0) { PrintFormat("%s: iLow() failed. Error %d",__FUNCTION__, GetLastError()); return(EMPTY_VALUE); } return(price); } |