Kombinieren der Strategien von Trend- und Seitwärtsbewegung

8 Oktober 2018, 09:01
Dmitriy Gizlyk
0
182

Inhalt

Einführung

Es gibt viele Handelsstrategien 'da draußen'. Einige suchen nach Trends, andere definieren Preisspannen von Preisbewegungen und handeln dann diese. Der Markt ist volatil. Den Trends folgen immer Seitwärtsbewegungen. Dies bietet Gewinnmöglichkeiten sowohl für Trendfolger als auch für diejenigen, die innerhalb von Preisspannen handeln. Wenn eine dieser beiden Gruppen Gewinn macht, verliert eine andere entweder oder wartet auf den richtigen Moment.

Ist es möglich beide Ansätze zu kombinieren, um die Profitabilität zu erhöhen? Ist es möglich, dass beide Ansätze zu kombinieren, um die Profitabilität zu erhöhen? Versuchen wir, scheinbar unterschiedliche Handelsmodelle zu kombinieren und lassen uns das Ergebnis einer solchen Kombination anzeigen.

1. Prinzipien für die Kombination der Strategien

Preischarts zeugen von einem ständigen Trendwechsel. Auf starke Bewegungen folgen schwache, wenn sich der Kurs in einer engen Preisspanne bewegt. Händler wählen ihre Strategien auf der Grundlage der aktuellen Marktbedingungen. Aber wie können wir feststellen, welche Strategie wir im Moment wählen sollen? Ein Trend oder eine Seitwärtsbewegung? 

Chart

Die Artikel[1] und[2] berücksichtigen verschiedene Strategien des Trend- und Seitwärtshandels. Es ist leicht zu erkennen, dass die Anwendung einer bestimmten Strategie mit der Beurteilung der Marktsituation beginnt. Beide Strategiearten verwenden unterschiedliche Trendindikatoren zur Bestimmung des Marktzustands. Während Trendstrategien bei einem Trends auf dem Markt gehandelt werden, erwarten die für Seitwärtsbewegungen, dass sich die Preise beruhigen, um eine Position zu eröffnen. Daher ist unser erster Ansatz bei der Kombination zweier Arten von Strategien in einem einzigen Expert Advisor folgender: Wenn es einen Trend gibt, verwenden wir den Trendfolgealgorithmus, wenn es keinen Trend gibt, verwenden wir den für die Seitwärtsbewegung.

Nach genauerer Betrachtung der Preisdiagramme können wir feststellen, dass weder Trends noch Seitwärtsbewegungen unidirektional auftreten. Alle Bewegungen sind von Kursschwankungen begleitet. In einem Seitwärtsmarkt gibt es kleine Preisbewegungen, während bei einem Trends eine Bewegungsrichtung die andere übertrifft. Diese Funktion kann bei der Kombination von Trend- und Seitwärtsstrategien genutzt werden. Die Idee ist, einem Trend zu folgen, obwohl der Einstiegspunkt durch die Oszillatoren für die Seitwärtsbewegung bestätigt wird. Dieser Ansatz hilft, das Ende einer Korrektur zu erkennen, indem er die Drawdowns reduziert und das Potenzial der Preisbewegung in eine günstige Richtung erhöht.

2. Entwickeln des Expert Advisors

Um die Prinzipien der Kombination von Strategien zu demonstrieren, habe ich Strategie 1 aus dem Artikel[1] und Strategie 6 aus dem Artikel[2] ausgewählt. Beide ausgewählten Strategien verwenden den ADX-Indikator, um einen Trend zu bestimmen. Die Optimierung des EAs wurde erst einmal für den Zeitraum vom 01.01.2017 bis zum 8.01.2018 durchgeführt. Die folgenden Parameter wurden auf der Grundlage der Optimierungsergebnisse dieser Strategien ausgewählt.

Trendstrategie 1.

Parameter der Trendstrategie

Strategie der Seitwärtsbewegung 6.

Parameter der Strategie der Seitwärtsbewegung

Handelsergebnis der einzelnen EAs mit optimierten Parametern sind im folgenden Bildschirmfoto dargestellt.

Trendstrategie 1.

Testergebnisse der TrendstrategieTestergebnisse der Trendstrategie

Strategie der Seitwärtsbewegung 6.

Testergebnisse der Strategie der SeitwärtsbewegungTestergebnisse der Strategie der Seitwärtsbewegung

Beide angewandten EAs basieren auf Positionseröffnungen gemäß den Indikatorsignalen in Abwesenheit von offenen Positionen zum Zeitpunkt des Auftretens des Signals. Eine Position wird gemäß den vordefinierten Werten für Take-Profit und Stop-Loss geschlossen.

Dieser Ansatz ermöglicht es, das Modul zur Positionskontrolle von Positionen auszulassen, was die EA-Logik stark vereinfacht. Wenn ich die EAs kombiniere, lasse ich bewusst die Arbeitslogik der EAs intakt, um zu demonstrieren, wie sich Kombinationsmethoden (und nicht die Logik der EAs) auf das Ergebnis auswirken.

2.1. Methode 1

Das erste Verfahren ist die sequentielle Überprüfung der Signale beider Strategien und das Öffnen einer Position, wenn eines von ihnen erscheint. Jede Strategie verfügt über eigene Indikatorenparameter sowie Stop-Loss und Take-Profit. Bei diesem Ansatz schließt das Vorhandensein einer offenen Position wegen einer Strategie das Öffnen einer Position nach einer anderen aus. So wird es immer nur eine Position im Markt geben, was die Risiken begrenzt.

Zu den Nachteilen dieses Ansatzes gehört der mögliche Verlust profitabler Positionen einer der Strategien, wenn eine offene Position der anderen Strategie auf dem Markt vorhanden ist. Nach diesem Ansatz sollten die angewandten Strategien jedoch auf verschiedenen Märkten handeln, was bedeutet, dass die Auswirkungen dieses Nachteils minimal sein sollten.

Um die Methode zu implementieren, kopieren wir die Codes beider EAs in eine Datei, die sie mit identischen Funktionen zu einem einzigen Code kombiniert. Um Namensduplizierungen zu vermeiden, fügen wir Variablen und Funktionen einer Trendfolge-Strategie 'Trend' und Variablen und Funktionen einer Seitwärtsbewegung 'Flat' hinzu.

//--- Allgemeine Parameter
input double               Inp_Lot=0.01;                          //Lot
input MarginMode           Inp_MMode=LOT;                         //MM
input int                  Inp_MagicNum=1111;                     //Magicnummer
input int                  Inp_Deviation = 2;                     //Abweichung(Points)
//---
input string               Trend_EaComment="Trend Strategy";      //Strategiekommentar
input int                  Trend_StopLoss=25;                     //Stop-Loss(Points)
input int                  Trend_TakeProfit=90;                   //Take-Profit(Points)
//--- RSI_Color Indikatorparameter
input int                  Trend_RSIPeriod=28;                    //RSI Periodenlänge
input double               Trend_Overbuying=70;                   //Überkaufte Zone
input double               Trend_Overselling=30;                  //Überverkaufte Zone
//--- ADX_Cloud Indikatorparameter
input int                  Trend_ADXPeriod=11;                    //ADX Periodenlänge
input double               Trend_alpha1 = 0.25;                   //alpha1
input double               Trend_alpha2 = 0.25;                   //alpha2
//---
input string               Flat_EaComment="Flat Strategy";        //Strategiekommentar
input int                  Flat_StopLoss=50;                      //Stop-Loss (Points)
input int                  Flat_TakeProfit=50;                    //Take-Profit (Points)
//--- Indikatorparameter vom WPR
input int                  Flat_WPRPeriod=7;                      //Periodenlänge WPR
//--- ADX Indikatorparameter
input int                  Flat_ADXPeriod=11;                     //Periodenlänge ADX
input int                  Flat_FlatLevel=40;                     //Level des Seitwärtsbewegung ADX

Zu Beginn der Funktion OnTick überprüfen wir das Vorhandensein einer offenen Position. Wenn es keine offene Position gibt, aktualisieren wir die Indikatordaten und überprüfen die Eingangssignale für die Trendstrategie und der Strategie der Seitwärtsbewegung sequentiell. Falls eines der Signale erscheint, eröffnen wir eine Position gemäß einer entsprechenden Strategie.

void OnTick()
  {
//--- Prüfung auf zuvor eröffnete Positionen des EAs
   if(!Trade.IsOpenedBySymbol(_Symbol,Inp_MagicNum))
     {
      //--- Datenabfrage für die Berechnung
      if(!GetIndValue())
         return;
      //--- Positionseröffnung gemäß Trendalgorithmus
      //--- Positionseröffnung im Falle eines Kaufsignals
      if(TrendBuySignal())
         Trade.BuyPositionOpen(Symbol(),Inp_Lot,Trend_StopLoss,Trend_TakeProfit,Inp_MagicNum,Trend_EaComment);
      else
      //--- Positionseröffnung im Falle eines Verkaufssignals
      if(TrendSellSignal())
         Trade.SellPositionOpen(Symbol(),Inp_Lot,Trend_StopLoss,Trend_TakeProfit,Inp_MagicNum,Trend_EaComment);
      else
      //--- Positionseröffnung gemäß Seitwärtsalgorithmus
      //--- Positionseröffnung im Falle eines Kaufsignals
      if(FlatBuySignal())
         Trade.BuyPositionOpen(Symbol(),Inp_Lot,Flat_StopLoss,Flat_TakeProfit,Inp_MagicNum,Flat_EaComment);
      else
      //--- Positionseröffnung im Falle eines Verkaufssignals
      if(FlatSellSignal())
         Trade.SellPositionOpen(Symbol(),Inp_Lot,Flat_StopLoss,Flat_TakeProfit,Inp_MagicNum,Flat_EaComment);
     }
  }

Der vollständige Code des EAs findet sich im Anhang des Artikels (Combination1.mq5).

2.2. Methode 2

Die zweite Methode erschwert leicht den Prozess der Kombination, und, zusätzlich zu der ersten Methode, wird eine bestimmte Ansammlung von Signalen der beiden Strategien erstellt.

Im vorliegenden Beispiel einer Trendstrategie wird der ADX Cloud Indikator verwendet, um einen Trend zu definieren. Der Indikator zeigt die angegebene Differenz zwischen den DI+- und DI-Linien an, während die Stärke des Trends nicht überprüft wird. Gleichzeitig überprüft die Seitwärtsstrategie die Stärke eines Trends anhand des ADX-Schwellenwerts, bevor sie eine Position eröffnet. Daher können wir einen zusätzlichen Filter einführen, um eine Position nach der Trendstrategie unter Berücksichtigung der Stärke eines Trends durchzuführen.

bool TrendBuySignal()
  {
   return(trend_adx[0]>trend_adx[1] && trend_rsi1[0]==1 && trend_rsi1[1]==1 &&  flat_adx[0]>=Flat_FlatLevel)?true:false;
  }

Von der Trendstrategie werden die Aufträge mit dem Indikator RSI gefiltert, so dass wir die Anzahl der Verlustpositionen der Seitwärtsstrategie reduzieren können, indem wir Eröffnungspositionen entgegen der RSI-Signale ausschließen.

bool FlatBuySignal()
  {
   return(flat_wpr[0]<-80 && flat_adx[0]<Flat_FlatLevel && trend_rsi2[0]!=1)?true:false;
  }

Der vollständige Code des EAs findet sich im Anhang des Artikels (Combination2.mq5).

2.3. Methode 3

