Fehler, Irrtümer, Fragen - Seite 1962
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
Wie kann das helfen?
Die Optimierung ist durchgelaufen, wir haben alle zu suchenden Parameter mit Wertebereichen aufgeschrieben.
Und dann führen wir einen einzelnen Test durch, lesen die Parameterliste und zeigen sie an: Parameter = Wert. In diesem Fall kennen wir den Wert nicht, da wir die Eingabevariable nicht mit ihrem Namen ansprechen können.
Sie machen den Eingabeparameter bool Optim. In OnInit geben Sie INIT_FAILED zurück, wenn Optim == true ist. Gleichzeitig schreiben Sie in OnTesterPass durch FrameInputs und ParameterGetRange (oder im Destruktor des globalen Klassenobjekts) das eigentliche SET von Optimization.
Dann setzen Sie Optim = false. Und nehmen Sie einen weiteren Parameter sinput int Range, setzen Sie ihn durch ParameterSetRange von Null auf Eins. Lesen der SET-Datei in OnTesterInit und Setzen der Werte aller Parameter aus der Datei in ParameterSetRange. Wenn Range == 0 ist, wird in OnInit INIT_FAILED zurückgegeben.
Das ist alles! Anstelle der Einzeloptimierung gibt es die imaginäre Optimierung, die ebenfalls schneller ist als die Einzeloptimierung.... Plus Lesen/Schreiben von Eingabeparametern.
Off-Topic-Frage, aber ich werde Sie fragen, ob es möglich ist, das MQL5-Handbuch mit zusätzlichen Beispielen für die Implementierung von Algorithmen mehr und klarer zu ergänzen
Machen Sie den Eingabeparameter bool Optim. In OnInit geben Sie INIT_FAILED zurück, wenn Optim == true ist. Zur gleichen Zeit in OnTesterPass durch FrameInputs und ParameterGetRange (oder im Destruktor der globalen Klasse Objekt) schreiben Sie tatsächlich SET-Datei Optimierung.
Dann setzen Sie Optim = false. Und nehmen Sie einen weiteren Parameter sinput int Range, setzen Sie ihn durch ParameterSetRange von Null auf Eins. Lesen der SET-Datei in OnTesterInit und Setzen der Werte aller Parameter aus der Datei in ParameterSetRange. Wenn Range == 0 ist, wird in OnInit INIT_FAILED zurückgegeben.
Das ist alles! Anstelle der Einzeloptimierung gibt es die imaginäre Optimierung, die ebenfalls schneller ist als die Einzeloptimierung.... Plus Lesen/Schreiben von Eingabeparametern.
Vielen Dank für den detaillierten Algorithmus.
'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 3113 msec 1 1
Kompilierzeit bei 1648
'TesterBenchmark_Example.mq5' TesterBenchmark_Example.mq5 1 1 'TesterBenchmark.mqh' TesterBenchmark.mqh 1 1 0 error(s), 0 warning(s), compile time: 219 msec 1 1
Es wurde etwas verändert!
Kompilierungsfehler
Und wenn Sie die Zeile (*) durch
dann ist das in Ordnung. Was ist der Unterschied?Es sieht aus wiehttps://www.mql5.com/ru/forum/1111/page1977#comment_5595772, hat aber einen anderen Fehlercode
Fehler bei der Kompilierung
Ansonsten:
Das ist in Ordnung. Welchen Unterschied macht das?Fehler bei der Kompilierung
aber auf diese Weise:
normalerweise. Was ist der Unterschied?Der Unterschied ist gewaltig. Wenn g(f) aufgerufen wird, hat der Compiler keine Ahnung, welchen Typ f hat, da nur die Vorlage vorgeschrieben ist. Wenn Sie die Vorlage überladen, gibt es kein Problem
Kompilierzeit: 1643.
Kompilierzeit bei 1648
Das ist ein cooler Tweak!
Meiner ist derselbe wie vorher, die Zusammenstellung ist nicht schneller!
Ich habe es noch, die Kompilierung wird nicht beschleunigt.
Vielleicht nicht das verwenden, was in TesterBenchmark.mqh zu einer Verlangsamung geführt hat
Der Unterschied ist gewaltig. Wenn g(f) aufgerufen wird, hat der Compiler keine Ahnung, welchen Typ f hat, da nur die Vorlage vorgeschrieben ist. Wenn Sie die Vorlage überladen, gibt es kein Problem