MetaTrader 5 herunterladen

OBJ_EVENT

Objekt "Ereignis".

ObjEvent

Hinweis

Wenn Sie den Mauszeiger auf das Ereignis schweben, erscheint sein Text.

Beispiel

Das folgende Skript erstellt und bewegt auf dem Chart Objekt "Ereignis". Um die Eigenschaften eines grafischen Objekts zu erstellen und ändern, gibt es speziale Funktionen, die Sie "wie es ist" für Ihre eigenen Programme verwenden können.

 

//--- Beschreibung
#property description "Das Skript erstellt ein graphisches Objekt \"Ereignis\"."
#property description "Datum des Ankerpunkts wird als Prozentsatz"
#property description "des Breite des Chartfensters angegeben."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string          InpName="Event";    // Name des Ereignisses
input int             InpDate=25;         // Datum des Ereignisses in %
input string          InpText="Text";     // Text des Ereignisses
input color           InpColor=clrRed;    // Farbe des Ereignisses
input int             InpWidth=1;         // Größe des Punktes für Bewegung
input bool            InpBack=false;      //Ereignis Im Hintergrund
input bool            InpSelection=false// Wählen um zu bewegen
input bool            InpHidden=true;     // Ausgeblendet in der Objektliste
input long            InpZOrder=0;        // Priorität auf Mausklick
//+------------------------------------------------------------------+
//| Erstellt das Objekt "Ereignis" auf dem Chart                     |
//+------------------------------------------------------------------+
bool EventCreate(const long            chart_ID=0,      // ID des Charts
                 const string          name="Event",    // Name des Ereignisses
                 const int             sub_window=0,    // Nummer des Unterfensters
                 const string          text="Text",     // Text des Ereignisses
                 datetime              time=0,          // Zeit
                 const color           clr=clrRed,      // Farbe
                 const int             width=1,         // Punktdicke bei Wählen
                 const bool            back=false,      // Im Hintergrund
                 const bool            selection=false// Wählen um zu bewegen
                 const bool            hidden=true,     // Ausgeblendet in der Objektliste
                 const long            z_order=0)       // Priorität auf Mausklick
  {
//--- wenn die Zeit nicht angegeben ist, wird Objekt auf dem letzten Balken erstellt werden
   if(!time)
      time=TimeCurrent();
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Erstellen wir das Objekt "Ereignis"
   if(!ObjectCreate(chart_ID,name,OBJ_EVENT,sub_window,time,0))
     {
      Print(__FUNCTION__,
            ": Objekt \"Ereignis\" konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- den Text des Ereignisses setzen
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- Farbe setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Dicke des Ankerpunktes, wenn ein Objekt ausgewählt ist, setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- Im Vordergrund (false) oder Hintergrund (true) anzeigen
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- aktivieren (true) oder deaktivieren (false) Bewegung des Ereignisses mit dem Maus
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- Verbergen (true) oder Anzeigen (false) den Namen des graphischen Objektes in der Objektliste
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- setzen die Priorität für eine Mausklick-Ereignisse auf dem Chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Ändert den Text des Objektes "Ereignis"       |
//+------------------------------------------------------------------+
bool EventTextChange(const long   chart_ID=0,   // ID des Charts
                     const string name="Event"// Name des Ereignisses
                     const string text="Text")  // Text
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- ändern wir den Text des Objektes
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": Konnte nicht den Text ändern! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Bewegung des Objekts "Ereignis" |
//+------------------------------------------------------------------+
bool EventMove(const long   chart_ID=0,   // ID des Charts
               const string name="Event"// Name des Ereignisses
               datetime     time=0)       // Zeit
  {
//--- wenn die Zeit nicht angegeben ist, bewegen wir das Ereignis auf den letzten Balken
   if(!time)
      time=TimeCurrent();
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objekt bewegen
   if(!ObjectMove(chart_ID,name,0,time,0))
     {
      Print(__FUNCTION__,
            ": Objekt \"Ereignis\" konnte nicht bewegt werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Löscht das Objekt "Ereignis" |
//+------------------------------------------------------------------+
bool EventDelete(const long   chart_ID=0,   // ID des Charts
                 const string name="Event"// Name des Ereignisses
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- das Objekt löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": Objekt \"Ereignis\" konnte nicht gelöscht werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Überprüfen die Richtigkeit der Eingabeparameter
   if(InpDate<0 || InpDate>100)
     {
      Print("Fehler! Ungültige Eingabeparameter! ");
      return;
    ;}
//--- Die Anzahl der sichtbaren Bars im Chart-Fenster
   int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- Array speichert Datumswerte, die verwendet werden,
//--- um die Koordinaten der Ankerpunkten des Objekts "Ereignis" zu setzen und zu bewegen
   datetime date[];
//--- Speicher reservieren
   ArrayResize(date,bars);
//--- Füllen die Anordnung von Daten
   ResetLastError();
   if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
     {
      Print("Kann nicht den Wert der Zeit kopieren! Fehlercode = ",GetLastError());
      return;
    ;}
//--- Definieren die Punkte um das Objekt zu erstellen
   int d=InpDate*(bars-1)/100;
//--- Erstellen wir das Objekt "Ereignis"
   if(!EventCreate(0,InpName,0,InpText,date[d],InpColor,InpWidth,
      InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
    ;}
//--- den Chart neu zeichnen und 1 Sekunde warten
   ChartRedraw();
   Sleep(1000);
//--- jetzt bewegen wir das Objekt
//--- Schleifenzähler
   int h_steps=bars/2;
//--- Objekt bewegen
   for(int i=0;i<h_steps;i++)
     {
      //--- den nächsten Wert nehmen
      if(d<bars-1)
         d+=1;
      //--- den Punkt bewegen
      if(!EventMove(0,InpName,date[d]))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.05 Sekunden
      Sleep(50);
    ;}
//--- 1 Sekunde Verzögerung
   Sleep(1000);
//--- den Kanal aus dem Chart löschen
   EventDelete(0,InpName);
   ChartRedraw();
//--- 1 Sekunde Verzögerung
   Sleep(1000);
//---
 ;}