Обзор встроенных индикаторов

Как известно, терминал содержит большой набор популярных индикаторов, которые доступны также и через программное API — без необходимости реализовывать их алгоритмы на MQL5. Создаются они с помощью встроенных функций аналогичных iCustom. Например, мы ранее в обучающих целях создали собственные версии WPR и тройной скользящей средней EMA. Однако соответствующие индикаторы можно использовать прямо "из коробки": для них существуют функции iWPR и iTEMA. Эти и другие технические индикаторы перечислены в нижеприведенной таблице.

Все встроенные индикаторы принимают в качестве первых двух параметров строку с рабочим символом и таймфрейм, а также возвращают целое число — дескриптор индикатора. В общем виде прототип всех функций выглядит так:

int iFunction(const string symbol, ENUM_TIMEFRAMES timeframe, ...)

Вместо многоточия следуют специфические параметры конкретного индикатора. Их количество и типы отличаются. Некоторые индикаторы не имеют параметров.

Например, WPR имеет один параметр, как и в нашей самодельной версии — период: int iWPR(const string symbol, ENUM_TIMEFRAMES timeframe, int period). А встроенный индикатор фракталов, в отличие от нашей версии, не имеет специальных параметров: int iFractals(const string symbol, ENUM_TIMEFRAMES period). В данном случае порядок фракталов жестко задан и равен 2, то есть перед экстремумом (вершиной или впадиной) и за ним должно находиться как минимум по два бара с менее выраженными ценами High и Low, соответственно.

Допустимо вместо символа задавать значение NULL — оно означает рабочий инструмент текущего графика, а значение 0 в параметре timeframe соответствует текущему таймфрейму графика, поскольку это также и значение PERIOD_CURRENT в перечислении ENUM_TIMEFRAMES (см. раздел Символы и таймфреймы).

Также следует иметь в виду, что разные типы индикаторов имеют разное количество буферов. Например, у скользящей средней или WPR только один буфер, а у фракталов — два. Количество буферов также отмечено в таблице в отдельной колонке.

Функция

Название индикатора

Параметры

Буферы

iAC

Accelerator Oscillator

1*

iAD

Accumulation / Distribution

ENUM_APPLIED_VOLUME volume

1*

iADX

Average Directional Index

int period

3*

iADXWilder

Average Directional Index by Welles Wilder

int period

3*

iAlligator

Alligator

int jawPeriod, int jawShift, int teethPeriod,int teethShift, int lipsPeriod, int lipsShift, ENUM_MA_METHOD method, ENUM_APPLIED_PRICE price

3

iAMA

Adaptive Moving Average

int period, int fast, int slow, int shift, ENUM_APPLIED_PRICE price

1

iAO

Awesome Oscillator

1*

iATR

Average True Range

int period

1*

iBands

Bollinger Bands

int period, int shift, double deviation, ENUM_APPLIED_PRICE price

3

iBearsPower

Bears Power

int period

1*

iBullsPower

Bulls Power

int period

1*

iBWMFI

Market Facilitation Index by Bill Williams

ENUM_APPLIED_VOLUME volume

1*

iCCI

Commodity Channel Index

int period, ENUM_APPLIED_PRICE price

1*

iChaikin

Chaikin Oscillator

int fast, int slow, ENUM_MA_METHOD method, ENUM_APPLIED_VOLUME volume

1*

iDEMA

Double Exponential Moving Average

int period, int shift, ENUM_APPLIED_PRICE price

1

iDeMarker

DeMarker

int period

1*

iEnvelopes

Envelopes

int period, int shift, ENUM_MA_METHOD method, ENUM_APPLIED_PRICE price, double deviation

2

iForce

Force Index

int period, ENUM_MA_METHOD method, ENUM_APPLIED_VOLUME volume

1*

iFractals

Fractals

2

iFrAMA

Fractal Adaptive Moving Average

int period, int shift, ENUM_APPLIED_PRICE price

1

iGator

Gator Oscillator

int jawPeriod, int jawShift, int teethPeriod,int teethShift, int lipsPeriod, int lipsShift, ENUM_MA_METHOD method, ENUM_APPLIED_PRICE price

4*

iIchimoku

Ichimoku Kinko Hyo

int tenkan, int kijun, int senkou

5

iMomentum

Momentum

int period, ENUM_APPLIED_PRICE price

1*

iMFI

Money Flow Index

int period, ENUM_APPLIED_VOLUME volume

1*

iMA

Moving Average

int period, int shift, ENUM_MA_METHOD method, ENUM_APPLIED_PRICE price

1

iMACD

Moving Averages Convergence-Divergence

int fast, int slow, int signal, ENUM_APPLIED_PRICE price

2*

iOBV

On Balance Volume

ENUM_APPLIED_VOLUME volume

1*

iOsMA

Moving Average of Oscillator (MACD histogram)

int fast, int slow, int signal, ENUM_APPLIED_PRICE price

1*

iRSI

Relative Strength Index

int period, ENUM_APPLIED_PRICE price

1*

iRVI

Relative Vigor Index

int period

1*

iSAR

