Optimierung und Out-of-Sample-Tests. - Seite 6

 
Mathemat:
Vita, gutes Argument. Aber ich würde sagen, dass die Verallgemeinerungsfähigkeit nicht nur eine Eigenschaft von EA ist, sondern auch eine Eigenschaft des Lernalgorithmus, der diese Fähigkeit richtig erkennen muss. Der Methaquot-Algorithmus bringt diese Fähigkeit nicht zum Vorschein, sondern zerstört sie durch Überoptimierung.

Ein Metaquote-Algorithmus nimmt diese Fähigkeit nicht auf, sondern wird durch Überoptimierung zerfressen. -- Ich würde gerne ein Beispiel sehen.
 

Beispiele gibt es viele. Das war mir nicht klar. Ich meinte damit, dass ein unüberlegter Einsatz des Optimierers a la "Eins, zwei, drei!" zu einem übermäßigen und unvernünftigen Optimismus der Graylisten führt, wie z.B. das jüngste Beispiel "Ist der Forex gegen uns? Oder vielleicht verstehe ich es auch nicht". Oder "Trend Advisor (Experte). Ich warte auf die Rückmeldung.". Das sind alles Tricks.

Zum Thema "an der Wurzel ruinieren": Die Wahrscheinlichkeit, dass die marginale Kurvenanpassung in einem Datensegment zu einer anhaltenden Rentabilität im echten Segment außerhalb der Stichprobe führt, ist äußerst gering. Das Optimum liegt irgendwo in der Mitte zwischen Überrentabilität und Break-evenness, was dem NS-Trainingsalgorithmus eigen ist.

Sagen Sie mir bitte, Vita, bietet unser genetischer Optimierer in seiner reinen Form irgendeine Garantie für die Profitabilität eines Expert Advisors in der Zukunft - selbst wenn er beim Testen/Optimieren super-duper profitabel ist? Ich spreche nicht über das Prüfgerät, das ist in Ordnung.

P.S. Endlich habe ich eine der allerersten Erwähnungen des genetischen Optimierers bei MQ gefunden: https://www.mql5.com/ru/forum/50805. Siehe den Beitrag von Filin und die Antwort von Slawa. Die Antwort zeigt, dass der Optimierer nur für die grobe Einschätzung der Fähigkeiten eines Expert Advisors nützlich ist und nicht mehr. Die meisten Graylists verwenden es als erstes und einziges Werkzeug für den "vollständigen" Test von Expert Advisors. Dies ist ein dilettantischer Ansatz, der zu falschen Illusionen führt. In der Tat ist dieses Tool, das nur für eine grobe Einschätzung gedacht ist, nach dem Gesetz der Dürftigkeit nur dazu geeignet , offensichtlich schlechte Expert Advisors bei offensichtlich negativen Ergebnissen zu verschrotten - nicht aber, um positive Schlüsse über den Wert des Expert Advisors zu ziehen...

 

Mathemat писал (а):

Beispiele gibt es viele. Das war mir nicht klar. Ich meinte damit, dass ein unüberlegter Einsatz des Optimierers a la "eins, zwei, drei!" zu einem übermäßigen und unvernünftigen Optimismus der Graylisten führt, wie z.B. das jüngste Beispiel "Bewegt sich der Forex gegen uns? Oder vielleicht verstehe ich es auch nicht". Oder "Trend Advisor (Experte). Ich warte auf die Rückmeldung.". Dies sind alles Optimierungen.

--> :) Ich hab's. Ich stimme jedoch zu, dass Meta-Zitate nicht für die "unüberlegte Anwendung von Optimierern" verantwortlich sein können. Ich bin für menschliches Denken und Optimierer, die optimieren. Ich zum Beispiel kenne das Gesetz, nach dem mein Expert Advisor handelt. Der Optimierer gibt mir eine Menge profitabler Parametersätze an die Hand. Wie er sie erhält - "stumpf" mit Hilfe der Genetik oder "schlau" mit Hilfe eines Neuronetzes - ist mir egal, denn in jedem Fall schaue ich mir die Ergebnisse kritisch (sozusagen bewusst) an und trenne sofort Fliegen von Koteletts, weil ich der Einzige bin, der das Gesetz, nach dem mein Expert Advisor handelt, genau kennt.

--> Stellen Sie sich vor, wir hätten einen "intelligenten" Optimierer, der genau sagen kann: "Hier ist der optimale Satz von Betriebsparametern. Ich schwöre, keine Anpassung!" oder "Nein, Leute, für diesen EA kann ich keine Arbeitsparameter auswählen, und nicht einfach die Kurve anpassen" Das wären die Zeiten! Ein Optimierer, der Strategien, die in EAs implementiert sind, zertifiziert! Freier Zugang von meta-quotes! Großartig! Ich möchte wirklich einen.

Zum "Töten an der Wurzel": Die Wahrscheinlichkeit, dass die marginale Kurvenanpassung in einem Datenintervall zu einer anhaltenden Rentabilität in realen Intervallen außerhalb der Stichprobe führt, ist äußerst gering. Das Optimum liegt irgendwo in der Mitte zwischen Break-even und Superrentabilität, was dem NS-Lernalgorithmus eigen ist.

--> Das "Optimum liegt irgendwo in der Mitte" ist ein intuitives Gefühl, das aus der Tatsache resultiert, dass die vollständig optimierten "Graale" garantiert in der Zukunft scheitern werden, so dass man nicht bis zum Ende optimieren sollte, oder dass "die Wahrheit irgendwo in der Nähe liegt" oder so ähnlich. Dieses Gefühl hat nichts mit der Realität zu tun. Die Regelmäßigkeit kann bis zum Äußersten optimiert werden, und nur dort zeigt sie sich in ihrer ganzen Pracht. Wie sehr man es auch dreht und wendet, es wird nichts nützen, aber man kann das Gefühl entwickeln, dass das Optimum irgendwo in der Mitte liegt.

Sagen Sie mir bitte, Vita, bietet unser genetischer Optimierer in seiner reinen Form irgendeine Garantie für die Rentabilität eines Expert Advisors in der Zukunft - selbst im Falle einer super-duper Rentabilität auf dem Test-/Optimierungsteil? Ich spreche nicht über das Prüfgerät, das ist in Ordnung.

--> Ich bin es nicht, und ich denke, es ist unangemessen, solche Garantien von den Ergebnissen des Optimierers zu verlangen. Siehe oben über "smart", Garantien geben, Optimierer.

P.S. Endlich habe ich eine der allerersten Erwähnungen des genetischen Optimierers bei MQ gefunden:

https://www.mql5.com/ru/forum/50805

. Siehe den Beitrag von Filin und die Antwort von Slawa. Aus der Antwort können Sie ersehen, dass der Optimierer nur für eine grobe Einschätzung der Fähigkeiten eines Expert Advisors nützlich ist und nicht mehr. Die meisten Graylists verwenden es als erstes und einziges Tool zum "totalen" Testen von Expert Advisors. Dies ist ein dilettantischer Ansatz, der zu falschen Illusionen führt. Tatsächlich ist ein solches Tool, das nur für eine grobe Einschätzung gedacht ist, nach dem Gesetz der Dürftigkeit nur gut genug , um offensichtlich schlechte Expert Advisors im Falle eines eindeutig negativen Ergebnisses zu verschrotten - nicht aber, um eine positive Aussage über den Wert des Expert Advisors zu treffen...

-->"The optimizer is useful only for rough estimation of EA's capabilities" - wieder der Anspruch an den Optimierer, der nicht in der Lage ist, die Fähigkeiten eines EA genau abzuschätzen, sondern vielmehr die Strategien eines EA zu zertifizieren. Es bleibt nur noch, einen Roboter zu erstellen, der Strategien generiert, sie an den Optimierer weiterzuleiten, eine Meinung über ihre Eignung einzuholen und zum garantierten Geldschnitt überzugehen. Wie gefällt Ihnen diese Illusion?


 

Illusion ist großartig, aber nur eine Illusion. Aber es ist möglich, die Anwendung dessen, was wir haben (Tester/Optimierer), mit den in MQL4 verfügbaren Mitteln drastisch zu verbessern. Andernfalls werden wir weiterhin alle drei Tage Superhacker mit nur passenden Ergebnissen sehen, die vorgeben, normale Tests zu sein...

Und ich habe keine Beschwerden über Metaquotes: Der Optimierer tut genau das, wofür er entwickelt wurde, nämlich genetische Optimierung im Expert Advisor-Parameterraum, und tatsächlich tut er genau dasselbe.

Ich habe einen Vorschlag für den Tester: Es wäre schön, eine Standardfunktion wie test() zu haben, in der alle notwendigen Parameter klar angegeben werden, einschließlich des Namens der Verlaufsdatei, mit der alles getestet wird. Die starre Bindung eines Dateinamens an seinen Inhalt ist keine ausreichend flexible Lösung.

 
leonid553:

Guten Tag zusammen.

Nach der Optimierung eines EA müssen wir oft mehr als ein Dutzend der vom Optimierer vorgeschlagenen Parameter in einer Nerd-Out-of-Sample-Analyse überprüfen.

Ich habe eine Idee zur Optimierung von Expert Advisors außerhalb des Beispiels. Nehmen wir an, wir haben den Expert Advisor mit der Optimierung durch eine Reihe von Parametern "beauftragt". Wir haben ein Datum festgelegt. Wir haben zum Beispiel ein Datum vom 1. Januar 2006 bis zum 1. Januar 2007 festgelegt. 2006 bis 1. Januar 2007.

Wir haben mehrere tausend Expert Advisors erhalten. Danach speichern wir die Seite mit den OPTIMIERUNGSERGEBNISSEN als separate Datei. Als Nächstes legen wir den folgenden Zeitraum für die Optimierung fest, d. h. wir fügen einen oder zwei Monate hinzu, oder so viele, wie wir brauchen.

In unserem Fall haben wir z.B. vom 1.1. 2007 bis 1. Juni 2007. Und wir ermöglichen wieder eine Optimierung. Um genau zu sein, wird es nicht ganz optimal sein. Der Optimierer sollte nicht die Parameter in EXPERT'S PROPERTIES übernehmen, sondern die Parametersätze aus der Datei, die wir nach der ersten Optimierung gespeichert haben, erneut auswählen. Nach dieser zweiten Optimierung bleiben nur noch diejenigen vAriens übrig, die außerhalb der Stichprobe Gewinne erzielt haben!

Das Ergebnis ist im Idealfall, dass wir die "idealen Parameter" erhalten, mit denen wir später arbeiten und online testen können!

Ich denke, dass dies eine nützliche Ergänzung für den mt4-Tester sein wird. Wahrscheinlich, und höchstwahrscheinlich, ist es bereits von jemandem irgendwo implementiert. Wenn es jemand weiß, bitte den Link mitteilen!

Ich kann aufgrund meiner bescheidenen Kenntnisse nicht herausfinden, wie ich die Idee in die Praxis umsetzen kann.

Sicherlich gibt es bereits eine praktische Umsetzung dieses Algorithmus ... Im Forum habe ich nur seine Derivate gefunden... Zum Beispiel: "Wie Sie Ihr Optimierungskriterium umsetzen"...

Ich möchte meine Lösung für dieses Problem mitteilen....

Lassen Sie uns einen EA vorbereiten... Fügen wir externe Parameter hinzu...

extern int    Counter      = 1;        // Счетчик подсчета количества оптимизаций. Если равен 0, то обычная оптимизация...
extern string Filename     = "";       // Имя файла с оптимизируемыми параметрами

int    FilePtr=0;                      //  Положение файлового указателя

Fügen Sie in die Funktion init() den folgenden Block ein: ....

   if(IsOptimization() && Counter>0)
   {
// Для ускорения процесса будем поддерживать сквозной указатель файловой позиции
// с помощью глобальной переменной FilePtr 
// На первом проходе инициализируем её нулём.
      if (GlobalVariableCheck("FilePtr")==false || Counter == 1) 
      {
         FilePtr = 0; 
         GlobalVariableSet("FilePtr",0); 
      } 
      else 
      {
         FilePtr = GlobalVariableGet("FilePtr"); 
      }

      int handle=FileOpen(Filename,FILE_CSV|FILE_READ,';');
      FileSeek(handle,FilePtr, SEEK_SET);
      Parametr1=StrToInteger(FileReadString(handle));
      Parametr2=StrToInteger(FileReadString(handle));
      Parametr3=StrToInteger(FileReadString(handle));

      FilePtr = FileTell(handle); 
      GlobalVariableSet("FilePtr",FilePtr);
      
      FileClose(handle); 
   }

Parametr1, Parametr2, Parametr3 - externe Parameter, die optimiert werden sollen....

Das ist alles ...

 
kharko:

Sicherlich gibt es bereits eine praktische Umsetzung dieses Algorithmus... Im Forum habe ich nur seine Derivate gefunden... Zum Beispiel: "Wie Sie Ihr Optimierungskriterium umsetzen"...

Ich möchte meine Lösung für dieses Problem mitteilen....

Schauen Sie sich die Artikel von Nikolay Kositsin an, z.B. 'Experts Based on Popular Trading Systems and Trading Robot Optimization Alchemy (Continued)'.

 

Wie funktioniert das?

Im Zeitintervall A führen wir die übliche Optimierung der Parameter durch (Zähler=0) ...

Wir übertragen die Ergebnisse nach Excel... Unsere Aufgabe ist es nun, eine Datei mit optimierten Parametern zu erstellen und diese im Verzeichnis ...\tester\files zu speichern

Markieren Sie Spalten mit unseren Parametern in Excel, kopieren Sie sie und fügen Sie sie in Word oder Notepad als unformatierten Text ein...

Konvertieren Sie in Wordboard oder Notepad jede Zeile in die Form: Wert1;Wert2;Wert3.

Speichern Sie es in dem Verzeichnis ...\tester\files

Wenn Sie nicht zu faul sind, können Sie ein Makro schreiben, das die oben genannten Operationen im laufenden Betrieb ausführt...

Jetzt können wir die Optimierung für Zeitfenster B durchführen... Jetzt wird der Optimierungsparameter Zähler sein... Geben Sie den Höchstwert (Anzahl der Zeilen in der Liste) an...

Das war's, das Problem ist gelöst... Viel Glück...

 

Ich habe diesen Artikel gelesen... Ich denke, meine Variante ist einfacher und bequemer.... und vor allem ist es universell...

Die obige Umsetzung entspricht ganz dem Wunsch des Verfassers der Branche...

 
Ein praktisches Beispiel für die Optimierung... Siehe Anhang
Dateien:
sample.zip  1201 kb
 

Vielen Dank, kharko, für die Lösung. Ich werde versuchen, es zu benutzen!

Grund der Beschwerde: