EventChartCustom

Generiert ein Benutzerereignis für den angegebenen Chart.  

bool  EventChartCustom(
   long    chart_id,            // Identifikator des Charts-Ereignisrezipient 
   ushort  custom_event_id,     // Identifikator des Ereignisses 
   long    lparam,              // Parameter des Typs long
   double  dparam,              // Parameter des Typs double
   string  sparam               // Zeilenparameter des Ereignisses 
   );

Parameter

chart_id

[in]  Identifikatoren des Charts. 0 bedeutet den laufenden Chart.

custom_event_id

[in]  Identifikator des Benutzerereignisses. Dieser Identifikator wird automatisch zum Wert CHARTEVENT_CUSTOM hinzugefügt und zum ganzzahligen Typ reduziert.

lparam

[in]  Ereignisparameter des Typs long, der der Funktion OnChartEvent übertragen wird.

dparam

[in]  Ereignisparameter des Typs double, der der Funktion OnChartEvent übertragen wird.

sparam

[in]  Parameter des Ereignisses des Typs string, der der Funktion OnChartEvent übertragen wird. Wenn die Zeile länger als  63 Symbole, wird die Zeile reduziert.

Rückgabewert

Gibt true zurück, wenn ein benutzerdefiniertes Ereignis wurde erfolgreich in der Warteschlange von Ereignissen des Charts-Ereignisrezipient,  platziert. Im Falle eines Fehlers, wird false zurückgegeben. Verwenden Sie GetLastError(), um einen Fehlercode zu bekommen.

Hinweis

Expert oder Indikator, angehängt zum angegebenen Chart, verarbeitet dieses Ereignis durch die Funktion OnChartEvent(int event_id, long& lparam, double& dparam, string& sparam).

Für jede Art von Ereignis, Eingabeparameter der Funktion OnChartEvent() haben bestimmte Werte, die nötig sind, um das Ereignis zu behandeln.Die folgende Tabelle listet die Ereignisse und Werte, die durch Parameter übergeben werden.

Ereignis

Wert des Parameters id

Wert des Parameters lparam

Wert des Parameters dparam

Wert des Parameters  sparam

Ereignis des Keyboard Klickens

CHARTEVENT_KEYDOWN

Kode der betätigten Taste

Die Anzahl der Tastenanschläge, die generiert werden, während diese Taste in gedrücktem Zustand war

Der String-Wert eines Bit-Maske, die den Status der Tastatur-Tasten beschreibt

Ereignisse der Maus-Bewegung und Mausklicks (wenn die Eigenschaft CHART_EVENT_MOUSE_MOVE=true ist für den Chart eingegeben)

CHARTEVENT_MOUSE_MOVE

X-Koordinate

Y-Koordinate

Der String-Wert einer Bit-Maske, der den Status der Maustasten beschreibt

Ereignis der Erzeugung des graphischen Objektes (wenn die Eigenschaft CHART_EVENT_OBJECT_CREATE=true ist für den Chart eingegeben)

CHARTEVENT_OBJECT_CREATE

Name des erzeugten graphischen Objektes

Ereignis der Veränderung der Eigenschaften des Objektes durch Dialog der Eigenschaften

CHARTEVENT_OBJECT_CHANGE

Name des veränderten graphischen Objektes

Ereignis der Löschung des graphischen Objektes (wenn die Eigenschaft CHART_EVENT_OBJECT_DELETE=true ist für den Chart eingegeben)

CHARTEVENT_OBJECT_DELETE

Name des entfernten graphischen Objektes

Ereignis des Mausklicks auf der graphischen Darstellung

CHARTEVENT_CLICK

X-Koordinate

Y-Koordinate

Ereignis des Mausklicks auf dem graphischen Objekt

CHARTEVENT_OBJECT_CLICK

X-Koordinate

Y-Koordinate

Name des graphischen Objektes, auf dem das Ereignis geschehen ist  

Ereignis der Verschiebung des graphischen Objektes per Mausklick

CHARTEVENT_OBJECT_DRAG

Name des verschobenen graphischen Objektes

Ereignis der Beendung der Textbearbeitung im Eingabefeld des graphischen Objektes "Eingabefeld"

CHARTEVENT_OBJECT_ENDEDIT

Name des graphischen Objektes "Eingabefeld", in dem Editieren des Textes beendet wurde

Ereignis der Chart-Veränderung

CHARTEVENT_CHART_CHANGE

Benutzerereignis mit  Nummer  N

CHARTEVENT_CUSTOM+N

Wert, vorgegeben durch die Funktion EventChartCustom()

Wert, vorgegeben durch die Funktion EventChartCustom()

Wert, vorgegeben durch die Funktion EventChartCustom()

