MetaTrader 5 herunterladen

Wie lang ist der Trend?

29 Mai 2017, 10:12
Alexander Fedosov
0
511

Inhalt


Einführung

Die Bestimmung der Marktsituation in unterschiedlichen Zeitrahmen ist eine essentielle Herausforderung für den Börsenhandel. Der Erfolg eines Händlers hängt auch von der Genauigkeit seiner Preisvorhersage ab. Es gibt bereits eine Reihe von Artikeln zu diesem Thema, z.B. "Verschiedene Wege zur Ermittlung eines Trends in MQL5", der die Methoden zur Trendbestimmung mit Indikatoren und Expert Advisorn beschreibt. Einer meiner früheren Artikel "Die vergleichende Analyse 10 Trend-Strategien" widmet sich auch dem Trend, um Trendfolger zu entwickeln und zu testen. In diesem Artikel werden wir mehrere Methode zur Trendbestimmung betrachten, mit dem Ziel, die Dauer des Trend relativ zur Seitwärtsmarkt zu bestimmen. Allgemein wird angenommen, dass das Verhältnis von Trend zu Seitwärts zwischen 30% bis 70% liegt. Wir werden dies prüfen.


Bestimmen der Aufgabenstellung

Bestimmen wir zunächst die Aufgabenstellung mit den Bedingungen für unsere Untersuchung.

  1. Eine Auswahl von Methoden zur Bestimmung von Trend und Seitwärtsbewegung für eine spätere quantitative und qualitative Analyse. Das bedingt nur Systeme, die beide Marktsituationen erkennen. Idealerweise sollten sie über integrierte Qualitätsindikatoren wie Trendstärke oder eine klare Definition einer Seitwärtsbewegung verfügen.
  2. Bestimmen und Auswerten der Verhältnisse für verschiedene Zeitrahmen, in Einzel- oder Multi-Commodity-Märkten, seinen das Währungs-, Aktien- oder Futuremärkte.
  3. Entwickeln eines hilfreichen Instruments für den Leser, um damit selbst weitere nutzerspezifische Bedingungen zu entwickeln.
  4. Durchführen einer vergleichende Analyse auf Basis der ermittelten Daten aus den verschiedenen Bedingungen; suche nach Korrelationen.

Umsetzung

1. Auswahl der Methoden zur Trendbestimmung.

1.1. Beginnen wir mit dem ADX, dem klassischen Indikator für die Trendstärke. Wir bestimmen den Trend oder die Seitwärtsbewegung mittels des TrendLevels. Wir nehmen an, dass ein Trend dann existiert, wenn die Hauptlinie über diesen TrendLevel steigt. Fig. 1 zeigt ein Beispiel zur Bestimmung der Trendzone und der Seitwärtszone mit dieser Methode. Der Zustand des Marktes wird berechnet für die Zahl der Kerzen, deren ADX-Wert höher als der TrendLevel in einem gegebenen Bereich ist.

Fig.1 Bestimmung von Trend-/Seitwärtszonen mittels des ADX

1.2. Als Nächstes betrachten wir den Trendindikator für Stärke und Richtung, verwenden aber nur einen Bollinger Indikator und verringern die gezeigte Anzahl der gezeigten Farben auf zwei (rot und grün). Fig. 2 zeig deutlich die starken Trends im Markt, durch die farbigen Kerzen.

Fig.2 Bestimmung von Trend-/Seitwärtszonen mittels der Bollinger Bänder.

1.3. Als Drittes betrachten wir Prozent des Trends, den wir ebenfalls durch das Entfernen der zweiten Periode und dem Hinzufügen einer Farbkennzeichnung eines Trends. Das Ergebnis der Verwendung dieses Indikators zeigt Fig.3

 

Fig.2 Bestimmung von Trend-/Seitwärtszonen mittels Prozent des Trends.

1.4. Einen anderen Weg, die Trend-/Seitwärtszonen zu bestimmen, bietet der RSIFilter. Zur Vereinfachung wird der RSI-Indikator als Histogramm mit senkrechten Säulen gezeigt, die die Werte des Indikators zeigen, wenn sie die Überkauft-/Überverkauftzonen erreichen. Auch hier wurde der Originalindikator verändert: Ein Seitwärtsmarkt wird nicht dargestellt und die Puffer des Histogramms erhalten dann den Wert Null. Das geschah, um die Trendbestimmung zu vereinfachen (in diesem Fall wird dem Puffer der Wert auf Eins zugewiesen). Ein Beispiel dieses Indikators zeigt Fig.4

Fig. 4  Bestimmung von Trend-/Seitwärtszonen mittels des RSI.

1.5. Schlussendlich betrachten wir eine Methode aus dem Artikel "Verschiedene Wege zur Ermittlung eines Trends in MQL5" — die Methode, um mit dem Indikator ZigZagTrendDetector die Situationen Trend oder Seitwärtsbewegung zu ermitteln. Änderungen sind in diesem Fall unnötig. Dessen Anwendung zeigt Fig.5

Fig. 5  Bestimmung von Trend-/Seitwärtszonen mittels ZigZagTrendDetector.

2. Entwicklung und Umsetzung eines Instrumentes für das Ermitteln der Marktsituation. Ergebnisanzeige.

Das Ergebnis jeder Methode zur Bestimmung der Trend-/Seitwärtszonen wird in einer zusammenfassenden Tabelle für mehrere Zeitrahmen dargestellt. Für eine einfache Darstellung verwende ich die Bibliothek EasyAndFastGUI auf Basis der Artikelserie Grafische Interfaces. Es wurde speziell die Klasse CTrendCountUI für die Ergebnisse entwickelt. Zum besseren Verständnis zeigt Fig. 6 die Originalvorlage, die für alle Ergebnisse verwendet wird.

 

Fig.6 Die Vorlage für die Darstellung der Testergebnisse.

Wie man auf dem Bild sieht, enthält die erste Spalte die Methode der Trendberechnung, die erste Zeile die Berechnung für mehrere Zeitrahmen. Um Platz zu sparen und die Lesbarkeit zu erhalten, werde ich nicht die vollständige Implementierung der Schnittstelle anführen, und nur die Funktion anzeigen, die die obige Vorlage erstellen:

//+------------------------------------------------------------------+
//| Ausgabe und Konfiguration des Informationsfenster                |
//+------------------------------------------------------------------+
void SetInfoPanel()
  {
//---

   UI.CreateMainPanel("Trend Counter");
   UI.CreateStatusBar(1,25);
   UI.m_status_bar.ValueToItem(0,"Enabled on "+Symbol());
   UI.CreateCanvasTable();
//---

   UI.m_canvas_table.SetValue(0,0,"Value");
   UI.m_canvas_table.SetValue(0,1,"ADX");
   UI.m_canvas_table.SetValue(0,2,"BB");
   UI.m_canvas_table.SetValue(0,3,"PoT");
   UI.m_canvas_table.SetValue(0,4,"RSI");
   UI.m_canvas_table.SetValue(0,5,"ZZ");
//---

   UI.m_canvas_table.SetValue(1,0,"M1");
   UI.m_canvas_table.SetValue(2,0,"M5");
   UI.m_canvas_table.SetValue(3,0,"M15");
   UI.m_canvas_table.SetValue(4,0,"M30");
   UI.m_canvas_table.SetValue(5,0,"H1");
   UI.m_canvas_table.SetValue(6,0,"H4");
   UI.m_canvas_table.SetValue(7,0,"H6");
   UI.m_canvas_table.SetValue(8,0,"D1");
   UI.m_canvas_table.SetValue(9,0,"W1");

   UI.m_canvas_table.UpdateTable(true);
   UI.CreateLabel("Working...");
  }

Als Nächstes muss der Algorithmus zur Berechnung der oben erwähnten Methoden erstellt werden. Die Implementationen sind sich ähnlich, wir werden daher nur eine besprechen. Konzentrieren wir uns auf die Berechnung.

Wir beginnen mit der ersten, beschriebenen Methode - ADX, der Funktion GetADXCount().

//+------------------------------------------------------------------+
//| Die Funktion zur Berechnung der Marktsituation durch den ADX     |
//+------------------------------------------------------------------+
bool GetADXCount()
  {
//--- Block 1
   double adx[],result[],count;
   int to_copy,bars;
   int tf_size=ArraySize(Ind_Timeframe);
   ArrayResize(Ind_Handle,tf_size);
   ArrayResize(result,tf_size);
   ArrayInitialize(adx,0.0);
   ArrayInitialize(result,0.0);
   ArraySetAsSeries(adx,true);
//---

   for(int i=0;i<tf_size;i++)
     {
      count=0;
      Ind_Handle[i]=iADX(Symbol(),Ind_Timeframe[i],InpInd_ADXPeriod);
      if(Ind_Handle[i]==INVALID_HANDLE)
        {
         Print(" Failed to get the indicator handle");
         return(false);
        }
      //--- Block 2

      bars=Bars(Symbol(),Ind_Timeframe[i]);
      to_copy=(bars<NumCandles)?bars:NumCandles;
      //---

      if(CopyBuffer(Ind_Handle[i],0,0,to_copy,adx)<=0)
         return(false);
      //--- Block 3

      for(int j=0;j<to_copy;j++)
        {
         if(adx[j]>TrendLevel)
            count++;
        }
      result[i]=(count/to_copy)*100;
      IndicatorRelease(Ind_Handle[i]);
     }
//--- Block 4

   for(int i=1;i<=tf_size;i++)
      UI.m_canvas_table.SetValue(i,1,DoubleToString(result[i-1],2));
   UI.m_canvas_table.UpdateTable(true);
   return(true);
  }

Betrachten wir die Blöcke des oben aufgeführten Codes.

  • Block 1. Initialisierung der Variablen und Arrays und die Anpassung ihrer Größe auf die Anzahl der Tests der zu testenden Zeitrahmen.
  • Block 2. Eine Auswahl von einer Reihe von Kerzen zum Testen und Ermitteln der Testergebnisse. Bedenken Sie, dass es für den ausgewählten Bereich bei höhere Zeitrahmen oder Instrumente möglicherweise nicht genug Bars gibt, daher muss Anzahl der historischen Bars überprüft und unter Umständen angepasst werden.
  • Block 3. Für den ADX Indikator, erhöhen wir den Zähler, wenn sein Wert auf der aktuellen Bar über den TrendLevel kreuzt. 
  • Block 4. Wir tragen die Testergebnisse in die Tabelle ein, die mit der Funktion SetInfoPanel() vorbereitet wurde.

Danach wird nur noch der Block 3 (die Bedingungen für das Zählen) geändert.

Die Funktion GetColorBBCount().

for(int j=0;j<to_copy;j++)
        {
         if(bb[j])
            count++;
        }
result[i]=(count/to_copy)*100;

Ein Wert ungleich Null des gewählten Indikatorpuffers bedeutet, dass die aktuelle Kerze im Bereich Teil des Trends ist. Andernfalls ist es eine Seitwärtsbewegung.

The GetPoTCount() function.

Die Parameter des Indikators 'Percentage of Trend' sind wie folgt:

//--- Parameter des Percentage of Trend

input int                  InpPeriodPoT=20;
input double               UpTrendLevel=0.8;
input double               DnTrendLevel=0.2;

Ein Trend existiert also dann, wenn der Indikatorwert über UpTrendLevel oder unter DnTrendLevel liegt. Daraus ergibt sich die Zählweise wie folgt:

 for(int j=0;j<to_copy;j++)
        {
         if(pot[j]>=UpTrendLevel || pot[j]<=DnTrendLevel)
            count++;
        }
 result[i]=(count/to_copy)*100;

Die Funktion GetRSICount().

Da die Funktion ein Histogramm erstellt, in dem eine 1 einen Trend kennzeichnet und eine 0 dessen Abwesenheit, sind die Bedingungen für GetColorBBCount() identisch:

 for(int j=0;j<to_copy;j++)
        {
         if(rsi[j])
            count++;
        }
 result[i]=(count/to_copy)*100;

Die Funktion GetZZCount().

Sie ist ähnlich der Zählfunktion des vorher beschriebenen Histogramms.

 for(int j=0;j<to_copy;j++)
        {
         if(zz[j])
            count++;
        }
 result[i]=(count/to_copy)*100;

Die Funktion GetAverage().

Berechnen aller Ergebnisse aller Methoden und Zeitrahmen.

//+------------------------------------------------------------------+
//| Die Funktion zur Berechnung der Mittelwerte über alle Daten      |
//+------------------------------------------------------------------+
string GetAverage(double &arr[])
  {
   double sum=0.0;
   int size=ArraySize(arr);
   for(int i=0;i<size;i++)
      sum+=arr[i];
   sum/=size;
   return(DoubleToString(sum,2));
  }
//+------------------------------------------------------------------+

Im Ergebnis sehen die berechneten Daten und ihre Darstellung wie folgt aus:

//+------------------------------------------------------------------+
//| Initialisierungsfunktion des Experten                            |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetInfoPanel();
   if(GetADXCount() && 
      GetColorBBCount() && 
      GetPoTCount() && 
      GetRSICount() && 
      GetZZCount()
      )
      UI.m_label1.LabelText("Done. Result for "+IntegerToString(NumCandles)+" bars. Average Trend Time - "+GetAverage(avr_result)+"%");
   else
     {
      UI.m_label1.LabelText("Error");
     }
//---
   return(INIT_SUCCEEDED);
  }


Testen

