Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Indikatoren

Cycle Period - Indikator für den MetaTrader 5

Veröffentlicht:
Nikolay Kositsin
Ansichten:
938
Rating:
(18)
Veröffentlicht:
2016.04.28 08:32
Aktualisiert:
2018.05.31 11:48
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Wirklicher Autor:

Witold Wozniak

Dieser Indikator ist speziell für die Messung der Periodizität der Preise von finanziellen Vermögenswerten.

Der Indikator speichert in seinem Indikator-Puffer die aktuellen Markt-Zyklus-Werte, die aus offensichtlichen Gründen nie stabil sein könne. Dieser Indikator wird zur Verwendung mit Oszillatoren erstellt, um sich an die ständig ändernden Markt-Zyklen und deren Veränderungen anzupassen.

Der Indikator wurde inspiriert durch John Ehlers Artikel "Using The Fisher Transform" veröffentlichten im "Technical Analysis Of Stock & Commodities"-Magazin, November 2002.  

Cycle Period

Um diesen CyclePeriod Indikator im Code eines anderen Indikators zu verwenden (z.B. in RVI Oszillator) muss er auf globaler Ebene definiert werden:

//---- Deklaration des "Handles" des Indikators
int CP_Handle;

Dann muss das "Handle" des CyclePeriod Indikators im Initialisierungsblock des RVI Indikators bestimmt werden:

//---- handle des CyclePeriod Indikators
   CP_Handle=iCustom(NULL,0,"CyclePeriod",Alpha);
   if(CP_Handle==INVALID_HANDLE)
     {
      Print(" Fehler beim Erhalt des handles des CyclePeriod Indikators");
      return(1);
     }

Jetzt haben wir die neue Alpha-Variable, ein Eingabeparameter des verwendeten Indikators, und die Periodenlängen für die Durchschnittsberechnung. Diese Variable muss transformiert werden zur entwickelten Eingabevariablen des Indikators.

//+----------------------------------------------+
//| Indikator Eingabeparameter                   |
//+----------------------------------------------+
input double Alpha=0.07; // Indikator Glättungsfaktor 

Die vorherige Eingabevariable Length muss von der Liste der Eingabe-Parameter entfernt werden, damit sie in eine lokale Variable innerhalb von OnCalculate() umgewandelt werden kann.

Die Größe der Arrays, verwendet für die Glättung durch den Indikator, wird bestimmt durch den Length-Parameter:

//---- Zuweisung der Speichergröße der Arrays  
   ArrayResize(Count,Length);
   ArrayResize(Value1,Length);
   ArrayResize(Value2,Length);

Der Wert dieses Parameters ändert sich jetzt. Daher ist es besser, die Größe dieses Arrays nicht kleiner als die angenommene Höchstwert dieser Variablen zu wählen.

Bei der Analyse der Indikatorcharts, können wir sehen, dass dieser Wert 100 nicht überschreitet. Daher werden die Arrays gleich groß sein:

//---- Zuweisung der Speichergröße der dynamischen Arrays  
   ArrayResize(Count,MAXPERIOD);
   ArrayResize(Value1,MAXPERIOD);
   ArrayResize(Value2,MAXPERIOD);

Und weiter, die Werte für die Periodenlänge gültig für die aktuelle Bar in OnCalculate() Block muss aus dem CyclePeriod Indikator-Puffer gelesen werden, um diese zu verwenden, anstelle des Wertes von Length , dem ehemaligen Eingabeparameter.

//---- Indikator Haupt-Berechnungsschleife
   for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      //---- kopiert die neue Daten in das Array
      if(CopyBuffer(CP_Handle,0,rates_total-1-bar,4,period)<=0) return(RESET);

      Length=int(MathFloor((4.0*period[0]+3.0*period[1]+2.0*period[2]+period[3])/20.0));
      if(bar<Length) Length=bar; //Abrunden der Glättung auf eine ganze Zahl von Bars

In diesem Fall dienen die letzten vier Werte aus dem CyclePeriod Indikator-Puffer, die linear gewichtet werden, um den erhaltenen Wert als Length der Glättung zu verwenden. Und schließlich, muss die Zeile am Ende des codes des Indikators geändert werden:

      if(bar<rates_total-1) Recount_ArrayZeroPos(Count,MAXPERIOD);

Als Ergebnis erhalten wir den Adaptive RVI Oszillator:

RVI und Adaptive RVI Indikatoren

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/562

StepMA_Line StepMA_Line

StepMA ist ähnlich einem gleitender Durchschnitt.

StepMA_NRTR StepMA_NRTR

StepMA ist ähnlich dem "Nick Rypock Trailing Reverse" (NRTR) Indikator.

LeManTrend LeManTrend

LeManTrend bestimmt eine Trendrichtung auf der Grundlage der Preise von Hoch, Tief und Schlusskurs für drei Perioden.

Tägliche Prognosen der Kursspanne Tägliche Prognosen der Kursspanne

Prognosen der Spanne der nächsten Kerze des Tageszeitrahmen.