KimIV的有用功能 - 页 28

 

ArrayMax()函数。

该函数返回数组中最大元素的值。

  • x 是一个双数 类型的元素数组,在这个数组中搜索元素的最大值。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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. 附上一个测试ArrayMax()函数的脚本。
附加的文件:
 

ArrayMin()函数。

该函数返回数组中最小元素的值。

  • x- 一个双数 类型的元素数组,在这个数组中搜索元素的最小值。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
  }
}
附上一个测试ArrayMin()函数的脚本。
附加的文件:
 

你好,在论坛上发现了你的几个ZigZag功能。这正是我所需要的。我决定检查这些函数的功能,所以我做了一个专家顾问,只是在评论中调用这个函数。ZigZag酒吧编号=某某。问题是,该函数只显示人字形的条数,如果它不在零条上。如果 "之 "字形在一个零条上,它显示的是前一个 "之 "字形的条。而且我需要它显示在零条。换句话说,我想知道新的人字形何时出现。

专家顾问的代码在下面给出。

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 писал (а)>>

函数仅在 "之 "字形不在零条上时才显示其条形号码。
如果 "之 "字形在零条上,它显示的是前一个 "之 "字形的条形。
而且我需要它显示在零条。换句话说,我想知道什么时候出现了一个新的人字形。

好吧...经校正的零条

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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 писал (а)>>

我为我的帖子向作者道歉,我白写了,因为我反正不会使用这段代码,因为我有自己的libc,有我需要的一切。而且因为在这么长的时间里,没有明确的负面反馈,这意味着作者的代码是令人满意的。只是无法忍受:),对不起。

聪明的人很多,但聪明而善良的人却很少。另一方面,你不把你的资料库放出来,尽管你认为你的代码更好,而伊戈尔几乎把他所有的工作都免费放出来。

 
khorosh писал (а)>>

聪明人很多,但聪明而善良的人很少。你不放出你的资料库,即使你认为你的代码更好,而伊戈尔几乎把他所有的工作都免费放出来。

我已经写过为什么。因为我的代码不是完全通用的。如果我能够找到可以张贴的东西,我一定会这样做。

 

ArrayAvg()函数。

该函数返回数组元素的平均算数。

  • x- 一个双数 类型的元素数组。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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. 附上一个测试ArrayAvg()函数的脚本。
附加的文件:
 
KimIV писал (а)>>

好吧...纠正了零条。

非常感谢你。工作时网络有问题,没能早点感谢你。

 

ArrayAvGeom()函数。

该函数返回数组元素的几何平均数。

  • x- 一个双数 类型的元素数组。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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. 附上一个测试ArrayAvGeom()函数的脚本。
附加的文件:
 
KimIV писал (а)>>

ArrayAvGeom()函数。

该函数返回数组元素的几何平均数。

  • x 是一个双数 类型的元素数组。
ZS. 附上一个测试ArrayAvGeom()函数的脚本。

亲爱的KimIV ,谢谢你的功能

写出同样的函数来计算模式是现实的吗?