Nachschlagewerk MQL5MQL5 ProgrammeEregnisse des Client-Terminals 

Ereignisse des Client-Terminals

Init

Sofort nach Laden des Programms (des Experten oder des Benutzeranzeigers) und Start der Initialisierung der globalen Variablen wird das Ereignis Init gesendet, das durch die Funktion vom Client-Terminal OnInit() verarbeietet wird, wenn sie vorhanden ist. Dieses Ereignis wird auch nach Wechsel des Finanzinstrumentes und/oder der Chartperiode, nach Umcompilierung des Programms im Editor MetaEditor, nach Wechsel der Eingabeparameter vom Fenster der Einstellung von Expert oder Benutzerindikator. Ratgeber wird nach Kontowechsel initialisiert. Für Scripts wird das Ereignis Init nicht generiert.

Deinit

Vor Deinitialisierung der globalen Variablen und Ausladen des Programms (des Experten oder des Benutzeranzeigers) sendet das Client-Terminal dem Programm das Ereignis Deinit. Das Ereignis Deinit  wird auch nach Operationsende des Client-Terminals, beim Chartschliessen, unmittelbar vor dem Wechsel des Finanzinstrumentes und/oder der Chartperiode, bei erfolgreicher Umcompilierung des Programms, beim Wechsel der Eingabeparameter und beim Kontowechsel generiert.

Grund der Deinitialisierung kann man vom Parameter erhalten, der in die Funktion OnDeinit() übertragen wird. Durchführen der Funktion OnDeinit() wird von 2.5 Sekunden begrenzt. Wenn die Funktion für diese Zeit ihre Arbeit nicht schliesst, wird ihre Ausführung zwangslaeufig beendet. Für Scripts wird das Ereignis Deinit nicht generiert.

Start

Ereignis Start – ist Sonderereignis für Scriptaktivierung nach seinem Laden. Dieses Ereignis wird durch die Funktion OnStart verarbeitet. Ereignis Start wird an Experten und Benutzeranzeiger nicht gesendet.

NewTick

Ereignis NewTick wird beim Erscheinen der neuen Quotationen generiert und durch die Funktion OnTick() der angehängten Ratgeber. Wenn beim Erscheinen der neuen Quotation die Funktion OnTick ausgeführt wurde, die in der früheren Quotation gestartet wurde, wird die errscheinende Quotation vom Ratgeberignoriert, denn der entsprechende Wert wird nicht in die Queue der Expertereignisse eingereiht.

Alle während der Programmausführung erscheinenden Quotationen werden ignoriert bis Ausführung der Funktion OnTick() beendet. Dann wird die Funktion nach Erscheinen der neuen Quotation initialisiert. Das Ereignis NewTick wird, wenn Verwenden der Ratgeber (Schaltfläche "Ratgeber erlauben/verbieten") verboten ist.  

Das Ereignis NewTick wird unabhängig davon generiert, ob der automatische Handel erlaubt oder verboten ist (Schaltfläche "Autohandel erlauben/verboten"). Verbot des automatischen Handels bedeutet nur Verbot, Handelsanforderungen aus dem Expert zu senden, die Arbeit des Experten wird nicht abgebrochen.

Verbot des automatischen Handels beim Drücken auf die angegebene Schaltfläche bricht nicht die laufende Ausführung der Funktion OnTick().

Calculate

Ereignis Calculate wird nur für Anzeiger sofort nach Senden vom Ereignis Init und bei jedem Wechsel der Preisdaten. Wird durch die Funktion OnCalculate verarbeitet.

Timer

Ereignis Timer wird in regelmässige vom Client-Terminal für Experten generiert, der durch die Funktion generiert EventSetTimer Timer aktiviert hat. Gewöhnlich wird diese Funktion in der Funktion OnInit aufgerufen. Das Ereignis Timer wird durch Funktion OnTimer verarbeitet. Nach dem Operationsende des Experten muss man den erzeugten Timer durch die Funktion EventKillTimer entfernen, die gewöhnlich in der Funktion OnDeinit auf gerufen wird.

Trade

Ereignis Trade wird beim Schliessen der Handelsoperation auf dem Handelsserver generiert. Verarbeitung des Ereignisses Trade wird durch die Funktio OnTrade() für folgende Handelsoperationen durchgeführt:

  • Einstellung, Modifikation oder Entfernung der wartenden Order;
  • Abbruch der wartenden Order beim Geldmangel oder Gueltigkeitsablauf;
  • Aktivierung der wartenden Order ;
  • Öffnen, Zusetzen oder Schliessen der Position (oder eines Teiles der Position);
  • Modifikation der offenen Position (Veränderung von Stops).

