English Русский Português
preview
Erfahren Sie, wie Sie ein Handelssystem anhand des Relative Vigor Index entwickeln können

Erfahren Sie, wie Sie ein Handelssystem anhand des Relative Vigor Index entwickeln können

MetaTrader 5Handel | 26 September 2022, 10:35
97 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Einführung

Willkommen zu meinem neuen Artikel in unserer Serie, um neue technische Werkzeuge im Detail kennenzulernen und ein einfaches Handelssystem mit diesem Werkzeug zu entwerfen. Es handelt sich um den Indikator Relative Vigor Index (RVI), den wir in den folgenden Themen behandeln werden:

  1. Relative Vigor Index - Definition
  2. Relative Vigor Index - Strategie
  3. Relative Vigor Index - Strategieplan
  4. Relative Vigor Index - Handelssystem
  5. Schlussfolgerung

Wir werden die MQL5 (MetaQuotes Language 5) IDE verwenden, um unsere Codes zu schreiben und das MetaTrader 5 Trading Terminal, um unser Handelssystem auszuführen. Ich rate Ihnen, das Gelernte selbst anzuwenden, wenn Sie Ihre Programmierkenntnisse als Anfänger verbessern wollen, denn Übung ist sehr wichtig. Wenn Sie nicht wissen, wie man MetaTrader 5 und MQL5 herunterlädt und verwendet, können Sie das Thema Schreiben von MQL5-Code in MetaEditor aus einem früheren Artikel für mich lesen.

Alle genannten Strategien sind nur für Bildungszwecke, so können Sie feststellen, dass sie brauchen Optimierung und das ist normal, wie das Hauptziel dieses Artikels und diese einfachen Strategien ist es, das wichtigste Konzept dahinter zu lernen. Sie müssen sie also sehr gut testen, bevor Sie sie in Ihrem echten Konto verwenden, um sicherzustellen, dass sie für Ihren Handel nützlich sind.

Haftungsausschluss: Alle Informationen werden in der vorliegenden Form nur zu Informationszwecken bereitgestellt und sind nicht für Handelszwecke oder als Ratschläge gedacht. Die Informationen garantieren keinen Erfolg. Wenn Sie sich dafür entscheiden, diese Materialien auf einem Ihrer Handelskonten zu verwenden, tun Sie dies auf eigenes Risiko und Sie sind allein verantwortlich.


Relative Vigor Index - Definition

In diesem Thema werden wir erfahren, was der Relative Vigor Index (RVI) im Detail ist. Es handelt sich um einen technischen Momentum- und Oszillator-Indikator. Durch den Vergleich des Schlusskurses mit dem Eröffnungskurs misst dieser Indikator die Stärke des Trends. Während des Aufwärtstrends schließt der Schlusskurs höher als der Eröffnungskurs, während des Abwärtstrends schließt der Schlusskurs niedriger als der Eröffnungskurs. Darüber hinaus wurden die Ergebnisse mit Hilfe des einfachen gleitenden Durchschnitts geglättet. Dieser RVI-Indikator schneidet in Trendmärkten besser ab als in Seitwärtsperioden, was seiner Natur entspricht. Wir können feststellen, dass die Berechnung dieses RVI dem stochastischen Oszillator ähnlich ist, aber der RVI vergleicht den Schlusskurs mit dem Eröffnungskurs und der stochastische Oszillator vergleicht den Schlusskurs mit der Kursspanne während eines bestimmten Zeitraums. Wenn wir den RVI manuell berechnen wollen, können wir dies mit den folgenden Schritten tun:

AD = (CLOSE - OPEN) / (HIGH - LOW) * VOL

Wobei:

CLOSE = Schlusskurs

OPEN = Eröffnungskurs

HIGH = Höchstpreis

LOW = Tiefstpreis

Normalerweise erscheint der RVI, den wir verwenden, als zwei Linien mit unterschiedlichen Komponenten in der Berechnung, und im Folgenden wird beschrieben, wie wir sie berechnen können.

1- 1. Zeile der Berechnung:

  • Berechnung des Zählers:

MovAverage = (CLOSE-OPEN) + 2 * (CLOSE-1 - OPEN-1) + 2 * (CLOSE-2 - OPEN-2) + (CLOSE-3 - OPEN-3)

Wobei:

CLOSE = Aktueller Schlusskurs

CLOSE 1, CLOSE 2, CLOSE 3 = Schlusskurse von vor 1, 2 und 3 Perioden

OPEN = Aktueller Eröffnungskurs

OPEN 1, OPEN 2, OPEN 3 = Eröffnungspreise von vor 1, 2 und 3 Perioden

  • Berechnung des Nenners:

RangeAverage = (HIGH-LOW) + 2 x (HIGH-1 - LOW-1) + 2 x (HIGH-2 - LOW-2) + (HIGH-3 - LOW-3)

Wobei:

HIGH = Letzter Höchstpreis

HIGH, HIGH 2, HIGH 3 = Letzte Höchstpreise von vor 1, 2 und 3 Balken

LOW = Letzter Tiefstpreis

LOW 1, LOW 2, LOW 3 = Letzte Tiefstpreise von vor 1, 2 und 3 Balken

  • Berechnen wir die Summe dieser Durchschnittswerte wie folgt:

RVI-Durchschnitt

2- 2. Zeile der Berechnung:

RVI-Signal = (RVI-Durchschnitt + 2 * RVI-Durchschnitt-1 + 2 * RVI-Durchschnitt-2 + RVI-Durchschnitt-3)/6

Jetzt haben wir das Hauptkonzept hinter diesem Indikator verstanden, nachdem wir gelernt haben, wie man ihn manuell berechnet, aber wir müssen das nicht tun, weil er im MetaTrader 5-Handelsterminal berechnet wird und alles, was wir tun müssen, ist, ihn aus den verfügbaren Indikatoren auszuwählen. Im Folgenden wird beschrieben, wie man sie auf dem Chart startet:

Beim Öffnen des MetaTrader 5 Terminals --> Einfügen --> Indikatoren --> Oszillatoren --> Relative Vigor Index

RVI-Start

Nachdem wir auf den Relative Vigor Index gedrückt haben, sehen wir das Fenster mit den Parametern wie folgt:

RVI-Parameter

1- Bestimmung der Periodenlänge.

2- Bestimmung Farbe der AD-Linie.

3- Bestimmung des Stils der WPR-Linie.

4- Bestimmung der Linienstärke.

5- Bestimmung der Farbe der Signallinie.

6- Bestimmung der Art der Signallinie.

7- Bestimmung der Dicke der Signallinie.

Nachdem wir alle Parameter bestimmt haben, werden wir feststellen, dass der Indikator wie folgt zu sehen ist:

RVI gestartet

Wie wir im vorherigen Chart sehen können, ist der RVI-Indikator auf dem Chart gestartet und weist zwei Linien auf, die um die Nulllinie oszillieren.


Relative Vigor Index - Strategie

Nachdem wir das Hauptkonzept des RVI kennengelernt haben, werden wir lernen, wie wir es auf der Grundlage seines Hauptkonzepts durch einfache Strategien anwenden können. Was ich hier noch einmal bestätigen muss, ist sicherzustellen, dass Sie jede Strategie testen, bevor Sie sie auf Ihrem realen Konto verwenden, um sicherzustellen, dass sie für Ihren Handel geeignet und profitabel ist, da das Hauptkonzept hier ist, einfache Strategien nur für Bildungszwecke zu teilen, und es ist normal, dass Sie finden, dass sie Optimierungen benötigen.

  • Strategie eins: RVI Crossover - Aufwärtstrend:

Auf der Grundlage dieser Strategie müssen wir während des Aufwärtstrends unter einer bestimmten Bedingung Kauf- und Schließsignale erhalten. Wenn der aktuelle RVI-Wert und der RVI-Signalwert größer als die Nulllinie sind und gleichzeitig der RVI-Wert größer als der Wert des RVI-Signals ist, handelt es sich um ein Kaufsignal. Umgekehrt, wenn der RVI-Wert und der RVI-Signalwert unter Null liegen, während der RVI-Wert gleichzeitig unter dem Wert des RVI-Signals liegt, handelt es sich um ein Schließ-Signal.

Einfach:

RVI-Wert > 0 und RVI-Signalwert > 0 und RVI-Wert > RVI-Signalwert --> Kaufen

RVI-Wert < 0 und RVI-Signalwert < 0 und RVI-Wert < RVI-Signalwert --> Schließen

  • Strategie zwei: RVI Crossover - Abwärtstrend:

Auf der Grundlage dieser Strategie müssen wir die entgegengesetzten Signale der vorherigen Crossover (Kreuzen zweier Linien) der Aufwärtstrend-Strategie des RVI erhalten, da wir Verkaufs- und Schließ-Signale bekommen wollen. Wenn der aktuelle RVI-Wert und der aktuelle RVI-Signalwert niedriger als die Nulllinie sind und gleichzeitig der RVI-Wert niedriger als der Wert des RVI-Signals ist, handelt es sich um ein Verkaufssignal. Umgekehrt, wenn der aktuelle RVI-Wert und der aktuelle RVI-Signalwert über die Nulllinie liegen, während der RVI-Wert gleichzeitig über dem aktuellen Wert des RVI-Signals liegt, handelt es sich um ein Schließ-Signal (cover signal).

Einfach:

RVI-Wert < 0 und RVI-Signalwert < 0 und RVI-Wert < RVI-Signalwert --> Verkaufen

RVI-Wert > 0 und RVI-Signalwert > 0 und RVI-Wert > RVI-Signalwert --> Schließen 

  • Strategie drei: RVI und MA Crossover:

Auf der Grundlage dieser Strategie müssen wir Kauf- und Verkaufssignale auf der Grundlage spezifischer Bedingungen erhalten, da wir ein Kaufsignal erhalten müssen, wenn der Schlusskurs über dem gleitenden 100-Perioden-Durchschnitt liegt und gleichzeitig der aktuelle RVI-Wert größer ist als der aktuelle RVI-Signalwert. Im anderen Szenario müssen wir ein Verkaufssignal erhalten, wenn der Schlusskurs unter dem gleitenden 100-Perioden-Durchschnitt liegt und gleichzeitig der aktuelle RVI-Wert unter dem aktuellen RVI-Signalwert liegt.

Einfach:

Schlusskurs >100- Gleitender Durchschnitt und RVI-Wert > RVI-Signalwert --> Kaufen

Schlusskurs <100- Gleitender Durchschnitt und RVI-Wert < RVI-Signalwert --> Verkaufen


Relative Vigor Index - Strategieplan

Nachdem wir gelernt haben, wie wir den RVI durch unsere erwähnte Strategie nutzen können, werden wir einen Schritt-für-Schritt-Entwurf für jede Strategie erstellen, um uns zu helfen, ein Handelssystem reibungslos zu erstellen.

  • Strategie eins: RVI Crossover - Aufwärtstrend:

Nach dieser Strategie müssen wir ein Handelssystem erstellen, das während des Aufwärtstrends Kauf- und Schließsignale gibt, indem es kontinuierlich die folgenden Werte überprüft:

  • Der aktuelle RVI-Wert
  • Der aktuelle RVI-Signalwert
  • Der Null-Level des RVI-Indikators

Wenn der aktuelle RVI-Wert größer als Null ist, der aktuelle RVI-Signalwert größer als der Null ist und der aktuelle RVI-Wert größer als der aktuelle RVI-Signalwert ist, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart ausgeben:

  • Kaufsignal (Buy Signal)
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Im anderen Szenario, wenn der aktuelle RVI-Wert niedriger als Null, der aktuelle RVI-Signalwert niedriger als der Null und der aktuelle RVI-Wert niedriger als der aktuelle RVI-Signalwert ist, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart ausgeben:

  • Schließ-Signal
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Nachfolgend finden Sie eine schrittweise Anleitung für diese Strategie:

RVI crossover - Blaupause

  • Strategie zwei: RVI Crossover - Abwärtstrend:

Nach dieser Strategie müssen wir ein Handelssystem erstellen, das uns Signale für Leerverkäufe und Deckungen während des Abwärtstrends geben kann, indem wir kontinuierlich die gleichen Werte der vorherigen Strategie überprüfen:

  • Der aktuelle RVI-Wert
  • Der aktuelle RVI-Signalwert
  • Der Null-Level des RVI-Indikators

Die Bedingungen werden jedoch je nach den gewünschten Signalen leicht unterschiedlich sein. Wenn der aktuelle RVI-Wert unter Null liegt, der aktuelle RVI-Signalwert gleichzeitig auch unter dem Null liegt und der RVI-Wert niedriger als der RVI-Signalwert ist, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart ausgeben:

  • Verkaufssignal
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Auf der anderen Seite, wenn der aktuelle RVI-Wert ist höher als die Nulllinie, die aktuelle RVI-Signal Wert ist höher als die Nulllinie zur gleichen Zeit, die RVI-Wert ist höher als die RVI-Signal-Wert, wir brauchen das Handelssystem, um die folgenden Werte als Kommentar auf dem Chart:

  • Schließen
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Nachfolgend finden Sie die Blaupause dieses Handelssystems:

RVI-Kreuzung - Blaupause

  • Strategie drei: RVI & MA Crossover

Nach dieser Strategie müssen wir ein Handelssystem erstellen, das Kauf- und Verkaufssignale gibt, indem es kontinuierlich die folgenden Werte überprüft:

  • Der Schlusskurs
  • Der gleitende 100-Perioden-Durchschnitt (MA)
  • Der aktuelle RVI-Wert
  • Der aktuelle RVI-Signalwert

Wenn der Schlusskurs höher ist als der 100-Perioden-MA und der aktuelle RVI-Wert höher ist als der aktuelle RVI-Signalwert, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart ausgeben:

  • Kaufsignal (Buy Signal)
  • Schlusskurs
  • Ma-Wert
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Wenn der Schlusskurs jedoch unter dem 100-Perioden-MA liegt und der aktuelle RVI-Wert niedriger ist als der aktuelle RVI-Signalwert, muss das Handelssystem die folgenden Werte als Kommentar auf dem Chart ausgeben:

  • Verkaufssignal (Sell Signal)
  • Schlusskurs
  • Ma-Wert
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Das Folgenden ist die Blaupause dieser Strategie:

 RVI, MA Crossover-Blaupause

Relative Vigor Index - Handelssystem

Nachdem wir gelernt haben, wie man den RVI durch einfache Strategien und die Erstellung einer Schritt-für-Schritt-Blaupause für jede Strategie verwendet, um uns zu helfen, unser Handelssystem zu erstellen. Nun werden wir für jede der genannten Strategien ein Handelssystem erstellen. Zunächst werden wir ein einfaches Handelssystem erstellen, das den aktuellen RVI-Wert als Kommentar auf dem Chart zurückgibt, und im Folgenden wird der Code zur Erstellung dieses Handelssystems Schritt für Schritt beschrieben.

Erstellung von zwei Arrays für das RVI- und das RVI-Signal mit Hilfe der Funktion double:

   double rviArray[];
   double rviSignalArray[];

Setzen des AS_SERIES-Flags in Arrays, um einen booleschen Wert (true oder false) zurückzugeben, indem die Funktion „ArraySetAsSeries“ verwendet wird:

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

Definition des RVI mit Hilfe der Funktion „iRVI“, die das Handle des Indikators Relative Vigor Index zurückgibt. Die Parameter sind:

  • symbol: Zur Bestimmung des Symbolnamens, wir verwenden „_Symbol“, das aktuelle Symbol des Charts. 
  • period: Zur Bestimmung des zu nutzenden Zeitraums, wir verwenden „_Period“, der auf den aktuellen Zeitrahmen angewendet wird. 
  •  ma_period: zur Festlegung des Mittelungszeitraums verwenden wir 10.
int rviDef = iRVI(_Symbol,_Period,10);

Wir holen uns die Daten aus dem Puffer des RVI-Indikators mit der Funktion „CopyBuffer“. Die Parameter sind: 

  • indicator_handle: Wir verwenden die Variable deMarkerDef mit dem vordefinierten Indikator-Handle.
  • buffer_num: Dient zur Bestimmung der Nummer des Indikatorpuffers, wir verwenden 0 und 1.
  • start_pos: Als Startposition verwenden wir 0, 0.
  • count: Bestimmt die kopierende Anzahl, wir benötigen 3, 3.
  • buffer[]: Um das zu kopierende Ziel-Array zu bestimmen, wird (rviArray, rviSignalArray) verwendet.
   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

Definition der Werte von RVI und RVI-Signal durch Verwendung der Funktion „NormalizeDouble“, um einen Wert vom Typ double zurückzugeben. Die Parameter sind:

  • value: zur Bestimmung der normierten Zahl. Wir werden rviArray[0] und rviSignalArray[0].
  • digits: zur Bestimmung der Nachkommastellen. Wir werden 3 verwenden.
   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

Wir verwenden die Funktion „Comment“, um den Wert des aktuellen RVI-Indikators als Kommentar auf dem Chart auszugeben.

   Comment("Relative Vigor Index Value is ",rviVal,"\n",
           "RVI Signal Value is ",rviSignalVal);

Der vollständige Code sieht also wie folgt aus:

//+------------------------------------------------------------------+
//|                                                   Simple RVI.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double rviArray[];
   double rviSignalArray[];

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

   Comment("Relative Vigor Index Value is ",rviVal,"\n",
           "RVI Signal Value is ",rviSignalVal);

  }
//+------------------------------------------------------------------+

Nach dem Kompilieren dieses Codes kann er im Navigator des MetaTrader 5 wie folgt gefunden werden:

 RVI-Nav

Wenn Sie auf den Experten doppelklicken, um ihn im Handelsterminal auszuführen, sehen Sie das Fenster dieses Experten wie das folgende:

Einfacher RVI-Fenster

Wenn Sie auf „OK“ klicken, nachdem Sie das Häkchen neben „Algo Trading zulassen“ gesetzt haben, wird der Experte wie folgt an den Chart gestartet:

 Einfacher RVI gestartet

Jetzt sind wir bereit, auf der Grundlage dieses Handelssystems Signale zu generieren. Wir werden also ein Signal wie das folgende erhalten:

Einfaches RVI-Signal

In der oberen linken Ecke des Diagramms ist ein Kommentar mit dem aktuellen RVI-Wert zu sehen.

  • Strategie eins: RVI Crossover - Aufwärtstrend:

Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:

//+------------------------------------------------------------------+
//|                                      RVI Crossover - Uptrend.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double rviArray[];
   double rviSignalArray[];

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Close","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }


  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code:

Bedingungen der Strategie:

Im Falle eines Kaufsignals:

   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Im Falle eines Schließsignals

   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Close","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Nach dem Kompilieren dieses Codes und der Ausführung auf dem Trading-Terminal in der gleichen Weise, wie beim einfachen RVI-Handelssystem bereits beschrieben, werden wir wie folgt feststellen, dass der Experte auf dem Chart gestartet wurde:

RVI-crossover-U gestartet

Dann können wir die gewünschten Signale auf der Grundlage dieses Handelssystems wie die folgenden erhalten:

Im Falle eines Kaufsignals:

 RVI Überkreuzung - U - Kaufsignal

Wie wir auf dem Chart in der oberen linken Ecke sehen können, haben wir ein Signal mit den folgenden Werten erhalten:

  • Kaufsignal (Buy Signal)
  • Relativer Vigor-Index-Wert
  • RVI-Signalwert

Im Falle eines knappen Signals:

 RVI-Weiche - U - Schließsignal

Wie wir auf dem Chart in der oberen linken Ecke sehen können, haben wir ein Signal mit den folgenden Werten erhalten:

  • Schlusskurs
  • Relativer Vigor-Index-Wert
  • RVI-Signalwert

Es ist klar, dass dieses Signal dem entspricht, was wir auf der Grundlage unserer erwähnten Handelsstrategie und ihrer Bedingungen während des Aufwärtstrends benötigen.

  • Strategie zwei: RVI Crossover - Abwärtstrend:

Im Folgenden finden Sie den vollständigen Code zur Erstellung eines Handelssystems für diese Handelsstrategie:

//+------------------------------------------------------------------+
//|                                    RVI Crossover - Downtrend.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double rviArray[];
   double rviSignalArray[];

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Short Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Cover","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
  }
//+------------------------------------------------------------------+  

Unterschiede in diesem Code:

Bedingungen der Strategie:

Im Falle eines Verkaufssignals

   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Short Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Im Falle eines Schließ-Signals (cover);

   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Cover","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Nach dem Kompilieren und Ausführen dieses Codes, wie wir es zuvor gelernt haben, werden wir feststellen, dass der Experte auf dem Chart wie folgt gestartet wurde:

 RVI-Weiche - D gestartet

Jetzt sind wir bereit, Signale zu empfangen, die auf dieser Strategie und diesem Handelssystem basieren. Das Folgende sind Beispiele aus dem Testen von Signalen,

Im Falle eines Verkaufssignals:

 RVI-Kreuzung - D - Verkaufssignals

Wie wir auf dem Chart in der oberen linken Ecke sehen können, haben wir ein Signal mit den folgenden Werten erhalten:

  • Verkaufssignal
  • Relativer Vigor-Index-Wert
  • RVI-Signalwert 

Im Falle eines Schließ-Signals (cover):

RVI crossover - D -  cover

Wie wir sehen können, haben wir ein Signal mit den folgenden Werten:

  • Schließen (cover)
  • Relativer Vigor-Index-Wert
  • RVI-Signalwert

