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

 
Tsyrus писал (а) >>

НА ЭТОМ ВСЕ!!!!!

СПАСИБО !

 

Игорь, есть хороший индикатор, который может объединять несколько свечей в одну. Но он работает только на часовом графике. Можно ли сделать его универсальным?

Спасибо.

 

Функция GetNearestDownFractal().

Эта функция выполняет поиск ближайшего нижнего фрактала и возвращает его ценовой уровень. Особенностью данной функции является возможность установки произвольной формулы фрактала. Стандартная, общепринятая формула фрактала выглядит таким образом 2-2. Что означает 2 бара слева и 2 бара справа. А с помощью данной функции можно задавать даже очень экзотические фракталы, типа 8-2 (8 баров слева и 2 бара справа), 5-3 (5 баров слева и 3 бара справа) и т.д. Функция принимает следующие необязательные параметры:

  • sy - Наименование инструмента. "" или NULL - текущий символ. Значение по умолчанию NULL.
  • tf - Таймфрейм. Значение по умолчанию 0 - текущий символ.
  • nl - Количество баров слева. Значение по умолчанию - 2.
  • nr - Количество баров справа. Значение по умолчанию - 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));
}
 

Примеры использования функции GetNearestDownFractal().

  • Ценовой уровень ближайшего нижнего фрактала на текущем графике. Формула фрактала 2-2 (стандартная).
    Message(GetNearestDownFractal());
  • Ценовой уровень ближайшего нижнего фрактала на графике USDCAD H1. Формула фрактала 4-2.
    Message(GetNearestDownFractal("USDCAD", PERIOD_H1, 4));
  • Провести горизонтальную линию через ценовой уровень ближайшего нижнего фрактала 5-3 на текущем графике.
    double p=GetNearestDownFractal(NULL, 0, 5, 3);
    SetHLine(Red, "", p);

PS. Во вложении скрипт для тестирования функции GetNearestDownFractal().

Файлы:
 
KimIV писал (а) >>

Примеры использования функции GetNearestDownFractal().

  • Ценовой уровень ближайшего нижнего фрактала на текущем графике. Формула фрактала 2-2 (стандартная).
  • Ценовой уровень ближайшего нижнего фрактала на графике USDCAD H1. Формула фрактала 4-2.
  • Провести горизонтальную линию через ценовой уровень ближайшего нижнего фрактала 5-3 на текущем графике.

PS. Во вложении скрипт для тестирования функции GetNearestDownFractal().

Если бы ишо была возможность поиска не только последнего фрактала...................УХ!!! ...

 
Tsyrus писал (а) >>

Если бы ишо была возможность поиска не только последнего фрактала...................УХ!!! ...

Ага. Например, отметить (вертикальной линией) все фракталы (на протяжении последних 9 баров), которые по отношению к координате только что сформировавшегося фрактала имеют значение >= 1 и вывести это значение над фракталом. В порядке помощи (уж не смею и просить)....

 

Восторгаюсь вашим общим умением писать подобное. Сам - ламер недопатченый. Только начинаю изучать MQL.

Простите за отступление от темы!

Никак не пойму как можно написать:

1. Сравнение линии Стохастика за 1 и 2 бар и ее же сигнальной функцией при образовании нового 0 бара.

(грубо говоря оценить направление движения линии вверх-вниз и пересечения оных)

2. Как сделать это раз в час/полчаса/15 минут.

Покажите пожалуйста на простеньком примере!?

Или дайте ссылку на что нибудь подобное.

Заранее спасибо, даже если проигнорите!!!

 
Domynus писал (а) >>

1. Сравнение линии Стохастика за 1 и 2 бар и ее же сигнальной функцией при образовании нового 0 бара.

(грубо говоря оценить направление движения линии вверх-вниз и пересечения оных)

2. Как сделать это раз в час/полчаса/15 минут.

Покажите пожалуйста на простеньком примере!?

Или дайте ссылку на что нибудь подобное.

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

 

Спасибо за Стохастику.

Просто я думал можно еще как-то сделать.

А как сделать торговлю только раз в заданный промежуток времени?

(например исследование сигнала происходит раз в 15,30 или 60 минут)

Интересует сама функция.

 

Функция GetNearestUpFractal().

Эта функция выполняет поиск ближайшего верхнего фрактала и возвращает его ценовой уровень. Особенностью данной функции является возможность установки произвольной формулы фрактала. Стандартная, общепринятая формула фрактала выглядит таким образом 2-2. Что означает 2 бара слева и 2 бара справа. А с помощью данной функции можно задавать даже очень экзотические фракталы, типа 8-2 (8 баров слева и 2 бара справа), 5-3 (5 баров слева и 3 бара справа) и т.д. Функция принимает следующие необязательные параметры:

  • sy - Наименование инструмента. "" или NULL - текущий символ. Значение по умолчанию NULL.
  • tf - Таймфрейм. Значение по умолчанию 0 - текущий символ.
  • nl - Количество баров слева. Значение по умолчанию - 2.
  • nr - Количество баров справа. Значение по умолчанию - 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));
}
Причина обращения: