MetaTrader 5 herunterladen

Die vergleichende Analyse 10 Trend-Strategien

25 April 2017, 10:50
Alexander Fedosov
0
590

Inhalt

Einführung

Die Strategien des Handels nach dem Trend sind bei der Arbeit auf den Devisenmärkten sehr populär. Ihr Wesen besteht darin, eine starke einseitige Bewegung genau zu bestimmen, die günstigen Punkte für den Eintritt in den Markt zu finden und, was nicht weniger wichtig ist, — richtig den Moment des Verlassens zu bestimmen. Für diesen Artikel habe ich einige technische Instrumente für eine direkte oder indirekte Definition des Trends ausgewählt. Von ihnen wurden 10 Trend-Strategien gebildet, die in Form der EAs für MetaTrader 5 realisiert sind. Nach den Ergebnissen ihrer Arbeit habe ich die Vorteile und die Nachteile jeder Strategie analysiert, habe ihren vereinten Vergleich durchgeführt. Das Ziel dieses Artikels — dem Leser maximal die breite Vorstellung über die starken und schwachen Seiten des Trend-Handels zu vermitteln. Einige andere Trend-Strategien wurden auch im Artikel Verschiedene Wege zur Ermittlung eines Trends in MQL5.
beschrieben

Die Aufgabenstellung bei der Erstellung einer Trend-Strategie

Auf den ersten Blick scheint es, dass die Entwicklung einer Trend-Strategie nicht so kompliziert sei. Man muss nur den Trend mit Hilfe der technischen Analyse bestimmen, die Position öffnen und auf die weitere Bewegung warten, zugleich die Position möglichst verbreiten. Theoretisch kann man eine solche Art nicht streiten. Jedoch entstehen in der Praxis einige wichtige Fragen.

Abb.1 Die Bereiche der Definition des Trends und des Flats.

Die Aufgabe №1. Die Definition des Vorhandenseins des Trends.

In der Regel verlangen die Definition und die Bestätigung des Trends etwas Zeit. Deshalb wird ein idealer, maximal bestätigter Eintritt bei der Entstehung des Trends nicht geben. Schauen Sie bitte die Abb.1 an. Den Eintritt wie ein Punkt auf dem Chart bestimmen ist unmöglich — wir sehen nur ein Bereich, welcher zu dem Eintritt in den Markt passt. Die Definition in Form eines Bereichs ist deswegen rechtgefertigt, weil bei der Analyse Verspätungen im Erscheinen des Signals entstehen, und für die Bestätigung des Trends muss man eine bestimmte Zeit abwarten. Das Beispiel — die Handelssysteme, wo ein Indikator auf das Vorhandensein des Trends signalisiert, und der andere nach einer Weile entweder bestätigt es, oder nicht Eine solche Vorgehensweise "frisst" viel Zeit. Und die Zeit — ist Geld, oder in unserer Situation — entgangener Gewinn.

Die Aufgabe №2. Die Ziele der offenen Position.

Also, wir haben den Trend bestimmt und haben seine Merkmale bestätigt. Jetzt muss man in den Markt eintreten. Aber davor muss man die Ziele des Gewinns klarstellen. Den zweckbestimmten Gewinn kann man in den Punkten festlegen oder dynamisch lassen, je nach der Prognose der Trendskraft. Hier kann man mit den Unterstützung / Widerstand Levels zusammenarbeiten Aber das Prinzip ist das gleiche — bevor man in den Markt eintritt muss man genau wissen, wann wir ihn verlassen werden. Davon folgt die nächste Aufgabe.

Die Aufgabe №3. Die Definition des Endes des Trends. 

Wir betrachten wieder die Abb.1. Auf ihr ist die Situation anschaulich dargestellt: wir gehen in die Position auf dem grünen Bereich ein , der Trend geht weiterhin bis zu dem Bereich Flats. Und hier muss man bestimmen: das ist ein vorübergehender Zustand oder wir müssen schon den Markt verlassen? In diesem Fall dauerte Flat nicht lange und der Trend ging weiter. Wir werden direkt vorbehalten: in den Strategien mit den fixierten Zielen werden die Gewinne der Dauer und des Umfangs der Bewegung in den Punkten prognostiziert, und zwar aufgrund der Einschätzung schon bestätigten Trends in der Aufgabe №2. 

‌‌Die Trend-Strategien

Wir werden die allgemeine Bedingung vorbehalten. Im Rahmen der Übersicht der Trend-Strategien habe ich mich entschieden, viel zu großen und sehr zu kleinen Timeframe zu nehmen, da auf den Kleinen sehr viele falsche Signale entstehen, und auf Großen im Gegenteil ist die Selektivität in den Bedingungen so hoch, dass die Anzahl der Eintritts in den Markt für die objektive Analyse der Effektivität der Strategien zu wenig sein wird. Deshalb für den Test werden Timeframes im Abstand von M30 bis zu H4 gewählt.

Die Strategie №1: Der Indikator ADXCloud mit der bestätigten RSI, der in Form eines farbigen Histogramms erstellt ist.

Die erste Strategie wurde, die wir betrachten, auf dem modifizierten Indikator ADX — ADXCloud gegründet. Wir werden das Signal mit der Hilfe des Oszillators RSI mit den Ebenen Übergekauft/Überverkauft bestätigen. Er ist in Form eines Histogramms dargestellt, wo die grüne Spalten der Werte RSI zum Bereich Übergekauft gehören, und rote — zum Bereich Überverkauft.

Parameter Beschreibung
Der verwendete Indikator ADXCloud
Der verwendete Indikator RSIColor
Die Timeframe H1
Die Bedingung für den Kauf Der Farbewechsel der Wolke von rot auf grün, das Histogramm RSIColor hat die grüne Farbe.
Die Bedingung für den Verkauf Der Farbewechsel der Wolke von grün auf rot, das Histogramm RSIColor hat die rote Farbe.
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Auf der Abb.2 wurde diese Strategie graphisch dargestellt. Wir bemerken, dass die Bereiche auf der Timeframe H1, die als Trend-Bereiche bestimmt werden, dauern einige Bars, deshalb ist die Wahl der großen Werte Take-profit und Stop-loss unter den Bedingungen des Verlassens unzweckmäßig.

Abb.2 Die Bedingung des Eintritts nach der Trend-Strategie №1

Die Realisierung des Experten nach dieser Strategie im Code sieht so aus:

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(adx[0]>0 && adx[1]<0 && rsi1[0]==1)?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(adx[0]<0 && adx[1]>0 && rsi2[0]==1)?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,rsi1)<=0 ||
          CopyBuffer(InpInd_Handle1,1,0,2,rsi2)<=0 ||
          CopyBuffer(InpInd_Handle2,0,0,2,adx)<=0
          )?false:true;
  }


Die Strategie №2: Der Indikator Standard Deviation mit der bestätigten RVI, der in Form eines Histogramms erstellt ist.

Bei der Grundlage dieser Strategie — die Modifikation des Trends-Indikators Standard Deviation und des Oszillators RVI. Ausführlicher Information über die Prinzipien ihrer Arbeit kann man durch den Link in der Tabelle erfahren.

