English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Lernen Sie, wie man verschiedene Systeme mit gleitenden Durchschnitten entwirft

Lernen Sie, wie man verschiedene Systeme mit gleitenden Durchschnitten entwirft

MetaTrader 5Handel | 17 Februar 2022, 08:38
885 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Einführung

Ich denke, dass Sie unabhängig von Ihrer Erfahrung im Handel das Zitat "Trend is your friend" (Trend ist Dein Freund) gehört haben müssen. Und falls Sie es noch nicht gehört haben, hier ist, was es bedeutet, denn wir alle wissen, dass es verschiedene Arten von Marktrichtungen oder Trends der Preisbewegung gibt.

  • Aufwärtstrend: Wir können ihn erkennen, wenn die Preise höhere Tiefs und höhere Höchststände erreichen.
  • Abwärtstrend: Er tritt auf, wenn die Preise das Gegenteil des Aufwärtstrends erreichen, also niedrigere Höchst- und Tiefststände.
  • Seitwärts: ist jede Bewegung außer Aufwärtstrend oder Abwärtstrend.

Die folgenden Abbildungen zeigen Aufwärts- und Abwärtstrends als Linienchart, und jede Bewegung außer ihnen ist eine Seitwärtsbewegung:

Aufwärtstrend

Abwärtstrend

Jetzt haben wir den Trend erkannt, aber warum ist der Trend mein Freund?

Wir werden hier von Trends sprechen, d.h. von Aufwärts- und Abwärtstrends, da sie eine klare Bewegung entweder nach oben oder nach unten aufweisen. Wir können die Kontrolle durch einen bestimmten Marktteilnehmer erkennen. Während des Aufwärtstrends haben die Käufer die Kontrolle, da sie die Preise in die Höhe treibt, egal wie groß das Angebot ist, und hier bezeichnen wir diesen Markt als Bullenmarkt. Umgekehrt können wir sehen, dass während eines Abwärtstrends die Verkäufer die Kontrolle haben, da sie die Preise nach unten drückt. Wir bezeichnen diesen Markt als Bärenmarkt.

In manchen Fällen kann es jedoch zu so genannten "Whipsaws" oder falschen Ausbrüchen kommen. Und diese falschen Ausbrüche können unseren Handelsergebnissen schaden, wie kommt das? Wir werden hier sehen, wie sie das tun können, aber lassen Sie uns zunächst feststellen, was Whipsaws oder falsche Ausbrüche sind.

Falsche Ausbrüche sind Signale, die uns einen Auslöser geben, eine Entscheidung zu treffen, und nachdem wir die Entscheidung getroffen haben, geht der Markt gegen diese Entscheidung. Und diese Art von Entscheidungen wird mit Sicherheit unsere Handelsergebnisse beeinträchtigen. Diese falschen Ausbrüche oder "Whipsaws" können durch das Filtern mit Hilfe vieler Strategien reduziert werden. Eine der besten Strategien, die das für uns tun kann, ist die Verwendung eines gleitenden Durchschnitts, und das ist das Thema dieses Artikels, in dem wir lernen, wie wir einige Strategien des gleitenden Durchschnitts verwenden können und wie wir ein algorithmisches Handelssystem für sie entwerfen und ihre Verwendung genau, einfach und systematisch machen.

In diesem Artikel werden wir die folgenden Themen durchgehen:

Haftungsausschluss: Alle Inhalte dieses Artikels sind nur zu Lernzwecken und nicht für etwas anderes gemacht. Also, jede Aktion wird auf der Grundlage des Inhalts dieses Artikels getroffen werden, wird es Ihre Verantwortung als der Inhalt dieses Artikels wird nicht gewähren jede Art von Ergebnissen. Alle Strategien müssen möglicherweise vorher getestet und optimiert werden, um bessere Ergebnisse zu erzielen, da, wie bereits erwähnt, das Hauptziel dieses Artikels nur ein pädagogischer Zweck ist.

Alle Codes werden in MQL5 geschrieben und wurden auf MT5 getestet.

Beachten Sie, dass es viele Strategien gibt, die verwendet werden können, um generierte Signale zu filtern, die auf einer beliebigen Strategie basieren, sogar unter Verwendung des gleitenden Durchschnitts selbst, der das Thema dieses Artikels ist. Ziel dieses Artikels ist es also, Ihnen einige Strategien des gleitenden Durchschnitts und die Entwicklung eines algorithmischen Handelssystems vorzustellen, um Ihnen die Augen dafür zu öffnen, was Sie tun können und wie Sie Ihre Handelsstrategie entwickeln können. Lassen Sie uns nun dieses Thema "Lernen Sie, wie man verschiedene Systeme des gleitenden Durchschnitts entwirft" durchgehen, denn ich freue mich sehr, es mit Ihnen zu teilen...


Definition des gleitenden Durchschnitts


Der gleitende Durchschnitt (Moving Average) ist ein Indikator, der häufig in der technischen Analyse verwendet wird. Er wird berechnet, um uns einen Durchschnitt der Preise während eines bestimmten Zeitraums zu liefern, oder anders gesagt, er hilft uns, die Preisdaten zu glätten, um zufällige oder schwankende kurzfristige Bewegungen auf dem Chart zu mildern.

Es gibt viele Arten von gleitenden Durchschnitten, und die Unterschiede zwischen ihnen hängen mit den unterschiedlichen Berechnungen zusammen, die ich im nächsten Thema im Detail erläutern werde. Aber was ich Ihnen hier bis zu weiteren Einzelheiten sagen möchte, ist, dass es viele Arten gibt und die Unterschiede zwischen ihnen mit der Berechnung zusammenhängen, um das beste Ergebnis zu erzielen.

Der gleitende Durchschnitt ist ein Trendfolgeindikator, da er anhand der Preise berechnet wird. Wenn sich der Kurs also in einem bestimmten Trend bewegt, wird der gleitende Durchschnitt demselben Trend folgen.

Der gleitende Durchschnitt ist ein nachlaufender Indikator, da er sich nach dem Kurs bewegt, was normal ist, da er anhand des Kurses berechnet wird und sich der Kurs zuerst bewegen muss. Mit anderen Worten, wir müssen zuerst die Preisdaten haben, und dann können wir die Daten des gleitenden Durchschnitts finden, indem wir Berechnungen mit diesen Preisdaten durchführen.

Entsprechend der Natur des gleitenden Durchschnitts, können wir verstehen, dass der gleitende Durchschnitt Folgendes ermittelt:

  • Er gibt den Mittelwert an.
  • Er funktioniert besser bei sich in Märkten mit einem Trend.
  • Er bestätigt, dass es einen Trend gibt, oder er hilft uns, den Trend zu erkennen.
  • Er entfernt Rauschen oder zufällige Bewegungen aus den Preisen.
  • Er hilft uns, "Whipsaws" oder falsche Ausbrüche aufgrund von Zufallsbewegungen zu vermeiden, da diese eliminiert werden.
  • Und vieles mehr......

Arten von gleitenden Durchschnitten


Es gibt viele Arten von gleitenden Durchschnitten, die verwendet werden können, und die am häufigsten verwendeten sind:

  • Einfacher gleitender Durchschnitt.
  • Gewichteter gleitender Durchschnitt.
  • Exponentieller gleitender Durchschnitt.

Der Hauptunterschied zwischen ihnen liegt in den unterschiedlichen Berechnungen, um ein besseres Ergebnis zu erzielen, wie ich bereits erwähnt habe.

Wir werden nun diese Arten von gleitenden Durchschnitten identifizieren und die Unterschiede zwischen ihnen untersuchen. Wir werden auch sehen, wie diese gleitenden Durchschnitte in MQL5 verwendet werden können oder wie wir sie aufrufen können, wenn wir eine bestimmte Art von ihnen verwenden wollen.

Einfacher gleitender Durchschnitt (Simple Moving Average)

Dieser Typ ist die einfachste Form oder Art des gleitenden Durchschnitts, seine häufig verwendete Abkürzung ist SMA für eng. Simple Moving Average.

Er wird berechnet, indem das arithmetische Mittel einer gegebenen Reihe von Werten über einen bestimmten Zeitraum genommen wird. Oder eine Reihe von Kursen wird addiert und dann durch die Anzahl der Kurse in der Reihe geteilt.

SMA

Beispiel: Wir haben 5 Handelstage und die Schlusskurse während dieser 5 Tage waren wie folgt:

  • Tag1 = 10
  • Tag2 = 15
  • Tag3 = 20
  • Tag4 = 30
  • Tag5 = 35

Wenn wir den SMA für diese 5 Tage erhalten möchten, wird er wie folgt berechnet:


SMA-Beispiel

Gewichteter gleitender Durchschnitt (Weighted Moving Average)

Der gewichtete gleitende Durchschnitt (WMA), wie er üblicherweise verwendet wird, gibt einen Durchschnitt für die Preise während eines bestimmten Zeitraums an, aber der Unterschied besteht darin, dass die jüngsten Daten stärker gewichtet werden. Das bedeutet, dass bei der Berechnung von 10 Handelstagen nicht alle 10 Handelstage gewichtet werden, sondern die jüngsten Daten stärker gewichtet werden.

Die Berechnung kann nach der folgenden Formel erfolgen:

WMA


Beispiel:

Wenn wir die gleichen 5 Handelstage haben und die Schlusskurse während dieser 5 Tage wie folgt waren:

  • Tag1 = 10
  • Tag2 = 15
  • Tag3 = 20
  • Tag4 = 30
  • Tag5 = 35

Wenn wir den WMA für diese 5 Tage erhalten möchten, wird er wie folgt berechnet:

WMA-Beispiel


WMA-Beispiel1


Exponentieller gleitender Durchschnitt (Exponential Moving Average)

Der Exponentielle Gleitende Durchschnitt oder EMA, wie er üblicherweise verwendet wird. Der Unterschied besteht darin, dass der EMA die Periode vor der berechneten Periode des MA nicht aufhebt, d.h. wenn wir 10 MA berechnen müssen, wird die Periode vor diesen 10 Handelstagen berücksichtigt.

Es kann wie folgt berechnet werden:

Zunächst berechnen wir "K" als Exponent für die Berechnung der Gewichtung eines Intervalls und "n" für die Anzahl der Intervalle:

EMA

Dann,

EMA

Beispiel:

Wenn wir die gleichen 5 Handelstage haben und die Schlusskurse während dieser 5 Tage wie folgt waren:

  • Tag1 = 10
  • Tag2 = 15
  • Tag3 = 20
  • Tag4 = 30
  • Tag5 = 35
  • Tag6 = 40

Wenn wir den EMA für diese 5 Tage erhalten möchten, wird er wie folgt berechnet:

EMA-Beispiel


EMA-Beispiel

Beachten Sie, dass hier der EMA von gestern das erste Mal sein wird, um den EMA von Tag 6 zu berechnen, also werden wir den SMA von 5 Tagen (22) verwenden.


Nachdem wir nun geklärt haben, was ein gleitender Durchschnitt ist und welche Arten von gleitenden Durchschnitten es gibt, werden wir den interessantesten Teil dieses Artikels behandeln. Wir werden über Strategien des gleitenden Durchschnitts sprechen und darüber, wie wir algorithmische Handelssysteme für sie entwickeln können.


Strategie 1: Kreuzen eines gleitenden Durchschnitts

In diesem Artikel werden wir den einfachen gleitenden Durchschnitt wählen. Sie können jedoch jeden gewünschten Typ des gleitenden Durchschnitts in Ihrem Code verwenden.

Je nach Strategie werden die Kurse und der SMA bei jedem Tick überprüft:

  • Preis > SMA: Das Signal ist ein Kaufsignal, das als Kommentar auf dem Chart erscheinen muss.
  • Preis < SMA: Das Signal ist ein Verkaufssignal, das als Kommentar auf dem Chart angezeigt werden muss.
  • Falls nichts zutrifft, tun Sie nichts.

Der folgende Screenshot zeigt eine einfache Blaupause für den gleitenden Durchschnitt, den wir entwerfen wollen:

1MA Blaupause


Im Folgenden finden Sie den Code für die Entwicklung dieser Strategie:

