Wie soll man die Optimization-Fallen umgehen?
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?
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.
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
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); } //+------------------------------------------------------------------+
Nachdem sie optimiert sind, erhalten wir drei Grafiken:
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).
Fazit
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.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1434
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.