Сигнал на вход в рынок на основе одной МА и цены

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

Сигнал на вход в рынок на основе одной МА и цены

Сообщение Haos » 01 авг 2017, 10:19

Мы уже рассматривали вопрос определения тренда на основе скользящей средней и цены (см. статью Определение тренда на основе одной МА и цены), а теперь рассмотрим вопрос получения сигнала на вход в рынок на основе пересечения ценою скользящей средней.
Прежде всего рассмотрим как получается сигнал при рассмотрении алгоритмическим подходом в Метатрейдере. На рисунке ниже (см. рис. ниже) отображен процесс пересечения ценой МАшки.

03.png

Для нахождения такого сигнала сравниваются положение цены и МАшки на 2 и 1 баре. Нулевой бар - это текущий бар и на нем нет еще зафиксированного положения ни цены ни МАшки, поэтому и берутся два ближайших бара для анализа на факт пересечения, т. е. указанные ранее бар номер 1 и бар номер 2.
На рисунке рассмотрена ситуация пересечения ценою МАшки для сигнала на покупку, т.е. цена пересекает МАшку снизу вверх.
Таким образом, само условие звучит так: если на 2-м баре значение цены меньше чем значение МАшки, а на 1-м баре значение цены больше чем значение МАшки, то это сигнал на покупку. Соответственно, если на 2-м баре значение цены больше чем значение МАшки, а на 1-м баре значение цены меньше чем значение МАшки, то это сигнал на продажу.
Теперь, разобрав суть вопроса, можно приступить к программированию. Поскольку, использование данной процедуры часто встречается при написании советников, то логично оформить её в виде функции:
Код: выделить все
string f_PriceMASyg(int pe, int me, int ap)                 
/*
   Ф-ия определяет сигнал по пересечению одной МАшки и цены (на последнем закрытом баре)
   "UP" - цена пересекла МАшку снизу вверх;
   "DN" - цена пересекла МАшку сверху вниз;
   "NO" - сигнал не определен;
   Параметры:
   pe -  период
   me -  метод усреднения
   ap -  тип цены
*/
{
   double dblMA_1 = iMA(NULL, 0, pe, 0, me, ap, 1);
   double dblMA_2 = iMA(NULL, 0, pe, 0, me, ap, 2);
   
   if(Close[2] < dblMA_2 && Close[1] > dblMA_1) return("UP");
   if(Close[2] > dblMA_2 && Close[1] < dblMA_1) return("DN");
   
return("NO");
}

В функцию f_PriceMASyg() в качестве параметров передаются период скользящей средней, метод усреднения и тип цены при расчете скользящей средней. Предполагается, что расчеты проводятся на текущем ТФ (на котором запущен советник будет). Значение МАшки сравнивается с ценой закрытия бара Close[]. На выходе функция формирует строковое значение:
- "UP" - цена пересекла МАшку снизу вверх;
- "DN" - цена пересекла МАшку сверху вниз;
- "NO" - сигнал не определен;
Таким образом, в основном коде программы использование данной функции может выглядеть так:
Код: выделить все
   string strSyg = f_PriceMASyg(intMAPe, intMAMe, intMAAp);
   if(strSyg == "UP")
   {
      // действия если сигнал на покупку   
   }
   else if(strSyg == "DN")
   {
      // действия если сигнал на продажу
   }
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

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

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

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

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

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

cron