Fragen zu OrderSend() - Seite 7

 

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:

  • Aktion
  • Symbol
  • Band
  • Typ
  • Typ_Füllung

Sie können auch magische und Kommentarfelder angeben.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

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?

 
voix_kas:

...

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. 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?

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.
 
fyords:

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?

 
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?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
 
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.
 
Können Sie einen bestimmten Code nennen?
 
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.
 
voix_kas:

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.