//+------------------------------------------------------------------+
//|                                            One SMA crossover.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //create an array for price
   double myMovingAverageArray1[];
   
   //define Ask, Bid
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   //define the properties of  MAs - simple MA 24
   int movingAverage1 = iMA(_Symbol, _Period, 24, 0, MODE_SMA, PRICE_CLOSE);
   
   //sort the price arrays current candle
   ArraySetAsSeries(myMovingAverageArray1,true);
   
   //Defined MA - one line - currentcandle, 3 candles - store result
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   
   //Check if we have a buy entry signal
   if (
      (Ask>myMovingAverageArray1[0])
      )
         {
         Comment("BUY");
         }
    
   //check if we have a sell entry signal      
   if (
      (Bid<myMovingAverageArray1[0])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Die folgenden Screenshots zeigen die generierten Signale nach Ausführung des Codes:

1MA - Kaufsignal

1MA - Verkaufssignal

Strategie 2: Kreuzen von zwei gleitenden Durchschnitten

Bei dieser Strategie werden wir zwei einfache gleitende Durchschnitte verwenden. Der kürzere einfache gleitende Durchschnitt hat eine Periode von 24 und der längere eine Periode von 50.

Bei dieser Strategie müssen die beiden einfachen gleitenden Durchschnitte bei jedem Tick überprüft werden:

  • Wenn 24 SMA > 50 SMA: Kaufsignal, und dieses Signal muss als Kommentar auf dem Chart angezeigt werden.
  • Wenn 24 SMA < 50 SMA: Verkaufssignal, und dieses Signal muss als Kommentar auf dem Chart angezeigt werden.
  • Falls nichts zutrifft, tun Sie nichts.

Der folgende Screenshot zeigt die Blaupause für zwei einfache gleitende Durchschnitte, den wir entwerfen wollen:

2MA Blaupause


Im Folgenden finden Sie den Code für die Entwicklung dieser Strategie:

//+------------------------------------------------------------------+
//|                                            Two SMA crossover.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //create an array for several prices
   double myMovingAverageArray1[], myMovingAverageArray2[];
   
   //define the properties of  MAs - simple MA, 1st 24 / 2nd 50
   int movingAverage1 = iMA(_Symbol, _Period, 24, 0, MODE_SMA, PRICE_CLOSE);
   int movingAverage2 = iMA(_Symbol,_Period,50,0,MODE_SMA,PRICE_CLOSE);
   
   //sort the price arrays 1, 2 from current candle
   ArraySetAsSeries(myMovingAverageArray1,true);
   ArraySetAsSeries(myMovingAverageArray2,true);
   
   //Defined MA1, MA2 - one line - currentcandle, 3 candles - store result
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   CopyBuffer(movingAverage2,0,0,3,myMovingAverageArray2);
   
   //Check if we have a buy entry signal
   if (
      (myMovingAverageArray1[0]>myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray2[1])
      )
         {
         Comment("BUY");
         }
    
   //check if we have a sell entry signal      
   if (
      (myMovingAverageArray1[0]<myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray2[1])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Die folgenden Screenshots zeigen die generierten Signale nach Ausführung des Codes:

2MA - Kaufsignal


2MA - Verkaufssignal


Strategie 3: Kreuzen von drei gleitenden Durchschnitten

In dieser Strategie werden wir drei einfache gleitende Durchschnitte verwenden: der kürzere gleitende Durchschnitt hat eine Periode von 10, der längere eine Periode von 48 und dazwischen eine Periode von 24.

Gemäß der Strategie müssen die drei einfachen gleitenden Durchschnitte bei jedem Tick überprüft werden:

  • Wenn 10 SMA > 24 SMA, 10 SMA > 48 SMA und 24 SMA > 48 SMA: ist das ein Kaufsignal und muss als Kommentar auf dem Chart angezeigt werden.
  • Wenn 10 SMA < 24 SMA, 10 SMA < 48 SMA und 24 SMA < 48 SMA: ist das Signal zum Verkauf und wir müssen als Kommentar auf dem Chart erscheinen.
  • Falls nichts zutrifft, tun Sie nichts.

Der folgende Screenshot zeigt die Blaupause für drei einfache gleitende Durchschnitte, den wir entwerfen wollen: 3MA Blaupause

3MA Blueprint


Im Folgenden finden Sie den Code für die Entwicklung dieser Strategie:

//+------------------------------------------------------------------+
//|                                          Three SMA crossover.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //create an array for several prices
   double myMovingAverageArray1[], myMovingAverageArray2[],myMovingAverageArray3[];
   
   //define the properties of  MAs - simple MA, 1st 10 / 2nd 24, 3rd 48
   int movingAverage1 = iMA(_Symbol, _Period, 10, 0, MODE_SMA, PRICE_CLOSE);
   int movingAverage2 = iMA(_Symbol,_Period,24,0,MODE_SMA,PRICE_CLOSE);
   int movingAverage3 = iMA(_Symbol,_Period,48,0,MODE_SMA,PRICE_CLOSE);
   
   //sort the price arrays 1, 2, 3 from current candle
   ArraySetAsSeries(myMovingAverageArray1,true);
   ArraySetAsSeries(myMovingAverageArray2,true);
   ArraySetAsSeries(myMovingAverageArray3,true);
   
   //Defined MA1, MA2, MA3 - one line - currentcandle, 3 candles - store result
   CopyBuffer(movingAverage1,0,0,3,myMovingAverageArray1);
   CopyBuffer(movingAverage2,0,0,3,myMovingAverageArray2);
   CopyBuffer(movingAverage3,0,0,3,myMovingAverageArray3);
   
   //Check if we have a buy entry signal
   if (
      (myMovingAverageArray1[0]>myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray2[1])
   && (myMovingAverageArray1[0]>myMovingAverageArray3[0])
   && (myMovingAverageArray1[1]<myMovingAverageArray3[1])
   && (myMovingAverageArray2[0]>myMovingAverageArray3[0])
   && (myMovingAverageArray2[1]<myMovingAverageArray3[1])
      )
         {
         Comment("BUY");
         }
    
   //check if we have a sell entry signal      
   if (
      (myMovingAverageArray1[0]<myMovingAverageArray2[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray2[1])
   && (myMovingAverageArray1[0]<myMovingAverageArray3[0])
   && (myMovingAverageArray1[1]>myMovingAverageArray3[1])
   && (myMovingAverageArray2[0]<myMovingAverageArray3[0])
   && (myMovingAverageArray2[1]>myMovingAverageArray3[1])
      )
         {
         Comment("SELL");
         }          
  }
//+------------------------------------------------------------------+

Die folgenden Screenshots zeigen die generierten Signale nach Ausführung des Codes:

3MA - Kaufsignal


3MA - Verkaufssignal


Schlussfolgerung

In diesem Artikel habe ich einen der am häufigsten verwendeten und wichtigsten Indikatoren erwähnt und drei verschiedene Strategien vorgestellt. Ich habe auch versucht zu zeigen, wie wir diese Indikatoren verwenden können und wie wir algorithmische Handelssysteme entwickeln können, die auf jedem einzelnen von ihnen basieren. Diese Strategien können genau und effektiv eingesetzt werden, natürlich nach vorherigem Testen und Optimieren.



Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/3040

Lernen Sie, wie man ein Handelssystem mit Hilfe der Bollinger Bänder entwickelt Lernen Sie, wie man ein Handelssystem mit Hilfe der Bollinger Bänder entwickelt
In diesem Artikel lernen wir die Bollinger Bänder kennen, einen der beliebtesten Indikatoren in der Handelswelt. Wir werden die technische Analyse betrachten und sehen, wie man ein algorithmisches Handelssystem auf der Grundlage des Bollinger Bänder Indikators entwickelt.
Grafiken in der DoEasy-Bibliothek (Teil 91): Standard-Ereignisse für grafische Objekte. Geschichte der Objektnamensänderung Grafiken in der DoEasy-Bibliothek (Teil 91): Standard-Ereignisse für grafische Objekte. Geschichte der Objektnamensänderung
In diesem Artikel werde ich die Grundfunktionalität für die Kontrolle über grafische Objektereignisse in einem bibliotheksbasierten Programm verfeinern. Ich beginne mit der Implementierung der Funktionalität zur Speicherung der Änderungshistorie grafischer Objekte am Beispiel der Eigenschaft "Objektname".
Eine Analyse der Gründe für das Scheitern von Expert Advisors Eine Analyse der Gründe für das Scheitern von Expert Advisors
Dieser Artikel stellt eine Analyse von Währungsdaten vor, um besser zu verstehen, warum Expert Advisors in einigen Zeiträumen eine gute und in anderen Zeiträumen eine schlechte Performance aufweisen können.
Verbesserte Erkennung von Kerzenmustern am Beispiel des Doji Verbesserte Erkennung von Kerzenmustern am Beispiel des Doji
Wie kann man mehr Kerzenmuster als üblich finden? Hinter der Einfachheit von Kerzenmustern verbirgt sich auch ein schwerwiegender Nachteil, der durch die Nutzung der erheblich erweiterten Möglichkeiten moderner Handelsautomatisierungs-Tools beseitigt werden kann.