Funktion OrderSendAsync() - Seite 6

 
Renat:

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

Ein erfolgreicher Abschluss der Funktion bedeutet lediglich, dass der Auftrag aus Sicht des Kunden korrekt aussieht und in die Netzwerkleitung geworfen wurde, und dass auf eine Antwort in OnTrade gewartet wird.

Tut mir leid, ich war eine Weile weg.

Ich möchte jedoch diesen Satz klären: "Wait for reply onTrade", der sich auf eine Situation bezieht, in der eine Anfrage den Server nicht erreicht hat.

Wenn die Anfrage den Server nicht erreicht hat, wird kein Handelsereignis erzeugt, das mit dieser "fehlenden" Anfrage zusammenhängen könnte. Oder? Und wenn ja, erhalte ich auch keine entsprechende Antwort in OnTrade(). Wäre es richtig, eine solche Schlussfolgerung zu ziehen?

Wenn die Funktion OrderSendAsync() erfolgreich beendet wird, kann die Anfrage den Server nicht erreichen, und in diesem Fall ist es sinnlos, auf die Antwort in OnTrade() zu warten.

?

 

sergeev:

Yedelkin:
Sps! Es hat sich herausgestellt, dass eine erfolgreich gesendete asynchrone Anfrage leicht verloren gehen und nicht in den Verlauf aufgenommen werden kann.

Nein.

Erklären Sie das bitte. "Nein" ist meine Schlussfolgerung falsch, oder ist sie eine Bestätigung?

Wahrscheinlich ist das eine falsche Schlussfolgerung, aber Renat sagte vorhin, dass "wenn die Anfrage den Server nicht erreicht hat, hat sie keine Chance, im Client-Terminal zu erscheinen". Bleiben wir bei dieser Logik: Wenn der Antrag keine Chance hat, im Client-Terminal zu erscheinen, hat er auch keine Chance, in das Basis-Terminal zu gelangen und somit auch keine Chance, in die Datenbank der historischen Aufträge zu gelangen. Wenn diese Argumentation nicht korrekt ist, wo liegt dann der Fehler und worin besteht er?

 
Renat:

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

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

Ich hoffe, dass OnTrade in naher Zukunft so verbessert wird, dass die Prüfung"Anfrage hat den Server nicht erreicht" vom Benutzer problemlos organisiert werden kann, und zwar ebenso wie andere Arten der Ausführungskontrolle.

denn in seiner jetzigen Form ist OnTrade zu solchen Leistungen nicht in der Lage, da es keine Ahnung hat, welche Art von Antwort es bearbeitet.

 
Urain:

Ich hoffe, dass OnTrade in naher Zukunft fertiggestellt wird, so dass die Prüfung"Anfrage hat den Server nicht erreicht" sowie andere Arten der Ausführungskontrolle ohne Probleme vom Benutzer organisiert werden können.

denn OnTrade ist in seiner jetzigen Form zu solchen Leistungen nicht in der Lage, da es keine Ahnung hat, welche Art von Antwort es bearbeiten soll.

Im Prinzip können wir eine virtuelle Antwort "request failed by timeout" hinzufügen, wenn wir nach dem Senden einer Anfrage nicht innerhalb von 5-10 Sekunden eine Antwort vom Server erhalten haben, dass die Anfrage den Server erreicht hat.

So können wir eine geplatzte Anfrage in OnTrade abfangen. Dazu müssen wir jedoch die Funktion mit zusätzlichen Parametern überladen.

 
Yedelkin:


Wenn die Anfrage den Server nicht erreicht hat, wird kein Handelsereignis erzeugt, das sich auf diese "fehlende" Anfrage beziehen könnte. Oder?

Ja, das macht Sinn.

Wir können eine virtuelle Antwort hinzufügen, wie ich oben beschrieben habe. Damit können wir die Ausführung asynchroner Operationen steuern.

 
Renat:

Im Prinzip können wir eine virtuelle "request failed by timeout"-Antwort hinzufügen, wenn wir nach dem Senden der Anfrage nicht innerhalb von 5-10 Sekunden eine Antwort vom Server erhalten, dass die Anfrage den Server erreicht hat.

So können Sie den Bounce einer Order in OnTrade abfangen. Dazu müssen Sie jedoch die Funktion mit zusätzlichen Parametern überladen.

Sie machen mir Angst,

Die Leute warten auf eine Verbesserung von OnTrade mit Parametern, um die Kontrolle der Ausführung zu implementieren. Sie haben einen Sound, der "in einem Build" sein wird, d.h. chronologisch im nächsten.

Ich hatte drei Aufträge, die monatelang in der Warteschleife hingen, und Sie sagen: "Wir können... "aber wir müssen überladen..."

Sie arbeiten nicht an einer Weiterentwicklung von OnTrade?

Ich weiß nicht, wie es anderen geht, aber ich bin mit der derzeitigen Situation nicht zufrieden. Ich habe das Schreiben aller Codes aufgeschoben, bis MQL5 eine Funktion haben wird, die eine direkte Ausführungskontrolle garantiert, nicht eine indirekte.

 
Urain:

Du machst mir Angst,

Die Leute warten auf die Feinabstimmung von OnTrade mit Parametern, um die Laufzeitkontrolle zu implementieren. Sie sagten, dass es "in einem Build" sein wird, d.h. chronologisch im nächsten Build.

Ich habe seit Monaten drei Aufträge in der Warteschleife, und Sie sagen: "Wir können... "aber wir müssen überladen..."

Sie machen keine Weiterentwicklung von OnTrade?

Wir werden versuchen, dies im nächsten Build zu tun.

Es gibt tatsächlich eine Menge Aufgaben, die in Arbeit sind, und es ist Sommerferienzeit - es ist schwer, das übliche Entwicklungstempo beizubehalten.

 
Renat:

Wir sollten uns anstrengen und versuchen, es im nächsten Build zu schaffen.

Die Aufgaben in der Arbeit sind wirklich viel, und es ist noch Zeit für den Urlaub - im Sommer ist das übliche Entwicklungstempo nur schwer aufrechtzuerhalten.

Puh, da bin ich aber erleichtert :)

wirklich erschrocken, weil ganz eine reale Situation, miteinander gesprochen und vergessen, und die Leute warten hoffentlich :)

Ich wünschte, ich könnte lange genug leben :))

 

Die Methaquotes sind ein starkes, leichtes und vielseitiges Terminal.

Stark und leicht haben sie bereits gelernt, wie man sie herstellt. Aber es gibt noch eine weitere Aufgabe - Kontinuität. Wir müssen in einem Terminal alle "Chokepoints" der verschiedenen Handelsplattformen und eine Reihe von Brokern verbinden. Ich glaube, das ist das Problem. Es gibt keinen universellen MQ5 mehr.

PS Ja, die OnTrade-Parameter stehen bereit. Und auf unsere Börsenmakler. Und wir brauchen einen erfolgreichen Weg, um mit Asynchronität umzugehen. Dann scheint es keine Konkurrenten (für Terminals) zu geben. Der Tester allein ist schon eine Menge wert...

 
Renat:

Im Prinzip können wir eine virtuelle "request failed by timeout"-Antwort hinzufügen, wenn wir nach dem Senden der Anfrage nicht innerhalb von 5-10 Sekunden eine Antwort vom Server erhalten, dass die Anfrage den Server erreicht hat.

Dadurch können wir einen Abbruch der Anfrage in OnTrade feststellen. Dazu müssen wir jedoch die Funktion mit zusätzlichen Parametern überladen.

Wir können eine virtuelle Antwort hinzufügen, wie ich oben beschrieben habe. Damit können wir die Ausführung asynchroner Operationen steuern.

Danke, das ist eine gute Lösung. Zumindest mein Problem ist gelöst. Abwarten, aber nicht drängen :)