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
Hier sind die Log-Einträge einer Position, die durch einen ausgelösten Take Profit geschlossen wurde. Wie kann dies in OnTradeTransaction( const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) erkannt werden?
Weder der Rückgabewert von const MqlTradeResult& result (result.retcode) ist gesetzt (0 ist keine Option, TRADE_RETCODE_DONE = 10009) noch eine der IDs (Deal Ticket, Order Ticket, Request ID ), um sie zu finden, ohne jedes Mal eine Schleife durch alle Deals zu machen.
Dies ist der Druck in Zeile #376, der die relevanten(?) Flags ausgibt:
Und das ist, was ich im Journal lesen kann:
10:04:40 take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 deal #3 buy 0.01 EURUSD at 1.00171 done (based on order #3)
10:04:40 deal performed [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 order performed buy 0.01 at 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 373 New trade operation dTime1970.01.01 09:03:41
10:04:40 376 0 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_DEAL_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_STARTED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 489 MqlTradeTransaction: TRADE_TRANSACTION_DEAL_ADD deal #3 DEAL_TYPE_BUY EURUSD 0.01 lot
10:04:40 376 1 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 383 1 prc:trans.price=1.00171 tckt: 2 res.Ord:0 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdFill: ORDER_STATE_FILLED Tr.OrdType: ORDER_TYPE_BUY Tr.tckt:3 2 0 Res::0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
10:04:40 376 2 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_HISTORY_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
2022.09.26 14:08:33.755 disconnected
Das Terminal schreibt so schön "take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]"
Warum zum Teufel gibt es dann kein Flag wie TRADE_TRANSACTION_TRIGGERED_PT und TRADE_TRANSACTION_TRIGGERED_SL?
Und ist der Returncode der Anfrage immer nicht gesetzt?
Denis, ich danke Ihnen für den Artikel! Ich habe ihn mit Interesse gelesen, aber ich habe noch nicht ganz realisiert, was ich gelesen habe. Ich habe auch Ihren TradeProcessor Expert Advisor heruntergeladen und ihn auf meinem Terminal laufen lassen, wo ich derzeit eine offene Position habe. Ich habe mir die Ausdrucke angesehen und sofort sind einige Fragen aufgetaucht, auf die ich selbst Antworten finden möchte. Wenn ich das nicht schaffe, muss ich Sie bemühen. ))
Mit freundlichen Grüßen, Vladimir.
Mit freundlichen Grüßen, Vladimir.
Ich danke Ihnen für Ihre Meinung. Gern geschehen, MrBrooklin! ))
Ich danke Ihnen für Ihre Meinung. Gern geschehen, MrBrooklin! ))
Denis, sorry, aber ohne Ihre Hilfe "explodiert" mein Verstand. Hier ist das Ergebnis eines der Durchläufe deines EA (übrigens ein sehr cooler EA!!!):
Was ich nicht verstehe:
ENUM_DEAL_TYPE
Bezeichner
Beschreibung
DEAL_TYPE_BUY
Kaufen
Frage - wie wird beim Ändern einer schwebenden Order SELL_STOP die Transaktionsart auf BUY????? festgelegt? ))
Mit freundlichen Grüßen, Vladimir.
Und es findet keine Transaktion statt. Die Erteilung eines schwebenden Auftrags und seine Bearbeitung sind nicht mit einer Transaktion verbunden. Handelsticket = 0, Typ = 0, wobei 0 für die Aufzählung ENUM_DEAL_TYPE dem DEAL_TYPE_BUY entspricht. Das heißt, dass in der TransstrukturMqlTradeTransaction einige Felder ausgefüllt sind und andere nicht. Die nicht ausgefüllten Felder werden in der Regel nulled.
Weitere Einzelheiten: in der Dokumentation über schwebende Aufträge.
Das Feld "Deal" wird für eine Transaktion dieses Typs ausgefüllt:
TRADE_TRANSACTION_DEAL_*
Die folgenden Felder werden in der Struktur MqlTradeTransaction für Handelstransaktionen im Zusammenhang mit der Transaktionsverarbeitung (TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE und TRADE_TRANSACTION_DEAL_DELETE) ausgefüllt:
Nur 3 Arten von Transaktionen gehören zu den "Deal"-Typen: TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE, TRADE_TRANSACTION_DEAL_DELETE.
Und es findet keine Transaktion statt. Die Erteilung eines schwebenden Auftrags hat keine Transaktion zur Folge. Handelsticket = 0, Typ = 0, wobei 0 für die Aufzählung ENUM_DEAL_TYPE gleich bedeutend mit DEAL_TYPE_BUY ist. Das heißt, dass in der TransstrukturMqlTradeTransaction einige Felder ausgefüllt sind und andere nicht. Die nicht ausgefüllten Felder werden in der Regel auf Null gesetzt.
Weitere Einzelheiten: in der Dokumentation über schwebende Aufträge.
Ahhhh, das ist es!!! Mann, das hat mir den Kopf zerbrochen! ))
Vielen Dank!!!
Mit freundlichen Grüßen, Vladimir.