Nicht für MT-Entwickler! Wodurch soll INIT_PARAMETERS_INCORRECT ersetzt werden? - Seite 4
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
Ich habe einen Test Expert Advisor für den Optimizer's Matte Mode erstellt
So sieht ein Optimierungsdiagramm für 8 parallele Agenten im Brute-Force-Modus ohne Verschachtelung von Durchgängen aus (Rand = false)
Hier ist deutlich zu erkennen, dass die Agenten Aufgaben in Stapeln ausführen.
Um die Abhängigkeit von den Parametern zu sehen, schalten wir den Anzeigemodus um
Hier ist sie - eine einheimische Parabel, deren Spitze (Einheit) wir über GA suchen werden.
Im Shuffle-Modus (Rand = true) wird unser Vertex natürlich mit roher Gewalt gefunden
Hier ist die einheimische Parabel, deren Spitze (eins) durch GA gesucht wird.
Ohne GA-Mischung habe ich das Extremum nicht gefunden, bin ihm aber nahe gekommen
Es waren 179 Durchgänge nötig. Ich möchte daran erinnern, dass der gesamte Aufgabenkomplex 10001 Durchgänge umfasst. Ja, das Problem ist sehr einfach, aber dennoch.
Versuchen wir nun die Variante mit Mischen (Rand = true).
Wieder schließen. Aus dem Log geht klar hervor, dass 182 Durchläufe vollständig berechnet und 970 aus dem Cache genommen wurden.
Ein gutes Ergebnis, daher sollten wir versuchen, die Anzahl der Punkte im Intervall zu erhöhen.
Das ist ein gutes Ergebnis, also versuchen wir, die Anzahl der Punkte im Intervall zu erhöhen.
Die Anzahl der Punkte in diesem Intervall beträgt eine Million.
Rand = false
Rand = true (von einer Million Punkten wurden zufällig ausgewählte Paare 100 Millionen Mal vertauscht)
Das Ergebnis zeigt, dass meine selbstbewusste Aussage
Forum über den Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien
Nicht für MT-Entwickler! Wodurch ist INIT_PARAMETERS_INCORRECT zu ersetzen?
fxsaber, 2018.07.10 16:27
Offensichtlich, wenn Sie eine vollständige Aufzählung von y = x^2 verfolgen. Dann mischen Sie die Optimierungszeilen nach dem Zufallsprinzip und erstellen eine neue Menge auf der Grundlage dieser Mischung. Dann wird die GA den Scheitelpunkt der Parabel nicht finden.
Ist eher falsch als wahr.
Andererseits war die Wahl der Fitnessfunktion als Parabel anfangs extrem kurzsichtig, da die Anzahl der Punkte nahe bei eins nicht mehr zu überbieten ist.
Es bleibt nur eine Frage für die GA, warum das exakte Extremum nicht ohne Vermischung gefunden wurde, da die gewählte Funktion dafür ideal ist?
Andererseits war die Wahl einer Fitnessfunktion in Form einer Parabel anfangs extrem kurzsichtig, da die Anzahl der Punkte nahe der Eins nicht mehr zu überbieten ist.
Ich nehme an, wenn Sie eine Funktion mit einer scharfen Spitze wählen, wird die GA nach dem Mischen immer noch brechen. Und eine solche Funktion ist viel näher an TC.
Ich habe einen Test-EA für den Mathe-Modus des Optimierers veröffentlicht
Leider reichen meine Kenntnisse nicht aus, um das alles zu verstehen ))))
Ich habe beschlossen, es einfacher zu machen. Im Allgemeinen habe ich meinem Expert Advisor einen Datensatz in der Datei der legitimen Ketten hinzugefügt. Ich habe 1953 mögliche Varianten von 117649 gefunden. Übrigens habe ich 3 Tage gebraucht, um die vollständige Suche mit einem Intervall von 3 Tagen, nur offenen Preisen und 0 Trades durchzuführen.
Ich habe jetzt eine Datei. Ich weiß noch nicht, wie ich sie zur Optimierung einsetzen kann. Ich werde morgen darüber nachdenken...
Und warum gibt es weniger erfolgreiche? Müssen wir es wieder tun?Ich gehe davon aus, dass bei der Auswahl einer Funktion mit einer scharfen Spitze der GA nach dem Mischen immer noch bricht. Und eine solche Funktion ist viel näher an TC.
Die Genetik ist also nicht dazu da, Spitzenwerte zu erfassen, sondern stabile Regionen zu finden, wie es die TZ verlangt. Und Spitzenwerte sind in der Regel Rauschen.
Falsche Parameterkombinationen sollten bereits bei der Bildung der Population eliminiert werden, d. h. wenn ein Gentausch oder eine Mutation zu einem falschen Individuum führt, muss die Generation so lange wiederholt werden, bis das richtige Individuum entstanden ist. Dann ist alles in Ordnung.
Wenn die Aussonderung durchINIT_PARAMETERS_INCORRECT erst nach der Bildung der Population erfolgt und dadurch die Größe dieser Population reduziert wird, dann verstößt das natürlich gegen den normalen Mechanismus der genetischen Selektion. Offenbar hat MQ diese Variante. Und in diesem Fall ist die Aufgabe des Themenstarters kaum lösbar (im allgemeinen Fall), da hilft auch kein Tamburintanz.
Danke für Ihre Meinung, aber es gibt hier keine Diskussion über die Architektur des Programms. Falls Sie es noch nicht bemerkt haben...
Falsch, falsch.
Ich stimme zu, dass Ihr Problem genau in der falschen Architektur des Programms liegt. Ich denke, man kann das Maximum nur mit brachialer Gewalt erreichen, und das wird höchst instabil sein.
Höchstwahrscheinlich werden bei jedem Tick volle Überschwinger verwendet. Dies führt an sich schon zu einer Verlangsamung des Betriebs. Wenn dies der Fall ist, sollten wir in Erwägung ziehen, die vollständige Suche nur beim Start/bei der Eröffnung des Expert Advisors zu verwenden und dann nach den neuesten Daten zu suchen. Eine solche Optimierung reduziert immer den Ressourcenverbrauch.
Die Genetik ist nicht dazu da, Spitzenwerte zu erfassen, sondern stabile Regionen zu finden, wie es die TZ verlangt. Und Spitzenwerte sind in der Regel Rauschen.
Außerdem sind selbst stabile Bereiche des Optimierungsraums immer noch Bereiche mit Einbrüchen und Spitzen, der FF ist alles andere als glatt.
Genetics ist ein vielseitiges Werkzeug, es könnte optimiert werden, um eine beschädigte FF zu optimieren, aber in diesem Fall wird es länger dauern, eine glatte FF zu optimieren.
Imho sollte die Standardgenetik Sätze mit der Hälfte von INIT_PARAMETERS_INCORRECT verdauen, ohne überhaupt darüber nachzudenken. Zumal diese Gebiete in der Regel sehr dicht beieinander liegen.
aber im Allgemeinen besteht die beste Lösung darin, den Raum der Eingabeparameter zu transformieren.
Vergeblich, vergeblich.
Ich stimme zu, dass Ihr Problem in der falschen Architektur des Programms liegt. Ich denke, man kann das Maximum nur mit brachialer Gewalt erreichen, und das wird sehr instabil sein.
Es geht nicht um Architektur. Es geht um die Menge der Funktionen und die Reihenfolge, in der sie angewendet werden. Ursprünglich hatten diese Funktionen eine einzige konstante Folge. Dann beschloss ich, dass ich vielleicht mit der Reihenfolge experimentieren sollte, in der ich sie anrufe und einige von ihnen nicht anrufe. Ich habe es durch INIT_PARAMETERS_INCORRECT implementiert. Sie können den Fortschritt sehen. Aber ich habe ein Problem mit der genetischen Optimierung.
Nun zur Sache. Ich habe eine Datei mit legitimen Ketten erstellt. Wie kann man sie jetzt nutzen? Ich vermute, dass ich onTester, Frames verwenden sollte... Ich habe mir die Dokumentation angeschaut, aber irgendetwas passt nicht zusammen. Ich weiß nicht, wie ich damit umgehen soll.
Ich denke daran, es in ein Array zu lesen und Daten daraus zu entnehmen...