![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Dies sollte klargestellt werden:
TRADE_RETCODE_PLACED für OrderSend ist die Serverantwort.
TRADE_RETCODE_PLACED für OrderSendAsync ist eine Terminalantwort.
Obwohl die Codes identisch sind, haben sie eine ganz andere Bedeutung. Die Entwickler werden diese Unklarheit höchstwahrscheinlich beheben.
Deshalb sollten Sie es verstehen:
muss in dem entsprechenden Kontext verstanden werden.
OrderSend kann eine Antwort sowohl vom Server als auch vom Terminal erhalten (falls die Terminalfilter versagen).
OrderSendAsync erhält immer nur eine Antwort vom Terminal. Um eine Antwort vom Server zu erhalten, müssen Sie entsprechende Ereignisse in onTrade abfangen.
OrderSend kann eine Antwort sowohl vom Server als auch vom Terminal erhalten (falls die Terminalfilter versagen).
Verstehe ich die folgende Idee richtig?
Das Terminal hat die Anforderung von OrderSend geprüft und erfolgreich an den Server gesendet, wobei der Retcode einen Zwischenwert von TRADE_RETCODE_PLACED erhalten hat. An diesem Punkt wird die Verbindung unterbrochen, und alles, was OrderSend zurückgeben kann, ist der Code TRADE_RETCODE_PLACED, der im Feld retcode? Wird dies das Beispiel sein, bei dem OrderSend TRADE_RETCODE_PLACED zurückgibt?
Habe ich die folgende Idee richtig verstanden:
Das Terminal hat die Anfrage von OrderSend geprüft und erfolgreich an den Server gesendet, wobei der Retcode den Zwischenwert TRADE_RETCODE_PLACED erhielt. An diesem Punkt wird die Verbindung unterbrochen, und alles, was OrderSend zurückgeben kann, ist der Code TRADE_RETCODE_PLACED, der im Feld retcode? Wird dies das Beispiel sein, wenn OrderSend TRADE_RETCODE_PLACED zurückgibt?
Vielleicht ja, aber ich bezweifle es. Höchstwahrscheinlich wäre es TRADE_RETCODE_TIMEOUT über TimeOut-time für eine solche Unterbrechung der Kommunikation.
Ehrlich gesagt, verstehe ich nicht, wozu dieses Nerfing im Falle von OrderSend dienen soll. Vielleicht werden die Entwickler in der Hilfe mehr dazu sagen.
P.S. Ich habe nicht eine einzige Zeile in MQL5 geschrieben. Daher können alle meine Gedanken zu diesem Thema ignoriert werden.
...Trotzdem ist das Unsinn. Im Client-Terminal-Benutzerhandbuch (Januar 2012) heißt es, dass eine der Bestellstufen die Stufe "Set(placed) - Händler akzeptiert Bestellung" ist.
D.h. laut Handbuch signalisiert der Auftrag das Lebensstadium einer Handelsanfrage, wenn er den Server bereits erfolgreich erreicht hat. Und die Beschreibung der Funktion OrderSendAsync() besagt genau das Gegenteil: Der Code TRADE_RETCODE_PLACED hängt nicht von der Ankunft auf dem Server ab.
Ehrlich gesagt, sehe ich nicht, warum diese Nerdigkeit im Fall von OrderSend notwendig ist.
Im Allgemeinen kann jeder einen seriellen MyOrderSend über OrderSendAsync schreiben:
Mit dieser Implementierung ist MyOrderSend völlig identisch mit dem regulären OrderSend (der einfach aus der API entfernt werden kann, indem er über OrderSendAsync in der regulären Bibliothek implementiert wird).
Mit dieser Implementierung ist MyOrderSend völlig identisch mit dem regulären OrderSend (das einfach aus der API entfernt werden kann, indem OrderSendAsync in der regulären Bibliothek implementiert wird).
Im Allgemeinen ist die OrderSendAsync-Eingabe ein historisches Ereignis für Metatrader. In der ganzen Zeit, in der es die Handels-API gibt (beginnend mit Metatrader3 (frühere Versionen habe ich nicht gesehen)) Metatrader wurde zwar in einer eigenen Sprache implementiert, ist aber im Kern nahezu unverändert geblieben. OrderSendAsync ist die erste wesentliche Änderung an der Handels-API von Metaquotes.
Ich gratuliere den Entwicklern aufrichtig zu diesem Ereignis und wünsche mir, dass das asynchrone Modell eine angemessene Funktionalität erhält!
Technische Meldung. Sammlung interessanter Aussagen in einem Thread.
Beachten Sie, dass die Anzahl der gleichzeitigen Aufträge eines Kontos in der Ausführungswarteschlange begrenzt ist und auch in Zukunft sein wird. Im Moment sind es 16 Anträge, wenn ich mich nicht irre.
Asynchrone Vorgänge arbeiten sorgfältig mit dem "Fenster für die Anzahl der zulässigen Aufträge" und warten, bis ein Teil des vorherigen Stapels ausgeführt wurde, bevor sie den nächsten Stapel senden. Darüber hinaus wird es einen Schutz gegen dumme Überschwemmungen/Testfluten geben. Bislang wird ein Fehler angezeigt, wenn die Anzahl der zulässigen Anwendungen überschritten wird.
Die neue Methode der asynchronen Operationen durch OrderSendAsync löst das Hauptproblem - sie ermöglicht es, ein Dutzend von Operationen sofort durchzuführen. Dies ist ein sehr mächtiges Instrument, das mit Bedacht und immer mit Blick auf die Möglichkeit einer Sperre durch den Server und den Broker eingesetzt werden sollte.