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
Hallo
Dieser Ansatz funktioniert nur, wenn die aktuelle Positionsgröße Null ist und der neue Trade erfolgreich mit der gewünschten Positionsgröße ausgeführt wird.
Siehe Code:
Was aber, wenn Ihr EA die Position umdreht: von einer LONG- zu einer SHORT-Position oder umgekehrt und diese Aktion in 2 verschiedenen Trades ausgeführt wird?
Nach dem ersten Handel wird der Boolean "position_opened" auf "TRUE" gesetzt und der EA kann den zweiten Handel nicht öffnen, da die Bedingung"if(conditions_to_open && !position_opened)" geprüft wird, also wird der zweite Handel blockiert.
Und was ist, wenn die Positionsgröße nur teilweise geöffnet ist? Dann brauchen Sie einen zweiten Handel, um Ihre Positionsgröße auf die richtige Größe zu bringen.
Um es kurz zu machen: Sie brauchen immer die Funktion PositionSelect(Symbol()), um die AKTUELLE Positionsgröße zu berechnen, und genau hier hat das Problem angefangen (und dieser Forumsbeitrag).
Im kritischen Moment, wenn der EA die Funktion PositionSelect(Symbol()) aufruft, hat das Terminal die AKTUELLE Positionsgröße noch nicht aktualisiert und der EA arbeitet mit der falschen Positionsgröße und sendet eine neue doppelte Order an den Handelsserver.
Ich denke, dass der Ansatz von(figurelli) besser ist, weil Sie gezwungen sind zu warten, bis der EA die Funktion PositionSelect(Symbol()) auf die richtige Positionsgröße aktualisiert hat.
Hallo
Dieser Ansatz funktioniert nur, wenn die aktuelle Positionsgröße Null ist und der neue Trade erfolgreich mit der gewünschten Positionsgröße ausgeführt wird.
Siehe Code:
Was aber, wenn Ihr EA die Position umdreht: von einer LONG- zu einer SHORT-Position oder umgekehrt und diese Aktion in 2 verschiedenen Trades ausgeführt wird?
Nach dem ersten Handel wird der Boolean "position_opened" auf "TRUE" gesetzt und der EA kann den zweiten Handel nicht öffnen, da die Bedingung"if(conditions_to_open && !position_opened)" geprüft wird, also wird der zweite Handel blockiert.
Und was ist, wenn die Positionsgröße nur teilweise geöffnet ist? Dann brauchen Sie einen zweiten Handel, um Ihre Positionsgröße auf die richtige Größe zu bringen.
Um es kurz zu machen: Sie brauchen immer die Funktion PositionSelect(Symbol()), um die AKTUELLE Positionsgröße zu berechnen, und genau hier hat das Problem angefangen (und dieser Forumsbeitrag).
Im kritischen Moment, wenn der EA die Funktion PositionSelect(Symbol()) aufruft, hat das Terminal die AKTUELLE Positionsgröße noch nicht aktualisiert und der EA arbeitet mit der falschen Positionsgröße und sendet eine neue doppelte Order an den Handelsserver.
Ich denke, dass der Ansatz von(figurelli) besser ist, weil man gezwungen ist zu warten, bis der EA die Funktion PositionSelect(Symbol()) aktualisiert hat.
Sie haben recht, beide Ansätze haben ihre Grenzen.
Der Ursprung dieses Problems ist nun klar identifiziert. Jeder muss seinen Code abhängig von seiner Strategie anpassen. Ich glaube nicht, dass es eine allgemeine Methode gibt, die auf alle Fälle anwendbar ist.
Brauchen wir eine OrderSendReliable()-Bibliothek für das große und mächtige mql5?
Sie haben recht, beide Ansätze haben ihre Grenzen.
Der Ursprung dieses Problems ist nun klar identifiziert. Jeder muss seinen Code je nach seiner Strategie anpassen. Ich glaube nicht, dass es eine allgemeine Methode gibt, die auf alle Fälle anwendbar ist.
Oder wir müssen auf eine "offizielle Erklärung" von den Metaquotes-Leuten selbst warten.
Gibt es bereits eine Antwort vom Service Desk?
Würden Sie es als nicht hilfreich betrachten, wenn ich Ihnen zustimme? .
Ich habe nur gelehrt, dass die Lösung, bis zur Beendigung des Handels zu schlafen, mich an OrderSendReliable() erinnerte. Ich habe gelehrt, dass man das eleganter hätte lösen können.
Es erinnert mich auch an die Handhabung von old_documents ... wo es heißt { and all trading should be stopped }.
Wie auch immer, Entschuldigung, ich wollte nicht auf mql5 herumhacken.
Oder wir müssen auf ein "offizielles Statement" von den Metaquotes-Leuten selbst warten.
Gibt es schon eine Antwort vom Service Desk?
Nein. Ich habe gerade darüber nachgedacht... Es wäre wahrscheinlich sinnvoll, wenn alle Betroffenen ein Ticket an den ServiceDesk über dieses Problem schreiben würden. Allerdings bin ich sehr skeptisch, ob MQ bereit ist, dieses Design zu ändern. Aber wir können es versuchen.
Die Leute können an ServiceDesk schreiben und die Ticketnummer hier angeben. Meines lautet
Wenn ich mit Ihnen übereinstimme, würden Sie es als nicht hilfreich betrachten? .
Ich habe nur gelehrt, dass die Lösung "Schlafen bis zum Beenden des Handels" mich an OrderSendReliable() erinnert hat. Ich habe gelehrt, dass man das eleganter hätte lösen können.
Es erinnert mich auch an die Handhabung von old_documents ... wo es heißt { and all trading should be stopped }.
Wie auch immer, Entschuldigung wollte nicht auf mql5 herumhacken.
Ja, aber es ist schwer zu sagen, ob es an einer schlechten Codierung liegt. Der Doppelhandel war schon vor dem Thread über den Mehrfachhandel ein Problem. Die Art, wie es traditionell gehandhabt wird, ist die Art, wie snelle_moda es handhabt.
Ja, aber es ist schwer zu sagen, ob es an einer schlechten Codierung liegt. Der Doppelhandel war schon vor dem Thread über den Mehrfachhandel ein Problem. Die Art, wie es traditionell gehandhabt wird, ist die Art, wie snelle_moda es handhabt.