Die dritte Methode ist für Hedging-Konten anwendbar und besteht darin, zwei Strategien von einem einzigen EA unabhängig voneinander zu verwenden. Den Positionen der einzelnen Strategien ist eine eigene Magicnummer zugeordnet. Positionen werden bei eingehenden Signalen eröffnet, unabhängig davon, ob es bereits eine offene Position der anderen Strategie gibt.

Dieser Ansatz simuliert genau die Verwendung von zwei EAs auf demselben Konto und bewahrt gleichzeitig alle Vor- und Nachteile solcher Ansätze. Durch die mögliche Eröffnung von zwei Positionen mit unterschiedlichen Strategien gleichzeitig erhöht sich allerdings das Risiko.

//--- Allgemeine Parameter
input double               Inp_Lot=0.01;                             //Lot
input MarginMode           Inp_MMode=LOT;                            //MM
input int                  Inp_Deviation = 2;                        //Abweichung(Points)
//---
input string               Trend_EaComment="Trend Strategy";         //Strategiekommentar
input int                  Trend_StopLoss=25;                        //Stop-Loss(Points)
input int                  Trend_TakeProfit=90;                      //Take-Profit(Points)
input int                  Trend_MagicNum=1111;                      //Magicnummer
//--- RSI_Color Indikatorparameter
input int                  Trend_RSIPeriod=28;                       //RSI Periodenlänge
input double               Trend_Overbuying=70;                      //Überkauftzone
input double               Trend_Overselling=30;                     //Überverkauftzone
//--- ADX_Cloud Indikatorparameter
input int                  Trend_ADXPeriod=11;                       //ADX Periodenlänge
input double               Trend_alpha1 = 0.25;                      //alpha1
input double               Trend_alpha2 = 0.25;                      //alpha2
//---
input string               Flat_EaComment="Flat Strategy";           //Strategiekommentar
input int                  Flat_StopLoss=50;                         //Stop-Loss(Points)
input int                  Flat_TakeProfit=50;                       //Take-Profit(Points)
input int                  Flat_MagicNum=1112;                       //Magicnummer
//--- Indikatorparameter vom WPR
input int                  Flat_WPRPeriod=7;                         //Periodenlänge WPR
//--- ADX Indikatorparameter
input int                  Flat_ADXPeriod=11;                        //Periodenlänge ADX
input int                  Flat_FlatLevel=40;                        //Level des Seitwärtsbewegung ADX

In der Funktion OnTick() wird zuerst einzeln geprüft, ob es offene Positionen mit dem Magicnummer der Trend- bzw. der Seitwärtsstrategie gibt.

void OnTick()
  {
//--- Prüfen der Trendstrategie auf zuvor eröffnete Positionen des EAs
   if(!Trade.IsOpenedBySymbol(_Symbol,Trend_MagicNum))
     {
      //--- Datenabfrage für die Berechnung
      if(!GetIndValue())
         return;
      //--- Positionseröffnung im Falle eines Kaufsignals
      if(TrendBuySignal())
         Trade.BuyPositionOpen(Symbol(),Inp_Lot,Trend_StopLoss,Trend_TakeProfit,Trend_MagicNum,Trend_EaComment);
      else
      //--- Positionseröffnung im Falle eines Verkaufssignals
      if(TrendSellSignal())
         Trade.SellPositionOpen(Symbol(),Inp_Lot,Trend_StopLoss,Trend_TakeProfit,Trend_MagicNum,Trend_EaComment);
     }
//--- Prüfen der Seitwärtsstrategie auf zuvor eröffnete Positionen des EAs
   if(!Trade.IsOpenedBySymbol(_Symbol,Flat_MagicNum))
     {
      //--- Datenabfrage für die Berechnung
      if(!GetIndValue())
         return;
      //--- Positionseröffnung im Falle eines Kaufsignals
      if(FlatBuySignal())
         Trade.BuyPositionOpen(Symbol(),Inp_Lot,Flat_StopLoss,Flat_TakeProfit,Flat_MagicNum,Flat_EaComment);
      else
      //--- Positionseröffnung im Falle eines Verkaufssignals
      if(FlatSellSignal())
         Trade.SellPositionOpen(Symbol(),Inp_Lot,Flat_StopLoss,Flat_TakeProfit,Flat_MagicNum,Flat_EaComment);
     }
  }

Der vollständige Code des EAs findet sich im Anhang des Artikels (Combination3.mq5).

3. Testen des Expert Advisors

Nachdem drei EAs nach verschiedenen Methoden der Strategiekombination vorbereitet wurden, ist es an der Zeit, die EAs zu testen und die Ergebnisse zu vergleichen. Um die Ergebnisse vergleichbar zu machen, sind die Tests ohne Änderung der Parameter der EAs durchzuführen.

3.1. Testmethode 1

Der erste Test zeigt einen Gewinn. Der Gesamtgewinn und der Erholungsfaktor erweisen sich als höher als in jedem der ursprünglichen EAs. Im Vergleich zur Seitwärtsstrategie sieht die Saldenlinie gleichmäßiger aus, die Anzahl der Positionen steigt, während der maximale Drawdown bezüglich des Saldos und des Kapitals reduziert wird. Gleichzeitig sinkt der Gewinnfaktor leicht und der Gesamtgewinn ist immer noch geringer als der Gesamtgewinn der ersten Strategien.

Testergebnisse der Methode 1Testergebnisse der Methode 1

3.2. Testmethode 2

Die Verwendung der zweiten Methode ermöglicht es, den Gesamtgewinn im Vergleich zu Methode 1 zu erhöhen, während die Anzahl der Positionen gleich bleibt, obwohl der Gesamtgewinn immer noch niedriger ist als der Gesamtgewinn der ursprünglichen EAs. Im Gegenzug ermöglicht das Gewinnwachstum die Erhöhung der Erholungs- und Gewinnfaktoren (letztere entsprechen der Seitwärtsstrategie) sowie des Anteils profitabler Positionen. Gleichzeitig wird der maximale Drawdown bezüglich des Saldos verringert.

Testergebnisse der Methode 2Testergebnisse der Methode 2

3.3. Testmethode 3

Die Anwendung der dritten Methode ermöglicht es, den Gesamtgewinn bis auf das Niveau des Gesamtgewinns der ersten EAs zu erhöhen. Die Gewinnsteigerung wird durch die Erhöhung der Anzahl der Positionen ermöglicht. Gleichzeitig werden die Depotbelastung und der maximale Drawdown bezüglich des Saldos erhöht.

Testergebnisse der Methode 3Testergebnisse der Methode 3

4. Strategien zur Optimierung

Die im vorherigen Abschnitt durchgeführten EA-Tests zeigen die Vorteile der Kombination von Strategien innerhalb von EAs. Alle drei Methoden zeigen eine Gewinnsteigerung im Vergleich zu einer der ursprünglichen Strategien. Wir sollten jedoch nicht vergessen, dass die ursprünglichen Strategien für das getestete Zeitintervall optimiert wurden, während für das Testen der komplexen EAs dieselben Anfangsparameter verwendet wurden.

Wir alle wissen jedoch, dass jede Änderung in der Logik eines EAs zusätzliche Anpassung der Parameter erfordert. Versuchen wir, die zusammengestellten EAs mit den ersten beiden Methoden der Kombination von Strategien zu optimieren und schauen wir uns die Ergebnisse an.

Vergessen wir nicht, dass die eigentliche Idee der Entwicklung von EAs darin besteht, Geld auf dem Markt zu verdienen, anstatt ihre Fähigkeiten anhand historischer Daten zu demonstrieren. Daher schlage ich vor, die Testzeit in zwei Abschnitte aufzuteilen. Bisher haben wir Tests für den Zeitraum vom 1.01.2017 bis zum 8.01.2018 durchgeführt. Nun schlage ich vor, die Optimierung auf das Zeitintervall vom 1.01.2017 bis 6.01.2018 durchzuführen und einen Vorwärtstest mit dem verbleibenden Intervall durchzuführen.

