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
Die Zeile bezüglich "each tick" könnte der Grund sein, warum es nicht mehr passiert.
Die Funktion wird nur ausgeführt, wenn ein neuer Balken erscheint. Wahrscheinlich kann also nur der erste Tick eines Balkens einen Handel ausführen. Nach dem ersten Takt bekommt der Code ein 'Return', bis ein neuer Takt erscheint. Vielleicht hat das das Problem für mich gelöst.
Ich glaube, dieses Stück Code stammt aus dem Artikel:
Ja, natürlich. Ich meine "warum er sehen konnte...". Der Punkt hier ist, dass es nichts in Ihrem Code gibt, was erklären könnte, warum Sie diese 2 Berufe bekommen haben.
Ich denke, es ist sehr wichtig, den Grund für dieses Problem zu finden, natürlich ist es auch wichtig, einen Workaround (Sleep ?) zu haben, bis wir vollständig verstehen können, was passiert ist. Also versuche ich, die Situation wieder aufzunehmen:
* Bei der Verwendung der Methode PositionOpen aus der CTrade-Klasse haben mindestens 3 Benutzer zu einem bestimmten Zeitpunkt 2 Geschäfte in dieselbe Richtung getätigt anstatt eines, was zu einer Position mit doppeltem Volumen im Vergleich zu dem, was erwartet wird, führt.
Ich verwende beide Methoden, für das Eröffnen einer neuen Position = "old fashion way", das Ändern des Stoploss = "CTrade class".
* Dieses Problem scheint bei demselben Broker aufzutreten, und zwar mit einem Symbol, bei dem Depth of Market aktiviert ist (können die betroffenen Personen dies bitte bestätigen).
Ja, der Server von Broker X, Depth of Market ist aktiviert.
* Dieses Problem tritt bei synchronen Aufträgen auf, asynchrone Aufträge wurden nicht verwendet (bitte bestätigen Sie dies).
Ja, asynchrone Order wurde nicht verwendet.
* Das Problem tritt zufällig auf.
Ja, aber nur während der geschäftigen Marktzeiten(makroökonomische Ereignisse).
Meiner Meinung nach kann dieses Problem leicht gelöst werden.
Der EA sollte immer auf eine Antwort warten, wenn die Funktion "PositionSelect(Symbol())" verwendet wird und das Terminal die Daten der Funktion aktualisiert hat, bevor er mit der Ausführung des Codes fortfahren kann.
Der EA sollte immer auf eine Antwort warten, wenn die Funktion "OrderSend(mrequest,mresult)" verwendet wird und das Terminal die Daten der Funktion aktualisiert hat, bevor er mit der Ausführung des Codes fortfahren kann.
Ich erwähne auch das Terminal selbst, weil die Daten der Funktion in das Terminal kopiert werden und dies ebenfalls einige Zeit in Anspruch nimmt.
Auf diese Weise wird die aktuelle Positionsgröße immer korrekt berechnet, so dass der doppelte Auftrag nicht mehr vork ommt.
Was meint ihr dazu?
Meiner Meinung nach kann dieses Problem leicht gelöst werden.
Der EA sollte immer auf eine Antwort warten, wenn die Funktion "PositionSelect(Symbol())" verwendet wird und das Terminal die Daten der Funktion aktualisiert hat, bevor er mit der Ausführung des Codes fortfahren kann.
Der EA sollte immer auf eine Antwort warten, wenn die Funktion "OrderSend(mrequest,mresult)" verwendet wird und das Terminal die Daten der Funktion aktualisiert hat, bevor er mit der Ausführung des Codes fortfahren kann.
Ich erwähne auch das Terminal selbst, da die Daten der Funktion in das Terminal kopiert werden und dies ebenfalls einige Zeit in Anspruch nimmt.
Auf diese Weise wird die aktuelle Positionsgröße immer korrekt berechnet, so dass es nicht mehr zu einer doppelten Bestellung kommt.
Was meinen Sie dazu?
Ich bin mir nicht sicher, was Sie mit "immer auf eine Antwort warten..." meinen. ?
Jedenfalls habe ich eine Anfrage an ServiceDesk gestellt und um Rat gefragt. Wir werden sehen.
Ich bin mir nicht sicher, was Sie mit "immer auf eine Antwort warten..." meinen. ?
Jedenfalls habe ich eine Anfrage an den ServiceDesk gestellt und um Rat gefragt. Wir werden sehen.
"Bin mir nicht sicher, was Sie mit "immer auf eine Antwort warten..." meinen. ?"
Der EA sollte warten/anhalten, bis die Funktion PositionSelect(Symbol()) das Kopieren von Daten über eine Position in die Programmumgebung abgeschlossen hat.
Sehen Sie es als eine erzwungene sleep()-Funktion.
"Ich bin mir nicht sicher, was Sie mit "immer auf eine Antwort warten" meinen... ?"
Der EA sollte warten/anhalten, bis die Funktion PositionSelect(Symbol()) das Kopieren von Daten über eine Position in die Programmumgebung abgeschlossen hat.
Sehen Sie es als eine erzwungene sleep()-Funktion.