Nützliche Funktionen von KimIV - Seite 43

 
Tsyrus писал (а) >>

DIES IST ALLES!!!!!

>> DANKESCHÖN !

 

Igor, es gibt einen guten Indikator, der mehrere Kerzen zu einer einzigen zusammenfassen kann. Aber es funktioniert nur auf dem Stundenchart. Ist es möglich, es universell zu machen?

Ich möchte mich bei Ihnen bedanken.

 

GetNearestDownFractal() Funktion.

Diese Funktion sucht nach dem nächstgelegenen Bodenfraktal und gibt dessen Preisniveau zurück. Die Besonderheit dieser Funktion ist die Möglichkeit, eine beliebige Formel für das Fraktal festzulegen. Die allgemein anerkannte fraktale Standardformel lautet 2-2. Das bedeutet 2 Balken auf der linken Seite und 2 Balken auf der rechten Seite. Mit dieser Funktion können Sie auch sehr exotische Fraktale wie 8-2 (8 Takte auf der linken Seite und 2 Takte auf der rechten Seite) oder 5-3 (5 Takte auf der linken Seite und 3 Takte auf der rechten Seite) und so weiter erstellen. Die Funktion akzeptiert die folgenden optionalen Parameter:

  • sy - Name des Instruments. "" oder NULL - aktuelles Symbol. Der Standardwert ist NULL.
  • tf - Zeitrahmen. Standardwert 0 - aktuelles Symbol.
  • nl - Anzahl der Balken auf der linken Seite. Der Standardwert ist 2.
  • nr - Anzahl der Balken auf der rechten Seite. Die Standardeinstellung ist 2.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает ценовой уровень ближайшего нижнего фрактала         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    nl - количество баров слева                                             |
//|    nr - количество баров справа                                            |
//+----------------------------------------------------------------------------+
double GetNearestDownFractal(string sy="0", int tf=0, int nl=2, int nr=2) {
  bool f;
  int  fb, i, nb=-1;

  if (sy=="" || sy=="0") sy=Symbol();
  if (nl<1) nl=1;
  if (nr<1) nr=1;

  fb=nr;
  while (nb<0) {
    fb++;
    f=True;
    for (i=fb; i>fb-nr; i--) {
      if (iLow(sy, tf, i)>iLow(sy, tf, i-1)) { f=False; break; }
    }
    if (f) {
      for (i=fb; i<fb+nl; i++) {
        if (iLow(sy, tf, i)>iLow(sy, tf, i+1)) { f=False; break; }
      }
      if (f) { nb=fb; break; }
    }
  }

  return(iLow(sy, tf, nb));
}
 

Beispiele für die Verwendung von GetNearestDownFractal().

  • Das Kursniveau des nächstgelegenen Bodenfraktals auf dem aktuellen Chart. Die Fraktalformel lautet 2-2 (Standard).
    Message(GetNearestDownFractal());
  • Das Preisniveau des nächst niedrigeren Fraktals auf dem USDCAD H1-Chart. Die fraktale Formel lautet 4-2.
    Message(GetNearestDownFractal("USDCAD", PERIOD_H1, 4));
  • Ziehen Sie eine horizontale Linie durch das Kursniveau des nächst niedrigeren Fraktals 5-3 im aktuellen Diagramm.
    double p=GetNearestDownFractal(NULL, 0, 5, 3);
    SetHLine(Red, "", p);

PS. Im Anhang finden Sie ein Skript zum Testen der Funktion GetNearestDownFractal().

 
KimIV писал (а) >>

Beispiele für die Verwendung von GetNearestDownFractal().

  • Das Kursniveau des nächstgelegenen Bodenfraktals auf dem aktuellen Chart. Die fraktale Formel ist 2-2 (Standard).
  • Preisniveau des nächst niedrigeren Fraktals auf dem USDCAD H1-Chart. Die Formel des Fraktals lautet 4-2.
  • Ziehen Sie eine horizontale Linie durch das Kursniveau des nächst niedrigeren Fraktals 5-3 im aktuellen Diagramm.

PS. Im Anhang finden Sie ein Skript zum Testen der Funktion GetNearestDownFractal().

Wenn es nur möglich wäre, nicht nur nach dem letzten Fraktal zu suchen...................UH!!!

 
Tsyrus писал (а) >>

Wenn es doch nur möglich wäre, nach mehr als nur dem letzten Fraktal zu suchen...................UH!!!

Ja. Markieren Sie zum Beispiel (mit einer vertikalen Linie) alle Fraktale (während der letzten 9 Takte), die einen Wert >= 1 in Bezug auf die Koordinate des soeben gebildeten Fraktals haben, und zeigen Sie diesen Wert oberhalb des Fraktals an. Als Hilfe (ich traue mich gar nicht zu fragen) ....

 

Ich bewundere Ihre allgemeine Fähigkeit, solche Dinge zu schreiben. Ich bin selbst ein unterdurchschnittlicher Lahmarsch. Ich fange gerade an, MQL zu lernen.

Entschuldigung, dass ich vom Thema abschweife!

Ich weiß nicht, wie ich schreiben soll:

1. Vergleichen Sie die Stochastik-Linie für 1 und 2 Balken und ihre Signalfunktion, wenn ein neuer 0-Balken erscheint.

(grob gesagt, um die Richtung der Linienbewegung nach oben und unten und deren Kreuzung zu bewerten)

2. Wie man es jede Stunde/halbe Stunde/15 Minuten macht.

Bitte zeigen Sie mir ein einfaches Beispiel!?

Oder geben Sie einen Link zu etwas Ähnlichem an.

Vielen Dank im Voraus, auch wenn Sie es ignorieren!!!

 
Domynus писал (а) >>

1. Vergleich der Stochastik-Linie für 1 und 2 Balken und ihrer gleichen Signalfunktion, wenn sich ein neuer 0-Balken bildet.

(grob gesagt, um die Richtung der Linienbewegung nach oben und unten und deren Kreuzung zu beurteilen)

2. Wie man es jede Stunde/halbe Stunde/15 Minuten macht.

Bitte zeigen Sie mir ein einfaches Beispiel!?

Oder geben Sie einen Link zu etwas Ähnlichem an.

https://book.mql4.com/ru/samples/indicators
https://book.mql4.com/ru/build/conditions

 

Danke für die Stochastik.

Ich dachte nur, ich könnte noch etwas anderes tun.

Und wie kann man einen Handel nur einmal in einem bestimmten Zeitintervall durchführen?

(z. B. Signaluntersuchung einmal alle 15, 30 oder 60 Minuten)

Ich bin an der Funktion selbst interessiert.

 

GetNearestUpFractal() Funktion.

Diese Funktion sucht nach dem nächstgelegenen aufsteigenden Fraktal und gibt dessen Preisniveau zurück. Die Besonderheit dieser Funktion ist die Möglichkeit, eine beliebige Formel für das Fraktal festzulegen. Die allgemein anerkannte fraktale Standardformel lautet 2-2. Das bedeutet 2 Balken auf der linken Seite und 2 Balken auf der rechten Seite. Mit dieser Funktion können Sie auch sehr exotische Fraktale wie 8-2 (8 Takte auf der linken Seite und 2 Takte auf der rechten Seite) oder 5-3 (5 Takte auf der linken Seite und 3 Takte auf der rechten Seite) und so weiter erstellen. Die Funktion akzeptiert die folgenden optionalen Parameter:

  • sy - Name des Instruments. "" oder NULL - aktuelles Symbol. Der Standardwert ist NULL.
  • tf - Zeitrahmen. Standardwert 0 - aktuelles Symbol.
  • nl - Anzahl der Balken auf der linken Seite. Der Standardwert ist 2.
  • nr - Anzahl der Balken auf der rechten Seite. Standardwert - 2.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает ближайший верхний фрактал                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL - текущий символ)                 |
//|    tf - таймфрейм                  ( 0 - текущий таймфрейм)                |
//|    nl - количество баров слева                                             |
//|    nr - количество баров справа                                            |
//+----------------------------------------------------------------------------+
double GetNearestUpFractal(string sy="0", int tf=0, int nl=2, int nr=2) {
  bool f;
  int  fb, i, nb=-1;

  if (sy=="" || sy=="0") sy=Symbol();
  if (nl<1) nl=1;
  if (nr<1) nr=1;

  fb=nr;
  while (nb<0) {
    fb++;
    f=True;
    for (i=fb; i>fb-nr; i--) {
      if (iHigh(sy, tf, i)<iHigh(sy, tf, i-1)) { f=False; break; }
    }
    if (f) {
      for (i=fb; i<fb+nl; i++) {
        if (iHigh(sy, tf, i)<iHigh(sy, tf, i+1)) { f=False; break; }
      }
      if (f) { nb=fb; break; }
    }
  }

  return(iHigh(sy, tf, nb));
}