Frage: gibt es einen einfachen Weg, die Abschlussart der letzten Order zu prüfen?

 

Hallo MT4-ler,


meine Frage ist, ob es möglich ist, dass der EA ein Signal bekommt, wenn eine Order via StopLoss geschlossen wurde?

Einen aufwändigen Weg könnte ich mir vorstellen, in OnTick die Orders durchzuzählen und wenn die Zahl sinkt, ohne dass eine Gewinnmitnahme (die OrderClose auslöst). Das bedeutet, dass ich eine Flag setzen müsste, wenn ich die Gewinnmitnahme auslöse, die wieder entfernt wird, wenn eine neue Order platziert wird. Gibt es dafür eine einfache Funktion?


Ziel soll es sein, zum einen dem EA eine Info zu geben, wie die letzte Order beendet wurde, um dementsprechend einen Weg zu wählen, wie er wieder in den Markt gehen soll, auf der anderen Seite möchte ich eigene Protokolle schreiben, woraus ich auch ersehen kann, wie eine Order abgeschlossen wurde. Mein Problem ist halt bislang, dass der Schluss der Order per StopLoss passiv erfolgt und kein Ereignis auslöst. Das soll auch so bleiben, da ich mich immer vor Ausfall abgesichert wissen will. Oder ist es antiquiert, den Orders das Merkmal des StopLoss mitzugeben und schließt man nur noch aktiv?

Grüße

McGirg

 
In diesem Thread gibt es ein Codeexample, welches dafür geeignet ist.

https://www.mql5.com/en/forum/366947

Hoffe es hilft.
 
Dominik Egert:
In diesem Thread gibt es ein Codeexample, welches dafür geeignet ist.

https://www.mql5.com/en/forum/366947

Hoffe es hilft.

Das ist aber für den MT5. Wenn ich seine Ansprache richtig verstehe, sucht er für den MT4 ;).

@McGirg

Du könntest bspw. die Tradehistorie durchlaufen, die letzte geschlossene Order Deines EA suchen und schauen, ob der ClosePrice nah(!) am eingetragenen SL liegt.

Auf den exakten Wert (Exit = Order SL) würde ich hier verzichten, da es ja ggf. zu Slippage kommen kann.

 

In Mt5 gäbe es die Funktionen OnTrade() und OnTradeTransaction - in MT4 scheinen sie zu fehlen.

Da bliebe nur am einfachsten PositionTotal() auf Veränderung zu kontrollieren. Vorsicht aber wenn quasi gleichzeitig eine neue geöffnet und eine geschlossen wird und so...

 

Also warum es hier um mt4 gehen sollte erschliest sich mir nicht

und im mt5 hat jede position auch noch die closing Attribute, die kann man auslesen in der history

 
amando:

Also warum es hier um mt4 gehen sollte erschliest sich mir nicht

und im mt5 hat jede position auch noch die closing Attribute, die kann man auslesen in der history

Er hat doch explizit die MT5'ler zur Ruhe aufgerufen 😂


Hallo MT4-ler,

 
Carl Schreiber:

In Mt5 gäbe es die Funktionen OnTrade() und OnTradeTransaction - in MT4 scheinen sie zu fehlen.

Da bliebe nur am einfachsten PositionTotal() auf Veränderung zu kontrollieren. Vorsicht aber wenn quasi gleichzeitig eine neue geöffnet und eine geschlossen wird und so...

Es gibt da Bibliotheken die eine oder beide Funktionen simulieren.

https://www.mql5.com/en/code/11127

In dem Code werden die letzten Tickets angezeigt mit Order-Art


Vielleicht kann der @McGirg sich da was passendes rauskopieren.

MQL4 OnTrade() Alternative
MQL4 OnTrade() Alternative
  • www.mql5.com
This code is an Alternative of the missing OnTrade() event in MQL4.
 
McGirg:

Hallo MT4-ler,


meine Frage ist, ob es möglich ist, dass der EA ein Signal bekommt, wenn eine Order via StopLoss geschlossen wurde?

Einen aufwändigen Weg könnte ich mir vorstellen, in OnTick die Orders durchzuzählen und wenn die Zahl sinkt, ohne dass eine Gewinnmitnahme (die OrderClose auslöst). Das bedeutet, dass ich eine Flag setzen müsste, wenn ich die Gewinnmitnahme auslöse, die wieder entfernt wird, wenn eine neue Order platziert wird. Gibt es dafür eine einfache Funktion?


Ziel soll es sein, zum einen dem EA eine Info zu geben, wie die letzte Order beendet wurde, um dementsprechend einen Weg zu wählen, wie er wieder in den Markt gehen soll, auf der anderen Seite möchte ich eigene Protokolle schreiben, woraus ich auch ersehen kann, wie eine Order abgeschlossen wurde. Mein Problem ist halt bislang, dass der Schluss der Order per StopLoss passiv erfolgt und kein Ereignis auslöst. Das soll auch so bleiben, da ich mich immer vor Ausfall abgesichert wissen will. Oder ist es antiquiert, den Orders das Merkmal des StopLoss mitzugeben und schließt man nur noch aktiv?

Grüße

McGirg

   Hallo,

  das kann man mit MODE_HISTORY machen.


 

// Orders zählen
   int i,tip=0;
   for(i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
           {
            return;
           }
        }
     }

//--------------- Orders in History abrufen
   for(i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
           {
            tip=OrderType();
            break;
           }
        }
     }


   if(tip==OP_BUY && OrderProfit() < 0)
         Comment("\n Order Buy war in Minus!");

   if(tip==OP_SELL && OrderProfit() < 0)
         Comment("\n\n Order Sell war in Minus!");

Habe nicht geprüft, ob es funktioniert.

Es gibt auch eine OrderComment()  Funktion in Meta Trader 4 und man könnte alle orders durchgehen, die string SL enthalten. Habe aber noch nie probiert.

Ich hoffe, dass ich Ihnen helfen könnte.


Gruß Igor

 

Pay24Money:

Es gibt auch eine OrderComment()  Funktion in Meta Trader 4 und man könnte alle orders durchgehen, die string SL enthalten.


Das könnte auch gehen, stimmt. Das andere reicht nicht, da eine Order im Minus ja nicht zwingend der SL gewesen sein muss...

 

Hallo.


Ich danke an dieser Stelle allen Antwortern.

Irgendwann werde ich mir auch MT5 zu Gemüte führen, bis dahin werde ich mich mal um die OrderComment() schlau machen. Danke

McGirg


 
McGirg:

Hallo.


Ich danke an dieser Stelle allen Antwortern.

Irgendwann werde ich mir auch MT5 zu Gemüte führen, bis dahin werde ich mich mal um die OrderComment() schlau machen. Danke

McGirg


   Hallo,

   das Problem ist, dass man im Tester die Austopper als Kommentar ablegt, aber im Live Konto Historie wird SL nicht als Kommentar abgelegt!

   Es gibt kaum Informationen im Internet, wie man das macht.

    Gruß Igor