Optimierungszeitraum

4.1. Optimierungsmethode 1

Bei der Auswahl der Optimierungsparameter ist zu beachten, dass jeder unserer EAs Blöcke mit zwei Strategien enthält. In diesem Fall verwendet jede Strategie zwei Indikatoren für eine Positionseröffnung. Aber vergessen wir nicht, dass beide Strategien ADX verwenden, um die Stärke eines Trends und seine Richtung zu bestimmen. Die Logik der EAs verwendet daher drei Indikatoren zur Definition von Einstiegspunkten. Ich schlage vor, die Periodenlängen dieser drei Indikatoren zu optimieren.

Die Optimierung der Periodenlänge des ADX-Indikators zeigt den maximalen Gewinn und die Robustheit gegenüber Änderungen anderer Parameter mit einer Periodenlänge von 12 bis 14. Die folgende Grafik zeigt die Korrelation des EA-Gewinns mit den Veränderungen der ADX- und RSI-Perioden im optimierten Zeitintervall.

Der durchgeführte Vorwärtstest bestätigt die Möglichkeit, innerhalb des angegebenen Bereichs der Indikatorwerte Gewinne zu erzielen. Die maximale Stabilität wird mit der Periodenlänge des ADX von 13 beobachtet. Die Ähnlichkeit der Optimierungs- und Vorwärts-Testergebnisse wiederum belegt die Robustheit des EA in einem nicht optimierten Zeitintervall.

ADX Vorwärtstest

Die WPR-Periodenoptimierung zeigt ähnliche Ergebnisse. Die maximale EA-Robustheit über das optimierte Intervall wird mit der Periodenlänge von 7 erreicht. Gleichzeitig ist es mit dem Wachstum der Periodenlänge des ADX auch möglich, einen Gewinn in der Größenordnung von 3 bis 5 zu erzielen. Die folgende Grafik zeigt die Korrelation des EA-Gewinns mit den Veränderungen der WPR- und ARX-Periodenlängen über das optimierte Zeitintervall.

WPR Optimierung

Der Vorwärtstest bestätigt die angegebenen Zonen. Gleichzeitig wächst der Gewinn im Bereich von 3-4 der Periodenlänge des WPR. Wenn WPR gleich 7 ist, sinkt die EA-Profitabilität, während die ADX-Indikatorwerte steigen. Dies kann auf das kürzere Testzeitintervall und seine Spezifität zurückzuführen sein.

WPR Vorwärtstest

Die Optimierung der Periodenlänge des RSI bestätigt all dies. Im optimierten Zeitintervall zeichnet sich der Bereich von 27 bis 32 vor allem durch seine Rentabilität und Robustheit gegenüber Veränderungen aus. Die folgende Grafik zeigt die Korrelation des EA-Gewinns mit den Veränderungen der RSI- und ADX-Perioden im optimierten Zeitintervall.

RSI Optimierung

Während des Vorwärtstest wurde der Rentabilitätsbereich der RSI-Periodenlängen auf 30-32 eingeschränkt.

RSI Vorwärtstest

Die Versuche zur Optimierung der Werte von Take-Profit und Stop-Loss erlaubten es nicht, die EA-Profitabilität zu erhöhen und bestätigten die zuvor ausgewählten Parameter.

Gemäß den Optimierungsergebnissen sind die optimalen Parameter ADX-Periode gleich 13, RSI-Periodenlänge gleich 30 und WPR-Periodenlänge gleich 7. Mit diesen Parametern erzielt der EA 202,33 USD Gewinn für den optimierten Zeitraum und 46,10 USD für den Vorwärtszeitraum, während die anderen Parameter gleich blieben. Diese Rentabilität übersteigt diejenige, die bei der Kombination der EAs nach der Methode 3 in dem oben getesteten Zeitraum erzielt wurde. Die Verwendung ähnlicher Parameter vom kombinierten EA mit Methode 3 führt ebenfalls zu schlechteren Ergebnissen: 166,29 USD bzw. 60,27 USD.

