So prüfen Sie, ob ein Auftrag wegen eines Stop-Loss geschlossen wurde

Francesco Fava  

Ich schreibe einen EA, der meinen für MT4 geschriebenen EA modifiziert. Ich eröffne eine Order mit OrderSend.

Einfach, wenn ich verstehen muss (perhasps von Geschichte), wenn die Bestellung gesendet (durch die Art und Weise.... Ich habe zu überprüfen, Order, Deals oder Position?), wurde geschlossen, weil es StopLoss erreicht hat.
Ich überprüfte auf Foren, aber ich habe nicht gefunden, was ich brauche....

Ich verwende HistoryOrderGetDouble mit dem ParameterENUM_ORDER_PROPERTY_DOUBLE,

AUFTRAG_PREIS_AKTUELL

nur den aktuellen Preis des Auftragssymbols

der nicht mitORDER_SL verglichen werden kann.Ich nehme an, ORDER_PRICE_CURRENT ist nur der aktuelle Preis des Symbols und nicht der Schlusskurs der Order.

Vielen Dank an alle für Ihre Unterstützung.

EDIT :

Dieses Thema ist nun größtenteils veraltet, da MT5 seit Build 1640 neue Möglichkeiten bietet.

Siehe die letzten Beiträge des Themas für einige Beispiele.

Alain Verleyen  

Siehe dieses Thema, wahrscheinlich ein wenig verwirrend, aber Sie können die Idee zu finden.

Die MT5 Handelssystem ist sehr verschieden von MT4, so müssen Sie Ihr Denken zu ändern.

Detect stop trigger in OnTradeTransaction backtest
Detect stop trigger in OnTradeTransaction backtest
  • www.mql5.com
Unfortunately, i get only DEAL_ENTRY_IN provided by MqlTradeTransaction passed to OnTradeTransaction. - - Category: technical indicators
Jose Miguel Soriano  
frankge973:

Ich schreibe einen EA, der meinen für MT4 geschriebenen EA modifiziert. Ich eröffne eine Order mit OrderSend.

Einfach, wenn ich verstehen muss (perhasps von Geschichte), wenn der Auftrag gesendet (durch die Art und Weise.... Ich habe zu überprüfen, Order, Deals oder Position?), wurde geschlossen, weil es StopLoss erreicht hat.
Ich habe auf Foren überprüft, aber ich habe nicht gefunden, was ich brauche....

Ich verwende HistoryOrderGetDouble mit dem ParameterENUM_ORDER_PROPERTY_DOUBLE,

AUFTRAG_PREIS_AKTUELL

nur den aktuellen Preis des Auftragssymbols

der nicht mitORDER_SL verglichen werden kann.Ich nehme an, ORDER_PRICE_CURRENT ist nur der aktuelle Preis des Symbols und nicht der Schlusskurs der Order.

Vielen Dank an alle für Ihre Unterstützung.

Ist es das?

//-------------------------------- ES CIERRE POR SL ----------------------------------------------
bool esCierreSL(int ind, int modoInd= SELECT_BY_TICKET, int modoHist= MODE_TRADES)
{
    bool resp= OrderSelect(ind, modoInd, modoHist)? (StringFind(OrderComment(), "[sl]", 0)>-1): false;
    return(resp);
}
Alain Verleyen  
Jose Miguel Soriano:

Ist es das?

Die Frage ist über mql5, Ihr Code ist mql4.

Bestellung Kommentar ist nicht eine zuverlässige Art und Weise zu codieren.

MARCO RICCARDI  
Alain Verleyen:

Die Frage ist über mql5, Ihr Code ist mql4.

EinAuftragskommentar ist keine verlässliche Methode zur Codierung.

Sorry für necro, aber das ist meiner Meinung nach sehr interessant.

Ich bin dabei, den Übergang von mql4 zu mql5, und ich finde den Handel und Geschichte Systeme Änderungen ziemlich herausfordernd.

Um zu wissen, ob ein Handel auf Geschichte Buch geschlossen wurde für Stop-Loss, Take-Profit, oder sonst:

  • In MT4 konnte man OrderStopLoss(), OrderTakeProfit() und OrderClosePrice() vergleichen, oder einfach OrderComment() überprüfen.
  • Im MT5 scheint mir die einzige Möglichkeit zu sein, den Kommentar eines Geschäfts zu überprüfen: HistoryDealGetString(tk, DEAL_COMMENT)
Sowohl MT4 als auch MT5 schreiben beim Schließen einer Order für Stop-Loss oder Take-Profit [SL-Preis] oder [TP-Preis] in den Kommentar (auf unterschiedliche Weise... aber trotzdem).

Ich habe den Artikel gelesen: https://www.mql5.com/en/forum/11996

