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
Leider nur durch eine Krücke - eine globale Variable des Terminals.
Und durch zusätzliche Krücken, um sicherzustellen, dass die Hauptvariable z. B. im Falle eines Absturzes gelöscht wird.
So ist meine Variante mit dem Warten auf eine Transaktion in der Historie zuverlässiger und einfacher. Aber es ist immer noch eine Krücke.
Ich habe es nicht überprüft, aber vielleicht erhalten ALLE EAs nach OrderSend ein entsprechendes Ereignis fürOnTradeTransaction.
Dann ist alles ohne Krücken und für mehrere EAs auf demselben Symbol gelöst.
Möchten Sie, dass ich Ihnen helfe, diese Pannen zu umgehen (aus persönlicher Erfahrung beim Handel mit MT5-Robotern auf einem echten Konto)?
Hinzugefügt
Völlig kostenlos :)
Die Menschen wollen nicht selbst denken, sie wollen, dass andere es für sie tun... Das ist leider wahr.
Die Menschen denken nicht nur nach, sondern teilen auch ihre Lösungen. Leider schweigen die Entwickler dazu.
In der Dokumentation findet sich kein einziges Beispiel zu diesem Thema. Und das ist nur die Hauptfunktion.
Ich unterstütze. Wenn irgendwo geschrieben stünde, dass OrderSend() auf eine Antwort vom Server wartet und was dann passiert, bräuchte man sich keine Workarounds einfallen zu lassen, um das zu überprüfen.
Es gibt einen ausgezeichneten Artikel über Aufträge, Geschäfte und Positionen und die Arbeit mit ihnen und ihrem Cache, in dem alles genau beschrieben wird. Sie umgeht jedoch vollständig die Prozesse, die bei der Übermittlung von Bestellungen selbst ablaufen.
Mein Vorschlag
Verwenden Sie es.
Und was passiert, wenn das Ereignis OnTrade() ausgelöst wird, bevor die Verarbeitung von OnTick() abgeschlossen ist? Manchmal ist die Zeit von entscheidender Bedeutung. Es kann problematisch sein, zu warten, bis das Ereignis OnTrade() eintritt. Außerdem ist die Funktion OrderSend() selbst so konzipiert, dass ich Informationen über ihre Ergebnisse direkt an Ort und Stelle erhalten kann. Oder ist es nicht so?
OrderSend() ist eine absolut synchrone Funktion - wenn ein Ticket empfangen wird, wird alles ausgeführt.
Nachstehend ein Beispiel
Hinzugefügt, und hier sind die Protokolle
https://www.mql5.com/ru/forum/38456/page85#comment_2888263
Wird nicht ausgeführt, sondern an den MT5-Server gesendet.
Nein. Für die Börse - ging an die Börse (kann nicht erfüllt haben :) ), für FOREX Ich weiß es nicht
Hinzugefügt
D.h. (für die Börse), wenn Sie in der Funktion OrderSend(() ein Ticket erhalten, bedeutet dies, dass der Auftrag von der Börse angenommen wurde
Hinzugefügt
Siehe Abbildung (1375 gab es Änderungen)
Dies ist ein Sonderfall der Übermittlung eines Limitauftrags an eine Börse. Was ist mit einer Marktorder im Devisenhandel?
Nicht ein einziges Mal in diesem Thread. Nur über MT5 und OrderSend-Synchronität.
Die Antwort passt also nicht.
Nein. Für Exchange - ging zu Exchange (vielleicht nicht erfüllt :) ), für FOREX ich weiß es nicht
Hinzugefügt
D.h. (für die Börse), wenn Sie in derFunktion OrderSend(() ein Ticket erhalten, bedeutet dies, dass der Auftrag von der Börse angenommen wurde
Hinzugefügt
Siehe Abbildung (1375 gab es Änderungen)