Fonctions utiles de KimIV - page 43

 
Tsyrus писал (а) >>

C'EST TOUT !!!!!

>> MERCI !

 

Igor, il existe un bon indicateur qui peut combiner plusieurs bougies en une seule. Mais cela ne fonctionne que sur le graphique horaire. Est-il possible de le rendre universel ?

Je tiens à vous remercier.

 

Fonction GetNearestDownFractal().

Cette fonction recherche la fractale de fond la plus proche et renvoie son niveau de prix. La particularité de cette fonction est la possibilité de définir une formule arbitraire pour la fractale. La formule fractale standard, généralement acceptée, est 2-2. Cela signifie 2 barres à gauche et 2 barres à droite. Grâce à cette fonction, vous pouvez même réaliser des fractales très exotiques, comme 8-2 (8 barres à gauche et 2 barres à droite) ou 5-3 (5 barres à gauche et 3 barres à droite), etc. La fonction accepte les paramètres facultatifs suivants :

  • sy - Nom de l'instrument. "" ou NULL - symbole actuel. La valeur par défaut est NULL.
  • tf - Période de temps. Valeur par défaut 0 - symbole actuel.
  • nl - Nombre de barres à gauche. La valeur par défaut est 2.
  • nr - Nombre de barres à droite. Le paramètre par défaut est 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));
}
 

Exemples d'utilisation de GetNearestDownFractal().

  • Le niveau de prix de la fractale inférieure la plus proche sur le graphique actuel. La formule fractale est 2-2 (standard).
    Message(GetNearestDownFractal());
  • Le niveau de prix de la fractale inférieure la plus proche sur le graphique USDCAD H1. La formule fractale est 4-2.
    Message(GetNearestDownFractal("USDCAD", PERIOD_H1, 4));
  • Tracez une ligne horizontale passant par le niveau de prix de la fractale inférieure 5-3 la plus proche sur le graphique actuel.
    double p=GetNearestDownFractal(NULL, 0, 5, 3);
    SetHLine(Red, "", p);

PS. Vous trouverez ci-joint un script pour tester la fonction GetNearestDownFractal().

Dossiers :
 
KimIV писал (а) >>

Exemples d'utilisation de GetNearestDownFractal().

  • Le niveau de prix de la fractale inférieure la plus proche sur le graphique actuel. La formule fractale est 2-2 (standard).
  • Niveau de prix de la fractale inférieure la plus proche sur le graphique USDCAD H1. La formule de la fractale est 4-2.
  • Tracez une ligne horizontale passant par le niveau de prix de la fractale inférieure 5-3 la plus proche sur le graphique actuel.

PS. Vous trouverez ci-joint un script pour tester la fonction GetNearestDownFractal().

Si seulement il était possible de rechercher non seulement la dernière fractale...................UH !!!

 
Tsyrus писал (а) >>

Si seulement il était possible de rechercher plus que la dernière fractale...................UH !!!

Oui. Par exemple, marquer (avec une ligne verticale) toutes les fractales (pendant les 9 dernières mesures) qui ont une valeur >= 1 par rapport à la coordonnée de la fractale qui vient d'être formée et afficher cette valeur au-dessus de la fractale. En guise d'aide (je n'ose même pas demander)....

 

J'admire votre capacité générale à écrire de telles choses. Je suis moi-même un paresseux sous-patiné. Je commence juste à apprendre le MQL.

Désolé de m'éloigner du sujet !

Je ne sais pas comment écrire :

1. Comparez la ligne stochastique pour les barres 1 et 2 et sa fonction de signal lorsqu'une nouvelle barre 0 apparaît.

(en gros, pour évaluer la direction du mouvement des lignes vers le haut et vers le bas et les croiser)

2. Comment le faire toutes les heures/demi-heures/15 minutes.

Montrez-moi un exemple simple, s'il vous plaît !

Ou donnez un lien vers quelque chose de similaire.

Merci d'avance, même si vous l'ignorez !!!

 
Domynus писал (а) >>

1. Comparaison de la ligne stochastique pour les barres 1 et 2 et sa même fonction de signal lorsqu'une nouvelle barre 0 est formée.

(en gros, pour évaluer la direction du mouvement des lignes vers le haut et vers le bas et les croiser)

2. Comment le faire toutes les heures/demi-heures/15 minutes.

Montrez-moi un exemple simple, s'il vous plaît !

Ou donnez un lien vers quelque chose de similaire.

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

 

Merci pour le stochastique.

Je pensais juste qu'il y avait quelque chose d'autre que je pouvais faire.

Et comment effectuer une transaction une seule fois dans un intervalle de temps donné ?

(par exemple, une enquête sur les signaux a lieu toutes les 15, 30 ou 60 minutes).

Intéressé par la fonction elle-même.

 

Fonction GetNearestUpFractal().

Cette fonction recherche la fractale ascendante la plus proche et renvoie son niveau de prix. La particularité de cette fonction est la possibilité de définir une formule arbitraire pour la fractale. La formule fractale standard, généralement acceptée, est 2-2. Cela signifie 2 barres à gauche et 2 barres à droite. Grâce à cette fonction, vous pouvez même réaliser des fractales très exotiques, comme 8-2 (8 barres à gauche et 2 barres à droite) ou 5-3 (5 barres à gauche et 3 barres à droite), etc. La fonction accepte les paramètres facultatifs suivants :

  • sy - Nom de l'instrument. "" ou NULL - symbole actuel. La valeur par défaut est NULL.
  • tf - Période de temps. Valeur par défaut 0 - symbole actuel.
  • nl - Nombre de barres à gauche. La valeur par défaut est 2.
  • nr - Nombre de barres à droite. Valeur par défaut - 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));
}
Raison: