Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

EA Backtest - Optimierungsprobleme

Geschrieben

Hallo!

 

Mir ist schon öfter aufgefallen, dass es wenig Sinn macht, eine Backtestoptimierung mit sehr vielen, weit gestreuten Variablen zu machen.

 

Besonders am Beispiel des eSisGJBreakout.

 

Gebe ich die Variablen möglichst weitläufig ein, also so, dass er sehr viel rechnen muss und die Varianten auch sehr weit auseinanderliegen, komme ich nichtmal ansatzweise auf die Ergebnisse, wenn ich schon vorher ungefähr weiß, welche Werte herauskommen müssten und ich die von...bis - Werte entsprechend einstelle.

 

Also Beispiel:

Ich weiß, dass beim eSisGJBreakout folgende Werte gut sind (sind jetzt nicht die wirklichen Werte, aber zur Veranschaulichung)

Start 7:15 Uhr

Mittel 12:10 Uhr

Stopp 13:50 Uhr

 

Lasse ich die Werte Optimieren auf allen 3 Variablen mit der höchst möglichen Variantenzahl,

also zB

Start 0 bis 23 Uhr, Step 1; 0 bis 59 Minuten, Step eins

Mittel siehe Start

Stopp siehe Start

 

Komme ich auf ganz andere Werte als wenn ich Optimiere im Bereich

Start 6-9 Uhr, 1-59 Minuten

Mittel 11-13 Uhr, 1-59 Minuten

Stopp 13-15 Uhr, 1-59 Minuten.

 

Das witzige ist, die zweite Variante ist doch in der ersten Variante mit einbegriffen. Also diese eingeshränkten Zeiten müssten doch alle in der uneingeshcränkten testreihe mit auftauchen.

Trotzdem sind die Ergebnisse der 2. Variante vieeel besser (ich spinne mal: 2000€ plus beim besten Setup) als die Ergebnisse der 1. Variante (nur 1000 € Plus beim besten Setup) und: die Werte der 2. Variante tauchen bei der ersten auch gar nicht erst auf.

 

Das ist schon blöd, man könnte sonst nämlich die Optimierung auch auf anderen Paaren laufen lassen, von 0-24 Uhr jeweils, um einfach so gewisse Regelmäßigkeiten auszumachen.

Wenn man sich aber darauf nicht verlassen kann?

 

Habt ihr auch solche Erfahrungen gemacht, und gibt es da Abhilfe oder Tricks?

Woran könnte das liegen?

Mir ist auch schon aufgefallen, dass manche Durchläufe einfach übersprungen werden (aus dem Chache geladen werden). Da aber immer andere Einstellungen vorhanden sind, dürfte das doch nie auftauchen (außer bei echt unplausiblen Werten)

 

Danke für eure Erfahrungen / Meinungen!

Featured Replies

Geschrieben
Danke für eure Erfahrungen / Meinungen!

 

Hast Du denn ein oder mehrere Fehlerkriterien angegeben (im Fenster Optimierung: Minimale Balance, Profit-Maximum etc.) ?

Geschrieben
  • Autor
Hast Du denn ein oder mehrere Fehlerkriterien angegeben (im Fenster Optimierung: Minimale Balance, Profit-Maximum etc.) ?

 

Nein, alles auf Standard gelassen.

In beiden Varianten. Da müsste doch trotzdem die 2. Variante als Ausschnitt der 1. Variante mit denselben Ergebnissen auftauchen?

 

Dass bei direkt hintereinander folgenden Optimierungen mit gleichen Parametern verschiedene Werte herauskommen, daran hab ich mich ja schon gewöhnt. Die Werte sind dann ja auch nur minimal verschieden.

 

Aber bei solchen "vollumfänglichen" Optimierungen sollte dann ja wenigstens ansatzweise eine Linie erkennbar sein.

 

Kommt MT4 mit den unglaublichen vielen Backtestvarianten nicht zurecht?

Ab einer gewissen Menge sagt er ja von sich aus: zu viele Varianten, bitte einschränken.

Geschrieben

Hmm, der Tester scheint ja mittlerweile mit genetischen Algorithmen zu arbeiten (Quelle: http://articles.mql4.com/361), weil es einfach dramatisch schneller geht. Das erklärt wohl auch die leicht unterschiedlichen Ergebnisse bei aufeinanderfolgenden Optimierungsvorgängen (mehr dazu: http://articles.mql4.com/134), vermute ich zumindest, da dabei meist mit zufällig generierten Zahlen gearbeitet wird.

 

Normalerweise ist das Ziel von Optimierungsvorgängen, globale Extremwerte zu finden, z.B. hier den maximalen Gewinn.

 

Alle Kombinationen durchzugehen, dauert viel zu lange. Von daher gibt es eine Reihe von Verfahren, die mit Heuristiken arbeiten und so den Suchraum (das ist der n-dimensionale Raum, der durch die Anzahl aller zu optimierenden Variablen aufgespannt wird) verkleinern sollen.

 

Bsp: Du hast nen Moving Average-EA mit 2 Variablen, nämlich die Periode für nen kurzen und für nen langen MA.

Jetzt kann man ja die Randbereiche angeben und sagen, der eine soll nie kleiner sein als 10 und größer als 20, der andere nicht größer sein als 15 und kleiner als 3.

Ein paar Kombinationen fliegen raus, weil der kurze ne größere Periodenzahl hätte als der lange. Schrittweite soll immer 1 sein.

 

Jetzt kann man für alle möglichen Kombinationen : [3,10],[3,11],[3,12],...[15,20] den EA laufen lassen und erhält nen Wert für den maximalen Gewinn bei der gegebenen Kombination.

Die Anzahl der Kombinationen kann man vorab natürlich berechnen, was im Optimierer gemacht wird und dann schreibt er zur Not die Meldung raus, dass die Anzahl der Möglichkeiten zu groß ist.

 

Ok, man hätte jetzt als Ergebnis ne 3.Dimension erzeugt, nämlich für den Maximalen Gewinn/Kombination.

 

Mal man das als Bild, entsteht irgendne merkwürdige dreidimensionale Form (wenn man die Punkte verbindet).

images.jpeg

Quelle: www.statcon.de

 

Man würde wahrscheinlich sehen, das man mehrere Kombinationen findet, die sehr dicht beeinander liegen können und nen ähnlich hohen Gewinn produzieren (d.h. es wäre eher unssensibel gegenüber Veränderungen von Eingangsparametern) oder aber weit auseinander. Sprich: bei leichten Parameteränderungen wird das Ergebnis dann sehr schnell schlechter.

 

Im optimalen Fall hat man nur einen Peak (Extremwert in der Ebene) ähnlich einer Gauß-Glocke mit einem breiten Gipfel, im schlimmsten diverse spitze Peaks. Das fehlt leider alles in MT, so dass man die Sensitivität gar nicht beurteilen kann.

 

Dazu kommt noch, dass man natürlich - da die Anzahl der Kombinationen oft sehr groß ist, meist keine erschöpfende Suche machen kann (also jede Kombination prüfen), sondern meist nur Stichproben nach einer Heuristik (ne einfache, die man User anwenden kann, wäre z.B. schon mal, die Schrittweite zu vergrößern).

Blöd nur, wenn man dann grad den höchsten Berg nicht findet, da die ausgewählten Kombinationen außendrum rumführen. So kann da auch schon mal der eine oder andere Extremwert untern Tisch fallen. Zeigt allerdings auch - wenn er verloren geht, dass er wahrscheinlich auch nicht breit genug war.

 

Das Ganze lässt sich noch beliebig verkomplizieren (Stichworte: Hängenbleiben in lokalen Extremwerten, mehrere Fehlerkriterien statt nur eines, größere Anzahl an Variablen, so dass man irgendwo im n-dimensionalen Raum umherirrt, was man sich auch gar nicht mehr vorstellen kann ohne :sad: zu werden).

Geschrieben
Kommt MT4 mit den unglaublichen vielen Backtestvarianten nicht zurecht?

Oh doch, käme er schon. Falls Du 5 Jahre oder zumindest mehrere Stunden auf das Ergebnis warten willst. :sad:

Geschrieben
  • Autor

Vielen Dank für die Aufklärung.

Das erklärt einiges.

 

Meine normale Optimierungsstrategie ist ja: vom Allgemeinen ins Detail. ALso erst mit groben Werten (große Schritte) eine Variante finden und um diesen großen Schritt dann genauer optimimieren zu lassen. So umgehe ich zufällige optimale Werte, einen gewissen Bereich, um dem herum es erfolgreich ist, muss es immer geben. Das Ganze für die letzte Woche / letzten Monat (je nach Stratenie) und dann auch weiter in die Vergangenheit, um so ein Bild vom Wandel zu bekommen.

Das funzt aber nicht wirklich bei dem eSisGJBreakout, er sollte zumindest wenigstens alle vollen Stunden testen. was er aber wohl durch die vielen Minuten auslässt.

(oder auch bei anderen EAs, ist mir ja schon öfter aufgefallen).

 

Muss ich mal probieren, wie sich das Ergebnis ändert wenn man die Minutenschritte in Viertelstundenschritte ändert (OK, Minutenschritte wäre wirklich überoptimiert).

 

Schade, dass man nicht einstellen kann, dass er jede Variante testen soll. Mein Rechner kann ruhig etwas tun, die faule Socke.

 

 

EDIT:

Im Falle der Zeitoptimierung zieht er sich dann wohl ein paar Werte aus den Minuten und ein paar Werte aus den Stunden. Aber gerade die Stunden sollte er alle testen, und die Minuten meinetwegen intern "optimieren".

Geschrieben
Meine normale Optimierungsstrategie ist ja: vom Allgemeinen ins Detail. ALso erst mit groben Werten (große Schritte) eine Variante finden und um diesen großen Schritt dann genauer optimimieren zu lassen. So umgehe ich zufällige optimale Werte, einen gewissen Bereich, um dem herum es erfolgreich ist, muss es immer geben. Das Ganze für die letzte Woche / letzten Monat (je nach Stratenie) und dann auch weiter in die Vergangenheit, um so ein Bild vom Wandel zu bekommen.

 

Ja, das ist doch ne sehr gute Strategie. Stell Dir einfach oben das Bild vor von dem "Raum".

Der Raum an sich ist für MT und einen Durchlauf zu groß. Alternativ kann man die Schrittweite vergrößern, so dass man ein gröberes Bild vom Rauminneren bekommt. Und nur an den interessanten Stellen sucht man lokal nochmal mit kleineren Schritten und schaut sich die potentiellen Kandidaten nochmal genauer an. Das ist ja auch ne Heuristik. ;).

 

Gut ist auch :sad:, sich die Veränderung des Raumes über die Zeit hinweg anzusehen. Wenn sich da große Änderungen zeigen, ist das schon mal ein Indiz dafür, dass man sich wahrscheinlich nicht allzu lange auf die aktuelle Parametereinstellung verlassen sollte.

  • 1 Monat später...
Geschrieben
  • Autor

Ich habe eben herausgefunden, wie man die genetischen Algorithmen (also das streuen der Einstellungen um schneller zu einem Ergebnis zu kommen) abschalten kann und stattdessen einen "Brute Force" durchführt (also JEDE Kombination testen):

 

geneticalgorithm.jpg

 

Dort den Haken weg machen.

 

Manchmal sind die Dinge sooo einfach :wub:

 

Allerdings dauert dann ein Backtest statt 30 Minuten dann 11 Stunden.

 

Dort kann man übrigens auch einstellen, nach was optimiert werden soll, nach

  • Balance
  • Profit Factor
  • Expected Payoff
  • Max. Drawdown
  • Drawdown Percent

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.