Jetzt haben wir ein Handelssystem entwickelt, das auf der Strategie des RVI Crossover - Downtrend basiert, um Signale während des Abwärtstrends zu generieren.

  • Strategie drei: RVI & MA Crossover:

Im Folgenden finden Sie den vollständigen Code zur Erstellung eines Handelssystems für diese Handelsstrategie:

//+------------------------------------------------------------------+
//|                                           RVI & MA Crossover.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlRates pArray[];
   double maArray[];
   double rviArray[];
   double rviSignalArray[];

   int Data=CopyRates(_Symbol,_Period,0,1,pArray);
   ArraySetAsSeries(maArray,true);
   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);
   int maDef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);
   double maVal = NormalizeDouble(maArray[0],3);

   if(pArray[0].close>maVal && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
   if(pArray[0].close<maVal && rviVal<rviSignalVal)
     {
      Comment("Sell Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }


  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code:

Erstellen von vier Arrays (pArray, maArray, rviArray, rviSignalArray). Wir verwenden den Typ „double“, wie oben beschrieben verwenden, mit Ausnahme von pArray. Wir werden die Funktion MqlRates verwenden, die Informationen über den Preis, das Volumen und den Spread speichert.

   MqlRates pArray[];
   double maArray[];
   double rviArray[];
   double rviSignalArray[];

Setzen des AS_SERIES-Flags für die Arrays, um einen booleschen Wert (true oder false) zurückzugeben, indem die Funktion „ArraySetAsSeries“ verwendet wird. Definieren von Daten mit Hilfe der Funktion „CopyRates“, um historische Daten der Struktur MqlRates zu erhalten, ihre Parameter sind:

  • symbol_name: Zur Bestimmung des Symbolnamens, wir verwenden „_Symbol“, das aktuelle Symbol des Charts.
  • timeframe: Zur Bestimmung des Zeitrahmens, wir werden _Period verwenden, um auf den aktuellen Zeitrahmen angewendet zu werden.
  • start_pos: Als Startposition verwenden wir 0. 
  • count: Bestimmt die zu kopierende Anzahl, wir benötigen 1.
  • rates_array[]: Um das zu kopierende Ziel-Array zu bestimmen, wird pArray verwendet.
   int Data=CopyRates(_Symbol,_Period,0,1,pArray);
   ArraySetAsSeries(maArray,true);
   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

Definieren des RVI mit der Funktion iRVI, wie bereits erwähnt, und des gleitenden Durchschnitts mit der Funktion iMA, um das Handle des Indikators für den gleitenden Durchschnitt zurückzugeben, und die Parameter sind:

  • symbol: um den Namen des Symbols zu bestimmen, wir verwenden _Symbol. 
  • period: Um den Zeitraum des Zeitrahmens zu bestimmen, wir verwenden _Period.
  • ma_period: um die Periode des gleitenden Durchschnitts zu bestimmen, wird 100 verwendet. 
  • ma_shift: um die horizontale Verschiebung zu bestimmen, wir verwenden 0. 
  • ma_method: um den Typ des gleitenden Durchschnitts zu bestimmen, wir werden den exponentiellen MA verwenden 
  • applied_price: Als Preistyp verwenden wir die Schlusskurse. 
   int rviDef = iRVI(_Symbol,_Period,10);
   int maDef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE);

Abrufen von Daten aus dem Puffer der RVI- und MA-Indikatoren mit Hilfe der Funktion „CopyBuffer“.

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);
   CopyBuffer(maDef,0,0,3,maArray);

Festlegung der Werte von RVI, RVI-Signal und MA-Wert mit der Funktion NormalizeDouble.

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);
   double maVal = NormalizeDouble(maArray[0],3);

Bedingungen der Strategie.