Zum Testen verwenden wir mehrere, verschiedene Handelsinstrumente, um den Untersuchungsbereich maximal auszudehnen:

  • Währungspaare - EURUSD, USDCHF, USDJPY, GBPUSD;
  • Futures (GOLD-6.17);
  • Aktien (#MCD);

Für alle Zeitrahmen werden wir mit 2'000 Bars testen. Im Folgenden die Testparameter, die für alle Symbole gleich bleiben.

//+------------------------------------------------------------------+
//| Eingabeparameter des Experten                                    |
//+------------------------------------------------------------------+

input int                  NumCandles=2000;              // Anzahl der zu analysierenden Kerzen
//---- ADX  Parameter
input string               com1="";                      // ADX Parameter
input int                  InpInd_ADXPeriod=14;          // ADX Periodenlänge
input double               TrendLevel=20.0;
//--- ColorBBCandles parameters
input string               com2="";                      // ColorBBCandles Parameter
input int                  BandsPeriod=20;               // BB Glättungslänge
input double               BandsDeviation=1.0;           // Abweichung
input ENUM_MA_METHOD       MA_Method_=MODE_SMA;          // Indikator Glättungsverfahren
input Applied_price_       IPC=PRICE_CLOSE_;             // Kalkulationspreis
//--- Parameter des Percentage of Trend
input string               com3="";                      // Percentage of Trend Parameter
input int                  InpPeriodPoT=20;
input double               UpTrendLevel=0.7;
input double               DnTrendLevel=0.3;
//--- RSIFilter Parameter
input string               com4="";                      // RSIFilter Parameter
input uint                 RSIPeriod=10;                 // Indikator Periodenlänge
input ENUM_APPLIED_PRICE   RSIPrice=PRICE_CLOSE;         // Kalkulationspreis
input uint                 HighLevel=60;                 // Überkauftlevel
input uint                 LowLevel=40;                  // Überverkauftlevel
//--- ZigZagTrendDetector Parameter
input string               com5="";                      // ZigZagTrendDetector Parameter
input int                  ExtDepth=5;
input int                  ExtDeviation= 5;
input int                  ExtBackstep = 3;


1. Tests der Währungspaare.

Die Testergebnisse der vier Währungspaaren zeigen, dass ein Trend für durchschnittlich 60% der Zeit existiert. Zur gleichen Zeit gibt es keine signifikanten Unterschiede zwischen den unterschiedlichen Methoden und Zeitrahmen.

Fig. 7. Testergebnisses der Währungspaare.

2. Tests mit Futures.

Die Testergebnisses mit Futures zeigen bei den höheren Zeitrahmen unrealistische Werte außerhalb der allgemeinen Tendenz. Das rührt daher, dass wir einen Bereich von 2'000 Bars verlangen, es aber für D1 und W1 nicht so viele gibt, daher sind die Zahlen auf der maximal vorhandenen Anzahl berechnet. 

Fig.7 Testergebnisse für den Future GOLD-6.17.

3. Tests mit Aktien.

Auch hier gibt es einen allgemeinen Trend, wie er bei den obigen Symbolen beobachtet werden konnte.

 

Fig.8 Testergebnisse für die Aktie #MCD.

Während des Tests begann ich über die Angemessenheit von 2'000 Kerzen nachzudenken. Würden sich der ermittelten Werte bei einer anderen Bereichsgröße verändern? Hier ergibt sich ein anderes, interessantes Untersuchungsthema — wie verändert sich das Verhältnis von Trend und Seitwärtsbewegung mit der Zeit? Bei der Untersuchung der Dynamik dieses Verhältnisses, können wir die Natur der Veränderungen von Trends, Dauer, Häufigkeit etc. besser verstehen. Daher wurde entschieden die Abhängigkeit von der Bereichsgröße und die durchschnittlichen Trendwerte für jeden Trend zu untersuchen. Das wird uns auf die obigen Fragen beantworten. Wir untersuchen die Abhängigkeiten mittels der Spearmanschen Rangkorrelation. 

Wir interessieren uns für zwei Zahlen der Korrelation: Anzahl der Bars im Test (X) und dem Durchschnitt der Trenddauer in Prozent (Y). Für jedes X und Y werden die Ränge zugewiesen. Auf Basis der ermittelten Ränge verwenden wir die Formel um die Differenzen d und die Koeffizienten zu berechnen:

Mit n als die Zahl der gemessenen Paare X und Y. Die Werte des Koeffizienten bewegen sich zwischen -1 und 1. Ein positiver Wert kennzeichnet eine direkte, ein negativer Werte eine umgekehrte Abhängigkeit. Null zeigt an, dass es keine Abhängigkeit gibt.

Als Beispiel schauen wir uns den ADX und das Währungspaar EURUSD genauer an. Die anderen würden ganz genauso berechnet werden und ihre Ergebnisse werden der Klarheit halber auch in die Tabelle eingetragen. In unserem Fall ist das Maß der durchschnittlichen Trendwerte der Trenddauer n=7, mit einer vorab gewählten Anzahl von Bars für die Tests (100, 200, 300, 500, 1,000, 1,500, 2,000). Die nachfolgende Tabelle zeigt der Ergebnisse der Werte, der Ränge, der Rangunterschiede und das Quadrat des Rangs zur Berechnung der Koeffizienten:

RxXYRyD(Rx-Ry)D2
1 10075.78100
2 20077.72200
3 30079.04300
4 50079.775-11
5 1,00079.494-11
6 1,50081.32600
 2,00081.44700

Setzen wir diese Werte in die Formel ein, erhalten wir den Koeffizienten ρ=1-(6*2)/(7*(49-1)=0.96. 

Als Nächstes überprüfen wir die ermittelten Werte in der Tabelle der kritischen Koeffizienten in Fig. 8 für n=7 und schließen daraus, dass innerhalb dieser Tests eine starke, proportionale Abhängigkeit zwischen den Durchschnittswerten der Trends und den Werten des jeweiligen Untersuchungsbereichs der Bars gibt.

Fig.8  Kritische Werte der Koeffizienten der Spearmanschen Rangkorrelation.

Jetzt berechnen wir die Spearmanschen Koeffizienten für alle Methoden der Trendidentifikation für das ausgewählte Währungspaar EURUSD und zeige die Ergebnisse in der Tabelle.

Methode zur TrendbestimmungDer Wert des Spearmanschen Koeffizienten
 ADX0.96
 ColorBBCount0.89
 Percentage of Trend0.68
 RSI Filter-0.68
 ZigZagTrendDetector-0.07 

Was sagen uns diese Ergebnisse? Die ersten drei Methoden zur Trendbestimmung zeigen eine direkte Abhängigkeit des durchschnittlichen Trendwertes vom Umfang der Historie, der RSI Filter dagegen eine umgekehrte Abhängigkeit, während der ZigZag schlussendlich gar nicht vom Umfang der Historie abhängt. Berechnen wir die Koeffizienten für die anderen Handelsinstrumente und zeigen ihre Ergebnisse in der Tabelle. 

Methode zur TrendbestimmungEURUSDUSDCHFUSDJPYGBPUSDGOLD-6.17#MCD
 ADX0.96-0.61-0.750.96-0.860.93
 ColorBBCount0.890.46-0.11-0.14-0.640.79
 Percentage of Trend0.680.930.110.290.891
 RSI Filter-0.6810.040.79-10.89
 ZigZagTrendDetector-0.0700.960.960.360.32

Auf Basis der ermittelten Werte können wir folgende Schlüsse für die einzelnen Handelsinstrumente ziehen.

  • EURUSD. Drei von fünf Methoden zur Trendbestimmung zeigen eine starke Korrelation: Je größer der Umfang der Historie, desto größer ist das Verhältnis der Trendsituationen im Markt.
  • USDCHF. Ähnlich dem vorherigen Handelsinstrument: je mehr desto länger die Trends.
  • USDJPY. Hier zeigt sich kein Verhältnis zwischen dem Umfang der Historie und den Endresultaten. Die Natur der Bewegung und der Dynamik des Marktes ändert sich nicht so stark.
  • GPBUSD. Vier der fünf Methoden zeigen eine direkt proportionale Abhängigkeit zwischen dem Trendverhältnis und des Historienumfangs. Wie schließen daraus, dass für dieses Paar die Trenddauer des Marktes früher höher war als heute.
  • GOLD-6.17. Wir beobachten keine Abhängigkeiten vom Umfang der Historie.
  • #MCD. Ein Abhängigkeit zeigt sich in allen fünf Fällen (besonders deutlich - in vier Fällen). Es zeigt auch stärkere und längere Trends in der Vergangenheit. Je näher die Historie der Gegenwart kommt, desto geringer die Dauer und weniger deutlich die Bewegung des gewählten Marktes.

Um die erhaltenen Ergebnisse zu verifizieren, betrachten wir die Charts der getesteten Handelsinstrumente auf einem größeren Zeitrahmen und über eine längeren Zeitraum. Das gibt uns eine Idee, ob sich der Natur der Trendbewegung ändert. Wählen wir für unsere Untersuchung den Wochenchart und versuchen charakteristische Ausprägungen für Trends und Seitwärtsbewegungen zu finden.

1. EURUSD

Betrachten wir das Bild unten. Es zeigt den EURUSD von 1995 bis heute. 

EURUSD, Wochenchart 1995-2017

Hier zeigen sich deutlich drei Zonen des Marktes:

  • Die erste Zone zeigt einen längerfristigen Abwärtstrend mit leichten Korrekturen. Achten Sie auf die Dauer und die Stärke des Trends.
  • Die zweite Zone ist praktisch das Gegenteil der ersten bezüglich der Richtung, aber Stärke und Dauer des Trends sind ähnlich der ersten. Wie man sieht gibt es diese Bewegungen zwischen 1995 und Mitte 2007.
  • In der dritten und vierten Zone verlieren Stärke und Dauer der Trends stark. Bezogen auf die Vergangenheit zeigen moderne Trends eher seitwärts Bewegung.

Diese Beobachtungen deuten darauf hin, dass die Berechnung der Spearmanschen Rangkorrelationskoeffizient für die ausgewählten Methoden zur Trendbestimmung ein zuverlässiger Anhaltspunkt des Verhältnisses von Trends und Seitwärtsbewegungen.


2. USDJPY

Die Berechnung des Korrelationskoeffizienten für dieses Symbol zeigt weder eine Abhängigkeit von den Veränderungen noch eine Korrelation von Trend und Zeit. Fig. 10 zeigt deutlich einen klaren Trend ab Anfang 1995, eine starke Aufwärtsbewegung, gefolgt von eine Periode mit erheblich kürzeren Trends und kleineren Amplituden. Im zweiten Teil der Darstellung (mit einem absteigenden Trend gefolgt von einem aufsteigenden) sieht man deutliche, häufige Seitwärtsbewegungen, die mehrere Monate dauern. 


Fig.10 Der Wochenchart USDJPY 1995-2017.

Der Spearmanschen Rangkorrelationskoeffizient zeigt auch in diesem Fall die Abwesenheit eine Abhängigkeit zwischen dem Zeitrahmen und dem Verhältnis von Trend und Seitwärtsbewegung korrekt an.


3. #MCD.

Bei Aktien ist eine Korrelation erkennbar für alle fünf Methoden zur Trendbestimmung. Fig. 11 zeigt in der Vergangenheit, dass die Aktie steigt, ohne starke Rücksetzer oder längere Seitwärtsbewegungen. Wir können auch deutlich erkennen, welche Bewegungen und welche Verhältnisse der Trend-/Seitwärtszonen in der jüngeren Vergangenheit bis heute dominieren.

Fig.11 Die Aktie #MCD, 2003-2017.

Auch hier liefert die Berechnung des Spearmanschen Rangkorrelationskoeffizienten absolut richtige Werte, zeichnet er doch das Bild einer starken Veränderung des Verhältnisses der Trends und Seitwärtsbewegungen in Richtung einen Seitwärtsmarktes. Der allgemeine Trend der untersuchten Märkte zeigt, dass die Märkte sich sowohl in Bezug zur Bewegung wie auch in Bezug zur Art und Weise der Bewegungen verändert haben. Sie werden unberechenbar, dynamischer und weniger vorhersehbar. Das kann durch die Ergebnisse dieses Artikels bewiesen werden: Das Verhältnis von Trends und Seitwärtsbewegung verschiebt sich zur Seitwärtsbewegung; früher waren Trends deutlicher als heutzutage.


Schlussfolgerungen

Zur besseren Darstellung der Tests wurden alle Ergebnisse aller Handelsinstrumente in einer Tabelle präsentiert.

Getestet SymbolDurchschnittswert für die Trenddauer %
 EURUSD 62.54
 USDCHF 62.27
 USDJPY 63.05
 GBPUSD 60.68
 GOLD-6.17 59.55
 #MCD 59.71

Auf Basis einer Zusammenfassung der Testergebnisse schließen wir: Für gegebene Testbedingungen beträgt die durchschnittliche Trenddauer ungefähr 60%, aber in der Betrachtung der Entwicklung von der Vergangenheit bis heute verschiebt sich das Verhältnis von Trend und Seitwärtsbewegung in Richtung Seitwärtsmarkt und nähert sich langsam einem Verhältnis von 30:70 an.

Was sagen uns die Ergebnisse?

  • Die Märkte werden dynamischer, und das Wechseln der Phasen von Trends und Seitwärtsbewegungen erscheint häufiger.
  • Längere Trendperioden werden kürzer und sie sind weniger deutlich.
  • Entsprechend wurden das Marktverhalten, seine Bewegungen und Phasen komplizierter.

Schlussfolgerung

Die beigefügte Datei enthält alle aufgelisteten Dateien, die sich bereits im entsprechenden Verzeichnis befinden. Für ein reibungsloses Funktionieren müssen Sie nur das Verzeichnis MQL5 im Wurzelverzeichnis des Terminals sichern.

Die Programm dieses Artikels:

#
 Name
Typ
Beschreibung
1
TrendCount.mq5Expert
 Testinstrument 
2
TrendCountUI.mqhBibliothek Nutzerklasse des Interfaces
3ColorBBCandles.mq5Indikator Indikator der Trendstärke und -richtung (auf Basis der Bollinger Bänder)
4percentageoftrend.mq5Indikator Indikator zur Berechnung eines Trend- oder Seitwärtsmarktes.
5rsifilter.mq5Indikator Indikator RSI (Histogramm) mit vorbestimmten Level für Überkauft/Überverkauft.
6ZigZagTrendDetector.mq5 Indikator  Indikator zur Trendbestimmung mittels des standardmäßigen ZigZag.


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

Beigefügte Dateien |
MQL5.zip (1693.17 KB)
Wolfe Wellen Wolfe Wellen

Die von Bill Wolfe vorgeschlagene Methode hilft nicht nur ein Muster zu erkennen und somit den Moment und die Richtung des Einstiegs zu bestimmen, sondern auch das Ziel vorherzusagen, das der Preis erreichen muss sowie die Zeit des Erreichens. Der Artikel beschreibt die Erstellung eines Indikator für die Erkennung der Wolfe Wellen basierend auf dem ZigZag Indikator sowie einen einfachen Expert Advisor, der nach seinen Signalen handelt.

DeMarks Sequential (TD SEQUENTIAL) unter Verwendung künstlicher Intelligenz DeMarks Sequential (TD SEQUENTIAL) unter Verwendung künstlicher Intelligenz

In diesem Artikel werde ich erzählen, wie man durch das Kreuzen einer sehr bekannten Strategie mit einem neuronalen Netz erfolgreich handeln kann. Es wird um die Strategie Thomas Demarks "Sequential" unter Verwendung künstlicher Intelligenz gehen. Wir werden NUR nach dem ersten Teil der Strategie arbeiten, dabei verwenden wir die Signale der "Setzung" und "Kreuzung".

Die Rezepte MQL5 - Die Erstellung des Ringpuffers für eine schnelle Berechnung der Indikatoren im gleitenden Fenster Die Rezepte MQL5 - Die Erstellung des Ringpuffers für eine schnelle Berechnung der Indikatoren im gleitenden Fenster

Der Ringpuffer — er ist die einfachste und zugleich wirksamste Organisationsform für die Berechnungen von Daten in einem gleitenden Fenster. Im Artikel wird beschrieben, wie dieser Algorithmus funktioniert, und es wird gezeigt, wie mit seiner Hilfe Berechnungen im gleitenden Fenster einfacher und schneller durchgeführt werden können.

Cross-Plattform Expert Advisor: Order-Manager Cross-Plattform Expert Advisor: Order-Manager

Dieser Artikel behandelt das Erstellen eines Order-Managers für einen Cross-Plattform Expert Advisor. Der Order-Manager ist verantwortlich, für beide Versionen die Positionen eines Experten zu öffnen oder zu schließen, und die jeweiligen Datensätze für eine weitere Verwendung aktuell zu halten.