Parameter Beschreibung
Der verwendete Indikator ColorStdDev
Der verwendete Indikator ColorZerolagRVI
Die Timeframe H1
Die Bedingung für den Kauf Das Histogramm ColorStdDev der roten Farbe (der starke Trend), die Wolke ColorZerolagRVI der grünen Farbe.
Die Bedingung für den Verkauf Das Histogramm ColorStdDev der roten Farbe (der starke Trend), die Wolke ColorZerolagRVI der roten Farbe.
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Die Strategie wurde visuell auf der Abb. 3 dargestellt. Die Bereiche der starken Bewegung auf dem Bild werden mit Hilfe Standard Deviation erkannt. Der Trend wird von der Modifikation des Oszillators RVI bestätigt, der auf Grund von vier standardmäßigen RVI mit verschiedenen Perioden und den Waagekoeffizienten aufgebaut sind.

Die Abb.3 Die Bedingung des Eintritts nach der Trend-Strategie №2

Beachten Sie bitte, dass es bei der Programmrealisierung dieser Strategie in den Einstellungen ColorStDev vorgeschlagen wird, empirisch den Wert des starken Trends, des mittleren Trends und Flat zu bestimmen. Wir werden diese Werte standardmäßig lassen, aber für die Bequemlichkeit werden wir die Option Used Trend eingeben, die die Wahl ermöglicht, von welchem Typ des Trends man — Mittlere oder Starke ausgehen soll. So muss man nicht jedes mal drei Kennziffer umdefinieren: es ist genügend, einen umzuschalten. Die Verwendung des Signals des starken Trends passt eher zu einer laufenden Strategie, weil wir die Timeframe 1H gewählt haben. Die Option des mittleren Trends passt eher zum Test auf älteren Timeframes. Dabei muss man im Auge behalten, dass die Signale auf den Eintritt unter Verwendung des mittleren Trends mehr sein werden, deswegen, um die falschen Signale zu filtern, und Profit in den Trades zu haben, muss man immer die Ziele des Gewinns und die laufende Timeframe berücksichtigen.

//--- Die Parameter des Indikators ColorStDev

input int                  period = 12;                               //Smoothing period StDev
input ENUM_MA_METHOD       MA_Method=MODE_EMA;                        //Histogram smoothing method
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;                 //Applied price
input int                  MaxTrendLevel=100;                         //Maximum trend level
input int                  MiddLeTrendLevel=40;                       //Middle trend level
input int                  FlatLevel=10;                              //Flat level
input Trend                TrendLevel=Maximum;                                //Used trend

Der Kern dieser Strategie wurde im Code dargestellt:‌

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(stdev[0]>trend && rvi_fast[0]>rvi_slow[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(stdev[0]>trend && rvi_fast[0]<rvi_slow[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,stdev)<=0 ||
          CopyBuffer(InpInd_Handle2,0,0,2,rvi_fast)<=0 ||
          CopyBuffer(InpInd_Handle2,1,0,2,rvi_slow)<=0
          )?false:true;
  }

Die Strategie №3: Die wolkige Interpretation AC Williams und der vereinte Indikator Bears Power und Bulls Power.
In ‌der nächsten Strategie habe ich versucht, die Verknüpfung aus der wolkigen Interpretation Accelerator Oscillator(AC) Bill Williams und der Oszillatoren Bears Power und Bulls Power zu verwenden, die zu eins vereint sind. ‌

Parameter Beschreibung
Der verwendete Indikator Bear_Bulls_Power
Der verwendete Indikator CronexAC
Die Timeframe H1
Die Bedingung für den Kauf Das Histogramm zeigt das Wachstum (ändert die Farbe von rosa auf blau, dabei ist der Wert des Indikators weniger als Null), die Wolke CroneAC hat die blaue Farbe.
Die Bedingung für den Verkauf Das Histogramm zeigt das Abstieg (ändert die Farbe von blau auf rosa, dabei ist der Wert des Indikators größer als Null), die Wolke CroneAC hat die orange Farbe.
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Die Strategie wurde auf der Abb.4 dargestellt. Die Aufgabe bei der Suche der Signale auf den Eintritt besteht darin, dass es ein früheres Wachstum des Histogramms ermitteln muss. Mit anderen Wörtern, wir müssen den Moment finden, wenn die Stiere die Bären oder im Gegenteil ersetzen, und später das Signal durch einen Oszillator bestätigen.

Die Abb.4 Die Abb.3 Die Bedingung des Eintritts nach der Trend-Strategie №3

Die Strategie ermöglicht die Bedingungen des Eintritts abzuwechseln: man kann z.B nicht "ein früheres" Wachstum des Histogramms suchen, sondern ein späteres Signal suchen: zum Beispiel, den Überschritt des Indikators über Null oder den Wechsel des Zeichens(positiv-negativ) seines Wertes. Es ist nicht ausgeschlossen, dass ein Ergebnis wegen dem Wechsel der Farbe des Histogramms kommen kann. Die Realisierung der Strategie nach den ursprünglich beschriebenen Bedingungen ist im Listing dargestellt:

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(ac_fast[0]>ac_slow[0] && bb_power[0]>bb_power[1] && (bb_power[0]<0 && bb_power[1]<0))?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(ac_fast[0]<ac_slow[0] && bb_power[0]<bb_power[1] && (bb_power[0]>0 && bb_power[1]>0))?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,bb_power)<=0 ||
          CopyBuffer(InpInd_Handle2,0,0,2,ac_fast)<=0 ||
          CopyBuffer(InpInd_Handle2,1,0,2,ac_slow)<=0
          )?false:true;
  }

Die Strategie №4: Das Zentrum der Gravitation Ellers, der vom Indikator der mittleren Geschwindigkeit des Preises bestätigt wird.

Die Strategie verwendet den Indikator "das Zentrum der Gravitation Ellers", der in Form eines Histogramms OSMA — CenterOfGravityOSMA dargestellt ist. Sein Signal wird vom Indikator bestätigt, der die mittlere Geschwindigkeit des Preises berechnet.

Parameter Beschreibung
Der verwendete Indikator CenterOfGravityOSMA
Der verwendete Indikator Average Speed
Die Timeframe H1
Die Bedingung für den Kauf Das Histogramm des Zentrums der Gravitation zeigt ein Wachstum (dabei der Wert des Indikators weniger als Null), und der Wert Average Speed ist höher als Schwellenwert (der am Anfang in den Einstellungen gegeben ist)
Die Bedingung für den Verkauf Das Histogramm des Zentrums der Gravitation zeigt ein Abstieg (dabei der Wert des Indikators größer als Null), und der Wert Average Speed ist höher als Schwellenwert (der am Anfang in den Einstellungen gegeben ist)
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Die Strategie wurde auf der Abb.5 dargestellt. Genauso wie in der vorhergehenden Strategie, prüfen wir hier die frühere Veränderung des Histogramms und wir bestätigen es durch die Veränderung seiner Preisgeschwindigkeit. 

Die Abb.5 Die Bedingung des Eintritts nach der Trend-Strategie №4‌

Die Realisierung der Strategie:

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(avr_speed[0]>Trend_lev && cog[1]<cog[0] &&(cog[1]<0 && cog[0]<0))?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(avr_speed[0]>Trend_lev && cog[1]>cog[0] &&(cog[1]>0 && cog[0]>0))?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,cog)<=0 ||
          CopyBuffer(InpInd_Handle2,0,0,2,avr_speed)<=0
          )?false:true;
  }