Optimierungsmethode 1Optimierungsmethode 1Optimierungsmethode 1

Bestätigung des Optimierungsergebnisse des Vorwärtstests bestätigt die Robustheit auch mit dem nicht-optimierten Zeitintervall.

4.2. Optimierungsmethode 2

Es ist interessant, dass die Optimierung des EAs, kombiniert nach der Methode 2, Ergebnisse ergab, die ähnlich sind wie die vorherige Optimierung. Dies kann auf die Robustheit des Handelssystems hinweisen. Die Periodenlängen des Indikators, die denen im vorherigen Abschnitt ähnlich sind, wurden im Rahmen der Optimierung ausgewählt. Mit anderen Dingen, die gleich sind, zeigte der EA mit Methode 2 eine geringere Rentabilität aufgrund der Reduzierung der Anzahl der Positionen. Nachfolgend finden Sie Optimierungsdiagramme.

Methode 2. ADX OptimierungMethode 2. ADX VorwärtstestMethode 2. WPR OptimierungMethode 2. WPR VorwärtstestMethode 2. RSI OptimierungMethode 2. RSI Vorwärtstest

Gleichzeitig ermöglicht die Verbesserung der Qualität der Signale der Trendstrategie die Optimierung von Stop-Loss und Take-Profits. Durch die Optimierung wird der Stop-Loss für eine Trendstrategie von 25 auf 20 Punkte reduziert, während der Take-Profit von 90 auf 110 Punkte erhöht wird. Dies ermöglicht es, die Rentabilität des EA zu erhöhen. Nachfolgend finden Sie Diagramme zur Optimierung von Stop-Loss und Take-Profit.

Methode 2. SL OptimierungMethode 2. SL VorwärtstestMethode 2. TP OptimierungMethode 2. TP Vorwärtstest

Basierend auf den Optimierungsergebnissen ist die Rentabilität des nach der Methode 2 kombinierten EA die höchste der drei betrachteten Optionen. Die Anwendung der bei dieser Optimierung erhaltenen Parameter führte zu schlechteren Ergebnissen bei anderen EAs. Screenshots von Tests des optimierten EA sind unten aufgeführt.

Optimierungsmethode 2

Schlussfolgerung

In diesem Artikel schlug ich drei Methoden vor, um zwei Strategien zu einem einzigen EA zu kombinieren, zeigte, wie man dies im EA anordnet und testete die EAs, ohne die Parameter nach ihrer Optimierung zu ändern.

Die folgende Tabelle fasst die Ergebnisse des Testens aller Strategien zusammen. Die Optimierung von kombinierten EAs zeigte eine höhere Rentabilität im Vergleich zum Einsatz von zwei separaten EAs.

In Ihren EAs steht es Ihnen frei, mehr als zwei Strategien zu kombinieren, indem Sie eine andere Kombination der vorgeschlagenen Methoden verwenden oder Ihre eigenen hinzufügen. Es ist unmöglich, eindeutig zu sagen, welche der Methoden die beste ist. In jedem Fall sollten Händler kreativ sein, wenn sie eine Methode zur Kombination von Strategien wählen und die Strategien selbst und ihre Betriebslogik berücksichtigen.

