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
Aber dann schlägt OrderModify fehl.
Der nachstehende Code wird nach dem obigen Code aus dem letzten Beitrag ausgeführt.
Das Log ist:
#ESZ1,M5: Eröffnungsposition
#ESZ1,M5: Tickwert: 12.50000000
#ESZ1,M5: Pos Größe: 1.00000000
#ESZ1,M5: Ask/Bid 1242.00000000/1241.75000000
#ESZ1,M5: Spanne 0,25000000
#ESZ1,M5: eröffnen #13679252 kaufen 1.00 #ESZ1 bei 1242.00 ok
#ESZ1,M5: Order 13679252 erfolgreich eröffnet
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
#ESZ1,M5: error=130
Also scheint es nicht einmal zu funktionieren, erst zu öffnen und dann den Stoploss zu setzen :-/
Die Spanne beträgt 0,25
#ESZ1,M5: Spanne 0.25000000
OK, Sie eröffnen einen BUY bei . . 1242.00 (Ask)
#ESZ1,M5: Eröffnung #13679252 Kauf 1.00 #ESZ1 zu 1242.00 ok
#ESZ1,M5: Order 13679252 erfolgreich eröffnet
Dann versuchen Sie zu modifizieren mit einem TP zum Geldkurs + 2 * Spread und SL zum Geldkurs - 2 * Spread
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
Wenn Ihr FreezeLevel 0.50 ist, dann ist das Ihr Problem . . was ist Ihr FreezeLevel ?
Gleiches Problem. Die Order wird problemlos mit Stoploss = 0 und Takeprofit = 0 eröffnet.
Aber dann schlägt OrderModify fehl.
Keine Einstellung für 4/5-stellige Makler. Nicht erst öffnen und dann Stopps setzen.
Wie bereits beantwortet
ja, Sie handeln wahrscheinlich mit einem ECN-Broker, Sie müssen Orders mit Null-Stopps öffnen und dann die Order modifizieren, nachdem sie geöffnet wurde, so dass es ein Problem mit 50 Pips SL und TP gibt, also tun Sie, was Raptor sagte, überprüfen Sie das Freezelevel und Stoplevel auch nur für den Fall
Überprüfen Sie auch Ihren OrderModify() Code .... vielleicht funktioniert es so, aber ich denke Sie sollten die Order mit OrderSelect() auswählen, bevor Sie OrderOpenPrice() ausführen können
Leider spukt #130 immer noch nachts in mir herum ;)
Hier ist mein nächster Versuch:
Wie Sie sehen können, habe ich das Beispiel vereinfacht, indem ich den Takeprofit nicht verwendet habe. Der Fehler tritt definitiv aufgrund des Stoploss auf, also brauchen wir keinen Takeprofit.
Ich eröffne die Order zunächst mit 0 Stoploss (und Takeprofit) und versuche später, den Stoploss mit OrderModify zu setzen.
Zuvor prüfe ich Mode_Stoplevel und Mode_Freezelevel und passe den Stoploss bei Bedarf an. (Eine Anpassung findet unten im Log statt, weil der Stoploss anfänglich 50 ist, aber Mode_Stoplevel 75 ist, ich setze dann den Stoploss auf Mode_Stoplevel + 1, also 76)
RaptorUK und SDC:
MarketInfo(MODE_FREEZELEVEL) gibt 0 zurück. Ich glaube nicht, dass Freezelevel das Problem ist.
Ich habe die Ausgabe in die Protokolldatei eingefügt.
SDC:
Ich habe auch einen OrderSelect eingefügt, bevor ich OrderOpenPrice aufgerufen habe, nur um sicherzugehen. Im Log kann man sehen, dass OrderSelect funktioniert hat, sonst wäre der Code nicht so weit gekommen (exit -1).
WHRoeder:
Ich bin dem einfachen Beispiel von SDC gefolgt. Aber ich habe es nun erweitert, indem ich die Pips 4/5 Digit Anpassung beim Setzen des Stoploss verwendet habe, wie Sie oben sehen können. Sie können auch sehen, dass die Order zuerst mit Stoploss und Takeprofit auf Null gesetzt wird und dann der Stoploss mit OrderModify gesetzt wird. Wie Sie im Protokoll unten sehen können, wird die Order erfolgreich geöffnet, wenn S/L und T/P auf Null gesetzt sind, aber ich bin immer noch nicht in der Lage, den S/L im nächsten Schritt mit OrderModify zu setzen.
Hier ist das vollständige Protokoll:
Ich bin Ihnen sehr dankbar für Ihre kontinuierliche Hilfe, und ich glaube, wir haben das Problem eingegrenzt :)
Was könnte noch das Problem sein? Gibt es noch etwas, das ich versuchen könnte?
shinobi
Die Spanne beträgt 0,25
#ESZ1,M5: Spanne 0.25000000
OK, Sie eröffnen einen BUY bei . . 1242.00 (Ask)
#ESZ1,M5: Eröffnung #13679252 Kauf 1.00 #ESZ1 zu 1242.00 ok
#ESZ1,M5: Order 13679252 erfolgreich eröffnet
Dann versuchen Sie zu modifizieren mit einem TP zum Geldkurs + 2 * Spread und SL zum Geldkurs - 2 * Spread
Ist Ihr STOP_LEVEL nicht 3 * Spread? Ihr Stop ist zu nah...
Ja, das ist der Grund, warum ich das Stopniveau hier (aus dem obigen Code) prüfe:
Also im letzten Beispiel wurde der Stoploss auf 76 gesetzt, was 3*Spread +1 entspricht.
Das sollte doch weit genug weg sein, oder?
Hallo Raptor,
Ja, das ist der Grund, warum ich das Stoplevel hier überprüfe (aus dem Code oben):
Also im letzten Beispiel wurde Stoploss auf 76 gesetzt, was 3*Spread +1 entspricht.
Das sollte weit genug weg sein, richtig?
Ich habe Folgendes getan.
Zuerst habe ich eine eigene Funktion geschrieben, um Doppelwerte auf das nächste Doppel zu runden:
Sie tut, was Sie erwarten. Wenn man sie mit DoubleRound(1237.687360000) aufruft, gibt sie 1237.50 zurück.
Dann habe ich es bei meinem S/L kurz vor dem Aufruf von OrderModify verwendet. Und ich habe MODE_TICKVALUE verwendet, der für #ESZ1 0,25 ist.
Also:
Im Log kann man sehen, dass die Rundung gut funktioniert hat. Allerdings wurde der Stoploss trotzdem abgelehnt :/
Ich kann mir nicht vorstellen, was das Problem sonst sein könnte! Diese #130 ist wirklich hartnäckig!!!
Sie haben einen Sell eröffnet
#ESZ1,M5: öffnen #13708089 verkaufen 1.00 #ESZ1 bei 1239.75 ok
und versucht, einen SL darunter zu setzen...
#ESZ1,M5: SL: 1237.50000000
#ESZ1,M5: Fehler=130