Die vergleichende Analyse 10 Trend-Strategien
Inhalt
- Einführung
- Die Aufgabenstellung bei der Erstellung einer Trend-Strategie
- Trend-Strategien
- Die Strategie №1. Der Indikator ADXCloud mit der bestätigten RSI, der in Form eines farbigen Histogramms erstellt ist.
- Die Strategie №2. Der Indikator Standard Deviation mit der bestätigten RVI, der in Form eines Histogramms erstellt ist.
- Die Strategie №3. Die wolkige Interpretation AC B.Williams und der vereinte Indikator Bears Power und Bulls Power.
- Die Strategie №4. Das Zentrum der Gravitation Ellers, der vom Indikator der mittleren Geschwindigkeit des Preises bestätigt wird.
- Die Strategie №5. Der komplexe Indikator die "Binäre Welle".
- Die Strategie №6. Der komplexe Indikator Weight Oscillator im Zusammenhang mit LeMan Objective.
- Die Strategie №7. Der Kanal Dontschiana im Satz mit MACD, in dem die Preisreihe durch die Werte AO B.Williams ersetzt ist.
- Die Strategie №8. Der zyklische Oszillator Schaffa mit der Bestätigung nach drei Niveaus Tirone.
- Die Strategie №9. Der Keltner-Kanal in Form eines Histogramms und der Indikator iTrend in Form einer Wolke.
- Die Strategie №10. Der Impuls des Preises Average Change und der Fächer der gleitenden Mittelwerte FigurelliSeries.
- Der Test
- Fazit
- Schlussfolgerung
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
//--- 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
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.
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 Ltd.
Originalartikel: https://www.mql5.com/ru/articles/3074
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.