Parameter Trend-
strategie
Seitwärts-
strategie
Methode 1 Methode 2 Methode 3 Methode 1 opt.
Back/Vorw 
Methode 2 opt.
Back/Vorw 
Gesamtgewinn 51.56 158.96 160.52 166.12 210.40  202.33 / 46.10  206.40 / 43,10
Profit Faktor 2.39 1.25 1.24 1.25 1.31  1.25 / 1.58  1.25 /1.54
Erholungsfaktor 3.65 3.55 3.73 3.86 4.90 4.08 / 1.94  4.17 / 1.82
Maximaler Drawdown vom Saldo 8.49 41.30 36.41 35.67 39.23 44.98 / 19.75  44.98 /19.75
Maximaler Drawdown vom Kapital 14.14 44.76 43.04 43.04 42.96 49.53 / 23.72  49.53 / 23.72
Anzahl der Transaktionen 24 290 295 295 315
 371 / 41  373 / 40
Anteil der Gewinnpositionen 41.67% 55.52% 53.22% 53.90% 54.29% 53.64 / 60.98  53.62 / 60

Referenzen

  1. Die vergleichende Analyse 10 Trend-Strategien
  2. Vergleichende Analyse von 10 Handelsstrategien für Seitwärtsbewegungen
  3. Wie lang ist der Trend?

Die dieses Artikels

#
 Name
Typ 
Beschreibung 
1  Trade.mqh  Klassenbibliothek  Klasse der Handelsoperationen
2  Combination1.mq5  Expert Advisor  EA der die Strategien nach Methode 1 kombiniert
3  Combination2.mq5  Expert Advisor  EA der die Strategien nach Methode 2 kombiniert
4  Combination3.mq5  Expert Advisor  EA der die Strategien nach Methode 3 kombiniert

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

Beigefügte Dateien |
MQL5.zip (180.6 KB)
PairPlot basiert auf CGraphic dient der Analyse von Korrelationen zwischen Datenarrays (Zeitreihen) PairPlot basiert auf CGraphic dient der Analyse von Korrelationen zwischen Datenarrays (Zeitreihen)

Der Vergleich mehrerer Zeitreihen während einer technischen Analyse ist eine recht häufige Aufgabe, die entsprechende Werkzeuge erfordert. In diesem Artikel schlage ich vor, ein Werkzeug für die grafische Analyse zu entwickeln und Korrelationen zwischen zwei oder mehr Zeitreihen zu erkennen.

Tiefe Neuronale Netzwerke (Teil VIII). Erhöhung der Klassifizierungsqualität von Ensembles mit Bagging Tiefe Neuronale Netzwerke (Teil VIII). Erhöhung der Klassifizierungsqualität von Ensembles mit Bagging

Der Artikel betrachtet drei Methoden, die zur Erhöhung der Klassifizierungsqualität von Ensembles mit Bagging eingesetzt werden können, und schätzt deren Effizienz. Die Auswirkungen der Optimierung der Hyperparameter des neuronalen ELM-Netzwerkes und der Nachbearbeitungsparameter werden bewertet.

Elder-Ray (Bulls Power und Bears Power) Elder-Ray (Bulls Power und Bears Power)

Der Artikel beschäftigt sich mit dem Handelssystem von Elder-Ray, das auf den Indikatoren Bulls Power, Bears Power und einem gleitenden Durchschnitt (EMA — exponentiellen gleitenden Durchschnitt) basiert. Dieses System wurde von Alexander Elder in seinem Buch "Trading for a Living" beschrieben.

Das MQL5-Kochbuch: Die Eigenschaften offener Hedge-Positionen abfragen Das MQL5-Kochbuch: Die Eigenschaften offener Hedge-Positionen abfragen

MetaTrader 5 ist eine Multi-Asset-Plattform. Darüber hinaus unterstützt sie verschiedene Positionsmanagementsysteme. Diese Möglichkeiten bieten deutlich erweiterte Möglichkeiten für die Umsetzung und Formalisierung von Handelsideen. In diesem Artikel werden Methoden zur Handhabung und Bilanzierung von Positionseigenschaften im Hedging-Modus diskutiert. Der Artikel enthält eine abgeleitete Klasse sowie Beispiele, die zeigen, wie man die Eigenschaften einer Hedge-Position abfragt und verarbeitet.