Основы языка MQL4. Технические индикаторы и встроенные функции
Часть 3
Технические индикаторы
Почти все эксперты используют технические индикаторы. Если посмотреть даже на пример простого советника, который входит в поставку (MACD Sample), то вы увидите, что он использует технические индикаторы. Сейчас вы узнаете, каким образом можно получить показатели всех доступных технических индикаторов. Каждому из них соответствует определенная функция, которая может вычислить показатель на любом доступном инструменте и тайм фрейме. При этом вам не нужно беспокоиться о том, открыт ли сейчас этот индикатор на графике или нет. Это не имеет никакого значения.
Теперь давайте детально остановимся на параметрах функций технических индикаторов. Дело в том, что большая часть из них повторяется.
Например, все функции, которые мы сейчас рассмотрим, для вычисления показателей технических индикаторов имеют одинаковые 2 первых аргумента и 1 последний:
- symbol – первый аргумент, который определяет, какой финансовый инструмент (валютную пару) использовать для вычисления показателей технического индикатора. То есть, к какому графику применить технический индикатор. Что бы использовать индикатор на текущем графике, используйте константу NULL (или 0). Под текущий графиком нужно понимать, тот график, на котором вы будете запускать ваш скрипт (эксперт, индикатор). Если вам нужен другой инструмент, то нужно использовать его название в виде строки («EURUSD»,»GBPUSD» и т.д.).
- timeframe – второй аргумент, который определяет, на каком тайм фрейме использовать индикатор. Если вам нужен тайм фрейм, который используется на текущем графике, то используйте 0 (нуль). Если вам нужен какой-то другой тайм фрейм, то воспользуйтесь одной из предопределенных констант:
- PERIOD_M1 - 1 минута
- PERIOD_M5 - 5 минут
- PERIOD_M15 - 15 минут
- PERIOD_M30 - 30 минут
- PERIOD_H1 - 1 час
- PERIOD_H4 - 4 часа
- PERIOD_D1 - 1 день
- PERIOD_W1 - 1 неделя
- PERIOD_MN1 - 1 месяц
- shift – последний аргумент, который определяет, к какому бару применить индикатор. Вспомните первую статью: что бы узнать цену закрытия последнего бара использовались индексы, начиная с нуля. То есть Close[0] – цена закрытия последнего бара, Close[1] – предпоследнего и т.д. Так вот, этот аргумент работает аналогичным образом, подобно индексу в массивах. Что бы узнать показатель индикатора в последнем баре, shift должен быть равен 0, в предпоследнем – 1 и т.д.
Технические индикаторы очень часто используют средние значения по нескольким барам для вычислений. То есть они берут различные цены (открытия, закрытия и т.д.) по нескольким барам и находят среднее значение за каким-то определенным методом. Также часто используется смещение. Поэтому среди параметров можно встретить вот такие:
- applied_price – определяет какой тип цены использовать для получения среднего значения. Есть такие предопределенные константы для выбора используемой цены:
- PRICE_CLOSE - цена закрытия
- PRICE_OPEN - цена открытия
- PRICE_HIGH - максимальная цена
- PRICE_LOW - минимальная цена
- PRICE_MEDIAN - средняя цена, (high+low)/2
- PRICE_TYPICAL - типичная цена, (high+low+close)/3
- PRICE_WEIGHTED - взвешенная цена закрытия, (high+low+close+close)/4
- ma_method – определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
- MODE_SMA - простое скользящее среднее
- MODE_EMA - экспоненциальное скользящее среднее
- MODE_SMMA - сглаженное скользящее среднее
- MODE_LWMA - линейно-взвешенное скользящее среднее
- period – определяет сколько баров будет использовано для получения среднего значения.
- ma_shift – сдвиг средней линий в барах. Если сдвиг положительный, то линия смещается вправо. И наоборот, если сдвиг отрицательный, то линия смещается влево.
Вышеописанные параметры будут встречаться очень часто. Поэтому, когда встретите подобные параметры, вы уже должны понимать, что эта функция использует средние значения для вычисления своих показателей. Что бы узнать, как именно рассчитываются показатели и какое участие принимают средние значения, воспользуйтесь ссылкой, которую можно найти после короткого описания каждой функции.
Еще один важный момент: все эти индикаторы (функции) можно поделить на две категории:
- простые – когда индикатор имеет всего один показатель. Например: Acceleration/Deceleration (AC), Accumulation/Distribution (A/D), DeMarker (DeM) и т.д. То есть на графике индикатор имеет лишь одну линию/гистограмму, показатель которой и возвращает при вызове соответствующей ему функции. Вот пример нескольких простых индикаторов, используемых на одном графике:

- сложные – когда индикатор имеет несколько показателей (линий). Например: Alligator, Average Directional Movement Index (ADX), Bollinger Bands (BB), Average Convergence/Divergence (MACD) и т.д. В таком случае вы должны указать, какой показатель (линию) должен возвращать индикатор. Для этого во всех функциях сложных индикаторов используется параметр mode. С помощью определенных констант вы указываете, что нужно возвращать. Вот пример нескольких сложных индикаторов, используемых на одном графике:

К описанию функций каждого индикатора также будет добавлен поясняющий рисунок, примеры использования (используются различные цвета для того, что бы было видно, что за что отвечает) и ссылка с описанием самого индикатора (как его использовать при торговле, суть индикатора). Предполагается, что вы знакомы с индикаторами и использовали их на практике. Я советую вам один раз прочитать описания функций из этой статьи, что бы понять, как ними пользоваться и посмотреть примеры. Но что бы вспомнить назначение каждого аргумента в дальнейшем, используйте справку из
MetaEditor
-а. Для этого откройте окно
Инструментарий (ToolBox)
с помощью горячих клавиш
Ctrl+T
и перейдите на вкладку
Справка (Help)
. Там разъясняется каждый параметр, кроме того, там есть удобный список всех функций, поэтому вы быстро найдете, то, что ищете. Если справка на английском языке, то его можно переключить на русский через меню
View->Languages->Russian
. После чего нужно перезапустить
MetaEditor
.
Acceleration/Deceleration (AC) или Ускорения/Замедления
Индикатор Acceleration/Deceleration (AC) или Ускорения/Замедления используется для измерения скорости изменения цены (замедление, ускорение). http://ta.mql4.com/ru/indicators/bills/acceleration_deceleration
Прототип функции:
double iAC(string symbol, int timeframe, int shift)
Параметры:
- symbol – определяет, какой финансовый инструмент (валютную пару) использовать для вычисления показателей технического индикатора. Используйте NULL (или 0), если вам нужен текущий (активный) инструмент (график).
- timeframe – определяет, на каком тайм фрейме (периоде) использовать индикатор. Используйте 0 для текущего периода или одну из констант (PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1, PERIOD_MN1).
- shift – определяет, к какому бару применить индикатор.
Примеры использования:

double ac;
ac=iAC(0,0,0);
// ускорение последнего бара на активном графике и таймфрейме
ac=iAC(0,0,1);
// ускорение предпоследнего бара на активном графике и таймфрейме
ac=iAC("GBPUSD",PERIOD_M30,0);
// ускорение последнего бара на графике GBPUSD, таймфрейм - 30 минут
Accumulation/Distribution (A/D) или Накопления/Распределения
Индикатор Accumulation/Distribution (A/D) или Накопления/Распределения используется для подтверждения ценовых изменений через измерения объемов.
http://ta.mql4.com/ru/indicators/volumes/accumulation_distribution
Прототип функции:
double iAD(string symbol, int timeframe, int shift)
Параметры:
- symbol – определяет, какой финансовый инструмент (валютную пару) использовать для вычисления показателей технического индикатора. Используйте NULL (или 0), если вам нужен текущий (активный) инструмент (график).
- timeframe – определяет, на каком тайм фрейме (периоде) использовать индикатор. Используйте 0 для текущего периода или одну из констант (PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1, PERIOD_MN1).
- shift – определяет, к какому бару применить индикатор.
Примеры использования:

double ad;
ad=iAD(0,0,0);
// накопление на последнем баре на текущем графике и периоде
ad=iAD(0,0,Bars-1);
// накопление на первом доступном баре, активный график и период
ad=iAD("GBPUSD",PERIOD_M5,5);
// накопление на 6-ом последнем баре на GBPUSD, период - 5 минут
|