- Der Modus SELECT_BY_TICKET benötigt keine Poolangabe (siehe nach F1 in der Referenz des Editors!)
- Wenn das Ticket existiert, egal in welchem Pool, ist OrderSelect() immer true!
- Vielleicht ist Ticket falsch?
- Der Modus SELECT_BY_TICKET benötigt keine Poolangabe (siehe nach F1 in der Referenz des Editors!)
- Wenn das Ticket existiert, egal in welchem Pool, ist OrderSelect() immer true!
- Vielleicht ist Ticket falsch?
Danke für die Antwort.
Wenn es keine Poolangabe benötigt, wofür kann ich sie dann machen? Nur so ein Gedanke...
Das Ticket ist richtig. Abgesehen davon - wie kann ich dann abfragen, ob die Order noch offen oder bereits geschlossen ist?
Da die OrderCloseTime() auch nicht 0 zurückgibt, wie sie eigentlich sollte, habe ich nun eine etwas unschöne Abfrage, mit der es funktioniert:
if(OrderSelect(ticket, SELECT_BY_TICKET) && ( (OrderClosePrice() != OrderStopLoss()) && (OrderClosePrice() != OrderTakeProfit()) && (OrderClosePrice() != OrderOpenPrice())) ) { // Close Order... }
Geht das irgendwie kürzer oder "schöner"?
- OrderSelect() kann direkt mit dem Ticket eine Order auswählen (egal wo) oder über eine Laufnummer in einer Schleife, dafür muss man dann den Pool angeben: History oder Offen.
- Warum nimmst Du nicht das Beispiel aus der Referenz (Kursor auf OrderCloseTime() & F1):
//original: if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)==true) // org if(OrderSelect(ticket,SELECT_BY_TICKET)==true) // für Dich :) { datetime ctm=OrderOpenTime(); if(ctm>0) Print("Open time for the order 10 ", ctm); ctm=OrderCloseTime(); if(ctm>0) Print("Close time for the order 10 ", ctm); else { ... } } else Print("OrderSelect failed error code is",GetLastError());
Danke für die Antwort.
Wenn es keine Poolangabe benötigt, wofür kann ich sie dann machen? Nur so ein Gedanke...
Das Ticket ist richtig. Abgesehen davon - wie kann ich dann abfragen, ob die Order noch offen oder bereits geschlossen ist?
Da die OrderCloseTime() auch nicht 0 zurückgibt, wie sie eigentlich sollte, habe ich nun eine etwas unschöne Abfrage, mit der es funktioniert:
Geht das irgendwie kürzer oder "schöner"?
Hallo Susi , ich hoffe du schreibst in MQL5.
Schöner getht es wenn du die Server Ereignisse die per OnTradeTransaction() zurückkommen selber auswertest.
So weißt wann die Order ausgeführt wurde weil dann OnTradeTransaction() angelaufen wird.
Es ist ein wenig mehr Aufwand am Anfang aber so hast du vollen Zugriff auf das Trade-Management zwischen MT5 und dem Trade-Server
Kurz gesagt wird jedes mal wenn sich der Status eines Order ändert ( akzeptiert vom Server, Ausgeführt,geändert,closed,) wird OnTradeTransaction() angelaufen .
Hier ein Artikel dazu -> https://www.mql5.com/de/articles/40
https://www.mql5.com/de/docs/basis/function/events
Gruß Christian
![Handels-Ereignisse im Expert Advisor mit Hilfe der OnTrade() Funktion bearbeiten Handels-Ereignisse im Expert Advisor mit Hilfe der OnTrade() Funktion bearbeiten](https://c.mql5.com/36/15/handels-ereignisse-im-expert-advisor.png)
- 2016.01.11
- KlimMalgin
- www.mql5.com
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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.
Liebe Community,
ich hoffe Ihr könnt mir bei meinem Problem helfen.
Ich möchte prüfen, ob meine ausgelöste Pending Order zwischenzeitlich geschlossen wurde.
Ich dachte dabei an
Diese Abfrage liefert mir ein true zurück. Allerdings auch, wenn der Order noch aktiv ist, also bei Status ORDER_BUY/ORDER_SELL - somit liefert die Abfrage ein falsches Ergebnis.
Versuche ich es nun mit der gleichen Abfrage nur jedoch mit MODE_TRADES, bekomme ich auch ein true.
Das heißt, OrderSelect liefert sowohl mit MODE_HISTORY als auch mit MODE_TRADES ein true. Gleiche Uhrzeit, gleiches Ticket - habe ich hier etwas falsch verstanden, oder gibt es noch einen anderen Weg, abzufragen, ob eine Order geschlossen wurde?
Frage OrderCloseTime ab , wie es in der Doku steht, dann komme ich auch auf keinen grünen Zweig.
Auch diese Abfrage gibt beim laufenden Order ein true zurück. Print OrderCloseTime ergibt 01.01.1970 - was ja eigentlich 0 ist, aber scheinbar ist es doch nicht 0 ?!?
Weiß hier jemand Rat?