Использование индикатора Stochastic в коде

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Использование индикатора Stochastic в коде

Сообщение Haos » 01 июн 2019, 14:57

Использование стохастического осциллятора (Stochastic) является распространенным явлением в трейдерской среде. Поэтому многие индикаторы и эксперты содержат этот индикатор как один из методов технического анализа в своем коде.
Для начала рассмотрим параметры Стохастика. Описание функции вызова индикатора Стохастик имеет вид:
Код: выделить все
double  iStochastic(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          Kperiod,          // период линии K
   int          Dperiod,          // период линии D
   int          slowing,          // замедление
   int          method,           // метод усреднения
   int          price_field,      // тип цены
   int          mode,             // индекс линии
   int          shift             // сдвиг
   );

Функция iStochastic возвращает тип double.

Имя символа - строковая переменная типа string в которой задается имя символа на котором будет выполняться торговые операции с использованием индикатора Стохастик. Если предполагается, что операции или расчеты выполняются на текущем символе (на котором запущен эксперт или индикатор), то в качестве значения в функцию можно передавать константу NULL. Иначе, значения например, "EURUSD", "AUDUSD" и т.п.

Таймфрейм (период). Задается одним из значений перечисления ENUM_TIMEFRAMES (см. скрин ниже):

01-ТФ.png

0 - период текущего графика.

При построении индикатора Стохастик используются две линии. Сплошная линия (%K) - это быстрый стохастик, пунктирная линия (%D) - медленный стохастик. Медленный стохастик - это скользящая средняя применительно к %K (см. скрин ниже):

02-Линии.png

Период линии K - Период (количество баров) для вычисления линии %K.

Период линии D - Период усреднения для вычисления линии %D.

Замедление - значение сглаживания %K. Настройка чувствительности индикатора.

Метод усреднения - Может быть любым из значений перечисления ENUM_MA_METHOD (см. скрин ниже):

03-Линии.png

Тип цены - Параметр выбора цен для расчета. Может быть одной из следующих величин: 0 - Low/High или 1 - Close/Close.

Индекс линии - Индекс линии индикатора (0 - MODE_MAIN, 1 - MODE_SIGNAL) (см. скрин ниже):

04-Линии.png

Сдвиг - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). Обычно используются для расчета позапрошлый бар - 2, прошлый бар - 1 и текущий бар - 0.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Использование индикатора Stochastic в коде

Сообщение Haos » 27 авг 2019, 11:07

В торговле трейдер может использовать Стохастик несколькими способами. Я написал три функции для облегчения программирования экспертов в соответствие с имеющимися потребностями. Рассмотрим возможности этих функций.

1. Нам часто нужно знать положение обоих линий Стохастика выше (ниже) какого-то уровня. Ниже расположена функция, которая возвращает сигнал на положение обоих Стохастика выше (ниже) заданного уровня.
Код: выделить все
string f_StochSyg(string sy, int tf, int kpe, int dpe, int slo, int sh)
{
/* Сигнал на значения линий (обоих!) Стохастика выше (ниже) уровня.
   Параметры:                                                               
   sy   - наименование инструмента   (NULL - текущий символ)               
   tf   - торгуемый таймфрейм графика (0 - текущий ТФ)
   kpe  - Период для вычисления линии %K Стохастика
   dpe  - Период усреднения для вычисления линии %D Стохастика
   slo  - Значение замедления Стохастика
   sh   - Индекс получаемого значения из индикаторного буфера (сдвиг относительно
                  текущего бара на указанное количество периодов назад).
   Уровни: (20, 50, 80,)
   Возвращаемые значения:
   X > 80.0  ("Yh")
   50.0 < X < 80.0 ("Ym2")
   20.0 < X < 50.0 ("Ym1")
   X < 20.0  ("Yl")
   iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0);
*/   
   string   strRes = "NO SIGNAL";
   if(sy == "0") sy = Symbol();
   double dblStochMain = iStochastic(sy, tf, kpe, dpe, slo, MODE_SMA, 0, MODE_MAIN,   sh);
   double dblStochSygn = iStochastic(sy, tf, kpe, dpe, slo, MODE_SMA, 0, MODE_SIGNAL, sh);
   
   if(dblStochMain > 80.0 && dblStochSygn > 80.0) strRes = "Yh";
   if(dblStochMain > 50.0 && dblStochSygn > 50.0 && dblStochMain < 80.0 &&
      dblStochSygn < 80.0) strRes = "Ym2";
   if(dblStochMain > 20.0 && dblStochSygn > 20.0 && dblStochMain < 50.0 &&
      dblStochSygn < 50.0) strRes = "Ym1";
   if(dblStochMain < 20.0 && dblStochSygn < 20.0) strRes = "Yl";   
   
return(strRes);
}

По умолчанию рассматриваются уровни: 20, 50, 80 (домашнее задание для изучающих написать подобную функцию, где уровни задаются в виде передаваемых в функцию параметров).
Функция строкового типа и возвращает следующие значения:
- если положение обоих линий Стохастика строго ниже уровня 20, то функция вернет "Yl";
- если положение обоих линий Стохастика строго выше уровня 20 и строго ниже уровня 50, то функция вернет "Ym1";
- если положение обоих линий Стохастика строго выше уровня 50 и строго ниже уровня 80, то функция вернет "Ym2";
- если положение обоих линий Стохастика строго выше уровня 80, то функция вернет "Yh";
Таким образом, мы можем полностью идентифицировать положение линий Стохастика или в состоянии перепроданности (менее уровня 20) или в состоянии от центрального уровня 50 и до уровня перепроданности 20, или от центрального уровня и до уровня перекупленности 80, или выше уровня перекупленности (более уровня 80).
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.


Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron