Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 590
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!
Können Sie mir bitte zeigen, wie ein EA, der auf Triple Exponential Average basiert, verboten werden kann, eine Position zu eröffnen, wenn der letzte Trade auf SL herausgenommen wird?
MQL5
Im normalen Modus habe ich damit keine Probleme, aber sobald ich die Optimierung starte, wird bei jedem Durchlauf ein Fehler gedruckt und es gibt keine Ausgabe.
Aber das Problem ist, dass der Code nicht einmal ausgeführt wird. Ich habe Prints um das Programm gelegt, keine Ausgabe, nur ein Fehler bei jedem Lauf, der beendet wird.
Warum funktioniert das Drucken nicht?
MQL5
Der Expert Advisor funktioniert im normalen Modus problemlos, aber sobald ich mit der Optimierung beginne, beschwert er sich bei jedem Durchgang, dass er die Array-Grenzen erreicht hat.
Aber das Problem ist, dass der Code nicht einmal ausgeführt wird. Ich habe Prints um das Programm gelegt, keine Ausgabe, nur ein Fehler bei jedem Lauf, der beendet wird.
Warum funktioniert Drucken nicht?
Sie müssen die Array-Größe überprüfen. Es wird eine Zeile angezeigt, in der ein Ausgang außerhalb des Arrays vorhanden ist. Hier müssen Sie Print vor dieser Zeile einfügen, in der Sie die Ausgabe der Array-Größe und des Indexes schreiben, mit dem Sie versuchen, auf Array-Daten zuzugreifen - die Array-Größe und der Index werden im Protokoll ausgegeben, und dann wird das Programm mit einem Fehler beendet.
ABER! Führen Sie all dies im Testprogramm im visuellen Modus durch, nicht im Optimierer - im Optimierer (und im Testprogramm im nicht-visuellen Modus) sind alle Drucker für die Beschleunigung deaktiviert.
Verlassen Sie das Array, bevor Sie Print() erreichen.
Überprüfen Sie die Größe des Arrays. Es wird eine Zeile angezeigt, in der die Ausgabe außerhalb des Arrays liegt. Vor dieser Zeile müssen Sie Print einfügen, in das Sie die Ausgabe der Array-Größe und des Indexes schreiben, mit denen Sie versuchen, auf Array-Daten zuzugreifen - die Array-Größe und der Index werden in das Journal gedruckt, und dann wird das Programm abstürzen.
ABER! Machen Sie das alles im Testgerät im visuellen Modus, nicht im Optimierer - im Optimierer (und im Testgerät im nicht-visuellen Modus) sind alle Drucker für die Beschleunigung ausgeschaltet.
Das ist das Problem, alles funktioniert mit beliebigen Parametern im Bildmaterial, aber mit jeder Optimierung gerät es außer Kontrolle
Das ist das Problem, dass mit beliebigen Parametern in der Visualisierung alles funktioniert, aber mit jeder Optimierung ist das nicht mehr möglich.
Was befindet sich in dem Feld? Ich kann nur vermuten, dass entweder noch keine Daten im Array vorhanden sind oder dass es kleiner ist, als Sie denken. Gibt es im Programm irgendwelche Überprüfungen für die Array-Größe?
Was befindet sich in dem Feld? Ich kann nur vermuten, dass entweder noch keine Daten im Array vorhanden sind oder es kleiner ist, als Sie denken. Wird im Programm die Größe des Arrays überprüft?
Letzte N, ich habe 500, macd-Werte, und Zyklus Grenzen sind streng begrenzt und kann nie kleiner als 0 und größer als N, ich habe beide debugged es und auf Papier gezählt
Die letzten N, ich habe 500, macd-Werte, und die Grenzen der Schleife sind streng begrenzt und kann nie kleiner als 0 und größer als N, ich habe beide debugged es und auf dem Papier gezählt
Sind Sie sicher, dass das Array mit Daten gefüllt ist, wenn Sie es aufrufen? Gibt es eine Prüfung auf Datenverfügbarkeit und darauf, dass das Array den richtigen Wert hat?
Nur weil es auf einem Stück Papier geschrieben und berechnet ist, heißt das nicht, dass es mit dem übereinstimmt, was der EA erhalten hat (nicht erhalten hat).
Sind Sie sicher, dass das Array mit Daten gefüllt ist, wenn Sie es aufrufen? Gibt es eine Überprüfung, ob die Daten verfügbar sind und ob das Array die richtige Größe hat?
Nur weil es auf einem Stück Papier geschrieben und berechnet ist, heißt das nicht, dass es mit dem übereinstimmt, was der Expert Advisor erhalten hat (nicht erhalten hat).
Ja, zu Beginn, vor allen Operationen, wird er aus dem Puffer kopiert.
Ja, am Anfang, vor allen Operationen, aus dem Puffer kopiert
Kopiert. Und wie viel wird kopiert und kontrolliert?
Wenn Sie einen Indikator mit Glättung verwenden, werden einige Balken mehr benötigt, als Sie erwarten. Die Tatsache, dass Sie kopiert haben, bedeutet also nicht, dass die Daten auch kopiert wurden und in voller Größe zur Verfügung stehen.
Es ist einfacher, die Größe des Arrays zu überprüfen und, falls es nicht die erforderliche Größe hat, OnTick() zu beenden.