Er ist interessant, aber wenn ich ihn richtig verstanden habe, zielt er auf die Identifizierung von Handelsänderungen auf der Grundlage der Ereignisbehandlung ab, on the fly.

Es muss also ein Programm vorhanden sein, das zuhört (wie ein Expert Advisor, der auf einem Chart läuft), sonst wird nichts erkannt.

Meiner Meinung nach muss die Erkennung des Grundes für die Schließung eines Handels im Handelsbuch erfolgen, weil dies der sicherste Weg ist (oder sein sollte), um zu wissen, was passiert ist, da es irgendwo geschrieben und nicht aus der Luft gegriffen ist.

Ist meine Analyse falsch? Was denken Sie?

Detect stop trigger in OnTradeTransaction backtest
Detect stop trigger in OnTradeTransaction backtest
  • www.mql5.com
Unfortunately, i get only DEAL_ENTRY_IN provided by MqlTradeTransaction passed to OnTradeTransaction.
William Roeder  
Marco: Sowohl MT4 als auch MT5 schreiben bei der Schließung einer Order für Stop-Loss oder Take-Profit [SL-Preis] oder [TP-Preis] in den Kommentar (auf unterschiedliche Weise... aber trotzdem).
Nein, das tun sie nicht. Das liegt an Ihrem Broker.
Keine gute Idee, Makler können Kommentare ändern, auch komplett ersetzen.
MARCO RICCARDI  
whroeder1:
Nein, das tun sie nicht. Das ist Ihr Makler.

Ok, sowohl MT4 und MT5 Broker setzen diese Zeichenfolge auf den Kommentar.. zumindest die wenigen, die ich getestet habe.

Und ich stimme zu, dass dies keine gute Idee ist, da der Kommentar durch die Hand des Brokers geändert werden kann.

Aber ich sehe nicht, wie das anders gemacht werden könnte, da ich keine anderen Spuren im Handelsbuch finden kann.

Gibt es eine bessere Möglichkeit, dieses Ziel zu erreichen?

Keith Watford  

Ich habe mich vor 2 Jahren an den Service Desk gewandt (bezüglich MT4).

...It is not clear to me whether all brokers incorporate the letters sp or tp in the order comment when a trade hits the StopLoss or TakeProfit. Is this at the brokers' discretion or is it automatically done with every broker?

und sie antworteten mir

Das wird bei jedem Broker automatisch gemacht. Und auch der Broker kann diesen Wert selbst ändern.

Es wird also vom System gemacht, nicht vom Broker. Trotzdem ist es nicht hilfreich, wenn der Makler den Wert dann ändern kann.

Allerdings ist mir noch kein Fall bekannt, in dem der Makler den Auftragskommentar geändert hat.

In meinem Code ist es normalerweise wichtiger zu wissen, ob ein Handel mit Gewinn oder Verlust abgeschlossen wurde. Bei Verwendung eines Trailing-Stops kann ein Geschäft den SL treffen, aber immer noch im Gewinn sein.

MARCO RICCARDI  
Keith Watford:

Ich habe mich vor 2 Jahren an den Service Desk gewandt (bezüglich MT4).

und sie antworteten mir

also wird es vom System gemacht, nicht vom Broker. Trotzdem nicht hilfreich, wenn der Broker es dann doch ändern kann.

Allerdings ist mir noch kein Fall bekannt, in dem der Broker den Auftragskommentar geändert hat.

Normalerweise ist es in meinem Code wichtiger zu wissen, ob ein Handel mit Gewinn oder Verlust abgeschlossen wurde. Bei Verwendung eines Trailing-Stops kann ein Handel den SL treffen, aber immer noch im Gewinn sein.

Danke Keith, das hatte ich gehofft, da ich keinen besseren Workaround gefunden habe.

Xiangdong Guo  
honest_knave:
Ich glaube, beide Poster konvertieren MQL4 in MQL5

Wie auch immer, vergleichen Sie einfach den Schlusskurs mit dem Stoploss-Kurs.

Hinweis: In realen (insbesondere ECN) Konto, wahrscheinlich Trigger Preis hat eine Lücke zwischen voreingestellten Stoploss Preis, so verwenden Sie "<=" oder ">=".

Keith Watford  
Xiangdong Guo:

Wie auch immer, vergleichen Sie einfach den Schlusskurs mit dem Stoploss-Kurs.

Hinweis: In realen (insbesondere ECN) Konten hat der Auslösepreis wahrscheinlich eine Lücke zwischen dem voreingestellten Stop-Loss-Kurs, also verwenden Sie "<=" oder ">=".

Sie können den Schlusskurs nicht mit dem Stop-Loss-Kurs vergleichen. Slippage bedeutet, dass der Schlusskurs höher oder niedriger als der Stop-Loss sein kann.

Daher ist "<=" oder ">=" nicht sinnvoll.

Grund der Beschwerde: