Поиск последнего экстремума

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

Поиск последнего экстремума

Сообщение Haos » 16 июн 2018, 21:20

Часто в коде необходимо найти максимальную или минимальную цену за последние бары. Это может использоваться как для выставления СЛ так и для его трала. Также и для определения ТП может быть использовано, но на самом деле, на этом возможности применения данного решения не ограничиваются.

Вначале напишем функцию для определения максимума цены за последние бары. В качестве параметров функции выберем:
sy - имя символа ("0" - текущий символ)
tf - период графика на котором производится поиск
mb - кол-во баров назад для поиска максимума цены
Код: выделить все
double f_GetBarsHigh(string sy, int tf, int ba)
{
/*
   Функция возвращает цену High наивысшего бара за последние ba баров.
   Параметры:
   sy - имя символа  ("0" - текущий символ)
   tf - период графика на котором производится поиск
   mb - кол-во баров назад для просмотра
*/
   int      int_BarH; // индекс наивысшего бара
   double   dbl_High; // значение HIGH у наивысшего бара
   
   if(sy == "0") sy = Symbol();
   int_BarH = iHighest(sy, tf, MODE_HIGH, ba, 0) ;
   dbl_High = iHigh(sy, tf, int_BarH);   

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

Поиск последнего экстремума

Сообщение Haos » 16 июн 2018, 21:27

Теперь напишем функцию для определения минимума цены за последние бары. В качестве параметров функции также выберем:
sy - имя символа ("0" - текущий символ)
tf - период графика на котором производится поиск
mb - кол-во баров назад для поиска максимума цены
Код: выделить все
double f_GetBarsLow(string sy, int tf, int ba)
{
/*
   Функция возвращает цену Low наинисшего бара за последние ba баров.
   Параметры:
   sy - имя символа  ("0" - текущий символ)
   tf - период графика на котором производится поиск
   mb - кол-во баров назад для просмотра
*/
   int      int_BarL; // индекс наинисшего бара
   double   dbl_Low; // значение LOW у наинисшего бара
   
   if(sy == "0") sy = Symbol();
   int_BarL = iLowest(sy, tf, MODE_LOW, ba, 0) ;
   dbl_Low = iLow(sy, tf, int_BarL);   

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

Поиск последнего экстремума

Сообщение Haos » 16 июн 2018, 21:37

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


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

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

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

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

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