Im Falle eines Kaufsignals:

   if(pArray[0].close>maVal && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Im Falle eines Verkaufssignals

   if(pArray[0].close<maVal && rviVal<rviSignalVal)
     {
      Comment("Sell Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Nachdem wir diesen Code kompiliert und den Experten im Terminal ausgeführt haben, werden wir feststellen, dass der Experte auf dem Chart wie folgt gestartet wurde:

RVI, MA-Weiche gestartet alt

Jetzt können wir generierte Signale auf der Grundlage dieses Handelssystems erhalten, wie die folgenden Beispiele aus dem Test.

Im Falle eines Kaufsignals:

 RVI, MA-crossover - Kaufsignal

Wie wir im vorherigen Chart in der oberen linken Ecke sehen können, haben wir ein Signal mit den folgenden Werten:

  • Kaufsignal (Buy Signal)
  • Schlusskurs
  • Ma-Wert
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Im Falle eines Verkaufssignals:

RVI, MA-crossover - Verkaufssignal

Wir haben ein Signal mit den folgenden Werten:

  • Verkaufssignal (Sell Signal)
  • Schlusskurs
  • Ma-Wert
  • Wert des Relativen Vigor-Index
  • RVI-Signalwert

Nun haben wir für jede der genannten Strategien ein Handelssystem erstellt, um ein automatisches Signal auf der Grundlage ihrer Bedingungen zu erzeugen.


Schlussfolgerung

Nach dem, was wir in den vorangegangenen Kapiteln dieses Artikels gelernt haben, sollten wir diesen Indikator tiefgreifend verstanden haben, da wir ihn im Detail kennengelernt haben. Wir haben gelernt, was er ist, was er misst und wie wir ihn manuell berechnen können, um das Hauptkonzept des RVI-Indikators zu verstehen. Wir haben gelernt, wie man es durch drei einfache Strategien nutzen kann, und das waren:

  • RVI Crossover - Aufwärtstrend: zur Generierung von Kauf- und Schließsignalen während des Aufwärtstrends.
  • RVI Crossover - Abwärtstrend: zur Erzeugung von Verkaufs- und Schließ-Signalen während des Abwärtstrends.
  • RVI & MA Crossover: zur Erzeugung von Kauf- und Verkaufssignalen auf der Grundlage einer speziellen Crossover-Technik.

Wir haben für jede der genannten Strategien einen Schritt-für-Schritt-Blaupause erstellt, damit wir den Handel mit ihnen reibungslos und einfach gestalten können. Wir haben für jede der genannten Strategien ein Handelssystem entwickelt, das nach der Ausführung im MetaTrader 5 automatische Signale generiert.

Ich hoffe, dass Sie versucht haben, das Gelernte selbst anzuwenden, um den größtmöglichen Nutzen aus diesem Artikel zu ziehen und Ihre Programmierkenntnisse zu verbessern. Ich hoffe auch, dass Sie diesen Artikel nützlich fanden, um Ihre Handelsergebnisse zu verbessern und nützliche Einblicke in das Thema des Artikels oder ein verwandtes Thema zu erhalten. Wenn Sie weitere ähnliche Artikel lesen möchten, um zu lernen, wie man ein Handelssystem auf der Grundlage der beliebtesten technischen Indikatoren entwickelt, können Sie meinen anderen Artikel in dieser Serie darüber lesen.

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

Der Indikator CCI: Upgrade und neue Funktionen Der Indikator CCI: Upgrade und neue Funktionen
In diesem Artikel werde ich mich mit der Möglichkeit befassen, den CCI-Indikator zu verbessern. Außerdem werde ich eine Änderung des Indikators vorstellen.
DoEasy. Kontrollen (Teil 9): Neuanordnung von WinForms-Objektmethoden, Steuerung von RadioButton und Steuerungen DoEasy. Kontrollen (Teil 9): Neuanordnung von WinForms-Objektmethoden, Steuerung von RadioButton und Steuerungen
In diesem Artikel werde ich die Namen der Methoden der WinForms-Objektklasse festlegen und WinForms-Objekte Button und RadioButton erstellen.
Lernen Sie, wie man ein Handelssystem mit dem Awesome Oscillator entwickelt Lernen Sie, wie man ein Handelssystem mit dem Awesome Oscillator entwickelt
In diesem neuen Artikel unserer Serie werden wir ein neues technisches Instrument kennenlernen, das für unseren Handel nützlich sein kann: den Indikator Awesome Oscillator (AO). Wir werden lernen, wie man mit diesem Indikator ein Handelssystem entwickeln kann.
Neuronale Netze leicht gemacht (Teil 19): Assoziationsregeln mit MQL5 Neuronale Netze leicht gemacht (Teil 19): Assoziationsregeln mit MQL5
Wir fahren mit der Besprechung von Assoziationsregeln fort. Im vorigen Artikel haben wir den theoretischen Aspekt dieser Art von Problemen erörtert. In diesem Artikel werde ich die Implementierung der FP Growth-Methode mit MQL5 zeigen. Außerdem werden wir die implementierte Lösung anhand realer Daten testen.