Ich habe die Dokumentation gelesen, das Forum durchsucht... Völlig verwirrt. Wenn Sie nichts dagegen haben, erklären Sie es mir bitte in N+1 mal.
1. Ich sende eine Handelsanfrage mitOrderSend. Diese Funktion gibt true zurück.
Wir analysieren denRetcode (MqlTradeResult). Die Variable hat den WertTRADE_RETCODE_DONE.
Ist in dieser Situation die tatsächliche Auftragsausführung auf dem Server gewährleistet ? Oder müssen noch einige Prüfungen in OnTrade, OnTradeTransaction durchgeführt werden? Welchen Sinn hat es dann, denRetcode zu analysieren, wenn er keinen Nutzen hat?
D.h. die Notwendigkeit von OnTrade und OnTradeTransaction bei der Verwendung vonOrderSendAsync() ist für mich klar.
Sind sie notwendig, wenn die FunktionOrderSend() verwendet wird? Wartet er unbedingt auf die Ausführung/Ablehnung der Order auf dem Server, bevor er den nachfolgenden Code an den Expert Advisor sendet?
Werden sie bei der Verwendung vonOrderSend() benötigt? Wartet er unbedingt auf die Ausführung/Ablehnung des Auftrags auf dem Server, bevor er die Ausführung des nachfolgenden EA-Codes sendet?
Wenn ich mich nicht irre, wartetOrderSend nicht auf die Ausführung des Auftrags, sondern meldet nur, dass der Auftrag korrekt war und an den Server gesendet wurde.
Der Rückgabewert lautet
. Wenn die grundlegende Prüfung der Strukturen (Zeigerprüfung) erfolgreich ist, wird true zurückgegeben - dies bedeutet nicht, dass die Handelsoperation erfolgreich ausgeführt wurde. Um eine genauere Beschreibung des Ergebnisses der Funktionsausführung zu erhalten, analysieren Sie die Felder der Ergebnisstruktur.
voix_kas: Ich sende eine Handelsanfrage mitOrderSend. Diese Funktion gibt true zurück.
2. denRetcodeanalysieren(MqlTradeResult). Die Variable hat den WertTRADE_RETCODE_DONE.
Ist in dieser Situation die tatsächliche Ausführung eines Auftrags auf dem Server gewährleistet?
Retcode kann etwas anderes als RETCODE_DONE zurückgeben :). Aber wenn ein Handelsserver genauTRADE_RETCODE_DONE (Auftrag ausgeführt) zurückgibt, warum sollten wir dann noch etwas anderes prüfen? Meiner bescheidenen Meinung nach würden in dieser Situation die Funktionen OnTrade und OnTradeTransaction den Retcode einfach duplizieren.
Wenn ich mich nicht irre, wartet OrderSend nicht darauf, dass der Auftrag ausgeführt wird, sondern meldet nur, dass der Auftrag korrekt war und an den Warteschlangenserver gesendet wurde.
In diesem Fall hätte "wahr" allein ausgereicht. Die Entwickler haben jedoch einen Retcode bereitgestellt, derden "Trade ServerReturn Code" speichern soll.
D.h., nachdem die Funktion OrderSend() funktioniert , sehe ichTRADE_RETCODE_DONEin der zweiten Codezeileund versuche, z.B. eine gerade eröffnete Position (die logischerweise existieren sollte) in der dritten Codezeile zu ändern. PositionSelect gibt jedoch false zurück. Die Iteration wird wiederholt. Infolgedessen wird versehentlich eine doppelte Position geöffnet.
Wie können wir uns vor dieser Situation schützen?
1. Sich nur von Retcode leiten lassen undOnTrade"vergessen"?
2. Sich nur vonOnTrade leiten lassenund den Retcodevergessen?
Yedelkin: retcode kann nicht nur RETCODE_DONE zurückgeben :) Aber wenn ein Handelsserver genauTRADE_RETCODE_DONE zurückgibt(Auftrag ausgeführt), warum sollte ich dann noch etwas anderes prüfen? Meiner bescheidenen Meinung nach würden in dieser Situation die Funktionen OnTrade und OnTradeTransaction den Retcode einfach duplizieren.
Nach der Liste der"Trading Server Return Codes" zu urteilen, gibt es nur eine Unsicherheit, die im Ausführungsmodus der Marktanfrage möglich ist:TRADE_RETCODE_LOCKED. Und hier können wir vielleicht nicht ohne OnTrade auskommen.
Darf ich fragen, welche Verbindung Sie persönlich nutzen?
voix_kas: Nach der Liste der"Trade Server Return Codes" zu urteilen, gibt es nur eine Unsicherheit, die im Ausführungsmodus der Marktanfrage möglich ist:TRADE_RETCODE_LOCKED. Und hier können wir vielleicht nicht ohne OnTrade auskommen.
Darf ich fragen, welche Bindungen Sie persönlich benutzen?
Es gibt auch "Placed". Sie sind es (Placed/Done), die ich unter dem Gesichtspunkt des erfolgreichen Absendens der Anfrage prüfe.
voix_kas: Können Sie einen bestimmten Code nennen?
Nein, ich kann Ihnen keinen bestimmten Code nennen. Erstens ist es seit einem Jahr im Unterricht versiegelt, und zweitens muss man es suchen... Sie haben gefragt: Was für ein Bindemittel verwende ich? - Ich habe aufrichtig geantwortet.
Wie können Sie sich gegen eine solche Situation absichern?
1. Nur Retcode verwenden undOnTrade"vergessen"?
2. NurOnTrade und keinen Retcode verwenden?
Am zuverlässigsten ist es, OnTrade zu verfolgen, aber Sie können auch darauf verzichten - analysieren Sie die abgeschlossene Transaktion (ResultDeal()).
In Kürze wird es einen Artikel zu diesem Thema geben.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Sind die auszufüllenden Felder anders als
SYMBOL_HANDEL_AUSFUEHRUNG_AUSTAUSCH
Ausführung des Austauschs
unterscheiden sich von den Feldern bei
SYMBOL_HANDEL_AUSFUEHRUNG_MARKT
Ausführung von Aufträgen auf dem Markt
???
Hilfe hat ein Beispiel nur für den Markt
Marktausführung
Ein Handelsauftrag zur Eröffnung einer Position im Marktausführungsmodus (Marktausführungsmodus). Erfordert die Angabe von 5 Feldern:
Sie können auch magische und Kommentarfelder angeben.
Ich habe die Dokumentation gelesen, das Forum durchsucht... Völlig verwirrt. Wenn Sie nichts dagegen haben, erklären Sie es mir bitte in N+1 mal.
1. Ich sende eine Handelsanfrage mitOrderSend. Diese Funktion gibt true zurück.
Wir analysieren denRetcode (MqlTradeResult). Die Variable hat den WertTRADE_RETCODE_DONE.
Ist in dieser Situation die tatsächliche Auftragsausführung auf dem Server gewährleistet ? Oder müssen noch einige Prüfungen in OnTrade, OnTradeTransaction durchgeführt werden? Welchen Sinn hat es dann, denRetcode zu analysieren, wenn er keinen Nutzen hat?
D.h. die Notwendigkeit von OnTrade und OnTradeTransaction bei der Verwendung vonOrderSendAsync() ist für mich klar.
Sind sie notwendig, wenn die FunktionOrderSend() verwendet wird? Wartet er unbedingt auf die Ausführung/Ablehnung der Order auf dem Server, bevor er den nachfolgenden Code an den Expert Advisor sendet?
...
Werden sie bei der Verwendung vonOrderSend() benötigt? Wartet er unbedingt auf die Ausführung/Ablehnung des Auftrags auf dem Server, bevor er die Ausführung des nachfolgenden EA-Codes sendet?
Wenn ich mich nicht irre, wartetOrderSend nicht auf die Ausführung des Auftrags, sondern meldet nur, dass der Auftrag korrekt war und an den Server gesendet wurde.
. Wenn die grundlegende Prüfung der Strukturen (Zeigerprüfung) erfolgreich ist, wird true zurückgegeben - dies bedeutet nicht, dass die Handelsoperation erfolgreich ausgeführt wurde. Um eine genauere Beschreibung des Ergebnisses der Funktionsausführung zu erhalten, analysieren Sie die Felder der Ergebnisstruktur.
2. denRetcode analysieren(MqlTradeResult). Die Variable hat den WertTRADE_RETCODE_DONE.
Ist in dieser Situation die tatsächliche Ausführung eines Auftrags auf dem Server gewährleistet?
Wenn ich mich nicht irre, wartet OrderSend nicht darauf, dass der Auftrag ausgeführt wird, sondern meldet nur, dass der Auftrag korrekt war und an den Warteschlangenserver gesendet wurde.
In diesem Fall hätte "wahr" allein ausgereicht. Die Entwickler haben jedoch einen Retcode bereitgestellt, derden "Trade ServerReturn Code" speichern soll.
D.h., nachdem die Funktion OrderSend() funktioniert , sehe ichTRADE_RETCODE_DONE in der zweiten Codezeileund versuche, z.B. eine gerade eröffnete Position (die logischerweise existieren sollte) in der dritten Codezeile zu ändern. PositionSelect gibt jedoch false zurück. Die Iteration wird wiederholt. Infolgedessen wird versehentlich eine doppelte Position geöffnet.
Wie können wir uns vor dieser Situation schützen?
1. Sich nur von Retcode leiten lassen undOnTrade"vergessen"?
2. Sich nur vonOnTrade leiten lassenund den Retcodevergessen?
retcode kann nicht nur RETCODE_DONE zurückgeben :) Aber wenn ein Handelsserver genauTRADE_RETCODE_DONE zurückgibt(Auftrag ausgeführt), warum sollte ich dann noch etwas anderes prüfen? Meiner bescheidenen Meinung nach würden in dieser Situation die Funktionen OnTrade und OnTradeTransaction den Retcode einfach duplizieren.
Nach der Liste der"Trading Server Return Codes" zu urteilen, gibt es nur eine Unsicherheit, die im Ausführungsmodus der Marktanfrage möglich ist:TRADE_RETCODE_LOCKED. Und hier können wir vielleicht nicht ohne OnTrade auskommen.
Darf ich fragen, welche Verbindung Sie persönlich nutzen?
Darf ich fragen, welche Bindungen Sie persönlich benutzen?
Wie können Sie sich gegen eine solche Situation absichern?
1. Nur Retcode verwenden undOnTrade"vergessen"?
2. NurOnTrade und keinen Retcode verwenden?
Am zuverlässigsten ist es, OnTrade zu verfolgen, aber Sie können auch darauf verzichten - analysieren Sie die abgeschlossene Transaktion (ResultDeal()).
In Kürze wird es einen Artikel zu diesem Thema geben.