Diskussion zum Artikel "Kontrollierte Optimierung: Simuliertes Abkühlen" - Seite 2

 
MetaQuotes Software Corp.:

Neuer Artikel Kontrollierte Optimierung: Simuliertes Glühen ist veröffentlicht worden:

Autor: Aleksey Zinovik

Ich habe noch nicht begonnen, mit mt5 zu arbeiten, aber ich denke, dass ich (vielleicht mit einigen Änderungen und/oder bedingter Kompilierung) in der Lage sein werde, dies auch im Strategietester von mt4 zu verwenden.

Die genetische Optimierung von mt4 hat ein kleines Problem, das vielleicht auch für mt5 existiert und vielleicht auch für Ihren Ansatz.

Wenn ich in OnInit() den Parametersatz prüfe und feststelle, dass ein aktueller Satz nicht prüfenswert ist, komme ich aus OnInit() mit INIT_PARAMETERS_INCORRECT zurück. Die Optimierung wird nicht durchgeführt, was Zeit spart, ok - aber:

  1. der genetische Algorithmus des mt4 betrachtet dies als einen gültigen Durchlauf
  2. er erhöht daher den Zähler, so dass
  3. der genetische Al gorithmus viel früher anhält als er sollte (ich denke, sein Kriterium zum Anhalten ist eine Mischung aus der Anzahl der Durchläufe und der Änderung des Zielwertes).

Haben Sie sich um diese Situation gekümmert: Rückkehr von OnInit(), obwohl es keinen Fehler gibt (wie: Datei nicht gefunden,..), nur weil die Parametereinstellung nicht getestet werden sollte, was in diesem Fall die Anzahl nicht erhöhen und die Temperatur senken sollte?

Auf jeden Fall vielen Dank für diesen interessanten Artikel!

Gooly

 
Carl Schreiber:

Ich habe noch nicht begonnen, mit mt5 zu arbeiten, aber ich denke, dass ich (vielleicht mit einigen Änderungen und/oder bedingter Kompilierung) in der Lage sein werde, dies auch im Strategietester von mt4 zu verwenden.

Die genetische Optimierung von mt4 hat ein kleines Problem, das auch für mt5 besteht und vielleicht auch für Ihren Ansatz gilt.

Wenn ich in OnInit() den Parametersatz prüfe und feststelle, dass ein aktueller Satz nicht prüfenswert ist, komme ich aus OnInit() mit INIT_PARAMETERS_INCORRECT zurück. Die Optimierung wird nicht durchgeführt, was Zeit spart, ok - aber:

  1. der genetische Algorithmus des mt4 betrachtet dies als einen gültigen Durchlauf
  2. er erhöht daher den Zähler, so dass
  3. der genetische Al gorithmus viel früher anhält als er sollte (ich denke, sein Kriterium zum Anhalten ist eine Mischung aus der Anzahl der Durchläufe und der Änderung des Zielwertes).

Haben Sie sich um diese Situation gekümmert: Rückkehr von OnInit(), obwohl kein Fehler vorliegt (z.B.: Datei nicht gefunden,..), nur weil die Parametereinstellung nicht getestet werden sollte, was in diesem Fall die Anzahl nicht erhöhen und die Temperatur nicht verringern sollte?

Auf jeden Fall danke ich Ihnen für diesen interessanten Artikel!

Gooly

Ich prüfe nicht die Korrektheit der Parameter und unterbreche die OnInit()-Funktion nicht, wenn die Parameter nicht korrekt sind. In der Funktion OnTesterInit() werden Parameter, deren Werte mit dem Strategietester optimiert werden müssen, von der Optimierung ausgeschlossen. Bei jeder neuen Iteration werden die Parameter aus der Datei gelesen, in der OnTester()-Funktion werden neue Parameterwerte in die Datei geschrieben. Damit ist es möglich, die vom Strategietester generierten Parameterwerte nicht zu verwenden, um die notwendigen Parameter selbständig an die OnInit()-Funktion auszugeben.
Entschuldigung für mein Englisch
 
Aleksey Zinovik:
Ich überprüfe nicht die Korrektheit der Parameter und unterbreche die OnInit()-Funktion nicht, wenn die Parameter nicht korrekt sind. In der Funktion OnTesterInit() werden Parameter, deren Werte mit dem Strategietester optimiert werden müssen, von der Optimierung ausgeschlossen. Bei jeder neuen Iteration werden die Parameter aus der Datei gelesen, in der OnTester()-Funktion werden neue Parameterwerte in die Datei geschrieben. Damit ist es möglich, die vom Strategietester generierten Parameterwerte nicht zu verwenden, um die notwendigen Parameter selbständig an die OnInit()-Funktion auszugeben.
Entschuldigung für mein Englisch

Ich verstehe jetzt - danke! Ich muss nur die Plausibilität des Parametersetups der nächsten Iteration überprüfen, bevor dieses Setup in die Datei für den nächsten Lauf geschrieben wird. Auf diese Weise lässt sich "mein Problem" vermeiden!

Vielen Dank für diese Idee und den Artikel!

 

Hallo ,

Sie sagten: "Die Nachteile können durch die Entwicklung eines universellen Moduls beseitigt werden, das verschiedene Algorithmen zur Optimierung der Expertenparameter enthält".

Können Sie das universelle Modul genauer beschreiben? Welche anderen Algorithmen zur Optimierung der Expertenparameter gibt es?

 
nevar:

Hallo ,

Sie sagten: "Die Nachteile können durch die Entwicklung eines universellen Moduls beseitigt werden, das verschiedene Algorithmen zur Optimierung der Expertenparameter enthält".

Können Sie das universelle Modul genauer beschreiben? Welche anderen Algorithmen zur Optimierung der Expertenparameter gibt es?

Der Artikel zeigt, wie man einen neuen Optimierungsalgorithmus mit dem Strategietester verbindet. In ähnlicher Weise kann man durch Hinzufügen neuer Methoden zur Klasse AnnealingMethod.mqh oder durch Erstellen einer neuen Klasse andere Algorithmen anschließen, zum Beispiel Ameisenalgorithmen (Ant colony optimization). Ich plane, die Arbeit solcher Algorithmen zu testen und das Ergebnis zu teilen.