Diskussion zum Artikel "Algorithmen zur Optimierung mit Populationen: Saplings Sowing and Growing up (SSG)" - Seite 6

 
Andrey Dik #:
Ich versuche hier nur zu vermitteln, dass es möglich ist, fünf Optimierungen zu vermeiden und mit einer Optimierung auf einmal in den grünen Bereich zu kommen. Dazu ist es notwendig, die Haupt-FF über die Neben-FF einzuführen. die Haupt-FF sollte den grünen Bereich beschreiben und ist das globale Maximum.
Die FF auf dem Bild ist also nicht das, was wir brauchen, wir brauchen eine FF, bei der wir das globale Maximum suchen müssen.
Es ist schwierig, dies mit den Fingern zu erklären, aber in dem Artikel)))) können Sie es nachlesen.

Es ist klar, dass bei einem kompetenten Ansatz niemand nach demselben Gleichgewichtskriterium optimiert. Sie versuchen, das Fehlen von Überschreitungen, die statistisch signifikante Anzahl von Transaktionen usw. zu berücksichtigen.

Ich habe hier ein wenig über das Thema geschrieben.

Sie sollten in jedem Durchgang ein ähnliches Bild der Geschäfte erhalten. Hier sehen Sie die "Rogue Trades" und die TC Bricks.


Um das Optimierungskriterium zu bilden, ist es wünschenswert, die Geschäfte, die Ausreißer sind, herauszuwerfen.

Aber das ist das Thema der Bildung eines geeigneten FF. Selbst wenn sie völlig ohne Spitzen ist und einen hügeligen Charakter hat, werden diese Hügel nicht durch einen einzigen abgeschlossenen Durchgang gefunden werden. Deshalb mache ich es auf diese Weise.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion des Artikels "Populationsoptimierungsalgorithmen: Saplings Sowing and Growing up (SSG) Algorithmus"

fxsaber, 2023.03.22 00:32

Ich finde indirekt durch die erzwungene Unterbrechung der Optimierung, wenn eine große Anzahl von Kernen beteiligt ist. Grob gesagt, gibt es 20 Agenten im Tester, ich unterbreche die Optimierung nach 2000 Durchläufen.

Aber das ist sehr grob. Es ist zuverlässiger, den besten Hügel zu verwerfen und die Optimierung zu wiederholen.
Уменьшаем выборку - увеличиваем стат. значимость?
Уменьшаем выборку - увеличиваем стат. значимость?
  • 2022.01.28
  • www.mql5.com
Торговый робот должен (условно) удовлетворять следующим условиям: Совершать достаточно много сделок на интервале настройки (оптимизации). Показывать столь же стабильный результат вне интервала
 
fxsaber Optimierungskriterium).

Wenn man ein oder zwei Jahre lang jeden Tag eine vollständige Optimierung für eine TK mit zwei Parametern durchführt, um ein ähnliches Bild zu erhalten, und dann aus diesen Bildern ein Video erstellt, erhält man etwas wie dieses:


Es wäre naiv anzunehmen, dass die Oberfläche statisch bleibt.
Die Frage ist also:
Was ist der Sinn?

 
Andrey Dik Gruppe aus der Gruppe herausgeschmissen wird, die dann gezwungen ist, sich in getrennten Extremen zusammenzuschließen.

Ehrlich gesagt, ist dies kein spezieller Wunsch, sondern ein Werkzeug, das in einer seriösen Software für Algo-Trading - Tester - enthalten sein muss.

Aber es ist realistisch, es selbst zu tunen.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.

Diskussion über den Artikel "Populationsoptimierungsalgorithmen: Saplings Sowing and Growing up (SSG) Algorithmus"

fxsaber, 2023.03.23 19:51

wenn man die Daten der zu schneidenden Fläche hat, kann man sehr leicht (auch im normalen Tester) die Optimierung ohne diese Flächenangabe machen.

Aber mir fehlt völlig die Kompetenz, wie man den Bereich um das gefundene globale Maximum in den GA-Ergebnissen definiert.

GA-Algorithmen sind ganz anders. Ich nehme an, dass, wenn ein Maximum in 1000 Durchläufen gefunden wird und der Algorithmus anhält, die letzten 100 Durchläufe Punkte um das gefundene Maximum sind. Dann nehmen wir einfach diese 100 Punkte und bilden sofort den Bereich, der bei zukünftigen Optimierungen weggeworfen wird.

Wenn derselbe reguläre GA nur einmal ausgeführt wird, sollten die letzten 100 Einträge in der opt-Datei im Prinzip diese Punkte sein. Ich bin mir jedoch nicht sicher, ob dies bei einem Multi-Core-Ansatz der Fall ist. Deshalb ist eine Art von Clustering erforderlich. Es gibt eine ganze Reihe von Artikeln zu diesem Thema, Sie sollten sie studieren.

 
Nikolai Semko #:

Es wäre naiv anzunehmen, dass die Oberfläche statisch bleiben würde.

Ich brauche einen relativ statischen Punkt in dieser blubbernden Oberfläche. Die habe ich gefunden.

Und doch sollten wir das Thema nicht auf die Kunst und den Sinn des Kochens reduzieren. Man braucht einen Topf zum Kochen.

 
fxsaber #:

Reduzieren Sie das Thema jedoch nicht auf das Können und die Bedeutung des Kochens. Man braucht einen Topf zum Kochen.

+++

 
fxsaber #:

Ehrlich gesagt, ist dies kein spezieller Wunsch, sondern ein Tool, das in einer seriösen Algo-Trading-Software enthalten sein muss - der Tester.

Aber Sie können es wirklich selbst tunen

GA-Algorithmen sind ganz anders. Ich nehme an, dass, wenn ein Maximum für 1000 Durchläufe gefunden wird und der Algorithmus anhält, die letzten 100 Durchläufe Punkte um das gefundene Maximum sind. Dann nehmen wir einfach diese 100 Punkte und bilden sofort eine Region, die bei künftigen Optimierungen weggeworfen wird.

Wenn derselbe reguläre GA nur einmal ausgeführt wird, sollten die letzten 100 Einträge in der opt-Datei im Prinzip diese Punkte sein. Ich bin mir jedoch nicht sicher, ob dies bei einem Multi-Core-Ansatz der Fall ist. Deshalb ist eine Art von Clustering erforderlich. Es gibt eine ganze Reihe von Artikeln zu diesem Thema, ich muss recherchieren.


Ich glaube, dass die letzten 100 Einträge für verschiedene Algorithmen auffallend unterschiedlich sein werden. aus Erfahrung kann ich mir das leisten, daher ist es sinnvoll, dass die Wahl der Algorithmen für die Aufgaben Sinn macht, nicht einfach den besten aus der Tabelle zu nehmen....
Daher finde ich die Idee, eine solche Rangliste zu erstellen, sinnvoll.
spezifische Aufgabe - ich meinte speziell eine solche Aufgabe, nicht eine seltene. es gibt einen Bedarf, also sollte er in der Plattform berücksichtigt werden, vorzugsweise.

 
Die letzten 100 Datensätze entsprechen nicht verschiedenen Spitzenwerten, sondern sind alle um einen letzten gefundenen Spitzenwert zentriert.
 
Andrey Dik #:

Ich glaube, dass die letzten 100 Datensätze für verschiedene Algorithmen auffallend unterschiedlich sein werden. Aus Erfahrung kann ich es mir leisten, das zu glauben, also ist es vernünftig zu bemerken, dass die Auswahl von Algos für Aufgaben Sinn macht, nicht einfach den besten aus der Tabelle zu nehmen...

Daher finde ich die Idee, eine solche Bewertungstabelle zu erstellen, sinnvoll.

Ein Hoch auf das Ranking! Mehr Objektivität. Aber ich bin immer noch ein bisschen verwirrt. Ich schaue mir immer noch die praktischen Probleme an, mit denen ich konfrontiert bin.

Spezifische Aufgabe - ich meinte speziell solche, nicht selten. es gibt einen Bedarf, so sollte es in der Plattform berücksichtigt werden, vorzugsweise.

Im Tester würde ich ein Häkchen bei "Bereiche mit gefundenen Maxima früherer Optimierungen wegwerfen" hinzufügen.

Dann den ersten Lauf ohne dieses Häkchen, den Rest - mit aktiviertem Häkchen. Machen Sie 20 Optimierungen - erhalten Sie 20 Spitzenwerte.

Dann lade sie in OOS-check (20 einzelne Läufe) und werte sie aus, während du gleichzeitig den gesamten TS/FF auswertest.

 
fxsaber #:

Ich brauche einen relativ statischen Punkt auf dieser blubbernden Oberfläche. Ich habe diese gefunden...

aber dennoch denke ich, dass das Finden solcher Punkte einen probabilistischen Charakter hat.
Meine Botschaft ist, dass es keine Eingangsparameter geben sollte, die eine "Optimierung" am TS-Eingang erfordern. Solche Parameter machen den TS zu einer Münze.
Auch die interne Selbstoptimierung von internen Parametern ist Selbstbetrug.

 
fxsaber #:

Im Tester würde ich ein Kontrollkästchen "Bereiche der gefundenen Maxima früherer Optimierungen verwerfen" hinzufügen.

Unabhängige Implementierung:

  1. Ich habe die letzte opt-Datei gelesen und einen Bereich aus den letzten 100 Durchläufen erzeugt (verständlicherweise ist das nicht ganz richtig).
  2. Diesen Bereich habe ich der gemeinsamen Datei hinzugefügt.
  3. Der Expert Advisor liest diese Bereiche aus der Common-Datei in OnInit. Und es gibt auch eine Prüfung, dass wenn die Eingabe diese Bereiche trifft, wir INIT_FAILED machen.
Alles ist bereit! Es ist nur wichtig, den Bereich in Punkt 1 korrekt zu bilden.