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

 

Könnten Sie bitte nur antworten, wenn Sie wissen, wovon Sie sprechen?

Dies ist ein Thema über MT5/mql5, ich werde alle irrelevanten Beiträge entfernen.

Es gibt keinen Stoploss-Kurs in der Geschichte auf MT5.

 

Das Hauptproblem in mql5 (Hedging-Konto) besteht darin, den Stop-Loss-Kurs zu kennen, wenn eine Position geschlossen wird, da es keine Positionshistorie gibt. Sie können HistorySelectByPosition() verwenden, um Ihren anfänglichen Stop Loss zu finden (Stop Loss der ursprünglichen Order), aber wenn Sie diesen Stop Loss später geändert haben, werden neue Orders generiert, die nicht dieselbe POSITION_ID haben und daher nicht von der Funktion HistorySelectByPosition() ausgewählt werden, so dass es sehr schwierig wird, den letzten von Ihnen platzierten Stop Loss zu kennen.

Ich weiß nicht, ob dies als Fehler angesehen werden kann, aber wenn nicht, sollte es so sein.

Mit freundlichen Grüßen.

Documentation on MQL5: Trade Functions / HistorySelectByPosition
Documentation on MQL5: Trade Functions / HistorySelectByPosition
  • www.mql5.com
Trade Functions / HistorySelectByPosition - Reference on algorithmic/automated trading language for MetaTrader 5
 
Jose Francisco Casado Fernandez:

Das Hauptproblem in mql5 (Hedging-Konto) besteht darin, den Stop-Loss-Kurs zu kennen, wenn eine Position geschlossen wird, da keine Positionshistorie vorhanden ist. Sie können HistorySelectByPosition() verwenden, um Ihren anfänglichen Stop Loss zu finden (Stop Loss der ursprünglichen Order)...

Nein, das können Sie nicht, oder ich habe Sie missverstanden.

Der aktuelle Stoploss ist nirgends in der Historie zu finden.

 
Alain Verleyen:

Nein, das können Sie nicht, oder ich habe Sie missverstanden.

Stoploss steht nirgendwo in der Geschichte.

Sie können HistorySelectByPosition() verwenden, mit Ihrer POSITION_ID, und dann können Sie die erste Order mit dieser POSITION_ID finden, und den Stop Loss dieser Order überprüfen (HistoryOrderGetDouble(ticket, ORDER_SL). Bei mir hat das funktioniert, aber
.das Problem ist, wenn Sie den Stop Loss später ändern.
 
Jose Francisco Casado Fernandez:
Sie können HistorySelectByPosition() verwenden, mit Ihrer POSITION_ID, und dann können Sie die erste Order mit dieser POSITION_ID finden, und den Stop Loss dieser Order überprüfen (HistoryOrderGetDouble(ticket, ORDER_SL). Das hat bei mir funktioniert, aber
.das Problem ist, wenn Sie den Stop Loss später ändern.

Ok, jetzt verstanden, Sie haben Recht.

 
Jose Francisco Casado Fernandez:
Sie können HistorySelectByPosition() verwenden, mit Ihrer POSITION_ID, und dann können Sie die erste Order mit dieser POSITION_ID finden und den Stop Loss dieser Order überprüfen (HistoryOrderGetDouble(ticket, ORDER_SL). Bei mir hat das funktioniert, aber
.das Problem ist, wenn Sie diesen Stop Loss später ändern.
Und dann prüfen Sie ORDER_POSITION_ID gleich DEAL_POSITION_ID,
dann prüfen Sie DEAL_ENTRY, wenn OUT, erhalten Sie HystoryDealGetDouble(ticket,DEAL_PRICE).

Wenn DEAL_PRICE gleich HistoryOrderGetDouble(ticket,ORDER_SL) ist, dann bedeutet dies , dass die Order aufgrund von Stop Lossgeschlossen wurde.

Hier ist meine Meinung.

 
Alain Verleyen:

Ok, jetzt habe ich es verstanden, Sie haben Recht.

Ok, und wissen Sie, warum, wenn Sie den Stop Loss später ändern, der neue Auftrag, der dafür generiert wird, nicht die gleiche POSITION_ID anzeigt? Das wäre die perfekte Lösung für diese Angelegenheit. Ist das ein Fehler???. Vielen Dank!
 
Roberto Jacobs:

Wenn DEAL_PRICE gleich HistoryOrderGetDouble(ticket,ORDER_SL) ist, dann bedeutet dies , dass die Order aufgrund von Stop Lossgeschlossen wurde.

Was ist mit Slippage?
 
Roberto Jacobs:
Und dann, prüfen Sie ORDER_POSITION_ID gleich DEAL_POSITION_ID,
dann prüfen Sie DEAL_ENTRY, wenn OUT, bekommen HystoryDealGetDouble(ticket,DEAL_PRICE).

Wenn DEAL_PRICE gleich HistoryOrderGetDouble(ticket,ORDER_SL) ist, dann bedeutet dies , dass die Order aufgrund von Stop Lossgeschlossen wurde.

Hier ist meine Meinung.

Ja, das ist es, was ich sagen wollte. Ich habe es so gemacht, und es hat funktioniert, aber wenn man den anfänglichen Stop Loss ändert, wird ein neuer Auftrag OHNE dieselbe POSITION_ID erzeugt. Ich weiß nicht, warum. Ich denke, es ist ein Fehler. Mit freundlichen Grüßen,.
 
honest_knave:
Was ist mit Slippage?

Es istnicht nötig, auf Slippagezu achten, da der Auftrag bereits geschlossen wurde und der Schlusskurs auf HystoryDealGetDouble(ticket, DEAL_PRICE) steht.
Wenn der Auftrag nicht in der Nähe gewesen, und Sie machen einen Auftrag zu schließen, dann sollten Sie überlegen , wie viel Schlupf, so dass kein Fehler requotes.