Ctrade und TRADE_TRANSACTION

 
Hallo.

Ich nutze die Ctrade Klasse für Handelsoperationen.

Die Ausführung prüfe ich über Tradetransaction.

Nun möchte ich auch das ändern von TP und SL abfangen.

Die erste if-Anweisung mit DEAL_ADD führt zum gewünschten Ergebnis. Die zweite mit TRANSACTION_POSITION leider nicht. Hier hätte ich erwartet dass ich nun bei Änderung des SL/TP lande.

Was habe ich falsch gemacht oder verstanden?
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
{
   
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;

if(type==TRADE_TRANSACTION_DEAL_ADD)
{
        Print("NEW DEAL");  
}
else if(type==TRADE_TRANSACTION_POSITION)
{
        Print("UPDATE SL/TP");
}


}
 

Die Ereignisfunktion OnTradeTransaction() wird im Terminal bei jedem Buchungsvorgang aufgerufen, das kann zwischen 1 und 4 Mal sein für ein und denselben Vorgang. Leider werden außerdem nicht immer alle Infos Deal-ID, Pos.-ID,... ausgefüllt. Aus historischen Gründen ist ORDER_BUY == 0, sodass, wenn die Struktur nullifiziert wird, sie einen Kauf suggeriert.

Lies:

https://www.mql5.com/de/articles/11248
https://www.mql5.com/de/articles/1111

Creating an EA that works automatically (Part 08): OnTradeTransaction
Creating an EA that works automatically (Part 08): OnTradeTransaction
  • www.mql5.com
In this article, we will see how to use the event handling system to quickly and efficiently process issues related to the order system. With this system the EA will work faster, so that it will not have to constantly search for the required data.