Полезные функции от KimIV - страница 56

 
KimIV >>:

здесь

Спасибо, вчера его не было или я пропустил.

 
beginner писал(а) >>

Спасибо, вчера его не было или я пропустил.

не было...

 

Да, теперь этот

#include "b-KimIV.mqh" // Библиотека дополнительных функций

 

Уважаемый KimIV, большая просьба к Вам модифицировать e-SOTrailing таким образом : (Вся тактика работы в этом случае сводится к выставлению стоповых ордеров на некотором расстоянии от ближайшего фрактала и их перемещению вслед за ценой.) Я так понимаю это несложно используя Вашу функцию FindNearFractal, может быть так?

void TrailingOrders() {

......

pa=FindNearFractal(OrderSymbol(), 0, MODE_UPPER); //MarketInfo(OrderSymbol(), MODE_ASK);

......

pb=FindNearFractal(OrderSymbol(), 0, MODE_LOWER);//MarketInfo(OrderSymbol(), MODE_BID);

 
beginner писал(а) >>

Да, теперь этот

#include "b-KimIV.mqh" // Библиотека дополнительных функций

позже завезу...

 
KimIV >>:

На первой странице уже невозможно...

Выложу здесь... Если пост для обновления заблокируется, то буду выкладывать заново. Так что следите за веткой :-)

Спасибо - это то, что надо.

 

Функция ArrayZ().

Данная функция вычисляет и возвращает Z-счёт числового ряда, переданного в массиве по ссылке.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 27.10.2008                                                     |
//|  Описание : Возвращает Z-счёт числового ряда.                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    arr - массив значений числового ряда                                    |
//+----------------------------------------------------------------------------+
double ArrayZ(double& arr[]) {
  double x, z;
  int    i, l=0, n=ArraySize(arr), r=1, w=0;

  for (i=0; i<n; i++) {
    if (i==0) r=1;
    else {
      if (arr[i-1]*arr[i]<0) r++;
    }
    if (arr[i]>0) w++; else l++;
  }

  if (n>2) {
    if (w>0 && l>0) {
      x=2*w*l;
      if (x!=n) z=(n*(r-0.5)-x)/MathSqrt(x*(x-n)/(n-1));
    } else {
      if (l==0) z=100; else z=-100;
      Print("ArrayZ(): Нет чередования серий!");
    }
    return(z);
  } else {
    Print("ArrayZ(): В массиве недостаточно элементов!");
    return(0);
  }
}

ЗЫ. Во вложении скрипт для тестирования функции ArrayZ(). Кстати, в этом скрипте массив заполняется данными из книги Ральфа Винса "Математика управления капиталом".

ЗЗЫ. У себя на сайте я обновил библиотеку b-Array.

Файлы:
 

Функция ArrayDeleteInt()

Выполняет удаление элемента массива с заданным индексом. Возвращает размер нового массива или -1, если не удалось ничего удалить. Функция ArrayDeleteInt() принимает следующие обязательные параметры:

  • m - Массив элементов.
  • i - Индекс элемента массива.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 31.10.2008                                                     |
//|  Описание : Выполняет удаление элемента массива с заданным индексом.       |
//|             Возвращает размер нового массива или -1,                       |
//|             если не удалось ничего удалить.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    i - индекс элемента                                                     |
//+----------------------------------------------------------------------------+
int ArrayDeleteInt(int& m[], int i) {
  int j, k=ArraySize(m);

  if (i>=0 && i<k) {
    for (j=i; j<k; j++) m[j]=m[j+1];
    k=ArrayResize(m, k-1);
    return(k);
  } else Print("ArrayDeleteInt(): Неверный индекс элемента массива! i=", i);

  return(-1);
}
ЗЫ. Во вложении скрипт для тестирования функции ArrayDeleteInt().
Файлы:
 

Функция ArrayDeleteDouble()

Выполняет удаление элемента массива с заданным индексом. Возвращает размер нового массива или -1, если не удалось ничего удалить. Функция ArrayDeleteDouble() принимает следующие обязательные параметры:

  • m - Массив элементов типа double.
  • i - Индекс элемента массива.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 31.10.2008                                                     |
//|  Описание : Выполняет удаление элемента массива с заданным индексом.       |
//|             Возвращает размер нового массива или -1,                       |
//|             если не удалось ничего удалить.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    i - индекс элемента                                                     |
//+----------------------------------------------------------------------------+
int ArrayDeleteDouble(double& m[], int i) {
  int j, k=ArraySize(m);

  if (i>=0 && i<k) {
    for (j=i; j<k; j++) m[j]=m[j+1];
    k=ArrayResize(m, k-1);
    return(k);
  } else Print("ArrayDeleteDouble(): Неверный индекс элемента массива! i=", i);

  return(-1);
}
P.S. Во вложении скрипт для тестирования функции ArrayDeleteDouble().
Файлы:
 

Функция ArrayDeleteString()

Выполняет удаление элемента массива с заданным индексом. Возвращает размер нового массива или -1, если не удалось ничего удалить. Функция ArrayDeleteString() принимает следующие обязательные параметры:

  • m - Массив элементов типа string.
  • i - Индекс элемента массива.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 31.10.2008                                                     |
//|  Описание : Выполняет удаление элемента массива с заданным индексом.       |
//|             Возвращает размер нового массива или -1,                       |
//|             если не удалось ничего удалить.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    i - индекс элемента                                                     |
//+----------------------------------------------------------------------------+
int ArrayDeleteString(string& m[], int i) {
  int j, k=ArraySize(m);

  if (i>=0 && i<k) {
    for (j=i; j<k; j++) m[j]=m[j+1];
    k=ArrayResize(m, k-1);
    return(k);
  } else Print("ArrayDeleteString(): Неверный индекс элемента массива! i=", i);

  return(-1);
}
ЗЫ. Во вложении скрипт для тестирования функции ArrayDeleteString().
Файлы: