- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnTradeTransaktion
Die Funktion wird in EAs aufgerufen, wenn das Ereignis TradeTransaction eintritt. Die Funktion ist für die Behandlung der Ergebnisse der Ausführung von Handelsanfragen gedacht.
void OnTradeTransaction()
|
Parameter
trans
[in] MqlTradeTransaction Typvariable, die eine auf einem Handelskonto getätigte Transaktion beschreibt.
request
[in] MqlTradeRequest Typvariable, die eine Handelsanforderung beschreibt, die zu einer Transaktion führte. Sie enthält nur die Werte für den Typ Transaktion TRADE_TRANSACTION_REQUEST.
result
[in] MqlTradeResult Typvariable, die das Ausführungsergebnis einer Handelsanforderung enthält, die zu einer Transaktion führte. Sie enthält nur die Werte für den Typ Transaktion TRADE_TRANSACTION_REQUEST.
Rückgabewert
Kein Rückgabewert
Hinweis
OnTradeTransaction() wird aufgerufen, um das Ereignis TradeTransaction zu behandeln, das vom Handelsserver an das Terminal in den folgenden Fällen gesendet wird:
- Senden einer Handelsanfrage aus einem MQL5-Programm mit den Funktionen OrderSend()/OrderSendAsync() und deren anschließende Ausführung;
- Manuelles Senden einer Handelsanfrage über die GUI und deren anschließende Ausführung;
- Aktivierung von Pending und Stop Orders auf dem Server;
- Durchführung von Operationen auf der Seite des Handelsservers.
Die Daten zum Transaktionstyp sind im Feld type der Variablen trans eingetragen. Die Arten von Handelsgeschäften sind beschrieben in der Enumeration ENUM_TRADE_TRANSACTION_TYPE:
- TRADE_TRANSACTION_ORDER_ADD – Hinzufügen eines neuen Auftrages (order)
- TRADE_TRANSACTION_ORDER_UPDATE – Ändern eines bestehenden Auftrags
- TRADE_TRANSACTION_ORDER_DELETE – Löschen eines Auftrags aus der Liste der aktiven
- TRADE_TRANSACTION_DEAL_ADD – Hinzufügen eines Deals zur Historie
- TRADE_TRANSACTION_DEAL_UPDATE – Ändern einer Transaktion (deal) in der Historie
- TRADE_TRANSACTION_DEAL_DELETE – Löschen einer Transaktion aus der Historie
- TRADE_TRANSACTION_HISTORY_ADD – Hinzufügen eines Auftrages zur Historie als Ergebnis einer Ausführung oder einer Stornierung
- TRADE_TRANSACTION_HISTORY_UPDATE – Ändern eines Auftrags in die Auftragshistorie
- TRADE_TRANSACTION_HISTORY_DELETE – Löschen eines Auftrags aus der Auftragsliste
- TRADE_TRANSACTION_POSITION – Änderung einer Position, die nicht auf einer Handelsausführung basiert
- TRADE_TRANSACTION_REQUEST – Benachrichtigung, dass eine Handelsanfrage vom Server bearbeitet wurde und das Ergebnis der Bearbeitung eingegangen ist.
Wenn Transaktionen vom Typ TRADE_TRANSACTION_REQUEST behandelt werden, ist es notwendig, den zweiten und dritten Parameter der Funktion OnTradeTransaction() zu analysieren - request und result - um zusätzliche Informationen zu erhalten..
Das Senden einer Kaufanfrage führt zu einer Kette von Handelstransaktionen auf einem Handelskonto: 1) Anfrage wird zur Bearbeitung angenommen, 2) ein entsprechender Auftrag für das Konto angelegt, 3) der Auftrag wird dann ausgeführt, 4) der ausgeführte Auftrag wird aus der Liste der aktiven Aufträge entfernt, 5) zur Historie der Aufträge hinzugefügt, 6) die nachfolgende Transaktion wird zur Historie hinzugefügt und 7) eine neue Position wird angelegt. Alle diese Stufen sind Handelstransaktionen. Die Ankunft jeder solchen Transaktion im Terminal ist das Ereignis TradeTransaction. Die Priorität der Ankunft dieser Transaktionen im Terminal ist nicht garantiert. Daher sollten Sie bei der Entwicklung Ihres Handelsalgorithmus nicht erwarten, dass eine Gruppe von Transaktionen nach der anderen eintrifft.
Wenn Transaktionen von der Funktion OnTradeTransaction() des EA verarbeitet werden, verarbeitet das Terminal die eingehenden Handelstransaktionen weiter. So kann sich der Status des Handelskontos im Laufe der OnTradeTransaction() Operation ändern. Zum Beispiel, während ein MQL5-Programm eine neuen Auftrag erteilt, kann er ausgeführt, aus der Liste der offenen Aufträge gelöscht und in die Historie verschoben werden. Das Programm wird über alle diese Ereignisse informiert.
Die Länge der Warteschlange der Transaktionen umfasst 1024 Elemente. Wenn OnTradeTransaction() bei einer weiteren Transaktion zu lange verweilt, können in der Warteschlange die frühere Transaktionen durch neue ersetzt werden.
Ein Aufruf von OnTrade() entspricht einem oder mehreren OnTradeTransaction-Aufrufen. Im Allgemeinen gibt es keine genaue Korrelation zwischen der Anzahl der Aufrufe von OnTrade() und OnTradeTransaction(). Ein Aufruf von OnTrade() entspricht einem oder mehreren Aufrufen von OnTradeTransaction.
Jedes Ergebnis Trade kann als Ergebnis einer oder mehrerer Anfragen an den Handelsserver erscheinen. Handelsanfrage werden mit Trade mittels OrderSend() oder OrderSendAsync() an der Server gesendet. Jede Anfrage kann zu mehreren Handelsereignissen führen. Sie können nicht der Vorstellung vertrauen: "Eine Anfrage - Ein Handelsereignis", da die Verarbeitung von Ereignissen in mehreren Stufen erfolgt kann und jede Operation den Status von Aufträgen, Positionen und die Handelsgeschichte verändern kann.
Beispiel-EA, der die Funktion OnTradeTransaction() verwendet
//+------------------------------------------------------------------+
|
Siehe auch
OrderSend, OrderSendAsync, OnTradeTransaction, Trade request structure, Trade transaction structure, Trade transaction types, Trade operation types, Ereignisse des Client-Terminals