Как получить значение скользящей средней?

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

Как получить значение скользящей средней?

Сообщение Haos » 05 май 2016, 10:03

Для получения значения скользящей средней (МАшки) в MQL используется функция iMA(). У этой функции 7 параметров.
Рассмотрим их.
1-ый параметр для задания имени символа на котором происходит расчет МАшки. Типа этого параметра строковый, т.е. string. Поэтому разработчик должен указать имя символа, например, так - "EURUSD" или так - "USDJPY". Если (почти всегда) нужно значение МАшки для актива, на котором запущен советник, то используется константа NULL или "0".
Начиная со 2-го параметра все имеют тип int.
2-ой параметр - это ТФ. Может быть одним из значений перечисления ENUM_TIMEFRAMES. Для текущего графика нужно ввести 0 (ноль).
3-ий параметр - период усреднения МАшки. Например, 200 или 100 или 25 и т.п.
4-ый параметр - сдвиг МАшки относительно ценового графика (вперед или назад). Например, используется в индикаторе Ишимоку или в МАшках, рассматриваемых у Ди Наполи. Часто это значения меньше 10. Т.е., например, 3, 5 и т.д. Но, в основном, МАшка в торговых системах не сдвигается, т.е. вводить нужно 0 (ноль).
5-ый параметр - метод усреднения МАшки. Может быть любым из значений:
MODE_SMA - простое усреднение;
MODE_EMA - экспоненциальное усреднение
MODE_SMMA - сглаженное усреднение
MODE_LWMA - линейно-взвешенное усреднение
По частоте использования в торговых системах, в основном, используется простое и экспоненциальное усреднение.
6-ой параметр - тип цены, взятой для расчета МАшки. Может быть одним из значений:
PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL, PRICE_WEIGHTED.
Наиболее часто применяется усреднение по цене закрытия - PRICE_CLOSE.
7- параметр - номер получаемого значения из набора значений МАшки на каждом баре (или сдвиг относительно текущего бара на указанное количество периодов назад). Например, для текущего бара чтобы получить значение МАшки нужно ввести 0 (ноль), для прошлого бара 1 и т.д.

Возвращаемое значение индикатора iMA() имеет тип double.
Создадим в коде советника переменную типа double под названием dblMA, чтобы получить значение простой скользящей средней, рассчитанной по цене закрытия на прошлом баре, на текущем активе, на текущем ТФ, с периодом 100, без смещения относительно графика:
Код: выделить все
   double dblMA = iMA("0", 0, 100, 0, MODE_SMA, PRICE_CLOSE, 1);

Чтобы вывести это значение для отображения на графике воспользуемся функцией Comment(). Тогда код в функции OnTick() примет вид:
Код: выделить все
void OnTick()
{
   double dblMA = iMA("0", 0, 100, 0, MODE_SMA, PRICE_CLOSE, 1);
   Comment( "\n", "Значение МАшки: ", DoubleToStr(dblMA, _Digits));
}

Запустив советник на выполнение и отобразив на графике индикатор скользящей средней с теми же параметрами, мы убедимся в правильности работы советника:
01.png


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

Re: Как получить значение скользящей средней?

Сообщение Haos » 25 май 2016, 08:25

Используя знания полученные в статье Как сделать входные параметры в коде?, вынесем необходимые параметры для получения значения скользящей средней во входные.
Введем следующие строчки кода в разделе для входных параметров:
Код: выделить все
//***************************************************************************************

input int      intMAPe  = 100;   // Период скользящей средней
input int      intMASh  = 0;     // Сдвиг скользящей средней
input int      intMAMe  = 0;     // Метод усреднения скользящей средней (0 / 1 / 2 / 3)
input int      intMAAp  = 0;     // Тип цены скользящей средней (0 / 1 / 2 / 3 / 4 / 5 / 6)

//***************************************************************************************

Все переменные согласно спецификации имеют тип данных int. Переменные intMAMe и intMAAp имеют ограниченный набор значений. Например, для методов усреднения скользящей средней имеются следующие значения, зарезервированные в МКУЭль:
0 - Простое усреднение;
1 - Экспоненциальное усреднение;
2 - Сглаженное усреднение;
3 - Линейно-взвешенное усреднение.
Также необходимо прописать данные переменные в команду расчета скользящей средней в теле функции OnTick():
Код: выделить все
double dblMA = iMA("0", 0, intMAPe, intMASh, intMAMe, intMAAp, 1);

Скомпилируем советник и запустим на выполнение. После запуска увидим окно со входными параметрами советника:
02.png

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


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

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

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

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

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

cron