Fonctions utiles de KimIV - page 28

 

La fonction ArrayMax().

Cette fonction renvoie la valeur de l'élément maximum du tableau.

  • x est un tableau d'éléments de type double, dans lequel on recherche la valeur maximale de l'élément.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение максимального элемента массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMax(double& x[]) {
  if (ArraySize(x)>0) return(x[ArrayMaximum(x)]);
  else {
    Print("ArrayMax(): Массив пуст!");
    return(0);
  }
}
P.S. Vous trouverez ci-joint un script pour tester la fonction ArrayMax().
Dossiers :
 

La fonction ArrayMin().

Cette fonction renvoie la valeur de l'élément minimum du tableau.

  • x - Un tableau d'éléments de type double, dans lequel la valeur minimale de l'élément est recherchée.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение минимального элемента массива.             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMin(double& x[]) {
  if (ArraySize(x)>0) return(x[ArrayMinimum(x)]);
  else {
    Print("ArrayMin(): Массив пуст!");
    return(0);
  }
}
ZS. Vous trouverez ci-joint un script pour tester la fonction ArrayMin().
Dossiers :
 

Bonjour, j'ai trouvé quelques unes de vos fonctions ZigZag sur le forum. C'est exactement ce dont j'ai besoin. J'ai décidé de vérifier la fonctionnalité de ces fonctions, donc j'ai fait un Conseiller Expert qui appelle juste cette fonction dans le commentaire. Numéro de barre ZigZag = untel ou untel. Le problème est que la fonction n'affiche le numéro de barre du zigzag que s'il n'est pas sur une barre zéro. Si le zigzag est sur une barre zéro, il montre la barre du zigzag précédent. Et j'ai besoin qu'il s'affiche à zéro barre. En d'autres termes, je veux savoir quand le nouveau zigzag est apparu.

Le code de l'Expert Advisor est donné ci-dessous :

int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
GetExtremumZZBar ();
 Comment("бар зигзага = ", GetExtremumZZBar());         //Просто проверяю работоспособность функции
//----
   return(0);
  }
//+------------------------------------------------------------------+
int GetExtremumZZBar(string sym="EURUSD", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
 
Climber писал (а) >>

indique le numéro de barre du zigzag uniquement s'il n'est pas sur une barre zéro.
Si le zigzag est sur une barre zéro, il montre la barre du zigzag précédent.
Et j'ai besoin qu'il s'affiche à zéro barre. En d'autres termes, je veux savoir quand un nouveau zigzag est apparu.

ok... corrigée pour la barre zéro

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(-1);
}
 
TheXpert писал (а) >>

Je m'excuse pour mon post à l'auteur, j'ai écrit en vain, car je n'utiliserai pas ce code de toute façon, puisque j'ai ma propre libc avec tout ce dont j'ai besoin. Et comme pendant si longtemps il n'y a pas eu de retour clairement négatif, cela signifie que le code de l'auteur est satisfaisant. Je ne pouvais pas le supporter :), désolé.

Il y a beaucoup de gens intelligents, mais les gens intelligents et gentils sont rares. Vous, par contre, ne mettez pas en ligne votre bibliothèque, même si vous pensez que vous codez mieux, alors qu'Igor met en ligne gratuitement la quasi-totalité de son travail.

 
khorosh писал (а) >>

Il y a beaucoup de gens intelligents, mais peu de gens intelligents et gentils. Vous ne mettez pas en ligne votre bibliothèque, même si vous pensez que vous codez mieux, alors qu'Igor met en ligne la quasi-totalité de son travail gratuitement.

J'ai déjà écrit pourquoi. Parce que mon code n'est pas complètement universel. Si je peux trouver quelque chose à poster, je le ferai certainement.

 

La fonction ArrayAvg().

Cette fonction renvoie la moyenne arithmétique des éléments du tableau.

  • x - Un tableau d'éléments de type double.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает среднее аримфетическое элементов массива.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayAvg(double& x[]) {
  double s=0;
  int    i, k=ArraySize(x);

  for (i=0; i<k; i++) s+=x[i];
  if (k>0) s/=k; else Print("ArrayAvg(): Массив пуст!");

  return(s);
}
P.S. Vous trouverez ci-joint un script pour tester la fonction ArrayAvg().
Dossiers :
 
KimIV писал (а) >>

ok... corrigée pour la barre de zéro.

Merci beaucoup. Un problème avec l'internet au travail, je n'ai pas pu vous remercier plus tôt.

 

La fonction ArrayAvGeom().

Cette fonction renvoie la moyenne géométrique des éléments du tableau.

  • x - Un tableau d'éléments de type double.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.06.2008                                                     |
//|  Описание : Возвращает среднее геометрическое элементов массива.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayAvGeom(double& x[]) {
  double s=1, k=ArraySize(x);
  int    i;

  for (i=0; i<k; i++) s*=x[i];
  if (k>0) s=MathPow(s, 1/k); else Print("ArrayAvGeom(): Массив пуст!");

  return(s);
}
ZS. Vous trouverez ci-joint un script pour tester la fonction ArrayAvGeom().
Dossiers :
 
KimIV писал (а) >>

La fonction ArrayAvGeom().

Cette fonction renvoie la moyenne géométrique des éléments du tableau.

  • x est un tableau d'éléments de type double.
ZS. Vous trouverez ci-joint un script pour tester la fonction ArrayAvGeom().

Cher KimIV , merci pour la fonction !

Est-il réaliste d'écrire le même type de fonction pour calculer le mode ?