Канал МАшки для определения тренда

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

Канал МАшки для определения тренда

Сообщение Haos » 21 мар 2018, 11:18

Одним из приемов применения скользящих средних является построение при помощи них каналов с целью с одной стороны определить тренд, а с другой стороны избежать торговлю во флете. Тренд нужен трейдеру для входа в рынок по направлению его и получению прибыли от сигналов трендовых индикаторов, а флет для таких индикаторов противопоказан.
Рассмотрим канал, построенный на одной МАшке, путем построения её от цен High - верхняя линия канала и Low - нижняя линия канала (см. скрин ниже):

Канал МАшки.png

В данном случае использовалась экспоненциальная скользящая средняя 40 периода, построенная по ценам High и Low.

Канал МАшки-02.png

Область "1" является областью узкого флета (на данном ТФ), область "2" - медвежий участок тренда, "1" - бычий участок тренда.
При этом следует отметить, что данный вид фильтрации особенно может быть эффективен для торговли на более быстрых периодах.
Задачей кода является детерминация наличия тренда (и какого) или флета для последующего применения в качестве фильтра сигналов на вход в рынок.

Код: выделить все
string f_MAChannel(int tf, int pe, int me, int sh)
{
/* Закрытие свечи выше верхней линии канала - бычий тренд, закрытие свечи ниже нижней - медвежий
   Канал образован МАшкой одного периода, но разным типом цены, для верхней линии канала
   High, для нижней Low
   Параметры:
   tf - таймфрейм (0 - текущий ТФ)
   pe - период МАшки
   me - метод усреднения МАшки
   sh - индекс сдвига назад
   возвращает "UP" если свеча закрыта выше верхней линии канала
   возвращает "DN" если свеча закрыта ниже нижней линии канала
   возвращает "IN" если свеча закрыта внутри канала
   возвращает "NO" положение цены не определено
*/
   // верхняя линия канала:
   double dblMAh = iMA(NULL, tf, pe, 0, me, PRICE_HIGH, sh);
   // нижняя линия канала:
   double dblMAl = iMA(NULL, tf, pe, 0, me, PRICE_LOW,  sh);
   if(Close[sh] > dblMAh) return("UP");
   else if(Close[sh] < dblMAl) return("DN");
   else if(Close[sh] <= dblMAh && Close[sh] >= dblMAl) return("IN");
   
return("NO");
}

Функция f_MAChannel:
возвращает "UP" если свеча закрыта выше верхней линии канала
возвращает "DN" если свеча закрыта ниже нижней линии канала
возвращает "IN" если свеча закрыта внутри канала
возвращает "NO" положение цены не определено.

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

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

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

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

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

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