SQ 3.8.0 Fehler 129 ungültiger Preis im realen Handel
14 Antworten
mikeyc
vor 9 Jahren #113353
Hallo Mark,
Ich habe erstellt, getestet und exportiert die MQL4 für eine Strategie, die auf EURUSD H1 Zeitrahmen vielversprechend aussieht. Es verwendet die Reverse-Markt-Position-Option, aber scheitert beim Vorwärts-Testen auf einem realen Konto:
2015.02.16 17:59:59.599 Strategie 9.7 EURUSD,H1: 2015.02.16 20:00:09 Fehler bei der Ordereröffnung: 129 : ungültiger Preis
2015.02.16 17:59:59.599 Strategie 9.7 EURUSD,H1: 2015.02.16 20:00:09 Eröffnungsauftrag, Richtung: 0, Preis: 1,13572, Ask: 1,13572, Bid: 1.13548
2015.02.16 17:59:55.489 Strategie 9.7 EURUSD,H1: 2015.02.16 20:00:05 Fehler bei der Ordereröffnung: 129 : ungültiger Preis
2015.02.16 17:59:55.489 Strategie 9.7 EURUSD,H1: 2015.02.16 20:00:05 Eröffnungsauftrag, Richtung: 0, Preis: 1,13572, Ask: 1,13572, Bid: 1.13548
2015.02.16 17:59:52.067 Strategie 9.7 EURUSD,H1: 2015.02.16 20:00:01 Fehler bei der Ordereröffnung: 129 : ungültiger Preis
2015.02.16 17:59:52.067 Strategie 9.7 EURUSD,H1: 2015.02.16 20:00:01 Eröffnungsauftrag, Richtung: 0, Preis: 1,13572, Ask: 1,13572, Bid: 1.13548
2015.02.16 17:59:52.052 Strategie 9.7 EURUSD,H1: close #164716296 sell 0.10 EURUSD at 1.14383 at price 1.13572
Irgendeine Idee, warum der EA nicht in der Lage zu sein scheint, die entgegengesetzte Handelsrichtung nach dem Schließen eines Handels zu öffnen?
Danke,
Mike
mikeyc
vor 9 Jahren #128868
Mark,
Wenn ich mir die Handelslogik im generierten EA ansehe, sieht es für mich so aus, als ob er unabhängig von der Fehlerursache einen neuen Versuch unternimmt, und im Falle des Fehlers 129 sollte er das Geld-/Briefkursverhältnis aktualisieren, da sich der Preis über den Slippage hinaus bewegt hat.
Siehe http://forum.mql4.com/61528
Für meine eigenen EAs verwende ich eine Bibliothek namens OrderReliable, um die schwierige Fehlerbehandlung zu bewältigen.
https://github.com/keyguy/TradersTech/blob/master/OrderReliable_2011.01.07.mqh
Vielleicht wird dies in die nächste Version der SQ-Vorlage für MQ4 aufgenommen?
Herzliche Grüße,
Mike
Mark Fric
vor 9 Jahren #128890
danke für den Hinweis auf diesen Fehler und die Bibliothek, ich werde mir das ansehen.
Mark
StrategyQuant Architekt
mikeyc
vor 9 Jahren #129627
Ich sehe den Slippage-Fehler ziemlich oft bei bestimmten Brokern (hallo FXDD :angry: ). Ich denke, die beste Lösung ist, diese Makler mit schlechten Schlupf zu vermeiden.
geektrader
vor 9 Jahren #129666
Gehen Sie mit einem ECN-Broker, dieser Fehler ist eine typische Market-Maker-Broker Sache, dass sie sich weigern, Ihre Bestellung zu dem Preis, den sie in MT4 zeigen zu akzeptieren. Es heißt requotes und die sind da, um den Makler mehr Gewinne aus Ihren Verlusten zu machen:) Das wird bei einem guten und ehrlichen ECN-Broker nie passieren. Davon gibt es viele, meine Empfehlung ist Global Prime in Australien.
Matusiak Adrian
vor 9 Jahren #129687
Das wird bei einem guten und ehrlichen ECN-Broker nie passieren.
Sie liegen falsch... Es gibt viele andere Dinge, die Requotes auftreten. Versuchen Sie einfach, den Handel ohne Requotes mit Ping zum Handelsserver > 300ms zu machen. Selbst mit ehrlichen Makler werden Sie nie bekommen, dass Preis, was Sie sehen, weil dieser Preis bereits nicht existiert.
geektrader
vor 9 Jahren #129701
Sicher, aber das ist kein Requote, das ist Slippage und wirft dem EA keinen Fehler vor, wie es ein Requote tut - der Handel wird in jedem Fall eröffnet, nur mit einem Slippage-Preis. Ich bevorzuge das immer noch im Vergleich zu Requotes. Btw, es ist klar, dass man keinen 300 ms Ping zum Broker-Server haben sollte. Ich arbeite übrigens für einen ECN-Broker, und selbst für kleine Konten sollten Sie einen VPS mieten, um Ihre Strategien auszuführen.
Matusiak Adrian
vor 9 Jahren #129704
Selbst für kleine Konten sollten Sie einen VPS mieten, um Ihre Strategien auszuführen.
Völlig ZUSTIMMEN.
Dan
vor 8 Jahren #133511
Hallo Mark,
Ich bin immer den gleichen Fehler wie MickeyC, in denen einige Male, wenn meine AE geht, um einen Handel zu platzieren, bekomme ich die "Fehler öffnen, um 129: ungültigen Preis" Es zieht sich 3 weitere Male mit dem ursprünglichen Preis. Gibt es einen Code, um den Preis zu aktualisieren, wenn er versucht, den Auftrag zu ersetzen, den ich einfügen kann, und ist dies etwas, das SQ4 ansprechen wird.
Vielen Dank für Ihre Hilfe
tomas262
vor 8 Jahren #133524
Dan
vor 8 Jahren #133528
Hallo Thomas,
Ich ziehe es vor, meine AE nicht mitzuteilen und eine Fehlersuche vom Standpunkt aus zu betreiben, dass es sich um ein SQ-Logikproblem handelt, bei dem der Preis aktualisiert werden sollte, wenn er den Slippage-Betrag überschritten hat. MIckeyC hat in diesem Thread bereits darauf hingewiesen, und Mark wollte sich darum kümmern. Siehe oben, hat Mark irgendwelche Änderungen vorgenommen, um diesen Fehler in der nächsten Ausgabe von SQ zu beheben? Ich bin dem von MickeyC angegebenen Link zur MQL4-Website gefolgt http://forum.mql4.com/61528 und da steht, um den Fehlercode 129 ungültiger Preis zu beheben, soll man RefreshRates(); vor dem Senden der Bestellung einfügen. Ich bin kein Programmierer in irgendeiner Weise am besten habe ich versucht, dass in der AE einzufügen. In Fettdruck unten habe ich den Code für die Aktualisierungsrate eingefügt, ich bin nicht sicher, ob das funktioniert, hier bräuchte ich Ihr Fachwissen. Ich werde sagen, ich habe nur den Fehler zweimal passieren, und es versucht, die Reihenfolge 3 mal danach mit jedes Mal nicht erfolgreich ungültigen Preis error129, ich hoffe, durch das Hinzufügen der RefreshRate Code in dort, dass es dieses Problem behebt.
Vielen Dank für Ihre Hilfe
// Offener Auftrag mit Fehlerbehandlung und Wiederholungsversuchen
int ticket = 0;
int retries = 3;
while(true) {
Wiederholungen-;
if(Wiederholungen < 0) return;
if(getMarketPosition() != 0) return;
if(sqIsTradeAllowed() == 1) {
ticket = openOrderWithErrorHandling(orderType, orderLots, openPrice, stopLoss, profitTarget, comment, MagicNumber);
if(ticket > 0) {
if(tradeDirection > 0) {
ObjectSetText("Zeilen", "Letztes Signal: Lang, Ticket: "+Ticket, 8, "Tahoma", LabelColor);
} sonst {
ObjectSetText("Zeilen", "Letztes Signal: Kurz, Ticket: "+Ticket, 8, "Tahoma", LabelColor);
}
Rückkehr;
}
}
if(ticket == -130 || ticket == -129) {
// ungültige Stops oder Volumen, wir können den Handel nicht eröffnen
Rückkehr;
}
Sleep(1000);
}
Rückkehr;
}
//+——————————————————————+
int openOrderWithErrorHandling(int orderType, double orderLots, double openPrice, double stopLoss, double profitTarget, string comment, int magicNumber) {
//—————————————
// Bestellung abschicken
int error, ticket;
Log("Eröffnungsauftrag, Richtung: ", orderType,", Preis: ", openPrice, ", Ask: ", Ask, ", Bid: ", Bid);
ticket = OrderSend(Symbol(), orderType, orderLots, openPrice, MaxSlippage, 0, 0, comment, magicNumber, 0, Green);
if(ticket < 0) {
// Bestellung fehlgeschlagen, Fehler ins Protokoll schreiben
error = GetLastError();
Log("Fehler beim Öffnen der Bestellung: ",error, " : ", ErrorDescription(error));
return(-error);
Sleep(1000);
//-aktuelle Preisdaten
RefreshRates();
}
rettmp = OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);
Log("Order geöffnet: ", OrderTicket(), " zum Preis:", OrderOpenPrice());
stopLoss = getSpecialSL(stopLoss);
profitTarget = getSpecialPT(profitTarget);
if(EmailNotificationOnTrade) {
SendMail("GB Strategy - Order opened", getNotificationText());
}
Dan
vor 8 Jahren #133543
Hallo Tomas, ich benötige deinen Verstand und deine Hilfe bei dem oben genannten Problem, das ich habe.
Dan
vor 8 Jahren #133561
Thomas werde ich keine Antwort bekommen????
Mark Fric
vor 8 Jahren #133566
Entschuldigung für die späte Antwort. Leider ist es nicht so einfach, denn der Preis eines Handels wird einige Zeit vor dem Aufruf dieser Funktion festgelegt, auch für Marktaufträge.
Sie können jedoch das folgende Codestück direkt nach dem Aufruf von sqIsTradeAllowed() hinzufügen.
Sie aktualisiert den Marktpreis kurz vor dem Absenden des Auftrags.
if(orderType == OP_BUY || orderType == OP_SELL) {
Mark
StrategyQuant Architekt
Dan
vor 8 Jahren #133576
Hallo Mark,
Danke für die Antwort, ich werde den Codeschnipsel hinzufügen und sehen, ob das funktioniert........ Nochmals vielen Dank
Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)