Parabolic Stop And Reverse System

double step, double maximum

1

iStdDev

Standard Deviation

int period, int shift, ENUM_MA_METHOD method, ENUM_APPLIED_PRICE price

1*

iStochastic

Stochastic Oscillator

int Kperiod, int Dperiod, int slowing, ENUM_MA_METHOD method, ENUM_APPLIED_PRICE price

2*

iTEMA

Triple Exponential Moving Average

int period, int shift, ENUM_APPLIED_PRICE price

1

iTriX

Triple Exponential Moving Averages Oscillator

int period, ENUM_APPLIED_PRICE price

1*

iVIDyA

Variable Index Dynamic Average

int momentum, int smooth, int shift, ENUM_APPLIED_PRICE price

1

iVolumes

Volumes

ENUM_APPLIED_VOLUME volume

1*

iWPR

Williams Percent Range

int period

1*

В правой колонке звездочкой * обозначены индикаторы с собственным окном (они выводятся под основным графиком).

Наиболее часто используются параметры задающие периоды индикатора (period, fast, slow и прочие вариации), а также сдвиг линий shift — когда он положителен, диаграммы сдвигаются вправо, когда отрицателен — влево, на заданное количество баров.

Многие параметры имеют типы прикладных перечислений ENUM_APPLIED_PRICE, ENUM_APPLIED_VOLUME, ENUM_MA_METHOD. Мы уже знакомились с ENUM_APPLIED_PRICE в разделе Перечисления. Представим здесь его и другие типы более формально, в виде таблиц с описаниями.

Идентификатор

Описание

Значение

PRICE_CLOSE

Цена закрытия бара

1

PRICE_OPEN

Цена открытия бара

2

PRICE_HIGH

Максимальная цена на баре

3

PRICE_LOW

Минимальная цена на баре

4

PRICE_MEDIAN

Медианная цена, (high+low)/2

5

PRICE_TYPICAL

Типичная цена, (high+low+close)/3

6

PRICE_WEIGHTED

Средневзвешенная цена, (high+low+close+close)/4

7

Индикаторы, работающие с объемами, могут оперировать тиковыми объемами (фактически, это счетчик тиков) или реальными объемами (они, как правило, доступны только для биржевых инструментов). Оба типа сведены в перечисление ENUM_APPLIED_VOLUME.

Идентификатор

Описание

Значение

VOLUME_TICK

Тиковый объем

0

VOLUME_REAL

Торговый объем

1

В основе многих технических индикаторов лежат методы сглаживания (или усреднения — от английского "Moving Average") таймсерий. Терминал поддерживает 4 наиболее распространенных метода сглаживания, которые задаются в MQL5 с помощью элементов перечисления ENUM_MA_METHOD.

Идентификатор

Описание

Значение

MODE_SMA

Простое усреднение

0

MODE_EMA

Экспоненциальное усреднение

1

MODE_SMMA

Сглаженное усреднение

2

MODE_LWMA

Линейно-взвешенное усреднение

3

Для индикатора Стохастик, пример использования которого мы рассмотрим в следующем разделе, существует два варианта расчета: по ценам Close или по ценам High/Low. Это отражено в специальном перечислении ENUM_STO_PRICE.

Идентификатор

Описание

Значение

STO_LOWHIGH

Построение по ценам Low/High

0

STO_CLOSECLOSE

Построение по ценам Close/Close

1

Назначение и нумерация буферов для тех индикаторов, которые имеют больше одного буфера, приведено в следующей таблице.

Индикаторы

Константы

Описания

Значение

ADX, ADXW

 

MAIN_LINE

Основная линия

0

 

PLUSDI_LINE

Линия +DI

1

 

MINUSDI_LINE

Линия –DI

2

iAlligator

 

GATORJAW_LINE

Линия челюстей

0

 

GATORTEETH_LINE

Линия зубов

1

 

GATORLIPS_LINE

Линия губ

2

iBands

 

BASE_LINE

Основная линия

0

 

UPPER_BAND

Верхняя граница

1

 

LOWER_BAND

Нижняя граница

2

iEnvelopes, iFractals

 

UPPER_LINE

Верхняя линия

0

 

LOWER_LINE

Нижняя линия

1

iGator

 

UPPER_HISTOGRAM

Верхняя гистограмма

0

 

LOWER_HISTOGRAM

Нижняя гистограмма

2

iIchimoku

 

TENKANSEN_LINE

Линия Tenkan-sen

0

 

KIJUNSEN_LINE

Линия Kijun-sen

1

 

SENKOUSPANA_LINE

Линия Senkou Span A

2

 

SENKOUSPANB_LINE

Линия Senkou Span B

3

 

CHIKOUSPAN_LINE

Линия Chikou Span

4

iMACD, iRVI, iStochastic

 

MAIN_LINE

Основная линия

0

 

SIGNAL_LINE

Сигнальная линия

1

Формулы расчета всех индикаторов приведены в документации MetaTrader 5.

Полную техническую информацию по вызову функций индикаторов, включая примеры исходных кодов, можно найти в документации по MQL5. Далее мы приведем несколько примеров.