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
Testskript für die erste Version des Algorithmus:
Für eine so einfache Funktion haben Sie die Schnittstelle zu kompliziert gestaltet. Viele unnötige Exporte, während das Notwendige fehlt. Ich kann Ihren Code nicht auf Anhieb verstehen, ich kann mir nur vorstellen, wie sich Menschen fühlen, die nicht so gut programmieren können.
Jetzt werde ich nachdenken und meine eigene Version eines vereinfachten Export- und Testskriptbetriebs vorschlagen.
Vielleicht dient der "evolutionäre" Ansatz bei der Suche nach Werten für die Parameter der FF-Gleichung nicht so sehr dem Zweck, die Effizienz bei der Suche nach Werten zu verbessern, sondern eher der Software, die den Prozess der Evolution modelliert.
Nun, da die Evolution von Wissenschaftlern vertreten wird...
Der Ansatz ist sehr konsequent in seiner Übereinstimmung mit allen evolutionären Kanons...
Proposition:
1. Eine Fitnessfunktion nimmt eine Reihe von Parametern des Typs double auf und gibt eine Zahl zurück, die umso größer ist, je besser die Parameter gewählt wurden. Der Prototyp der Fitnessfunktion lautet wie folgt:
2. Die Fitnessfunktion hat einige Parameter, die in der Struktur FitnessParams angegeben werden. Eine Beschreibung der Struktur wird im Folgenden gegeben:
3. Die Fitnessfunktion und ihre Parameter sind vor äußeren Einflüssen geschützt und werden in einer unabhängigen Bibliothek gespeichert. Die Werte der Parameter der Fitnessfunktion und des Algorithmus selbst werden zum Zeitpunkt der Kompilierung von einem unabhängigen Gutachter festgelegt und können von niemandem mehr geändert werden.
4. Ein benutzerdefinierter Optimierungsalgorithmus und ein Prüfskript können die Parameter einer Fitnessfunktion ermitteln. Zu diesem Zweck enthält die Datei Export.mqh die erforderlichen Prototypen dieser Funktion und ihrer Parameter. Um FF-Parameter zu erhalten, wird die Exportfunktion verwendet, die sich ebenfalls in ...\\\Scripts\\\FF\\FF.ex5 befindet:
void GetFitnessParams(FitnessParams& params);
5. Der Benutzer-Optimierungsalgorithmus befindet sich in einer separaten, geschlossenen Benutzerbibliothek..\Scripts\\\FF\\UserFindExtremum.ex5 und wird separat auf der Benutzerseite kompiliert. Die Funktion FindExtremum muss in die Benutzerbibliothek exportiert werden. Diese Funktion wird von dem Prüfskript aufgerufen. Der vollständige Prototyp der Funktion ist unten angegeben:
6. Das Prüfskript lädt in seinen Adressraum die Bibliothek der Fitnessfunktion ..\\Scripts\\FF\FF.ex5 mit ihren Parametern und die Bibliothek des Elements FindExtremum..\Scripts\\\FF\UserFindExtremum.ex5. Danach ruft es die Elementfunktion FindExtremum auf.
7. Nachdem die Teilnehmerfunktion ausgeführt wurde, fragt das Prüfskript die Parameter der Fitnessfunktion ab, die den von der Teilnehmerfunktion gefundenen Maximalwert und die Anzahl der Aufrufe enthalten, die erforderlich waren, um diesen Maximalwert zu finden. Auf der Grundlage dieser Daten wird ein Bericht über das Ergebnis des Teilnehmers in Form einer Tabelle erstellt:
Im folgenden Beitrag finden Sie die erforderlichen Dateien und ein Anwendungsbeispiel
Export.mqh-Datei - eine Liste der verfügbaren Funktionen und der Parameterstruktur, die allen Teilnehmern gemeinsam ist
FF.mq5 Datei - Beispiel für eine Fitnessfunktion als Bibliothek.
Datei TestFF.mq5 - Prüfalgorithmus als Skript
UserFindExtremum.mq5 Datei - benutzerdefinierte Funktion für die Suche nach einem Extremum in Form einer Bibliothek. Als Beispiel wird eine Zufallssuche verwendet
Export.mqh-Datei - eine Liste der verfügbaren Funktionen und der Parameterstruktur, die allen Teilnehmern gemeinsam ist
FF.mq5 Datei - Beispiel für eine Fitnessfunktion als Bibliothek.
Datei TestFF.mq5 - Prüfalgorithmus als Skript
UserFindExtremum.mq5 Datei - benutzerdefinierte Funktion für die Suche nach einem Extremum in Form einer Bibliothek. Als Beispiel wird eine Zufallssuche verwendet
Für eine so einfache Funktion haben Sie die Schnittstelle zu kompliziert gestaltet. Viele unnötige Exporte, während das Notwendige im Gegenteil fehlt. Ich habe Ihren Code nicht auf Anhieb verstanden, und ich kann mir vorstellen, wie sich Leute fühlen, die nicht so gut programmieren können.
Ich werde darüber nachdenken und meine eigene Version eines vereinfachten Export- und Testskripts vorschlagen.
Warum ist das nicht notwendig?
Welche Dinge fehlen?
Immerhin nicht nur, um den Teilnehmern das Leben so schwer wie möglich zu machen, also habe ich alles gemacht, und nicht am ersten Tag habe ich über alles nachgedacht und auch nicht am zweiten.
Warum nicht die richtigen?
Welche fehlen noch?
Immerhin, nicht nur, um das Leben so schwierig wie möglich für die Teilnehmer zu machen, so habe ich alles, und nicht den ersten Tag dachte ich über alles, und nicht einmal die zweite.
Andrew, ich weiß nicht, wie es anderen geht, aber mir persönlich hat das Beispiel von Vasily besser gefallen. Nichts für ungut. Dies ist nur meine subjektive Wahrnehmung.
Der Fairness halber schlage ich vor, die Frage nach der Wahl der Verbindungsschnittstelle (Ihre oder die von Vasiliy) zur Abstimmung zu stellen.
Was meinen Sie dazu?
Andrew, ich weiß nicht, wie es anderen geht, aber mir persönlich hat das Beispiel von Vasily besser gefallen. Nichts für ungut. Das ist nur meine subjektive Wahrnehmung...
Um fair zu sein, schlage ich vor, über die Wahl einer Verbindungsschnittstelle (Ihre oder die von Vasiliy) abzustimmen.
Was meinen Sie dazu?
Warum nicht die richtigen?
Welche fehlen noch?
Es geht nicht nur darum, den Teilnehmern das Leben so schwer wie möglich zu machen, so habe ich es gemacht, und es war nicht der erste Tag, an dem ich darüber nachgedacht habe, oder sogar der zweite.
In Ihrem Beispiel wird die Aufgabe der Suche teilweise an das Checker-Skript delegiert. Dies ist falsch. Das Checker-Skript sollte die Suche aufrufen und deren Ergebnis überprüfen und nichts anderes.
Es sind nicht alle FF-Parameter verfügbar. Wie erhält man zum Beispiel den Parameter Schritt (Wert 0,1), den möglichen Höchst- und Mindestwert? Es ist natürlich toll, dass jeder Benutzer dieses Forum liest und versteht, dass der Schritt 0,1, das Minimum -10,0 und das Maximum +10,0 ist, dann diese Konstanten in seinen Code einträgt und hofft, dass die FF-Funktion genauso denkt. Aber das ist nicht der richtige Weg, um das zu tun.
Viele Exportfunktionen wie ServiceFunc1 werden nur in bestimmten Suchalgorithmen verwendet. Sie sollten zum Beispiel nicht für die Zufallssuche verwendet werden. Warum also sollte eine Benutzerbibliothek sie exportieren? Es genügt, die Prüfaufgabe von der Suchaufgabe zu trennen, um zu erkennen, dass all diese komplizierten Kombinationen von Exportfunktionen unnötig sind.
Es gibt noch viele andere Dinge, die Add-ons überflüssig machen.
Was genau gefällt Ihnen besser?