Beispiel:

//+------------------------------------------------------------------+
//|                                            ButtonClickExpert.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
string buttonID="Button";
string labelID="Info";
int broadcastEventID=5000;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Erzeugen wir einen Button für übertragung der Benutzerereignisse
   ObjectCreate(0,buttonID,OBJ_BUTTON,0,100,100);
   ObjectSetInteger(0,buttonID,OBJPROP_COLOR,clrWhite);
   ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,clrGray);
   ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,200);
   ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,50);
   ObjectSetString(0,buttonID,OBJPROP_FONT,"Arial");
   ObjectSetString(0,buttonID,OBJPROP_TEXT,"Button");
   ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);
   ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
 
//--- Erzeugen wir eine Marke für Ausgabe der Information
   ObjectCreate(0,labelID,OBJ_LABEL,0,100,100);
   ObjectSetInteger(0,labelID,OBJPROP_COLOR,clrRed);
   ObjectSetInteger(0,labelID,OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,labelID,OBJPROP_YDISTANCE,50);
   ObjectSetString(0,labelID,OBJPROP_FONT,"Trebuchet MS");
   ObjectSetString(0,labelID,OBJPROP_TEXT,"Keine Information");
   ObjectSetInteger(0,labelID,OBJPROP_FONTSIZE,20);
   ObjectSetInteger(0,labelID,OBJPROP_SELECTABLE,0);
 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   ObjectDelete(0,buttonID);
   ObjectDelete(0,labelID);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Pruefen wir das Ereignis durch Drücken des Mausbuttons 
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      string clickedChartObject=sparam;
      //--- wenn Sie drücken das Objekt mit dem Namen buttonID
      if(clickedChartObject==buttonID)
        {
         //--- Buttonstatus - gedrückt oder nicht 
         bool selected=ObjectGetInteger(0,buttonID,OBJPROP_STATE);
         //--- geben wir in log Debugging-Nachricht aus 
         Print("Knopf gedrückt = ",selected);
         int customEventID; // Nummer des Benutzerereignisses für Senden 
         string message;    // Nachricht für Senden im Ereignis 
         //--- wenn Knopf gedrückt ist 
         if(selected)
           {
            message="Knopf gedrückt";
            customEventID=CHARTEVENT_CUSTOM+1;
           }
         else // Knopf nicht gedrückt 
           {
            message="Knopf nicht gedrückt";
            customEventID=CHARTEVENT_CUSTOM+999;
           }
         //--- senden wir Benutzerereignis "unserem" Chart
         EventChartCustom(0,customEventID-CHARTEVENT_CUSTOM,0,0,message);
         //--- senden wir eine Nachricht an alle offenen Charts 
         BroadcastEvent(ChartID(),0,"Broadcast Message");
         //--- Debugging-Nachricht 
         Print("Ereignis mit ID ist gesendet = ",customEventID);
        }
      ChartRedraw();// zeichnen wir alle Objekte auf dem Chart erneut 
     }
 
//--- pruefen wir, ob das Ereignis zu Benutzerereignissen gehört  
   if(id>CHARTEVENT_CUSTOM)
     {
      if(id==broadcastEventID)
        {
         Print("Erhalten wir Broadcast-Nachricht vom Chart mit id = "+lparam);
        }
      else
        {
         //--- lesen wir eine Textnachricht im Ereignis 
         string info=sparam;
         Print("Das Benutzerereignis mit ID wird verarbeitet = ",id);
         //--- geben wir eine Nachricht in der Marke aus 
         ObjectSetString(0,labelID,OBJPROP_TEXT,sparam);
         ChartRedraw();// zeichnen wir alle Objekte auf dem Chart zwangsläufig erneut 
        }
     }
  }
//+------------------------------------------------------------------+
//| Broadcast-Nachricht allen offenen Charts senden                  |
//+------------------------------------------------------------------+
void BroadcastEvent(long lparam,double dparam,string sparam)
  {
   int eventID=broadcastEventID-CHARTEVENT_CUSTOM;
   long currChart=ChartFirst();
   int i=0;
   while(i<CHARTS_MAX)          // Sie haben bestimmt nicht mehr als CHARTS_MAX offene Charts 
     {
      EventChartCustom(currChart,eventID,lparam,dparam,sparam);
      currChart=ChartNext(currChart); // auf Grund des vorigen Charts erhalten wir ein neues  
      if(currChart==-1) break;        // das Ende der Chartliste erreicht 
      i++;                            // Nicht vergessen, Counter zu erhoehen 
     }
  }
//+------------------------------------------------------------------+

Sehen Sie auch

Ereignisse des Client-Terminals, Ereignisbearbeiter