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
Während wir auf einen Artikel zu diesem Thema warten, frage ich mich, ob ich das allgemeine Konzept der Analyse von Handelsgeschäften richtig verstehe.
D.h. grob gesagt, nach dem Senden einer Order ohne Analyse des Retcodes verbieten wir die Handelsoperationen in der Arbeitsschleife (OnTick()) mit dem "AllowTrade"-Flag.
Das Handelsverbot wird in OnTrade() erst dann aufgehoben, wenn die Auftragsnummer gefunden wurde und eine Analyse ihres Schicksals durchgeführt wurde.
Wir haben zwei Fragen:
1. Welches ist das in OnTrade zu prüfende Auftragsticket? Welche Status sind während seiner Lebensdauer endgültig?
2. Ich weiß, dass die Warteschlange der Tick-Ereignisse (OnTick) "abfallen" kann. D.h. wenn ein anderes Tick-Ereignis eintrifft und die OnTick-Funktion (vom vorherigen Tick) ihre Arbeit noch nicht beendet hat, wird das aktuelle Ereignis "fallen gelassen", d.h. es wird nicht verarbeitet. Gibt es einen ähnlichen Ansatz bei Handelsereignissen (OnTrade)? D.h., ist es möglich, dass ich z.B. in der Hauptschleife ein Handelsverbot ausspreche und das OnTrade-Ereignis für den gerade gesendeten Auftrag "ausfällt", weil ich im Moment seines Eintreffens noch etwas im selben Tick wie das Senden des entsprechenden Handelsauftrags verarbeite?
Ich habe mich noch nicht mit diesem Thema befasst, aber im Handbuch steht Folgendes:
Ich habe mich noch nicht mit diesem Thema befasst, aber im Handbuch steht Folgendes:
Generell verstanden. Wiepapaklass bereits angedeutet und in dem Artikelhttps://www.mql5.com/ru/articles/232 gesagt hat:
Es gibtnur eine garantierte Methode, um herauszufinden, was sich auf einem Handelskonto genau geändert hat. Auf diese Weise wird der Stand des Handels und der Handelsgeschichte gespeichert und der neue Stand mit dem gespeicherten verglichen.
Ein weiterer Serviceblock im Expert Advisor. :(
Die Frage ist eigentlich die folgende. Kann man den Code verkleinern, ohne alle Variablen (Aufträge/Geschäfte/Positionen) zu analysieren, und sich nur auf die aus dem OrderSend-Ergebnis erhaltene Auftragsnummer konzentrieren? Oder ist diese Zahl vielleicht nicht einmalig bzw. nicht in der Historie enthalten?
Ja, natürlich. Wenn ein Handelsauftrag zum Erhalt eines Auftragstickets geführt hat, dann ist dieses Ticket eindeutig und das gesamte Schicksal des Auftrags kann anhand dieses Tickets nachvollzogen werden.
Hier können Sie sehen, wie das Auftragsticket in der Historie verwendet wird: MQL5 Referenz / Handelsfunktionen / HistoryOrderGetInteger
Ja, natürlich. Wenn eine Handelsanfrage zu einem Auftragsticket geführt hat, dann ist dieses Ticket eindeutig und kann verwendet werden, um das gesamte Schicksal des Auftrags zu verfolgen.
Eine Variable vom Typ MqlTradeResult wird normalerweise auf Null gesetzt, bevor sie verwendet wird. Das Feld "Ergebnis.Auftrag" enthält also den Wert Null. Ich habe noch nie gesehen, dass dieses Feld nach dem erfolglosen Senden einer Handelsanfrage einen anderen Wert annimmt.
voix_kas: Если не возражаете, хотелось бы углубиться в вопрос интерпритации кодов возврата. Из 30 задекларированных вариантов ответа (будем надеятся, что с недекларированными мы не столкнёмся) 24 - указывают на явный отказ в размещении ордера. Остальные 6:
1 TRADE_RETCODE_PLACED Keine schwebenden Aufträge vorausgesetzt. Ist diese Antwort während des Markthandels möglich (SYMBOL_TRADE_EXECUTION_MARKET)?
TRADE_RETCODE_DONE Es kann nichts weiter geprüft werden. Alles lief genau so, wie es der Expert Advisor verlangt hatte.
3. TRADE_RETCODE_DONE_PARTIAL Ich gehe davon aus, dass diese Antwort dieselbe ist wie TRADE_RETCODE_DONE angesichts des Modus ORDER_FILLING_IOC.
4. TRADE_RETCODE_ORDER_CHANGED Bedeutet dies eine eindeutige Ablehnung unseres Handelsauftrags?
5. TRADE_RETCODE_LOCKED Ich denke, dies ist der schlimmste Fall. Was sollten wir in diesem Fall tun? Ich vermute, dass die Bestellnummer noch nicht verfügbar ist. Die Handelsströme sind rege. Wir können keinen Handel treiben, und es ist nicht klar, woher wir wissen sollen, ob der Handelsfluss freigegeben ist.
6. TRADE_RETCODE_FROZEN Bedeutet dies eine eindeutige Ablehnung unseres Handelsauftrags?
Bitte kommentieren Sie die einzelnen Punkte.
Leider reichen meine Kenntnisse nicht aus, um auf jeden einzelnen Punkt einzugehen. Nun, wenn etwas passiert, werden meine Kollegen es korrigieren.
1. Im Forum wurde einmal eine Situation erwähnt, in der ein Handelskonto bei einem Untermakler eröffnet werden kann. In diesem Fall kann der Untermakler den Geschäftsauftrag zur weiteren Bearbeitung (an den Makler) senden und TRADE_RETCODE_PLACED an das Kundenterminal senden. Es ist nicht bekannt, ob der Makler eine solche Handelsanfrage letztendlich bearbeiten wird.
2. Ja, das denke ich auch. Das Einzige, was wir uns merken sollten, ist, dass die Informationen über diesen Auftrag asynchron in der Terminaldatenbank eingehen.
Ich denke, es geht um die teilweise Ausführung eines Handelsauftrags in den Modi ORDER_FILLING_IOC und ORDER_FILLING_RETURN.
4. https://www.mql5.com/ru/forum/1111/page124#comment_18407
5. Ich weiß absolut nichts über diesen Code. Es stellt sich heraus, dass die Anfrage aus internen Gründen des Brokers nicht bearbeitet wurde. Ob es später bearbeitet wird, ist nicht klar. Ich selbst setze diesen Code mit der Ablehnung eines Handelsantrags gleich.
6. https://www.mql5.com/ru/forum/1111/page123#comment_18372
...und allgemein - versuchen Sie eine Stichwortsuche im Forum. Sie können viele weitere Informationen finden :)
Leider verfüge ich nicht über genügend Wissen, um mich zu jedem einzelnen Punkt ausführlich zu äußern. Nun, wenn überhaupt, werden die Kollegen dies korrigieren.
1. Im Forum wurde einmal eine Situation erwähnt, in der ein Handelskonto bei einem Untermakler eröffnet werden kann. In diesem Fall kann der Untermakler den Geschäftsauftrag zur weiteren Bearbeitung (an den Makler) senden und TRADE_RETCODE_PLACED an das Kundenterminal senden. Es ist nicht bekannt, ob der Makler eine solche Handelsanfrage letztendlich bearbeiten wird.
2. Ja, das denke ich auch. Das Einzige, was wir uns merken sollten, ist, dass die Informationen über diesen Auftrag asynchron in der Terminaldatenbank eingehen.
Ich denke, es geht um die teilweise Ausführung eines Handelsauftrags in den Modi ORDER_FILLING_IOC und ORDER_FILLING_RETURN.
4. https://www.mql5.com/ru/forum/1111/page124#comment_18407
5. Ich weiß absolut nichts über diesen Code. Es stellt sich heraus, dass die Anfrage aus internen Gründen des Brokers nicht bearbeitet wurde. Ob es später bearbeitet wird, ist nicht klar. Ich selbst setze diesen Code mit der Ablehnung eines Handelsantrags gleich.
6. https://www.mql5.com/ru/forum/1111/page123#comment_18372
...und allgemein - versuchen Sie eine Stichwortsuche im Forum. Hier finden Sie viele weitere Informationen :).
Hier haben wir folgendes: 26 von 30 Codes (einschließlich TRADE_RETCODE_ORDER_CHANGED und TRADE_RETCODE_FROZEN) bedeuten eine ausdrückliche Ablehnung des Antrags (es wird kein Auftrag erzeugt).
TRADE_RETCODE_DONE und TRADE_RETCODE_DONE_PARTIAL - garantiert erstellter Auftrag.
Es stellt sich die Frage, wie man TRADE_RETCODE_PLACED (nicht schwebend) und TRADE_RETCODE_LOCKED korrekt ausführt. Kommentare von MQ zu diesen beiden Codes sind erwünscht.