Die Strategie №5. Der komplexe Indikator die "Binäre Welle".

In vier vorhergehenden Strategien habe ich das Auswahlsmodell der Verknüpfung des Hauptindikators bevorzugt, der den Trend, und das zusätzliche Signal für seine Prüfung zeigen würde. Jetzt habe ich mich entschieden, von diesem Schema wegzugehen und habe nur einen Indikator genommen: es ist die Binäre Welle. Er sieht wie Oszillator aus, aber eigentlich resultiert und stellt die Signale sieben Indikatoren optisch dar — MA, MACD, OsM, CCI, Momentum, RSI und ADX. Er ist schon selbst eine selbstgenügsame Handelsstrategie mit dem flexiblen System der Einstellungen. Außer den Standardsätzen der Parameter für die gewählten Indikatoren, wurden die Waagekoeffizienten — das System des Einflusses dieser oder jener Komponente hierher hinzugefügt.

Parameter Beschreibung
Der verwendete Indikator Binary_Wave
Die Timeframe H1
Die Bedingung für den Kauf Der Übergang des Oszillators durch die Null nach oben
Die Bedingung für den Verkauf Der Übergang des Oszillators durch die Null nach unten
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Die Beispiele des Eintritts nach dieser Strategie wurden auf der Abb.6 dargestellt. Beachten Sie bitte: in der Programmrealisierung, um die Strategie unter H1 zu optimieren, wurden die Einstellungen der Perioden MA_Period, CCIPeriod, MOMPeriod, RSIPeriod und ADX_Period mit 14 standardmäßig auf schnellere 10 geändert. Für den Test mit den klassischen Perioden kann man die Timeframe bis zu H3 oder H4 erhöhen.

Die Abb.6 Die Bedingung des Eintritts nach der Trend-Strategie №5

Das Ergebnis der Berechnung:‌‌

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(wave[0]>0 && wave[1]<0)?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(wave[0]<0 && wave[1]>0)?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle,0,0,2,wave)<=0)?false:true;
  }

Die Strategie №6: Der komplexe Indikator Weight Oscillator im Zusammenhang mit LeMan Objective.

Es werden hier die Prinzipien des Strategien-Aufbaus zusammengearbeitet, die in fünf vorhergehenden Beispielen verwendet wurden. Wir vereinen das fertige System und wir fügen zu ihm den Indikator hinzu, der das Signal bestätigt Als das fertige System wird Weight Oscillator dienen, der die abgewogene geglättete Summe von vier Indikatoren darstellt: RSI, MFI, WPR und DeMarker mit den Waagekoeffizienten. Das Signal wird LeMan Objective bestätigen, das die Entfernung vom Open-Preis bis zu Maximum und Minimum rechnet und führt Quantils der Abweichungen heraus. Auch gibt er auf der aufgegebenen Anzahl der Bars der gleitenden mittleren zusammengestellten Statistik der Preis-Veränderung in 75, 50, 25% der Fälle, sowie führt die maximale Abweichung vor. Wir werden das Wachstum des Histogramms Weight Oscillator für den Kauf schauen, dabei werden wir als Bestätigung des Durchbruchs vom Quantil-Preis der Abweichungen mit 75% nehmen.

Parameter Beschreibung
Der verwendete Indikator Weight Oscillator
Der verwendete Indikator LeMan Objective
Die Timeframe H1
Die Bedingung für den Kauf Es wächst Weight Oscillator, und der Preis bricht die obere Ebene 75% des Quantil-Preises der Abweichungen durch.
Die Bedingung für den Verkauf Es steigt Weight Oscillator ab, und der Preis bricht die untere Ebene 75% des Quantil-Preises der Abweichungen durch.
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Anschaulich kann man die Punkte des Eintritts auf der Abb.7 sehen, wo die Ebene 75% mit den fettigen Linien markiert sind. Wir sehen, dass die Exit-Preise diese Ebene durchbrechen, und die Werte des Wachstums/Abstiegs Weight Oscillator erfüllt werden.

Die Abb.7 Die Bedingung des Eintritts nach der Trend-Strategie №6

Der Indikator LeMan Objective verwendet für den Aufbau seiner Ebenen 8 Indikator-Puffer:

  • Quartile 1 entspricht des Mittelwertes des Preisabstiegs in Bezug auf den Abruf in 25 % der Fälle.
  • Quartile 2 entspricht des Mittelwertes des Preisabstiegs in Bezug auf den Abruf in 50% der Fälle.
  • Quartile 3 entspricht des Mittelwertes des Preisabstiegs in Bezug auf den Abruf in 75% der Fälle. Wir verwenden es in der Strategie.
  • Quartile 4 entspricht der maximalen Abweichungen des Mittelwertes des Preises. 
  • Quartile 5 entspricht des Mittelwertes des Preisanstiegs in Bezug auf den Abruf in 25 % der Fälle.
  • Quartile 6 entspricht des Mittelwertes des Preisanstiegs in Bezug auf den Abruf in 50% der Fälle.
  • Quartile 7 entspricht des Mittelwertes des Preisanstiegs in Bezug auf den Abruf in 75% der Fälle. Wir verwenden es in der Strategie.
  • Quartile 8 entspricht der maximalen Abweichungen des Mittelwertes des Preises.

Deshalb wird uns nötig in der Programmrealisierung, außer Weight Oscillator und dem Wert des Exit-Preises, die Puffer 2 und 6 sein. 

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(wo[0]>wo[1] && close[0]>obj_q3_b[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(wo[0]<wo[1] && close[0]<obj_q3_s[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,6,0,2,obj_q3_b)<=0 ||
         CopyBuffer(InpInd_Handle1,2,0,2,obj_q3_s)<=0 ||
         CopyBuffer(InpInd_Handle2,0,0,2,wo)<=0 || 
         CopyClose(Symbol(),PERIOD_CURRENT,0,2,close)<=0
          )?false:true;
  }

Die Strategie №7: Der Kanal Dontschiana im Satz mit MACD, in dem die Preisreihe durch die Werte AO Williams ersetzt ist.

Für die Bestimmung der starken einseitigen Bewegung wird hier der Kanal Dontschiana verwendet. Den Durchschlag des Kanals werden wir als Merkmal des Trends bezeichnen. Für die Bestätigung des Trends verwenden wir den modifizierten MACD, in dem die Preisreihe durch den Wert des Indikators AO Bills Williams ersetzt ist.

Parameter Beschreibung
Der verwendete Indikator Donchian Channel System
Der verwendete Indikator CronexAO
Die Timeframe H1
Die Bedingung für den Kauf Der Durchbruch die obere Grenze des Kanals Donchians und die blaue Farbe der Wolke CronexAO
Die Bedingung für den Verkauf Der Durchbruch die untere Grenze des Kanals Donchians und die rosa Farbe der Wolke CronexAO
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Auf der Abb.8 wurde diese Trend Strategie graphisch dargestellt. Für die Bequemlichkeit der Darstellung und der Anschaulichkeit wurde die Variante des Indikators mit dem Wechsel der Kerze-Farbe gewählt, wenn sie die obere oder die untere Grenze des Kanals Dontschians durchbricht. Dabei sind auch die Farben CronexAO entsprechend den Farben der Kerzen gewählt, die die Grenzen des Kanals durchbrechen.

Die Abb.8 Die Bedingung des Eintritts nach der Trend-Strategie №7

Bei der Realisierung dieser Strategie ist es wichtig, dass im Indikator Donchian Channel System als Extremums die Kerzenwerte High und Low genommen werden. Nichtsdestoweniger, wenn für das Instrument die häufigen Auswürfe des Preises in eine oder andere Seite (die lange Schatten der Kerzen) mit der nachfolgenden Rückgabe zu den Mittelwerten typisch sind, das heißt, die Zweckmäßigkeit liegt daran, die Werte Open oder Close der Kerzen als Extremums zu verwenden, oder im Zusammenhang mit Open+High/Open+Low zu verwenden. So wird der Einfluss der langen Schatten verringert sein. 

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;

      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(cao_fast[0]>cao_slow[0] && close[0]>dcs_up[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(cao_fast[0]<cao_slow[0] && close[0]<dcs_low[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,dcs_up)<=0 ||
          CopyBuffer(InpInd_Handle1,1,0,2,dcs_low)<=0 || 
          CopyBuffer(InpInd_Handle2,0,0,2,cao_fast)<=0 ||
          CopyBuffer(InpInd_Handle2,1,0,2,cao_slow)<=0 ||
          CopyClose(Symbol(),PERIOD_CURRENT,0,2,close)<=0
          )?false:true;
  }

‌Die Strategie №8: Der zyklische Oszillator Schaffa mit der Bestätigung nach drei Niveaus Tirone.

In dieser Trend-Strategie wird der zyklische Oszillator Schaffa in den Momenten seines Verlassens aus den Bereichen Überkauft / Überverkauft verwendet. Für die Überprüfung werden drei Ebenen Tirone verwendet. Die interessanten Ergebnisse wurden auf älteren grundlegenden Timeframes bekommen. Für den Test wurde H4 gewählt.

Parameter Beschreibung
Der verwendete Indikator Schaff Trend Cycle
Der verwendete Indikator Drei Ebenen Тироне
Die Timeframe H4
Die Bedingung für den Kauf Das Verlassen aus dem Bereich Überverkauft, es muss dabei der laufende Preis höher als die obere Ebene Tirone sein.
Die Bedingung für den Verkauf Das Verlassen aus dem Bereich Überkauft, es muss dabei der laufende Preis unter als die untere Ebene Tirone sein.
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Die graphische Darstellung dieser Trend-Strategie kann man auf der Abb. 9 sehen.

Die Abb.9 Die Bedingung des Eintritts nach der Trend-Strategie №8

Bei der Diskussion der Realisierung dieser Strategie, werde ich bemerken, dass man außer den Hauptparametern zwei Indikatoren, die Zahlenwerte der Ebenen Überkauft/Überverkauft hizufügen muss. Ich habe sie nicht geändert, lies standardmäßig 20 und 80. Aber die Einstellungen der Glättung und die Perioden habe ich geändert (auf der Abb. es kann man im oberen linken Winkel den Indikator Schaffa sehen). Diese Einstellungen sind nicht nötig, sie können entweder die Einstellungen standardmäßig lassen, oder die Eigenen verwenden.

//+------------------------------------------------------------------+
//| Eingangsparameter des Experten                                   |
//+------------------------------------------------------------------+
input string               Inp_EaComment="Strategy #8";                  //EA Comment
input double               Inp_Lot=0.01;                                 //Lot
input MarginMode           Inp_MMode=LOT;                                //MM
input int                  Inp_MagicNum=1111;                            //Magic number
input int                  Inp_StopLoss=400;                             //Stop Loss(points)
input int                  Inp_TakeProfit=600;                           //Take Profit(points)
input int                  Inp_Deviation = 20;                           //Deviation(points)

input double               Overbuying=80;                                //Overbuying zone
input double               Overselling=20;                               //Overselling zone
//--- Die Parameter des Indikators Schaff Trend Cycle

input Smooth_Method        MA_SMethod=MODE_SMMA_;                        //Histogram smoothing method
input int                  Fast_XMA = 20;                                //Fast moving average period
input int                  Slow_XMA = 30;                                //Slow moving average period
input int                  SmPhase= 100;                                 //Moving averages smoothing parameter
input Applied_price_       AppliedPrice=PRICE_CLOSE_;                    //Price constant
input int                  Cycle=10;                                     //Stochastic oscillator period

Der Kern der Strategie:

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(schaff[1]<Overselling && schaff[0]>Overselling && close[0]>tirone_b[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(schaff[1]>Overbuying && schaff[0]<Overbuying && close[0]<tirone_s[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,schaff)<=0 ||
          CopyBuffer(InpInd_Handle2,0,0,2,tirone_b)<=0 ||
          CopyBuffer(InpInd_Handle2,2,0,2,tirone_s)<=0 ||
          CopyClose(Symbol(),PERIOD_CURRENT,0,2,close)<=0
          )?false:true;
  }

Die Strategie №9: Der Keltner-Kanal in Form eines Histogramms und der Indikator iTrend in Form einer Wolke.

Der Identifikator des Trends ist hier — i-KlPrice aufgrund des Kanals Keltner in Form eines Histogramms. Wir werden den Trend vom Indikator iTrend in der wolkigen Art bestätigen, wo die Farbe und die Breite der Wolke den laufenden Trend charakterisieren. Genauso wie in der vorhergehenden Strategie haben wir mit dem Typ des Signals auf dem Übergang durch eine gewisse Ebene zu tun. Für i-KlPrice ist es der Wert 50 und -50, der standardmäßig steht. Deshalb ist es sinnvoll, in den Einstellungen des zukünftigen Experten auch die Parameter BuyLevel und SellLevel hinzuzufügen, deren Überschritt das Signal auf den Kauf oder den Verkauf bedeuten wird.

Mit der Bestätigung des Signals wird sich der Indikator iTrend beschäftigen. Darin werden wir die Farbe der Wolke überprüfen, die von den Werten zwei Linien definiert wird. Die obere von ihnen — ist der Unterschied zwischen dem glättetenden Preiswert in den Einstellungen gewählten Linie Bollindger. Die Untere — der Unterschied der Summe (High + Low) und des gleitenden Mittelwertes der laufenden Kerze, multipliziert auf -1.‌

Parameter Beschreibung
Der verwendete Indikator i-KlPrice
Der verwendete Indikator iTrend
Die Timeframe H1
Die Bedingung für den Kauf Der Wert des Histogramms i-KlPrice ist höher als BuyLevel, und die Wolke iTend hat die grüne Farbe.
Die Bedingung für den Verkauf Der Wert des Histogramms i-KlPrice ist weniger als SellLevel, und die Wolke iTend hat die rosa Farbe.
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Auf der Abb.10 sind die Beispiele der Punkte des Eintritts nach dieser Trend Strategie anschaulich vorgeführt.

Die Abb.10 Die Bedingung des Eintritts nach der Trend-Strategie №9

‌‌

Ich habe diese Strategie im Code so realisiert:

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(klprice[0]>BuyLevel && itrend_h[0]>itrend_l[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(klprice[0]<SellLevel && itrend_h[0]<itrend_l[0])?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,klprice)<=0 ||
          CopyBuffer(InpInd_Handle2,0,0,2,itrend_h)<=0 ||
          CopyBuffer(InpInd_Handle2,1,0,2,itrend_l)<=0
          )?false:true;
  }


Die Strategie №10: Der Impuls des Preises Average Change und der Fächer der gleitenden Mittelwerte FigurelliSeries.

Und endlich die Variante mit der Suche des Trends mit Hilfe des Indikators Average Change. Eine Bestätigung des Impulses wird FigurelliSeries in Form eines Histogramms sein. Für Average Change ist es der grundlegende Wert, von dem das Signal des Preisimpulses nach unten oder nach oben geht,und ist 1 gleich. Deshalb wird eine Bedingung des Eintritts nach dieser Strategie ein Überschritt des Indikatorswertes über 1. Um den Kern der Aussagen des Indikators FigurelliSeries zu verstehen, muss man den Algorithmus seiner Arbeit und die Eingangsparameter studieren:

//+----------------------------------------------+
//| Indicator input parameters                   |
//+----------------------------------------------+
input uint StartPeriod=6;                              // initial period
input uint Step=6;                                     // periods calculation step
input uint Total=36;                                   // number of Moving Averages
input  ENUM_MA_METHOD   MAType=MODE_EMA;               // Moving Averages smoothing type
input ENUM_APPLIED_PRICE   MAPrice=PRICE_CLOSE;        // price timeseries of Moving Averages
input int Shift=0;                                     // Horizontal shift of the indicator in bars 

Es wird die Startperiode des gleitenden Mittelwertes StartPeriod eingegeben, und auch — noch für die weitere 36 gleitende Mittelwerte mit der Periode, die der StartPeriode und Step gleich ist. Weiter wählen wir den Typ МА und verwenden den Preis. Eigentlich ist es der Fächer aus МА, deren Werte mit dem laufenden Exit-Preis verglichen werden. Der Wert des Histogramms — die Differenz zwischen der Anzahl МА höher und untere als Exit-Preis:

//---- main cycle of calculation of the indicator
   for(bar=limit; bar>=0 && !IsStopped(); bar--)
     {
      double tot_Ask=0;
      double tot_Bid=0;

      for(int count=0; count<int(Total); count++)
        {
         //---- copy newly appeared data into the arrays
         if(CopyBuffer(MA_Handle[count],0,bar,1,MA)<=0) return(RESET);

         if(close[bar]<MA[0]) tot_Ask++;
         if(close[bar]>MA[0]) tot_Bid++;
        }

      IndBuffer[bar]=tot_Bid-tot_Ask;
     }

Zusammengefasst die Prinzipien der Arbeit beider Indikatoren werden wir die Regeln des Eintritts bilden:

Parameter Beschreibung
Der verwendete Indikator Average Change
Der verwendete Indikator Figurelli Series
Die Timeframe H4
Die Bedingung für den Kauf Average Change überquert den Schwellenwert von unten nach oben, und der Wert des Histogramms Figurelli Series ist höher als Null.
Die Bedingung für den Verkauf Average Change überquert den Schwellenwert von oben nach unten, und der Wert des Histogramms Figurelli Series ist unter Null.
Die Bedingung für das Verlassen   Take-profit/Stop-loss

Auf der Abb. 11 sind die Beispiele des Eintritts in den Markt nach der betrachteten Strategie dargestellt:

Die Abb.11 Die Bedingung des Eintritts nach der Trend-Strategie №10

Der Programm-Code der Strategie:

void OnTick()
  {
//--- Die Überprüfung der Orders, die frühe vom Experten geöffnet wurden.
   if(!Trade.IsOpened(Inp_MagicNum))
     {
      //--- Das Erhalten der Daten für die Berechnung

      if(!GetIndValue())
         return;
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Kauf

      if(BuySignal())
         Trade.BuyPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
      //--- Die Eröffnung der Orders beim Vorhandensein des Signals auf den Verkauf

      if(SellSignal())
         Trade.SellPositionOpen(true,Symbol(),Inp_Lot,Inp_MMode,Inp_Deviation,Inp_StopLoss,Inp_TakeProfit,Inp_MagicNum,Inp_EaComment);
     }
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Kauf                                       |
//+------------------------------------------------------------------+
bool BuySignal()
  {
   return(avr_change[1]<1 && avr_change[0]>1 && fig_series[0]>0)?true:false;
  }
//+------------------------------------------------------------------+
//| Die Bedingung für den Verkauf                                    |
//+------------------------------------------------------------------+
bool SellSignal()
  {
   return(avr_change[1]>1 && avr_change[0]<1 && fig_series[0]<0)?true:false;
  }
//+------------------------------------------------------------------+
//| Das Erhalten der aktuellen Werte der Indikatoren                 |
//+------------------------------------------------------------------+
bool GetIndValue()
  {
   return(CopyBuffer(InpInd_Handle1,0,0,2,avr_change)<=0 ||
          CopyBuffer(InpInd_Handle2,0,0,2,fig_series)<=0
          )?false:true;
  }


Der Test

Also, in der vorhergehenden Abteilung haben wir 10 Trend-Strategien formalisiert und haben ihren Code geschrieben. Für den Test und den Vergleich der bekommenden Ergebnisse muss man die identischen Bedingungen und Modus des Tests wählen.

  • Der Zeitraum: 01.01.2016 — 01.03.2017 .
  • Das Währungspaar: EURUSD.
  • Der Handelsmodus: Ohne Verzögerung. Die vorgestellten Strategien gehören nicht zu den häufigen, deshalb war der Einfluss der Verzüge sehr wenig.
  • Der Test: OHLC auf М1. Der vorläufige Test auf den realen Ticks war fast gleich von diesem Modus.
  • Die Ersteinzahlung: 1000 USD.
  • Der Hebel: 1:500.
  • Der Server: MetaQuotes-Demo.
  • Die Notierungen: 5-stelligen.

Praktisch bei allen Strategien die Bedingungen des Verlassens aus dem Markt sind Take-profit/Stop-loss, und bei 8 Strategien von 10 ist die Arbeitstimeframe — 1H. Deshalb kann man für sie die identischen Ziele des Gewinns und des Verlustes setzen. Wir werden Take-profit in 600 (die 5-stelligen Notierungen), und Stop-loss — 400 einstellen. ‌Für die deutlichere Anschaulichkeit, außer den Bedingungen, die höher schon besprochen wurden, werden wir im Rahmen des Tests auf die Vorinstallierungen der Parameter der Indikatoren hinweisen, die in den Strategien verwendet werden.

Der  der Strategie №1 (Der Indikator ADXCloud mit der bestätigten RSI, der in Form eines Histogramms erstellt ist).

Vorinstallierung:

//--- Die Parameter des Indikators RSI_Color

input int                  Inp_RSIPeriod=11;                            //RSI Period
input double               Inp_Overbuying=70;                           //Overuying zone
input double               Inp_Overselling=30;                          //Overselling zone
//--- Die Parameter des Indikators ADX_Cloud

input int                  Inp_ADXPeriod=8;                             //ADX Period
input double               Inp_alpha1 = 0.25;                           //alpha1
input double               Inp_alpha2 = 0.25;                           //alpha2

Testergebnisse:


Die Abb.12 die Testergebnisse der Trend-Strategie №1

Der Test der Strategie №2 (Der Indikator Standard Deviation mit der bestätigten RVI, der in Form eines Histogramms erstellt ist).

Die Vorinstallierung:‌

//--- Die Parameter des Indikators ColorStDev

input int                  period = 12;                                  //Smoothing period StDev
input ENUM_MA_METHOD       MA_Method=MODE_EMA;                           //Histogram smoothing method
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;                    //Applied price
input int                  MaxTrendLevel=90;                             //Maximum trend level
input int                  MiddLeTrendLevel=50;                          //Middle trend level
input int                  FlatLevel=20;                                 //Flat level
input Trend                TrendLevel=Maximum;                           //Used trend
//--- Die Parameter des Indikators ColorZerolagRVI

input uint                 smoothing=15;                                 //Smoothing period RVI
input double               Factor1=0.05;                                 //Weight coef.1
input int                  RVI_period1=14;                               //RVI Period 1
input double               Factor2=0.10;                                 //Weight coef.2
input int                  RVI_period2=28;                               //RVI Period 2
input double               Factor3=0.16;                                 //Weight coef.3
input int                  RVI_period3=45;                               //RVI Period 3
input double               Factor4=0.26;                                 //Weight coef.4
input int                  RVI_period4=65;                               //RVI Period 4
input double               Factor5=0.43;                                 //Weight coef.5
input int                  RVI_period5=75;                               //RVI Period 5

Testergebnisse:

Die Abb.13 die Testergebnisse der Trend-Strategie №2‌

Der Test der Strategie №3 (Die wolkige Interpretation AC B.Williams und der vereinte zu eins Bears Power und Bulls Power).

Die Vorinstallierung:‌

//--- Die Parameter des Indikators Bears_Bull_power

input Smooth_Method        MA_Method1=MODE_AMA;                         //Averaging method
input uint                 Length1=12;                                  //Averaging depth                  
input int                  Phase1=15;                                   //Averaging parameter
input Smooth_Method        MA_Method2=MODE_ParMA;                       //Smoothing period
input uint                 Length2=5;                                   //Smoothing depth
input int                  Phase2=15;                                   //Smoothing parameter
input Applied_price_       IPC=PRICE_WEIGHTED_;                         //Applied price
input int                  Shift=0;                                     //Shift
//--- Die Parameter des Indikators CronexAC

input Smooth_Method        XMA_Method=MODE_SMMA_;                       //Smoothing Method
input uint                 FastPeriod=9;                                //Fast smoothing period
input uint                 SlowPeriod=21;                               //Slow smoothing period
input int                  XPhase=15;                                   //Smoothing parameter

‌Die Testergebnisse:

Die Abb.14 die Testergebnisse der Trend-Strategie №3‌

Der Test der Strategie №4 (Das Zentrum der Gravitation Ellers, der vom Indikator der mittleren Geschwindigkeit des Preises bestätigt wird).

Die Vorinstallierung:‌

//--- Die Parameter des Indikators CenterOfGravityOSMA

input uint                 Period_=9;                                   //Averaging period
input uint                 SmoothPeriod1=3;                             //Smoothing period1
input ENUM_MA_METHOD       MA_Method_1=MODE_SMA;                        //Averaging method1
input uint                 SmoothPeriod2=3;                             //Smoothing period2
input ENUM_MA_METHOD       MA_Method_2=MODE_SMA;                        //Averaging method2
input Applied_price_       AppliedPrice=PRICE_OPEN_;                    //Applied price
//--- Die Parameter des Indikators Average Speed

input int                  Inp_Bars=1;                                  //Days
input ENUM_APPLIED_PRICE   Price=PRICE_CLOSE;                           //Applied price
input double               Trend_lev=2;                                 //Trend Level

‌Die Testergebnisse:

Die Abb.15 die Testergebnisse der Trend-Strategie №4‌

Der Test der Strategie №5 (Der komplexe Indikator die "Binäre Welle").

Vorinstallierung:

//--- Die Parameter des Indikators Binary_Wave

input double               WeightMA    = 1.0;
input double               WeightMACD  = 1.0;
input double               WeightOsMA  = 1.0;
input double               WeightCCI   = 1.0;
input double               WeightMOM   = 1.0;
input double               WeightRSI   = 1.0;
input double               WeightADX   = 1.0;
//---- Moving Average

input int                  MAPeriod=10;
input ENUM_MA_METHOD       MAType=MODE_EMA;
input ENUM_APPLIED_PRICE   MAPrice=PRICE_CLOSE;
//---- MACD

input int                  FastMACD     = 12;
input int                  SlowMACD     = 26;
input int                  SignalMACD   = 9;
input ENUM_APPLIED_PRICE   PriceMACD=PRICE_CLOSE;
//---- OsMA

input int                  FastPeriod   = 12;
input int                  SlowPeriod   = 26;
input int                  SignalPeriod = 9;
input ENUM_APPLIED_PRICE   OsMAPrice=PRICE_CLOSE;
//---- CCI

input int                  CCIPeriod=10;
input ENUM_APPLIED_PRICE   CCIPrice=PRICE_MEDIAN;
//---- Momentum

input int                  MOMPeriod=14;
input ENUM_APPLIED_PRICE   MOMPrice=PRICE_CLOSE;
//---- RSI

input int                  RSIPeriod=14;
input ENUM_APPLIED_PRICE   RSIPrice=PRICE_CLOSE;
//---- ADX

input int                  ADXPeriod=10;

‌Die Testergebnisse:


Die Abb.16 die Testergebnisse der Trend-Strategie №5

Die Strategie №6 (Der komplexe Indikator Weight Oscillator im Zusammenhang mit LeMan Objective).

Vorinstallierung:

//--- Die Parameter des Indikators LeMan Objective

input int                  Sample=20;
input int                  Quartile_1 = 25;
input int                  Quartile_2 = 50;
input int                  Quartile_3 = 75;
input int                  Shift=0;
//--- Die Parameter des Indikators Weight Oscillator
//---- RSI
input double               RSIWeight=1.0;
input uint                 RSIPeriod=14;
input ENUM_APPLIED_PRICE   RSIPrice=PRICE_CLOSE;
//---- MFI
input double               MFIWeight=1.0;
input uint                 MFIPeriod=14;
input ENUM_APPLIED_VOLUME  MFIVolumeType=VOLUME_TICK;
//---- WPR
input double               WPRWeight=1.0;
input uint                 WPRPeriod=12;
//---- DeMarker
input double               DeMarkerWeight=1.0;
input uint                 DeMarkerPeriod=10;
//----
input Smooth_Method        bMA_Method=MODE_SMMA_;
input uint                 bLength=5;
input int                  bPhase=100;

Testergebnisse:


Die Abb.17 die Testergebnisse der Trend-Strategie №6

Der Test der Strategie №7 (Der Kanal Dontschiana im Satz mit MACD, in dem die Preisreihe durch die Werte AO B.Williams ersetzt ist).

Vorinstallierung:

input string               Inp_EaComment="Strategy #7";                 //EA Comment
input double               Inp_Lot=0.01;                                //Lot
input MarginMode           Inp_MMode=LOT;                               //MM
input int                  Inp_MagicNum=1111;                           //Magic number
input int                  Inp_StopLoss=400;                            //Stop Loss(points)
input int                  Inp_TakeProfit=600;                          //Take Profit(points)
input int                  Inp_Deviation = 20;                          //Deviation(points)
//--- Die Parameter des Indikators Donchian Channel System

input uint                 DonchianPeriod=12;                           //Period of Averaging
input Applied_Extrem       Extremes=HIGH_LOW_CLOSE;                     //Type of Extremum

//--- Die Parameter des Indikators CronexAO

input Smooth_Method        XMA_Method=MODE_ParMA;                        //Method of Averaging
input uint                 FastPeriod=14;                               //Period of Fast averaging
input uint                 SlowPeriod=25;                               //Period of Flow averaging
input int                  XPhase=15;                                   //Smoothing parameter

Testergebnisse:


Die Abb.18 die Testergebnisse der Trend-Strategie №7


Der Test der Strategie №8 (Der zyklische Oszillator Schaffa mit der Bestätigung nach drei Niveaus Tirone).

Vorinstallierung:

input string               Inp_EaComment="Strategy #8";                 //EA Comment
input double               Inp_Lot=0.01;                                //Lot
input MarginMode           Inp_MMode=LOT;                               //MM
input int                  Inp_MagicNum=1111;                           //Magic number
input int                  Inp_StopLoss=400;                            //Stop Loss(points)
input int                  Inp_TakeProfit=600;                          //Take Profit(points)
input int                  Inp_Deviation = 20;                          //Deviation(points)

input double               Overbuying=90;                               //Overbuying zone
input double               Overselling=15;                              //Overselling zone
//--- Die Parameter des Indikators Schaff Trend Cycle

input Smooth_Method        MA_SMethod=MODE_SMMA_;                        //Histogram smoothing method
input int                  Fast_XMA = 20;                               //Fast moving average period
input int                  Slow_XMA = 30;                               //Slow moving average period
input int                  SmPhase= 100;                                //Moving averages smoothing parameter
input Applied_price_       AppliedPrice=PRICE_CLOSE_;                   //Price constant
input int                  Cycle=10;                                    //Stochastic oscillator period

//--- Die Parameter des Indikators Tirone Levels

input int                  TirPeriod=13;                                //Period of the indicator
input int                  Shift=0;                                     //Horizontal shift of the indicator in bars

Testergebnisse:


Die Abb.19 die Testergebnisse der Trend-Strategie №8

Der Test der Strategie №9 (Der Keltner-Kanal in Form eines Histogramms und der Indikator iTrend in Form einer Wolke).

Vorinstallierung:

input string               Inp_EaComment="Strategy #9";                 //EA Comment
input double               Inp_Lot=0.01;                                //Lot
input MarginMode           Inp_MMode=LOT;                               //MM
input int                  Inp_MagicNum=1111;                           //Magic number
input int                  Inp_StopLoss=400;                            //Stop Loss(points)
input int                  Inp_TakeProfit=600;                          //Take Profit(points)
input int                  Inp_Deviation = 20;                          //Deviation(points)

input uint                 BuyLevel=50;                                 //Overbuying zone
input double               SellLevel=-50;                               //Overselling zone
//--- Die Parameter des Indikators i-KlPrice

input Smooth_Method        MA_Method1=MODE_ParMA;                       //smoothing method of moving average
input uint                 Length1=100;                                 //smoothing depth of moving average                  
input int                  Phase1=15;                                   //moving average smoothing parameter

input Smooth_Method        MA_Method2=MODE_SMMA_;                        //candles size smoothing method
input uint                 Length2=20;                                  //smoothing depth of candles size 
input int                  Phase2=100;                                  //candles size smoothing parameter

input double               Deviation=2.0;                               //channel expansion ratio
input uint                 Smooth=20;                                   //indicator smoothing period

input Applied_price_       IPC=PRICE_TYPICAL_;                          //price constant
input int                  Shift=0;                                     //horizontal shift of the indicator in bars

//--- Die Parameter des Indikators iTrend

input Applied_price_       Price_Type=PRICE_TYPICAL_;
//--- Moving Average parameters
input uint                 MAPeriod=14;
input ENUM_MA_METHOD        MAType=MODE_EMA;
input ENUM_APPLIED_PRICE     MAPrice=PRICE_CLOSE;
//--- Bollinger parameters
input uint                 BBPeriod=14;
input double               deviation_=2.0;
input ENUM_APPLIED_PRICE    BBPrice=PRICE_CLOSE;
input Mode                BBMode=Mode_1;

Testergebnisse:


Die Abb.20 die Testergebnisse der Trend-Strategie №9

Der Test der Strategie №10 (Der Impuls des Preises Average Change und der Fächer der gleitenden Mittelwerte FigurelliSeries).

Vorinstallierung:

//--- Die Parameter des Indikators Average Change
input Smooth_Method        MA_Method1=MODE_SMMA_;                       //smoothing method of moving average
input int                  Length1=12;                                  //smoothing depth of moving average                    
input int                  Phase1=15;                                   //moving average smoothing parameter
input Applied_price_       IPC1=PRICE_CLOSE_;                           //moving average price constant

input Smooth_Method        MA_Method2=MODE_EMA_;                        //indicator smoothing method
input int                  Length2 = 5;                                 //indicator smoothing depth
input int                  Phase2=100;                                  //indicator smoothing parameter
input Applied_price_       IPC2=PRICE_CLOSE_;                           //price constant for smoothing

input double               Pow=5;                                       //power
input int                  Shift=0;                                     //horizontal shift of the indicator in bars

//--- Die Parameter des Indikators
input uint                 StartPeriod=6;                               //initial period
input uint                 Step_=6;                                     //periods calculation step
input uint                 Total=36;                                    //number of Moving Averages
input ENUM_MA_METHOD        MAType=MODE_EMA;                            //Moving Averages smoothing type
input ENUM_APPLIED_PRICE     MAPrice=PRICE_CLOSE;                       //price timeseries of Moving Averages
input int                  Shift1=0;                                    //Horizontal shift of the indicator in bars  

Testergebnisse:


Die Abb.21 die Testergebnisse der Trend-Strategie №10


Fazit

Der Test und die Optimierung der vorgelegten Trend-Strategien haben das Folgende gezeigt.

  • Bei der Mehrheit der Strategien wurde der allgemeine Gewinn beim Handel auf den starken oder langen einseitigen Bewegungen bekommen.
  • Der allgemeine Verlust und die charakteristischen Bereiche mit einigen nacheinander kommenden verlustbringenden Trades wurden beim Handel auf Flat bekommen.
  • Auch waren die Ursachen der Verluste in einigen Strategien die unveränderten und identischen Parameter Take-profit, Stop-lossa.
  • In einigen Fällen verspätete sich stark die Bestimmung des Trends, deshalb musste man die Timeframe ändern.
Wir können die Schlussfolgerung darüber ziehen, dass im Laufe der Entwicklung und des Tests der Trend-Strategien sowohl ihre Vorteile, als auch ihre Nachteile festgestellt wurden. Die gute Arbeit auf starken oder langen Trendsbereichen des Marktes wird von der vollen Unfähigkeit kompensiert, das Ergebnis auf Flat oder Seitenbewegung zu bekommen. Deshalb ist die Hauptsache, die wir festgestellt haben, — es gibt keinen großen Unterschied, auf welche Weise der laufende Trend bestimmt werden muss. Die Vorteile und die Nachteile aller Trend-Strategien werden eine und dasselbe.‌‌

Schlussfolgerung

Unten ist die zusammengestellte Tabelle der Experten-Namen, die im Artikel entwickelt und verwendet wurden, sowie die Hilfsklassen und das Verzeichnis der Indikatoren dargestellt, die in den laufenden Trend-Strategien verwendet wurden. Am Ende des Artikels findet man im Anhang das Archiv mit allen aufgezählten Dateien, die nach den Ordnern sortiert sind. Deshalb ist es für die korrekte Arbeit ausreichend, den Ordner MQL5 im Verzeichnis des Terminalen zu zuordnen.

Die Programme, die im Artikel verwendet wurden:

#
 Der Name
Typ
Beschreibung
1
Strategy_1.mq5
Der Experte
 Die Strategie №1. Der Indikator ADXCloud mit der bestätigten RSI, der in Form eines farbigen Histogramms erstellt ist. 
2
Strategy_2.mql5
Der Experte
 Die Strategie №2. Der Indikator Standard Deviation mit der bestätigten RVI, der in Form eines Histogramms erstellt ist.
3
Strategy_3.mq5
Der Experte  Die Strategie №3. Die wolkige Interpretation AC B.Williams und der vereinte zu eins Bears Power und Bulls Power. 
4
Strategy_4.mq5
Der Experte
 Die Strategie №4. Das Zentrum der Gravitation Ellers, der vom Indikator der mittleren Geschwindigkeit des Preises bestätigt wird.
5
Strategy_5.mq5 Der Experte  Die Strategie №5. Der komplexe Indikator die "Binäre Welle".
6
Strategy_6.mq5
Der Experte
 Die Strategie №6. Der komplexe Indikator Weight Oscillator im Zusammenhang mit LeMan Objective.
7 Strategy_7.mq5 
Der Experte
 Die Strategie №7. Der Kanal Dontschiana, mit bestätigten MACD, in dem die Preisreihe durch die Werte AO Williams ersetzt ist.
 8  Strategy_8.mq5 Der Experte  Die Strategie №8. Der zyklische Oszillator Schaffa mit der Bestätigung nach drei Niveaus Tironе.
 9 Strategy_9.mq5 Der Experte  Die Strategie №9. Der Keltner-Kanal in Form eines Histogramms und der Indikator iTrend in Form einer Wolke.
 10 Strategy_10.mq5 Der Experte  Die Strategie №10. Der Impuls des Preises Average Change und der Fächer der gleitenden Mittelwerte FigurelliSeries.
 11 TradeFunctions.mqh Bibliothek  Die Klasse der Trade-Funktionen.
 12 smoothalgorithms.mqh  Bibliothek  Die Klassen mit den Algorithmen der Glättungen, die in den Indikatoren verwendet werden.
 13 adxcloud.mq5 Indikator  Es wird in der Strategie №1 verwendet.
 14 rsi_сolor.mq5 Indikator  Es wird in der Strategie №1 verwendet.
 15 colorstddev.mq5 Indikator  Es wird in der Strategie №2 verwendet.
 16 colorzerolagrvi.mq5  Indikator  Es wird in der Strategie №2 verwendet.
 17 Bear_Bulls_Power.mq5 Indikator  Es wird in der Strategie №3 verwendet.
 18 cronexao.mq5 Indikator  Es wird in der Strategie №3 verwendet.
 19 centerofgravityosma.mq5 Indikator  Es wird in der Strategie №4 verwendet.
 20 average_speed.mq5 Indikator  Es wird in der Strategie №4 verwendet.
 21 binarywave.mq5 Indikator  Es wird in der Strategie №5 verwendet.
 22 objective.mq5 Indikator  Es wird in der Strategie №6 verwendet.
 23 WeightOscillator.mq5 Indikator   Es wird in der Strategie №6 verwendet.
 24 donchian_channels_system.mq5 Indikator  Es wird in der Strategie №7 verwendet
 25 cronexao.mq5 Indikator  Es wird in der Strategie №7 verwendet
 26 schafftrendcycle.mq5 Indikator  Es wird in der Strategie №8 verwendet
 27 tirone_levels_x3.mq5 Indikator  Es wird in der Strategie №8 verwendet
 28 i-klprice.mq5 Indikator  Es wird in der Strategie №9 verwendet
 29 i_trend.mq5 Indikator  Es wird in der Strategie №9 verwendet
 30 averagechange.mq5 Indikator  Es wird in der Strategie №10 verwendet
 31 figurelliseries.mq5 Indikator  Es wird in der Strategie №10 verwendet




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

Beigefügte Dateien |
10Trend.zip (1385.21 KB)
Die Berechnung des Hurst-Exponenten Die Berechnung des Hurst-Exponenten

Der Artikel erklärt detailliert die Idee hinter dem Hurst-Exponenten, sowie die Bedeutung der Werte und den Algorithmus der Berechnung. Eine Reihe von Teilen des Finanzmarktes werden analysiert, und die Methode zur Umsetzung der Fraktalanalyse mit dem MetaTrader 5 wird beschrieben.

Visualisierung! Eine grafische MQL5 Bibliothek ähnlich 'plot' der Sprache R Visualisierung! Eine grafische MQL5 Bibliothek ähnlich 'plot' der Sprache R

Beim Studium der Handelslogik hat die visuelle Darstellung durch Grafiken eine großer Bedeutung. Eine Reihe von Programmiersprachen, die in der wissenschaftlichen Gemeinschaft weit verbreitet sind (wie R und Python), verfügen über eine spezielle "plot"-Funktion für die Visualisierung von Daten. Sie ermöglicht das Zeichnen von Linien, Gruppen von Punkten und Histogramme, um Muster darzustellen. In MQL5 können wir das Gleiche mit der Klasse CGraphics erreichen.

Fertige Expert Advisors von MQL5 Wizard laufen auf MetaTrader 4 Fertige Expert Advisors von MQL5 Wizard laufen auf MetaTrader 4

Im Artikel wird ein einfacher Emulator der MetaTrader 5 Handelsumgebung für den MetaTrader 4 vorgestellt. Mithilfe des Emulators werden Handelsklassen der Standardbibliothek übertragen und angepasst. Dementsprechend können die Expert Advisors, die MetaTrader 5 Wizard erzeugt, in MetaTrader 4 kompiliert und unverändert gestartet werden.

Grafische Interfaces X: Updates für die Tabellendarstellung und ein optimierter Code (build 10) Grafische Interfaces X: Updates für die Tabellendarstellung und ein optimierter Code (build 10)

Wir fahren fort neue Elemente der Tabellendarstellung hinzuzufügen (CCanvasTable). Eine Tabelle ist nun in der Lage: die Zeile unter der Maus hervorzuheben; eine Liste von Icons einer Zelle zuzuweisen und eine Methode aus der Liste ein Icon auszuwählen; die Möglichkeit während der Laufzeit Text einer Zelle zu setzen, zu verändern und noch mehr.