TradeTransaction

Als Ergebnis der Durchführung von bestimmten Aktionen auf dem Handelskonto, ändert sich der Kontostand. Zu solchen Aktionen gehören:

  • Senden der Handelsanforderung aus einer beliebigen MQL5-Anwendung in dem Client-Terminal mittels der Funktionen OrderSend und OrderSendAsync und ihr nachfolgendes Ausführen;
  • Senden der Handelsanforderung über die grafische Oberfläche des Terminals und ihr nachfolgendes Ausführen;
  • Auslösen von aufgeschobenen Ordern und Stop-Ordern auf dem Server;
  • Ausführen von Operationen auf der Seite der Handel-Server.

Als Ergebnis dieser Aktionen werden die folgenden Handelstransaktionen durchgeführt:

  • Die Verarbeitung der Handelanforderung;
  • Änderung der offenen Aufträge;
  • Änderung der Ordergeschichte;
  • Änderung der Dealgeschichte;
  • Änderung der Position.

Zum Beispiel, beim Senden Marktkauforder, wird Marktkauforder behandelt und eine entsprechende Marktkauforder für das Konto erstellt. Ist die Order durchgeführt, wird sie aus der Auftragsliste entfernt und zur Ordergeschichte hinzugefügt. Dann wird der entsprechende Deal zur Geschichte hinzugefügt und eine neue Position wird erstellt. Alle diese Aktionen sind Handelstransaktionen. Ankunft jeder solchen Transaktion im Terminal ist ein Ereignis TradeTransaction. Dieses Ereignis wird durch die Funktion OnTradeTransaction verarbeitet.

Tester

Ereignis Tester wird nach Testen des Experten in historischen Daten generiert. Bearbeitung des Ereignisses Tester wird durch die Funktion OnTester() durchgeführt.

TesterInit

Ereignis TesterInit wird beim Start der Optimierung im Strategie-Tester vor dem ersten Durchlauf generiert. Bearbeitung des Ereignisses TesterInit wird durch die Funktion OnTesterInit() durchgeführt.

TesterPass

Ereignis TesterPass wird beim Empfang eines neuen Datenframes generiert. Bearbeitung des Ereignisses TesterPass wird durch die Funktion OnTesterPass() durchgeführt.

TesterDeinit

Ereignis TesterDeinit wird nach der Optimierung des Expert Advisors im Strategie-Tester generiert. Bearbeitung des Ereignisses TesterDeinit wird durch die Funktion OnTesterDeinit() durchgeführt.

ChartEvent

Ereignis ChartEvent wird vom Client-Terminal generiert bei der Arbeit des Benutzers mit Chart:

  • Keyboard Drücken, wenn Chartfenster fokussiert ist; ;
  • Erzeugung des graphischen Objekts;
  • Entfernung des graphischen Objekts;
  • Mausklicken auf dem graphischen Objekt, das zum Chart gehört;
  • Bewegung des graphischen Objekts mit der Maus;
  • Ende des Texteditierens im Eingabefeld des graphischen Objektes  LabelEdit.

Es gibt auch ein Benutzerereignis ChartEvent, das jedes mql5-Programm durch die Funktion EventChartCustom senden kann. Ereignis wird durch die Funktion OnChartEvent verarbeitet.

BookEvent

Das Ereignis BookEvent wird vom Client-Terminal bei DOM Veränderung generiert und durch die Funktion OnBookEvent verarbeitet. Damit das Client-Terminal Ereignisse BookEvent für konkretes Symbol zu generieren anfängt, reicht es, auf Erhalten dieser Ereignisse durch die Funktion MarketBookAdd zu subskribieren.

Um die Subskription auf Erhalten des Ereignisses für konkretes Symbol zu annullieren, muss die Funktion  BookEvent MarketBookRelease aufgerufen werden. Das Ereignis BookEvent ist broadcast – das bedeutet,  wenn ein Expert auf Erhalten des Ereignisses BookEvent durch die Funktion MarketBookAdd subskribiert, werden alle anderen Experten mit dem Handler OnBookEvent dieses Ereignisses bekommen. Darum muss der Symbolname, der in Bearbeiter als Parameter übertragen wird, analysieren.

Sehen Sie auch

Funktionen der Ereignisverabeitung, Progarammausführung