Wie soll man die Optimization-Fallen umgehen?

13 Februar 2012, 08:45
Shashev Sergei
0
391

Es wäre schön, Handelssysteme zu entwickeln, ohne Gedanken um Optimierung zu machen.

Doch in der Realität ist die Erstellung eines zuverlässigen Trading-Systems - ein Weg von Versuchen und Fehlern, auf dem

die Form der Optimierung immer eine Rolle spielt. Es gibt immer eine Optimierung –

wenn es nicht auf der Oberfläche ist, dann ist es sicher in der Tiefe des Prozesses.

J. O. Katz, D.L Maccormick. Die Enzyklopädie der Handelsstrategien.


Was ist die Optimierung eines Handelssystems?


Die Erstellung eines Handelssystems besteht vor allem in der Formulierung von Regeln, welche die Eröffnung oder die Schließung einer Long oder einer Short-Position vorschreiben werden. Diese Regeln enthalten in der Regel einige Indikatoren und Parameter. Wenn sie geändert werden, wird die Profitabilität des Handelssystems ändern. Die Frage tritt sehr häufig auf: Gibt es eine Notwendigkeit, Handelssysteme zu optimieren, oder ist es einfach eine Nacharbeit des Systems zu historischen Daten.

Das legt am meisten vermutlich daran, weil verschiedene Menschen völlig unterschiedliche Vorstellungen unter "Optimierung eines Handelssystems" haben können. Also, deswegen lassen Sie uns erstmal definieren, was eine Optimierung ist. Erstens können wir durch "Optimierung" eine Auswahl oder eine Erstellung eines Handelssystems verstehen, die unsere Probleme besser als andere Systeme lösen würde. Zum Beispiel, wir suchen ein solches System, das den größten Gewinn auf Yen / US-Dollar momentan machen würde. Dazu wird ein System mit einigen festen Parametern aus einer bestimmten Vielzahl von Systemen ausgesucht. Das kann beispielsweise eine Wahl unter den Systemen auf Basis von verschiedenen Indikatoren sein. Lassen Sie uns dies als der erste Typ der Optimierung benennen.

Zweitens können wir durch "Optimierung" die Position solcher Parameter vom ausgewählten Handelssystem verstehen, die uns ermöglichen, die besten Ergebnisse zu bekommen. Das kann die Auswahl der Periode sein, die bei der Berechnung des Mittelwertes oder bei der Berechnung der stochastischen Strukturen verwendet wird. Lassen Sie uns dies als der zweite Typ der Optimierung benennen.

Ich glaube, niemand hat Zweifel daran, dass Händler bei der Erstellung einer Handelsstrategie versuchen, explizit oder implizit, beide Typen von der Optimierung zu verwenden. Tatsächlich, sobald wir ein Handelssystem auswählen, mit ihm zu arbeiten, vermuten wir darüber, dass wir das beste Handelssystem besitzen. Das heißt, wir verwenden den ersten Typ der Optimierung. Aber von daher, dass jedes System einige Parameter hat, versuchen wir Werte dieser Parameter in einer solchen Art und Weise auszusuchen, damit wir die besten Ergebnisse bekommen. Und das ist eben der zweite Typ der Optimierung. Darüber hinaus ist es bei der Erstellung der Handelssystems unmöglich, diese beiden Optimierungstypen zu trennen. Aus diesem Grund ist die Antwort auf die Frage, ob die Optimierung bei der Erstellung der Handelssystems zu verwenden oder nicht, ist klar: Optimierung muss verwendet werden. Eine andere Frage ist, wie man damit anfangen soll. Es gibt verschiedene Stufen bei der Erstellung eines Handelssystems:

  • Die Entstehung der Idee, auf welchem Basis das Handelssystem sein wird.
  • Die Auswahl von Kriterien oder Entscheidungsregeln.
  • Die Definition der Parameter des Systems.
  • Der Test des Systems.
  • Wenn es notwendig ist, der Rückkehr zu vorherigen Punkten, um Änderungen ins System einzutragen.

Die Probleme der Optimierung des zweiten Typs


Alle Entwickler verwenden bei der Erstellung der automatisierten Handelssystems sowohl die Optimierung des ersten Typs, auch des zweiten Typs. Die Suche nach Kriterien und Entscheidungsregeln ist eine Aufgabe für heuristische Systeme, wie neuronale Netze, genetische Algorithmen, und, natürlich, das menschliche Gehirn - das leistungsstärkste System zurzeit. Dies ist der erste Typ der Optimierung, so dass die gesamte Verantwortung für diese Optimierung auf Händler liegt.
Der zweite Typ der Optimierung ist es, die Suche nach den besten Parametern. Eben hier treten die Probleme auf, denn ist es sehr einfach, die Daten zur History nachzuarbeiten und "riesige Gewinne" zu gewinnen. Leider funktioniert es nur auf der History. Eine solche "overoptimization" kann kaum vermieden werden, so dass einige Händler negatives Verhalten bezüglich ihr haben. Aber warum?

Der Grund ist ganz einfach. Neulinge finden Parameter, die den maximalen Gewinn geben, ohne auf benachbarten Gebieten zu achten, wo der Gewinn bei unbedeutenden Änderungen der besten Indikatoren-Perioden scharf fällt. Das führt zu einer Instabilität des Handelssystems. Man beginnt dann, nach dieser Weise auf dem Demo-Konto zu handeln und das ist doch gut, wenn sie Geduld genug haben, zumindest so ein paar Monate zu arbeiten, bevor Sie verstehen, dass das System nicht betriebsfähig ist. Ansonsten Herr behüte Sie, ein solches System auf dem realen Konto zu starten - Abschied von Ihrer Einzahlung und los, wird eine gesunde Arbeit draußen erwarten!

Wie kann das Overoptimizations-Problem gelöst werden


Also, was sollen wir tun? Wir können die Optimierung nicht nachlassen, da wir dann die beste Lösung oder eine potenziell profitable Strategie wegen der falsch gefundenen Parameter verpassen. Aber auch die Oberoptimization wird zu ernsthaften Problemen führen. Man muss die goldene Mitte finden.

Lassen Sie uns bitte die Aufgabe der Optimierung mathematisch betrachten. In der Regel, wenn nicht so viele Parameter zur Optimierung sind, suchen wir eine Hyperebene, in der der Gewinn stabil ist und sie ändert sich mehr oder weniger gleichmäßig, wenn die Parameter leicht modifiziert werden. Bei Optimierung versuchen wir, eine solche Lösung zu finden, die den maximalen Gewinn bringt. Und die unbedeutenden Abweichungen von der optimalen Lösung führen nicht zu scharfen Gewinnsveränderungen.

Das Problem ist, dass wir im Bereich des lokalen Maximums geraten werden können, die sind die Punkte, in den der Gewinn maximal ist, aber bei unbedeutenden Veränderungen in den Parametern werden Verluste kommen. So werden solche Parameter wahrscheinlich bei beliebigen unbedeutenden Änderungen auf dem Markt zum Verlust führen. Und im Forex entstehen solche Änderungen sehr oft. Es sollen alle lokalen Extreme vermieden werden.

Leider gibt es immer noch keinen Algorithmus in MetaTrader, der selbst die optimalen Lösungen suchen würde. Einer der stärksten Algorithmen, der eine solche Aufgabe löst, ist KRAB. Der wird im Buch von N. Zagoruyko, «Angewandte Methoden der Daten- und Wissensanalyse» beschrieben. Es wäre gut, wenn er in den nächsten Bilds realisiert würde ... Aber das ist alles nicht schlecht!

Der MetaTrader kann eine Optimierungsgrafik für einen oder zwei optimierte Parameter konstruieren. Dies bedeutet, dass die Optimierungsergebnisse in einer Ebene projiziert werden, und wir können in der Theorie die optimale Lösung finden. Mit anderen Worten, wir optimieren die beiden Parameter in Folge und wir finden den besten Lösungsbereich.


Für drei Parameter müssen wir diese Operation
durchführen. Aber schon für 5 Parameter kommt diese Operation

und so weiter. Nun ist es klar, man sollte die Anzahl der Parameter vernünftig auswählen.

Wenn man zwei Parameter optimiert, erhält man eine Optimierungsgrafik, wie diese:



Die dunklen Bereiche sind Bereiche mit größeren Gewinnen. Diese Optimierungsgrafik ist sehr gut, es gibt keine lokalen Maximums und der Gewinn geht da gleichmäßig von der oberen rechten Ecke zurück. Ich würde mich freuen, wenn Sie so etwas wie diese bei Ihrer Optimierung haben.

Die Grafik ist unten nicht so eindeutig, denn wir sehen da nicht diese zwei Bereiche mit Maximums. Was sollen wir wählen?



Ein erfahrenes Auge findet die Lösung im Bereich in der rechten unteren Ecke, da der Bereich der benachbarten Quadrate einen ganz kleineren Rückgang im Gewinne als am Anfang der Grafik zeigt. Also ich würde Ihnen empfehlen, die Grafiken aufmerksam zu analysieren, das ermöglicht Ihre Einzahlung zu halten!

Beginnen wir einen einfachen Expert Advisor zu forschen - analysieren drei Parameter und finden einen optimalen Lösungsbereich. Der Name des Experten ist SP. Es arbeitet in den Märkte-Bereichen überkauft / überverkauft, um den Schwung zu analysieren.

//+------------------------------------------------------------------+
//|                                                           SP.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"
 
//---- input parameters
extern int       TakeProfit=50;
extern int       StopLoss=30;
extern int       RsiLen=4;
extern int       KLen=8;
extern int       Momlength=10;
extern int       Lots=1;
extern int       rsi_oversold=39;
extern int       stoc_oversold=29;
extern int       rsi_overbought=60;
extern int       stoc_overbought=70;
extern int       Mom_Sell=-2;
extern int       Mom_Buy=2;
 
int expertBars;
double RSIlevel;
double Stoclevel;
double MomLevel;
double DLen=3;
 
//+------------------------------------------------------------------+
//| Liefert true zurück, wenn ein neues Bar entstanden ist, sonst false             |
//+------------------------------------------------------------------+
bool isNewBar()
  {
//----
   bool res=false; 
   if (expertBars!=Bars) 
      {
      expertBars=Bars;
      res=true;
      } 
//----
   return(res);
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  double price;
  double stop;
  double profit;
//----
   if ((isNewBar())&& (OrdersTotal()==0)&& (AccountBalance()>5000))
   {
      RSIlevel=iRSI(NULL,0,RsiLen,PRICE_CLOSE,0);
      Stoclevel=iStochastic(NULL,0,KLen,DLen,3,MODE_SMA,0,MODE_MAIN,0);
      MomLevel=100 - iMomentum(NULL,0,Momlength,PRICE_CLOSE,0);
      /*if (AccountBalance()>50000)
         {Lots=NormalizeDouble( AccountBalance()/10000,0)-4;}
      else 
         Lots=1;*/
      if ((RSIlevelrsi_oversold)&&(Stoclevelstoc_oversold)&&(MomLevel>Mom_Sell))
      {
         price=Ask;
         stop=NormalizeDouble(price-StopLoss*Point,Digits);
         profit=NormalizeDouble(price+TakeProfit*Point,Digits);
         OrderSend(Symbol(),OP_BUY,Lots,price,3,stop,profit,NULL,0,0,Green); 
         //Print(AccountBalance());          
      }
      if ((RSIlevel>rsi_overbought)&&(Stoclevel>stoc_overbought)&&(MomLevelMom_Buy))
      {
         price=Bid;
         stop=NormalizeDouble(price+StopLoss*Point,Digits);
         profit=NormalizeDouble(price-TakeProfit*Point,Digits);
         OrderSend(Symbol(),OP_SELL,Lots,price,3,stop,profit,NULL,0,0,Green); 
         //Print(AccountBalance());            
      }      
   } 
    
//----
   return(0);
  }
//+------------------------------------------------------------------+



Wir optimieren drei Parameter – die Perioden Stochastic und RSI, und auch die Ebene StopLoss.

Nachdem sie optimiert sind, erhalten wir drei Grafiken:



Die Abhängigkeit des Gewinns von den Stochastic und RSI Perioden.


Die Abhängigkeit des Gewinns von RSI und Stoploss.



Die Abhängigkeit des Gewinns von Stochastic und Stoploss

Die besten Bereiche sind:

  • 1 Grafik – (4;5)&(3;6);
  • 2 Grafik - (80;90)&(3;6);
  • 3 Grafik - (80;90)&(4;5).

Die Kombination von ihnen gibt uns die Lösung – (5,4,80).


Es sollte beachtet werden, dass der größere Schritt Stoplosses bei der Optimierung zehn ist. Wenn es notwendig ist, kann man die erhaltene Lösung mit einem kleineren Schritt analysieren.

Fazit


Das ist natürlich sehr gut, dass uns die grüne Erfüllung des Quadraten ermöglicht, zu beurteilen, wie rentabel ein Bereich ist. Es wird jedoch noch besser sein, wenn die verlustbringenden Bereiche proportional in rot gefärbt werden. Dies wird uns helfen, die Strategie in einem absolut anderen Level zu schätzen. In der Tat erhalten wir das volle dreidimensionale Bild der Optimierung!

Schließlich einige Empfehlungen für die Optimierung:

  • Die Datenstichprobe für die Optimierung muss repräsentativ sein. Für Daily – wenigstens 3 Jahre.
  • Testen Sie Ihre Strategie außerhalb der Optimierungsprobe - dies ermöglicht Ihnen, die ausgewählten Parameter einzuschätzen.
  • Optimieren Sie nicht viele Parameter gleichzeitig - Dabei besteht die Wahrscheinlichkeit, dass es nur zu historischen Daten passend nacharbeitet wird.
  • Erhöhen Sie den Schritt, um die Optimierungszeit zu reduzieren. Der beste Bereich wird nicht verpasst. Den erhaltenen Cluster kann später in Details untersucht werden (Sieving-Technik).
  • Beschäftigen Sie sich nicht stundenlang mit der Optimierung - Modernisieren Sie lieber den Algorithmus des Expert Advisors.
Ich hoffe, dass dieser Artikel Ihnen helfen wird, um eine "schädliche Optimierung" zu vermeiden.

Übersetzt aus dem Russischen von MetaQuotes Software Corp.
Originalartikel: https://www.mql5.com/ru/articles/1434

Beigefügte Dateien |
SP.mq4 (3.23 KB)
Die Übertragung der Trading-Signale in einem universalen Expert Advisor. Die Übertragung der Trading-Signale in einem universalen Expert Advisor.

In diesem Artikel wurden die verschiedenen Möglichkeiten beschrieben, um die Trading-Signale von einem Signalmodul des universalen EAs zum Steuermodul der Positionen und Orders zu übertragen. Es wurden die seriellen und parallelen Interfaces betrachtet.

Eine alternative Log-datei mit der Verwendung der HTML und CSS Eine alternative Log-datei mit der Verwendung der HTML und CSS

In diesem Artikel werden wir eine sehr einfache, aber leistungsfähige Bibliothek zur Erstellung der HTML-Dateien schreiben, dabei lernen wir auch, wie man eine ihre Darstellung einstellen kann (nach seinem Geschmack) und sehen wir, wie man es leicht in seinem Expert Advisor oder Skript hinzufügen oder verwenden kann.

Das Start des Client-Terminalen MetaTrader 4 auf dem Linux-desktop Das Start des Client-Terminalen MetaTrader 4 auf dem Linux-desktop

Es wurde Schritt um Schritt die Vorbereitung des Linux-desktops mit der Verwendung des nicht-Emulators wine beschrieben, um den Client-Terminal MetaTrader 4 auf ihm zu starten.

Die Individualpsychologie eines Traders Die Individualpsychologie eines Traders

Das Verhalten des Traders auf dem Finanzmarkt. Die persönliche Sammlung des Autors aus dem Buch von A. Elder "Trading for a Living".