Diskussion zum Artikel "Schrittweiser Leitfaden für Anfänger zum Schreiben eines Expert Advisors in MQL5" - Seite 13

 
Ich brauche Hilfe kann nicht beheben einen Fehler in Expert Advisors, möchte ich die Zeit, um den Markt zu betreten und zu verlassen, um in der Lage sein, die Einstellungen zu ändern zu schreiben,
Dateien:
 
michael sedgley:
Mit all den Änderungen an der MQL5-Programmierung wird eine aktualisierte Version dieses Schritt-für-Schritt-Codes benötigt, wenn ich diesen Code kopiere, kompiliert er nicht mehr - gibt es eine Version mit den neuesten Änderungen - vielen Dank.

Hallo Michael,

danke für deinen Kommentar. Ich werde Ihre Anregung prüfen, und wenn eine Aktualisierung der Codes erforderlich ist, wird sie bald zur Verfügung gestellt.

 

warum wird der Fehlercode:10030 ausgegeben?

Dateien:
2.png  74 kb
 

Hilfe, ist jemand hier ?


warum wird der Fehlercode:10030 ausgegeben?

 

Zunächst einmal danke für den Artikel, es hilft mir mit dem Einstieg in mql5 Programmierung.

Ich habe versucht, Ihren Code und es gibt ein bisschen Code auf die OnInit(), die ich nicht verstehen, den Zweck der es:

//--- Lassen Sie uns Währungspaare mit 5- oder 3-stelligen Preisen anstelle von 4-stelligen Preisen behandeln

STP = StopLoss;

TKP = TakeProfit;

if(_Digits==5 || _Digits==3)

{

STP = STP*10;

TKP = TKP*10;

}

Dieser Teil ändert die Werte der Take-Profit- und Stop-Loss-Pibs, was zu einer Differenz zwischen Ihren Eingabewerten und den tatsächlich verwendeten Werten führt.

Wenn ich jedoch die beiden Zeilen innerhalb der if-Anweisung entferne, erhalte ich beim Senden der Order an den Server häufig die Fehlermeldung 10016 (ungültige Stopps). Der erste Versuch, eine Order zu platzieren, geht gut und ich erhalte die 10009, aber dann erhalte ich die meisten der folgenden Male eine 10016. Ich habe den EA getestet, und alle Stop-Loss- und Take-Profits scheinen in Ordnung zu sein, mit dem Unterschied, dass der Stop-Loss 30 oder 300 und der Take-Profit 100 oder 1000 Pibs über oder unter dem aktuellen Kurs liegt.

Ich kann den Grund nicht finden, warum der Server gibt mir einen Fehler 10016, wenn die STP und TKP sind nicht multipliziert mit 10.

Kann mir jemand erklären, warum der Fehler auftritt oder welchen Zweck die Multiplikation mit 10 hat, wenn _Digits 5 oder 3 sind?

Vielen Dank für Ihre Hilfe.

 
an you please guguqiaqia:

Hilfe, ist jemand hier ?


warum wird der Fehlercode:10030 ausgegeben?

Hallo,

Können Sie uns mitteilen, wie Sie den Fehler erhalten?

 

eshelios.sr:


Zunächst einmal vielen Dank für den Artikel, es hilft mir mit dem Einstieg in die mql5 Programmierung.

Ich habe versucht, Ihren Code und es gibt ein bisschen Code auf die OnInit(), die ich nicht verstehen, den Zweck der es:

//--- Lassen Sie uns Währungspaare mit 5- oder 3-stelligen Preisen anstelle von 4-stelligen Preisen behandeln

STP = StopLoss;

TKP = TakeProfit;

if(_Digits==5 || _Digits==3)

{

STP = STP*10;

TKP = TKP*10;

}

Dieser Teil ändert die Werte der Take-Profit- und Stop-Loss-Pibs, was zu einer Differenz zwischen Ihren Eingabewerten und den tatsächlich verwendeten Werten führt.

Wenn ich jedoch die beiden Zeilen innerhalb der if-Anweisung entferne, erhalte ich beim Senden der Order an den Server häufig die Fehlermeldung 10016 (ungültige Stopps). Der erste Versuch, eine Order zu platzieren, geht gut und ich erhalte die 10009, aber dann erhalte ich die meisten der folgenden Male eine 10016. Ich habe den EA getestet, und alle Stop-Loss- und Take-Profits scheinen in Ordnung zu sein, mit dem Unterschied, dass der Stop-Loss 30 oder 300 und der Take-Profit 100 oder 1000 Pibs über oder unter dem aktuellen Kurs liegt.

Ich kann den Grund nicht finden, warum der Server gibt mir einen Fehler 10016, wenn die STP und TKP sind nicht multipliziert mit 10.

Kann mir jemand erklären, warum der Fehler auftritt oder welchen Zweck die Multiplikation mit 10 hat, wenn _Digits 5 oder 3 sind?

Vielen Dank für Ihre Hilfe.

Hallo,

Erstens aus Ihrer Erklärung, wenn Sie diese Zeilen von Code entfernt, erhalten Sie einen Fehler und wenn Sie nicht multiplizieren die Stoploss / Takeprofit Werte mit 10, erhalten Sie einen Fehler? Dies hat meiner Meinung nach erklärt, dass diese Codezeilen sehr wichtig sind.

Zurück zum Artikel, der erklärt, dass diese Codezeilen notwendig sind, wenn Sie einen Chart mit 5 Dezimalstellen (0.XXXXX) oder 3 Dezimalstellen (0.XXX) Währungspaaren verwenden.

Hier wollen wir also sicherstellen, dass unser EA mit allen Brokern sehr gut funktioniert.Digits oder Digits()gibt die Anzahl der Nachkommastellen zurück, die die Genauigkeit des Preises des aktuellen Chartsymbols bestimmen. Für ein 5-stelliges oder 3-stelliges Preisdiagramm multiplizieren wir sowohl den Stop Loss als auch den Take Profit mit 10.

Siehe Beispiele unten:

5-Dezimalziffern Preis

5 - Dezimalstellen Preis

3 - Dezimalziffern Preis

3 - Dezimalstelliger Preis

Ich hoffe, damit ist Ihre Frage beantwortet.

 
Samuel Olowoyo:

Hallo,

Können Sie uns mitteilen, wie Sie den Fehler erhalten?

Schritt 1: laden Sie diesen Beispielcode herunter.

Schritt 2: Kompilieren Sie es in mql5 .

Schritt 3: in mt5, öffnen Sie Chart eurusd 1m, dann, klicken Sie auf "auto trading".

Schritt 4: Setzen Sie das Break-Symbol in den Code-Zeilen 223, 224 usw..

Schritt 5: Klicken Sie auf die Schaltfläche "Debugging starten" in Mt5, dann wird dieser Fehler angezeigt.

 
 guguqiaqia:

Schritt 1: Laden Sie diesen Beispielcode herunter.

Schritt 2: Kompilieren Sie es in mql5.

Schritt 3: in mt5, öffnen Sie Chart eurusd 1m, dann, klicken Sie auf "auto trading".

Schritt 4: Setzen Sie das Break-Symbol in den Code-Zeilen 223, 224 usw..

Schritt 5: Klicken Sie auf die Schaltfläche "Debugging starten" in mt5, dann, zeigen diesen Fehler.

Hallo,

Vielen Dank für die Mitteilung Ihrer Schritte. Wenn ich Sie zurück zu dem Code nehmen kann,

if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
{
   Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
}
else
{
   Alert("The Buy order request could not be completed -error:",GetLastError());    // line 223
   ResetLastError();                                                                // line 224
   return;

Soweit ich weiß, hat der Code getan, was er tun sollte. Sie haben den Fehler bekommen, weil die Bestellung, die Sie versucht haben zu platzieren, NICHT ERFOLGREICH war und das ist, was die Zeile 223 tun sollte. Bitte lesen Sie dies - https://www.mql5.com/de/docs/constants/errorswarnings/enum_trade_return_codes - um zu erfahren, was der Fehler bedeutet (10030 bedeutet eigentlich UngültigeAuftragsart ).

Um zu verstehen, was die Auftragsausfüllungsart -ORDER_FILLING_FOK -

mrequest.type_filling = ORDER_FILLING_FOK; // Order execution type  ( line 213 )

bedeutet, lesen Sie bitte https://www.mql5.com/de/docs/constants/tradingconstants/orderproperties#enum_order_type_filling

Ich hoffe, dies beantwortet Ihre Frage.

 

Hallo Samuel,

Ich habe den Code heruntergeladen, installiert und ausgeführt, und ich habe festgestellt, dass er Kauf- und Verkaufsaufträge meist bei jeder Kerze öffnet, die die Kriterien erfüllt (ich verwende H1 als Zeitrahmen).

Ich habe nicht debuggen und realisiert einige Teil der Codes sind nicht ausgelöst. Sind Sie Jungs in der Lage, die EA richtig mit dem Code zum Download zur Verfügung laufen?

Dateien:
screen.jpg  417 kb