WOLFRAM STEFFEN SIEGERT:
https://www.mql5.com/de/docs/constants/tradingconstants/dealproperties#enum_deal_reason
Für viele sicherlich eine einfache Antwort auf die Frage:
Wie kann man in MQL5 prüfen, ob eine Order im SL geschlossen wurde?
Per MQL4 war das relativ einfach, auch konnte man dort einfach einen OrderClosePrice() auslesen.
Wer hat eine geniale Antwort?
Danke.
Dokumentation zu MQL5: Konstanten, Enumerationen und Strukturen / Handelskonstanten / Eigenschaften der Deals
- www.mql5.com
Eigenschaften der Deals - Handelskonstanten - Konstanten, Enumerationen und Strukturen - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
Christian #:
https://www.mql5.com/de/docs/constants/tradingconstants/dealproperties#enum_deal_reason
https://www.mql5.com/de/docs/constants/tradingconstants/dealproperties#enum_deal_reason
Und geht am besten über die TrancActions:
void OnTradeTransaction(const MqlTradeTransaction& trans,const MqlTradeRequest& request,const MqlTradeResult& result) { if(trans.type!=TRADE_TRANSACTION_DEAL_ADD)return; if(!HistoryDealSelect(trans.deal))return; if(HistoryDealGetInteger(trans.deal,DEAL_MAGIC)!=InpMagicNumber)return; if(HistoryDealGetInteger(trans.deal,DEAL_ENTRY)!=DEAL_ENTRY_OUT)return; if(HistoryDealGetString(trans.deal,DEAL_SYMBOL)!=_Symbol)return; long reason=HistoryDealGetInteger(trans.deal,DEAL_REASON); if(reason==DEAL_REASON_SL) { Print(__LINE__,__FILE__," we are afraid SL is hit); } else if(reason==DEAL_REASON_TP) { Print(__LINE__,__FILE__," TP is HIT!); } }
Alternativ natürlich über die order reason, quasi das gleiche wenn der deal schin weg ist
Euch erst einmal vielen Dank. Das hilft mir schon weiter.
probier mal:
void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { if(trans.type != TRADE_TRANSACTION_DEAL_ADD) return; if(!HistoryDealSelect(trans.deal)) return; lastTradeHittedbySL( trans, request, result); } void lastTradeHittedbySL(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { //--- get transaction type as enumeration value ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- if transaction is result of addition of the transaction in history if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_entry =0; double deal_profit =0.0; double deal_volume =0.0; string deal_symbol =""; long deal_magic =0; long deal_reason =-1; if(HistoryDealSelect(trans.deal)) { deal_entry=HistoryDealGetInteger(trans.deal, DEAL_ENTRY); deal_profit=HistoryDealGetDouble(trans.deal, DEAL_PROFIT); deal_volume=HistoryDealGetDouble(trans.deal, DEAL_VOLUME); deal_symbol=HistoryDealGetString(trans.deal, DEAL_SYMBOL); deal_magic=HistoryDealGetInteger(trans.deal, DEAL_MAGIC); deal_reason=HistoryDealGetInteger(trans.deal, DEAL_REASON); } else return; if(deal_symbol==m_symbol.Name() && deal_magic==SystemMagicNumber) if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) { slHit = true; } else slHit=false; //use this for TP settings //else if(deal_reason==DEAL_REASON_TP) } } }
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Für viele sicherlich eine einfache Antwort auf die Frage:
Wie kann man in MQL5 prüfen, ob eine Order im SL geschlossen wurde?
Per MQL4 war das relativ einfach, auch konnte man dort einfach einen OrderClosePrice() auslesen.
Wer hat eine geniale Antwort?
Danke.