Использование индикатора Envelope (Конверт) в коде

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

Использование индикатора Envelope (Конверт) в коде

Сообщение Haos » 22 ноя 2016, 21:14

Индикатор Конверт, в основном, используется для определения достаточного удаления цены от медленной скользящей средней чтобы говорить о состоянии перекупленности или перепроданности. При этом если есть позиции в прибыли, то самое время закрывать их, т.к. цена всегда стремиться вернуться к скользящим средним. Соответственно, если торговая система основана на возврате к средней, то начинать входить в позиции. Параметр "отклонение в процентах" индикатора Конверт определяет это отклонение от средней.
На приведенном ниже скрине (см. рис. ниже) параметр конверта период соответствует 200 (SMA), отклонение в процентах от средней - 1,9%.

06.png

Видно, что выход цены за пределы конверта сигнализирует о возможном дальнейшем скором возврате цены к скользящей средней.
Напишем функцию, которая будет определять положение цены относительно линий конверта (верхней и нижней). Если цена выше верхней линии, то функция возвращает значение "UP", если ниже нижней линии - "DN", если же цена внутри линий конверта, то - "IN".

Код: выделить все
string f_EnvelopeSyg(string sy, int tf, int pe, int me, int ap, double de, int sh)
{
/*
   Определяет положение цены относительно линий Конверта 
   "UP" - цена Bid выше верхней заданной линии конверта;
   "DN" - цена Ask ниже нижней заданной линии конверта;
   "IN" - цена внутри конверта (ниже верхней линии и выше нижней);
   Параметры:
   sy - имя символа  ("0" - текущий символ)
   tf - ТФ
   pe - период
   me - метод усреднения
   ap - тип цены
   de - отклонение (в процентах)
   sh - сдвиг
*/
   if(sy == "0") sy = Symbol();
   double dbl_EnvH = iEnvelopes(sy, tf, pe, me, 0, ap, de, MODE_UPPER, sh);
   double dbl_EnvL = iEnvelopes(sy, tf, pe, me, 0, ap, de, MODE_LOWER, sh);
   double dbl_Ask  = MarketInfo(sy, MODE_ASK);
   double dbl_Bid  = MarketInfo(sy, MODE_BID);

   if(dbl_Bid >= dbl_EnvH) return("UP");
   else if(dbl_Ask <= dbl_EnvL) return("DN");
   else if((dbl_Bid >= dbl_EnvL) && (dbl_Ask <= dbl_EnvH)) return("IN");

return("NO");   
}
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

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

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

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

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

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

cron