Funktion OrderSendAsync() - Seite 5

 
Urain:

Wenn Ihr Vorschlag nur eine bestehende Funktion ergänzen würde, dann nicht, ansonsten ist es nicht klar, wie eine einfache MqlPacketTradeRequest-Struktur ...

... Wenn die MqlPacketTradeRequest-Struktur die Struktur eines dynamischen Arrays von MqlTradeRequest-Strukturen ist, kann sie die gesamte Logik des Servers, der mit einfachen Abfragestrukturen überflutet wird, zerstören.

Andernfalls müssten wir dieses Paket auf der Terminalebene in separate Anfragen aufteilen, was den Sinn der Einführung dieser Überlastung zunichte machen würde.

Es scheint, dass wir uns auf eine solche Variante wegen der asynchronen Struktur "geeinigt" haben:

bool  OrderSendAsync(
   MqlPacketTradeRequest&  packet_request,      // пакетная структура запроса
   );

Wo,

packet_request wird unter anderem ein Array von MqlTradeRequest-Strukturen enthalten...

Dann sind all diese Gedanken ein Stoff für Diskussionen :-)

 
Urain:

IMHO wird ein Stapel identischer Anwendungen nur zu Demonstrationszwecken benötigt, für die Arbeit werden Anwendungen mit unterschiedlichen Symbolen, mit unterschiedlichem Volumen und natürlich unterschiedlichen Richtungen verwendet. Daher muss jeder Antrag einzeln geprüft werden, so dass es keinen Sinn macht, sie in einem Stapel zu versenden.

Nun, hier müssen Sie wählen: einmaliger Start der Funktion OrderSendPacketAsync(MqTradeRequest& request[], MqlPacketTradeResult& packet_result), die ein vorgefülltes Array request[] mit jeweils 500 Elementen sendet , mit einmaliger Prüfung von Rückgabecode 10008, oder ein 500-maliger Start der Funktion OrderSendAsync() mit einer 500-maligen Überprüfung des Rückgabecodes 10008.
Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Urain:

...wenn die MqlPacketTradeRequest-Struktur die Struktur eines dynamischen Arrays von MqlTradeRequest-Strukturen ist, kann dies die gesamte Logik des Servers, der für einfache Abfragestrukturen konzipiert ist, zerstören.

Wie kann eine Handelsanfrage mit einem dynamischen Array "die Logik des Servers brechen"? Wenn ich einen Block habe, der eine Variable eines bestimmten Strukturtyps verarbeitet, was hindert mich dann daran, diesen Block auf jedes Element eines Arrays desselben Typs anzuwenden? Ähnlich, wenn heutzutage ein Server "auf einfache Abfragestrukturen ausgerichtet" ist, was hindert mich daran, eine Schleife hinzuzufügen, die, wenn ein Server ein dynamisches Array akzeptiert, das von der Funktion OrderSendPacketAsync() gesendet wird, es ermöglicht, der Reihe nach einen Block "ausgerichtet auf einfache Abfragestrukturen" auf jedes Element eines solchen Arrays anzuwenden?
 
papaklass:

Meiner Meinung nach sollte die Funktion OrderSendAsync() parametrisiert werden, anstatt eine Schleife für das Senden von Bestellungen zu erstellen. Zum Beispiel OrderSendAsync(Symbol(), Nummer, Richtung). Als Parameter: - Symbol, - Anzahlder Aufträge, - Richtung der Aufträge (Kauf, Verkauf).

Dies ist vergleichbar mit einem Sonderfall des Versendens einer Massenhandelsanfrage unter Verwendung eines dynamischen Arrays und der Funktion OrderSendPacketAsync(), wenn die Felder"Symbol" und "Typ" fürjedes Element des dynamischen Arrays gleich sind.
 

Bei asynchronen Geschäften wissen wir nicht genau, wie eine bestimmte Anfrage ausgelöst wurde. Insbesondere wissen wir nicht, wie viel Volumen ausstand, als eine der asynchronen Anfragen teilweise ausgeführt wurde.

Können Sie mir bitte sagen, ob ich es richtig verstehe, dass sowohl im Devisenhandel als auch im Aktienhandel der Auftrag aus der Historie Eigenschaft

AUFTRAG_VOLUMEN_AKTUELL

Ungefülltes Volumen

ermöglicht es uns, eindeutig zu bestimmen, wie vollständig eine asynchrone Anfrage ausgeführt wurde? Ist es richtig, dass, wenn ein Marktauftrag asynchron auf dem Devisenmarkt gesendet wird und in der Historie erscheint, wir sicher sein können, dass, wenn ORDER_VOLUME_CURRENT==0.0, der Auftrag vollständig ausgeführt wurde, aber wenn ORDER_VOLUME_CURRENT einen Wert ungleich Null enthält, dann sollte dieser Wert als das nicht ausgeführte Volumen für diesen Devisenmarktauftrag betrachtet werden?

Die Frage ergibt sich aus der Tatsache, dass hier: https://www.mql5.com/ru/forum/3775/page28#comment_84851 betont wird, dass sich die Eigenschaft ORDER_VOLUME_CURRENT auf Aufträge bezieht, die an der Börse verwendet werden.

 

Frage bezüglich der asynchronen Anfrage, die in der Historie erscheint.

Wenn OrderSendAsync() den Wert true zurückgibt und das Feld result.retcode den Wert 10008 enthält, bedeutet dies laut der Referenz, dass die Anfrage gesendet wurde, garantiert aber nicht, dass sie den Handelsserver erreicht hat".

Frage: Wenn eine asynchrone Anfrage erfolgreich vom Terminal gesendet wird, aber den Server nicht erreicht, wird eine solche Anfrage dann immer in der Historie erscheinen? Mit anderen Worten: Kann es vorkommen, dass eine asynchrone Anfrage erfolgreich (allen Anzeichen nach) an den Server gesendet wird, aber die Informationen darüber nicht in der Historie erscheinen? Wenn dieses Szenario möglich ist, unter welchen Bedingungen?

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Yedelkin:

Frage: Wenn eine asynchrone Anfrage erfolgreich vom Terminal gesendet wurde, aber den Server nicht erreicht hat, werden dann immer Informationen über eine solche Anfrage in der Historie erscheinen? Mit anderen Worten: Kann es vorkommen, dass eine asynchrone Anfrage erfolgreich (in jeder Hinsicht) an den Server gesendet wird, aber keine Informationen darüber in der Historie erscheinen? Wenn dieses Szenario möglich ist, unter welchen Bedingungen?
Wenn die Anfrage den Server nicht erreicht, hat sie keine Chance, auf dem Client-Terminal zu erscheinen.
 
Renat:
Wenn die Anfrage den Server nicht erreicht, hat sie keine Chance, auf dem Client-Terminal zu erscheinen.
Ups! Es hat sich herausgestellt, dass eine erfolgreich gesendete asynchrone Anfrage leicht verloren gehen kann und nicht in der Historie erscheint.
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
Торговые функции / OrderSendAsync - Документация по MQL5
 
Yedelkin:
Ups! Es hat sich herausgestellt, dass eine erfolgreich gesendete asynchrone Anfrage leicht verloren gehen und nicht in den Verlauf aufgenommen werden kann.
Nein.
 
Yedelkin:
Es hat sich herausgestellt, dass eine erfolgreich gesendete asynchrone Anfrage leicht verloren gehen und nicht in den Verlauf aufgenommen werden kann.

Der Punkt ist, dass eine asynchrone Anfrage praktisch keinen Status "erfolgreich gesendet" hat.

Ein erfolgreicher Abschluss der Funktion bedeutet lediglich, dass die "Order aus Sicht des Kunden korrekt aussieht und in die Netzwerkleitung geworfen wurde, warten Sie auf eine Antwort in OnTrade".