Hallo,
ich möchte gerne die seinerzeitigen SL und TP Kurse abfragen welche bei Eröffnung hinterlegt wurden.
So siehts momentan aus
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
string test=HistoryDealGetInteger(trans.deal,DEAL_TICKET)+";"
+HistoryDealGetInteger(trans.deal,DEAL_ORDER)+";"
+(datetime)HistoryDealGetInteger(trans.deal,DEAL_TIME)+";"
+(ENUM_DEAL_TYPE)HistoryDealGetInteger(trans.deal,DEAL_TYPE)+";"
+(ENUM_DEAL_ENTRY)HistoryDealGetInteger(trans.deal,DEAL_ENTRY)+";"
+HistoryDealGetInteger(trans.deal,DEAL_MAGIC)+";"
+(ENUM_DEAL_REASON)HistoryDealGetInteger(trans.deal,DEAL_REASON)+";"
+HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID)+";"
+HistoryDealGetDouble(trans.deal,DEAL_VOLUME)+";"
+HistoryDealGetDouble(trans.deal,DEAL_PRICE)+";"
+HistoryDealGetDouble(trans.deal,DEAL_COMMISSION)+";"
+HistoryDealGetDouble(trans.deal,DEAL_SWAP)+";"
+HistoryDealGetDouble(trans.deal,DEAL_FEE)+";"
+HistoryDealGetDouble(trans.deal,DEAL_TP)+";"
+HistoryDealGetDouble(trans.deal,DEAL_PROFIT)+";"
+HistoryDealGetString(trans.deal,DEAL_SYMBOL)+";"
+HistoryDealGetString(trans.deal,DEAL_COMMENT)+";"
+HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID)+";"
+HistoryOrderGetDouble(trans.deal,ORDER_SL)+";"
+HistoryOrderGetDouble(trans.deal,ORDER_TP);
}
Print(string);
Auf diesem Wege erhalte ich alles, bis auf genau diese Werte (diese sind immer 0.00) - ich habe das ganze auch einmal mit "trans.order" versucht, das Ergebnis ist das gleiche. Was mache ich hier falsch?
Ein deal hat keinen sl und tp, ein deal ist ein deal
du musst die order oder die position abfragen
Ein deal hat keinen sl und tp, ein deal ist ein deal
du musst die order oder die position abfragen
Wie bekomme ich den beim auslösen einer aktion " OnTradeTransaction " die gewünschte Info über den ursprünglichen SL/TP?
- www.mql5.com
Ok, verstehe, aber machen ich das nicht genau damit " HistoryOrderGetDouble(trans.deal,ORDER_SL) "
Wie bekomme ich den beim auslösen einer aktion " OnTradeTransaction " die gewünschte Info über den ursprünglichen SL/TP?
der Order SL ist der SL der Order, der Preis des Deals der ausgeführte
Ok, verstehe, aber machen ich das nicht genau damit " HistoryOrderGetDouble(trans.deal,ORDER_SL) "
Wie bekomme ich den beim auslösen einer aktion " OnTradeTransaction " die gewünschte Info über den ursprünglichen SL/TP?
Achso ok, ich blicke da noch nicht ganz so durch. Wenn ich das richtig sehe gibt es aber keine Funktion HistroyPosition... - wie bekomme ich den aber in der Function " OnTradeTransaction " die damaligen SL/TP-Kurse die bei den einzelnen Positionen vorlagen?
Achso ok, ich blicke da noch nicht ganz so durch. Wenn ich das richtig sehe gibt es aber keine Funktion HistroyPosition... - wie bekomme ich den aber in der Function " OnTradeTransaction " die damaligen SL/TP-Kurse die bei den einzelnen Positionen vorlagen?
Hier ist eine Liste aller Funktionen, da kann man auch mit Ctfl+F nach Schlüsselwörtern suchen, wenn man nicht weiß, wie die Funktion in MQL5 heißt:
https://www.mql5.com/de/docs/function_indices.
HistroyPosition gibt es in der Tat nicht, dann musst Du mit den Deals arbeiten und die entsprechenden Deal auswählen mit die "Eigenschaften der Deals", DEAL_ENTRY_OUT ist das Schließen einer offenen Position.
- www.mql5.com
Also verstehe ich das richtig,
bei Aufruf von "OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)"
erhalte ich in
"trans.order" = Ticket der Order
"trans.deal" = Ticket des Deals
Sodann könnte ich das doch mit PositionSelectByTicket "PositionSelectByTicket" machen?
HIerzu jedoch auch die Frage mit welchem "Ticket" der Aufruf von PositionSelectByTicket erfolgt, eigentlich ist da ja eine (eigene?) Ticketnummer vorgesehen. Woher bekomme ich nun diese wenn ich vorher nur die Daten aus trans.ordr bzw. trans.deal habe?
Wäre prima wenn mir das jemand kurz anhand der Situation erläutern könnte, da ich die Zusammenhänge auch nach Blick in die Dokus noch nicht wirklich richtig zusammen bekomme.
ich schaue mir das Beispiel dort nochmals genau an.
Dennoch wäre ich dankbar, wenn mir jemand den Zusammenhang der TicketID über Order, Deal und Positionen erläutern könnte, damit ich verstehe wie ich am Ende an die gewünschte Info komme!?
Ticket ist die Referenz oder ID die der Broker bzw. sein Server für jeden Handelseintrag vergibt - die Magic-Nr. ist Deine ID. Es ist ein bisschen umständlich bei einem Deal (zB. teilweises Schließen einer Position) das ursprüngliche Ticket abzufragen, aber es geht.
Die Beziehung der drei Order, Deal Position ist hier erklärt: https://www.mql5.com/de/articles/211 // Orders, Positions und Abschlüsse in MetaTrader 5
- www.mql5.com
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
ich möchte gerne die seinerzeitigen SL und TP Kurse abfragen welche bei Eröffnung hinterlegt wurden.
So siehts momentan aus
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
string test=HistoryDealGetInteger(trans.deal,DEAL_TICKET)+";"
+HistoryDealGetInteger(trans.deal,DEAL_ORDER)+";"
+(datetime)HistoryDealGetInteger(trans.deal,DEAL_TIME)+";"
+(ENUM_DEAL_TYPE)HistoryDealGetInteger(trans.deal,DEAL_TYPE)+";"
+(ENUM_DEAL_ENTRY)HistoryDealGetInteger(trans.deal,DEAL_ENTRY)+";"
+HistoryDealGetInteger(trans.deal,DEAL_MAGIC)+";"
+(ENUM_DEAL_REASON)HistoryDealGetInteger(trans.deal,DEAL_REASON)+";"
+HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID)+";"
+HistoryDealGetDouble(trans.deal,DEAL_VOLUME)+";"
+HistoryDealGetDouble(trans.deal,DEAL_PRICE)+";"
+HistoryDealGetDouble(trans.deal,DEAL_COMMISSION)+";"
+HistoryDealGetDouble(trans.deal,DEAL_SWAP)+";"
+HistoryDealGetDouble(trans.deal,DEAL_FEE)+";"
+HistoryDealGetDouble(trans.deal,DEAL_TP)+";"
+HistoryDealGetDouble(trans.deal,DEAL_PROFIT)+";"
+HistoryDealGetString(trans.deal,DEAL_SYMBOL)+";"
+HistoryDealGetString(trans.deal,DEAL_COMMENT)+";"
+HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID)+";"
+HistoryOrderGetDouble(trans.deal,ORDER_SL)+";"
+HistoryOrderGetDouble(trans.deal,ORDER_TP);
}
Print(string);
Auf diesem Wege erhalte ich alles, bis auf genau diese Werte (diese sind immer 0.00) - ich habe das ganze auch einmal mit "trans.order" versucht, das Ergebnis ist das gleiche. Was mache ich hier falsch?