Скачать MetaTrader 5

Язык MQL4 для "чайников". Технические индикаторы и встроенные функции

3 августа 2007, 13:25
Antoniuk Oleg
22
9 463

Введение

Это третья статья из цикла "Язык MQL4 для 'чайников'". В первых двух статьях мы познакомились с основами языка MQL4, фундаментом дальнейшего развития. Сейчас мы будем разбираться, как использовать встроенные функции и функции для работы с техническими индикаторами. Последние будут жизненно необходимы при разработке в дальнейшем ваших советников и индикаторов. Кроме того, мы на простом примере посмотрим, как можно отслеживать торговые сигналы для входа в рынок, что бы вы поняли, как правильно использовать индикаторы. А в конце статьи вы узнаете кое-что новенькое и интересное про сам язык.


Математические функции

Начнем с наиболее простых, но все же используемых и полезных математических функций.


MathAbs

Прототип функции:

double MathAbs(double value)

Очень простая функция, которая возвращает абсолютное значение (модуль числа). Это значит, что, если вы, например, примените ее к отрицательному числу, то в результате получите положительное число.

Примеры использования:

int a=-10;
double b=-20.0;
double c=7.0;
 
a=MathAbs(a); // теперь a равно 10
b=MathAbs(b); // теперь b равно 20.0
c=MathAbs(c); // значение c не изменится, так как, оно и так было положительно


MathCeil, MathFloor и MathRound

Прототипы функций:

double MathCeil(double x)
double MathFloor(double x)
double MathRound(double value)

Эти три функции очень похожи между собой: все они округляют число до целого. Но у каждой своя маленькая особенность:

MathCeil округляет таким образом, что, если имеется даже одна тысячная целого (например, 1.001), то это уже считается целым числом. То есть округление происходит в сторону, где получим большее значение. Например:

double a;
a=MathCeil(1.001);  // a=2.0, даже одна тысячная округляется до целого
a=MathCeil(1.999);  // a=2.0
a=MathCeil(-1.001); // a=-1.0, все правильно, так как, -1.0 больше чем -1.001
a=MathCeil(-1.999); // a=-1.0, правильно, -1.0 больше чем -1.999

MathFloor делает тоже, что и MathCeil, с точностью до наоборот. То есть, если нужно округлить положительное число, то оно просто лишиться дробной части:

double a;
a=MathFloor(1.999); // a=1.0, какой бы большой не была дробная часть, она убирается
a=MathFloor(1.001); // a=1.0
a=MathFloor(-1.001); // a=-2.0, верно, так как, -2.0 меньше чем -1.001
a=MathFloor(-1.999); // a=-2.0, все верно, -2.0 меньше -1.999

MathRound позволяет округлить число в привычном для нас с вами смысле. То есть, если дробная часть достаточно большая (0.5 и более), то она будет округлена до 1. Если дробная часть мала (меньше 0.5), то она будет округлена до 0, то есть она просто исчезнет. Примеры:

double a;
a=MathRound(1.1);   // a=1.0, дробная часть слишком мала (0.1)
a=MathRound(1.57);  // a=2.0, дробная часть достаточна, что бы быть округленной до 1
a=MathRound(-3.1);  // a=-3.0 недостаточно
a=MathRound(-6.99); // a=-7.0 достаточно


MathMax

MathMin

Прототипы функций:

double MathMax(double value1, double value2)
double MathMin(double value1, double value2)

Это 2 очень похожие функции, которые принимают 2 аргумента, а возвращают соответственно наибольший и наименьший. Примеры:

double a;
a=MathMax(50.0,1.0);  // a=50.0
a=MathMin(10.0,12.0); // a=10.0

MathPow

Прототип функции:

double MathPow(double base, double exponent)

Эта функция позволяет возвести число base в степень exponent. Примеры:

double a;
a=MathPow(5.0,2.0);  // a=25.0, 5 во 2-ой степени
a=MathPow(2.0,8.0);  // a=256.0, 2 в 8-ой степени
a=MathPow(25.0,0.5); // a=5.0, вы же знали, что число в степи 0.5 это его квадратный корень?

MathSqrt

Прототип функции:

double MathSqrt(double x)

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

double a;
a=MathSqrt(9.0);    // a=3.0
a=MathSqrt(25.0);   // a=5.0
a=MathSqrt(-256.0); // a=0.0, я предупреждал


MathLog

Прототип функции:

double MathLog(double x)

Еще кто-то помнит, что такое логарифм? Логарифм числа a по основанию b равен показателю степени, в которую нужно возвести число b, чтобы получить число a. Широкое применение нашли логарифмы по основаниям e (число Эйлера) — натуральные логарифмы (lna) и по основанию 10 — десятичные логарифмы (lg a). Что бы вспомнить больше, а возможно и узнать что-то новенькое, воспользуйтесь этой ссылкой:
http://ru.wikipedia.org/wiki/Логарифм

Так вот, функция MathLog предназначена для извлечения натурального логарифма из числа х. Не нужно узнавать натуральный логарифм отрицательных чисел или нуля. В таком случае вы получите -1. Примеры использования:

double a;
a=MathLog(10.0);  // a=2.30258509
a=MathLog(0.0);   // a=-1.0, неправильно
a=MathLog(-10.0); // a=-1.0, неверно


MathExp

Прототип функции:

double MathExp(double d)

Эта функция возвращает число e, возведенное в степень d. Многие наверняка не помнят про это число.
e — математическая константа, основание натурального логарифма, иррациональное и трансцендентное число. e = 2,718281828459045… Иногда число e называют числом Эйлера или неперовым числом. Играет важную роль в дифференциальном и интегральном исчислении. Узнать больше про число Эйлера можно по этой ссылке:
http://ru.wikipedia.org/wiki/Число_Эйлера

Если вы укажите слишком большую степень, то произойдет переполнение и будет возвращен нуль. Насколько большой должна быть степень, что бы произошла ошибка? Давайте узнаем это и проделаем небольшой эксперимент:

double exponent=1.0; // тут будем хранить показатель степени
double result=1.0;   // возвращаемый функцией результат
int i=0;             // количество итераций цикла
 
while(result!=0.0)   // пока результат не равен нулю(пока не произошло переполнение)
{
   result=MathExp(exponent); // запоминаем очередной результат
   exponent*=10.0;           // увеличиваем показатель степени
   i++;                      // очередная итерация пройдена
}
MessageBox("i="+i); // результат эксперимента

А происходит следующее: каждый раз мы пытаемся вызвать функцию MathExp и с каждой итерацией степень увеличивается в 10 раз, пока, в конце концов, не произойдет переполнение и не будет возвращен нуль. В результате я получил i=310, что означает: в качестве степени вы можете использовать числа 1*10 в 309 степени (только представьте себе число длиной в 309 цифр!!). Поэтому, я думаю, что про переполнение вы можете не беспокоится.


MathMod

Прототип функции:

double MathMod(double value,double value2)

Эта функция позволяет узнать остаток от деления двух чисел. Например, 5 поделить на 2 равно 2 и остаток равен 1. Первый аргумент value – что делим, второй value2 – на что. И возвращается остаток. Примеры:

double a;
 
a=MathExp(5,2); // a=1.0
a=MathExp(10,3); // a=1.0, все правильно
a=MathExp(50,10); // a=0.0, делится без остатка

MathRand и MathSrand

Прототипы функций:

int MathRand()
void MathSrand(int seed)

MathRand возвращает одно за другим псевдослучайные целые числа в диапазоне от 0 до 32767. Тут у вас возникает куча вопросов: что значит приставка «псевдо»? Что за странный диапазон, а если мне надо от 5 до 10? Почему именно 32767? Отвечаю по порядку:
«Псевдо» означает, что числа не совсем случайные и все же зависят от чего-то. Допустим, вы написали скрипт, который выдает 5 псевдослучайных чисел, например, так:

int a=0;
 
while(a<5)
{
   MessageBox(“random=”+MathRand());
   a++;
}

Так вот, числа действительно будут случайными, но запустив скрипт еще раз, вы заметите, что последовательность будет постоянно повторяться. Это все потому, что существует число, от которого отталкивается функция MathRand. Будем называть его начальным числом. Что бы его изменить, нужно воспользоваться другой функцией – MathSrand. Эта функция принимает единственный аргумент – начальное число, от которого будут зависеть все псевдослучайные числа. Представьте себе, что начальное число – это плод, из которого вырастет дерево (случайные числа). По умолчанию начальное число равно единице. Таким образом, что бы получить действительно случайную последовательность нам нужно сначала присвоить начальному числу уникальное значение. Как это сделать? Есть еще одна функция TimeLocal, которая не имеет аргументов и возвращает количество секунд, прошедших после 00:00 1 января 1970 года. Эта функция идеально подходит, так как в большинстве случаев получим уникальное число. Ну как, еще не запутались? Вот как это выглядит:

int a=0;
MathSrand(TimeLocal()); // присваиваем начальному числу уникальное значение
 
while(a<5)
{
   MessageBox(“random=”+MathRand());
   a++;
}

Теперь каждый раз будем получать новую последовательность. Поехали дальше.
От 0 до 32767. Почему 32767? Смотрите: максимальное значение, которое может принимать int равно 2 в степени 16 (потому что значение переменной типа int занимает 16 бит в памяти компьютера, без учета знака) равно 32768, но так как мы считаем с нуля, то нужно отнять единицу. Вот и получили 32767.
Что бы получить любой нужный вам диапазон, нужно воспользоваться оператором % - остаток от деления. Например, если нужно получить случайные числа в диапазоне от 0 до 5:

int a=0;
MathSrand(TimeLocal());
while(a<5)
{
   MessageBox(“random=”+MathRand()%6);
   a++;
}

Обратите внимание, что мы написали MathRand()%6, а не MathRand()%5, это потому, что наш диапазон начинается с нуля, то есть нужно добавить еще единицу. Теперь, допустим, вам нужны случайные числа в диапазоне от 5 до 10:

MessageBox(“random=”+MathRand()%6+5); // просто добавляем нужное нам смещение

Аналогично можно получить и диапазон с отрицательными числами, например, от -5 до 5:

MessageBox(“random=”+MathRand()%11-5);

Если вам нужны только отрицательные числа, то умножьте результат на -1. Например, нужен диапазон от -10 до -20:

MessageBox(“random=”+(MathRand()%11+10)*(-1));

Если вам нужно получить случайное дробное число, например, в диапазоне от 0.0 до 1.0 с точностью до тысячной, то воспользуйтесь таким кодом:

MessageBox(“random=”+MathRand()%1001/1000.0);

Сначала мы создаем случайное число в диапазоне от 0 до 1000, а потом делим его на 1000.0. Обратите внимание, что делить нужно именно на 1000.0 (с плавающей запятой), а не на 1000(целое). В противном случае получим нуль, так как будет произведено округление.


Тригонометрические и обратные тригонометрические функции

Тригонометрические функции - математические функции от угла. Они важны при исследовании периодических процессов. С тригонометрическими функциями тесно связаны обратные им функции. Более подробно про все эти функции можно прочитать:
http://ru.wikipedia.org/wiki/Тригонометрические_функции
http://en.wikipedia.org/wiki/Trigonometric_function
http://en.wikipedia.org/wiki/ArcSin
Все эти функции в MQL4 принимают аргумент в радианах, а не градусах. То есть, если вы хотите узнать, чему равен синус 20 градусов, то сначала нужно перевести 20 градусов в радианы, например, так:

MathSin(20.0*3.14159/180.0);

То есть 1 градус = пи / 180. Удобно объявить и использовать константу в начале программы, если вы часто используете тригонометрические функции:

#define PI 3.1415926535897

MathSin, MathCos, MathTan, MathArcsin, MathArccos и MathArctan

Прототипы функций:

double MathSin(double value)
double MathCos(double value)
double MathTan(double x)
double MathArcsin(double x)
double MathArccos(double x)
double MathArctan(double x)

Остановимся на особенностях некоторых функций. MathTan принимает значения в диапазоне от -263 до 263, если вы превысите эти ограничения, то получите неопределенное число. MathArcsin и MathArccos принимают значения в диапазоне от -1 до 1, иначе вы получите 0 и соответствующее сообщение в журнале эксперта. MathArctan возвращает 0, если принимает 0.


Новые функции для вывода сообщений

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


Alert

Прототип функции:

void Alert(...)

Выводит диалоговое окно, которое содержит ваши сигналы (информацию). При вызове функции вы услышите специальный звуковой сигнал, который можно изменить или отключить через настройки терминала: Сервис -> Настройки -> вкладка События. Окно будет иметь следующий вид:

Вы можете изменять размеры окна для удобного просмотра большого количества информации. Кроме того, прошлые вызовы функции всегда можно просмотреть, так как они не удаляются. Также вы можете произвести несколько вызовов подряд, и получите окно с активным последним сигналом, при этом не нужно каждый раз нажимать на «ОК». Вы можете использовать функцию подобно тому, как вы используете MessageBox:

Alert(“signal type:”+signalType);
Alert(“random=”+MathRand()%1001);

Но задумано было по-другому. Предполагается, что вы должны просто перечислить параметры для вывода через запятую. То есть, получается то же самое, что и в примере выше, но вместо «+» нужно использовать «,». Я советую вам использовать второй вариант:

Alert(“signal type:”,signalType);
Alert(“random=”,MathRand()%1001);

Comment

Прототип функции:

void Comment(...)

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

Comment(“some usefull information”);




Print

Прототип функции:

void Print( ...)

Еще одна аналогичная функция, которая выводит сообщения в журнал экспертов:

Print(“processing...”);



Кроме того, журнал экспертов сохраняет все сообщения в соответствующем файле (название соответствует дате) на вашем компьютере в папке MetaTrader 4\experts\logs:



Также нужно сделать несколько замечаний, которые касаются всех трех функций. Вы не можете выводить массивы, просто указав их, как параметр. Нужно выводить их поэлементно, например, так:

for(int a=0;a<100;a++)
Alert("Close[",a,"]=",Close[a]);

Вы можете вывести максимум 64 параметра в каждой из этих функций. Каждый вызов функции Alert также записывается в журнал эксперта. Тип double будет выводиться с точностью в 4 цифры после точки.


Технические индикаторы

Почти все эксперты используют технические индикаторы. Если посмотреть даже на пример простого советника, который входит в поставку (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 минут


Alligator или Аллигатор

Индикатор Alligator (Аллигатор) - это комбинация 3-ох скользящих средних, использующих фрактальную геометрию и нелинейную динамику.
http://ta.mql4.com/ru/indicators/bills/alligator
Прототип функции:

double iAlligator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period, 
                   int teeth_shift, int lips_period, int lips_shift, int ma_method, int applied_price, 
                   int mode, 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).
  • jaw_period - период усреднения челюсти аллигатора (синяя линия)
  • jaw_shift - смещение челюсти аллигатора
  • teeth_period - период усреднения зубов аллигатора (красная линия)
  • teeth_shift - смещение зубов аллигатора
  • lips_period - период усреднения губ аллигатора (зеленая линия)
  • lips_shift - смещение губ аллигатора
  • ma_method – определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
    • MODE_SMA - простое скользящее среднее
    • MODE_EMA - экспоненциальное скользящее среднее
    • MODE_SMMA - сглаженное скользящее среднее
    • MODE_LWMA - линейно-взвешенное скользящее среднее
  • 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
  • mode – определяет, значение чего вы хотите узнать (челюстей, зуб или губ). Что бы выбрать, используйте одну из констант:
    • MODE_GATORJAW - линия челюсти аллигатора (синяя)
    • MODE_GATORTEETH - линия зубов аллигатора (красная)
    • MODE_GATORLIPS - линия губ аллигатора (зеленая)
  • shift – определяет, к какому бару применить индикатор.

Посмотрите, за что отвечают аргументы функции, если бы вы установили индикатор Аллигатор на графике. Такая аналогия поможет вам легко сориентироваться:



С помощью параметра mode укажите, что возвращать:


Примеры использования:

double jaw;
double teeth;
double lips;
 
jaw=iAlligator(0,0,13,8,8,5,5,3,MODE_SMA,PRICE_MEDIAN,MODE_GATORJAW,0);
// узнаем, чему равны «челюсти» (синяя линия) на текущем графике и периоде. При 
// этом используется простое скользящее среднее, цена – средняя. Периоды 
// усреднения для челюстей, зубов и губ – 13, 8 и 8 соответственно. Смещения: 
// 5, 5 и 3 соответственно. Показатель берется для последнего бара. 
 
teeth=iAlligator(EURUSD,PERIOD_H1,128,96,64,0,0,0,MODE_EMA,PRICE_TYPICAL,MODE_GATORTEETH,1);
// узнаем значение «зубов» (красная линия) на часовом графике EURUSD. 
// Используется экспоненциальное скользящее среднее и типичная цена. 
// Периоды усреднения: 128, 96 и 64. Смещение не используется. Показатель
// берется для предпоследнего бара.
 
lips=iAlligator(GBPUSD,PERIOD_D1,21,18,13,5,3,0,MODE_SMMA,PRICE_WEIGHTED,MODE_GATORLIPS,5);
// узнаем значение «губ» (зеленая линия) на дневном графике GBPUSD. 
// Используем сглаженное скользящее среднее и взвешенную цену закрытия.
// Усреднение за периодами: 21, 18 и 13. Смещения: 5, 3 и 0. Показатель 
// берем за 5-ый последний бар.


Average Directional Movement Index (ADX) или Индекс Среднего Направления Движения

Индикатор Average Directional Movement Index (ADX) или Индекс Среднего Направления Движения используется для определения наличия ценовой тенденции (тренда).
http://ta.mql4.com/ru/indicators/trends/average_directional_movement
Прототип функции:

double iADX(string symbol,int timeframe,int period,int applied_price,int mode,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).
  • period – количество баров, которые будут использованы для получения среднего значения.
  • mode – выбираем линию, значение которой получим. Используем такие предопределенные константы:
    • MODE_MAIN - основная линия
    • MODE_PLUSDI - линия +DI
    • MODE_MINUSDI - линия –DI
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:


Примеры использования:

double main;    // основная линия
double plusDi;  // линия +DI
double minusDi; // линия -DI
 
main=iADX(0,0,3,PRICE_CLOSE,MODE_MAIN,0);
// узнаем значение главной линии на активном графике и периоде на последнем баре. При этом
// используем усреднение по 3-ом барам, используется цена закрытия.
 
plusDi=iADX(USDCAD,PERIOD_M1,6,PRICE_OPEN,MODE_PLUSDI,1);
// узнаем значение линии +DI на минутном графике USDCAD на втором последнем баре. При этом
// используем усреднение по 6-ти барам, используется цена открытия.
 
minusDi=iADX(AUDUSD,PERIOD_H1,10,PRICE_HIGH,MODE_MINUSDI,5);
// узнаем значение линии -DI на часовом графике AUDUSD на шестом последнем баре. При этом
// используем усреднение по 10-ти барам, используется максимальная цена.


Average True Range (ATR) или Средний Истинный Диапазон

Индикатор Average True Range (ATR) или Средний Истинный Диапазон используется для определения волатильности рынка.
http://ta.mql4.com/ru/indicators/oscillators/average_true_range
Прототип функции:

double iATR(string symbol,int timeframe,int period,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).
  • period – количество баров, которые будут использованы для получения среднего значения.
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:



double atr;
 
atr=iATR(0,0,15,0);
// волатильность последнего бара на активном графике и периоде. 
// Используется 15 баров для получения среднего значения.
 
atr=iATR(EURUSD,PERIOD_M15,5,1);
// волатильность предпоследнего бара на пятнадцатиминутном графике EURUSD. 
// Используется 5 баров для получения среднего значения.
 
atr=iATR(USDCAD,PERIOD_H1,32,0);
// волатильность последнего бара на часовом графике USDCAD. 
// Используется 32 бара для получения среднего значения.


Awesome Oscillator (AO) или Чудесный Осциллятор Билла Вилльямса

Индикатор Awesome Oscillator (AO) или Чудесный Осциллятор Билла Вилльямса используется для определения движущей силы рынка.
http://ta.mql4.com/ru/indicators/bills/awesome
Прототип функции:

double iAO( 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 ao;
 
ao=iAO(0,0,0);
// движущая сила последнего бара на активном графике и периоде
 
ao=iAO(EURUSD,PERIOD_M5,0);
// движущая сила последнего бара на пятиминутном графике EURUSD
 
ao=iAO(EURAUD,PERIOD_W1,1);
// движущая сила предпоследнего бара на недельном графике EURAUD


Bears Power

Индикатор Bears Power используется для оценки баланса сил «медведей».
http://www.fibo-forex.ru/pages.php?page=1799
Прототип функции:

double iBearsPower(string symbol,int timeframe,int period,int applied_price,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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:

double bp;
 
bp=iBearsPower(0,0,5,PRICE_OPEN,0);
// баланс последнего бара на активном графике и периоде. Используем 5 баров для усреднения и цену открытия.
 
bp=iBearsPower("EURUSD",PERIOD_M5,32,PRICE_CLOSE,1);
// баланс предпоследнего бара на пятиминутном графике EURUSD. Используем 32 бара для усреднения и цену закрытия.
 
bp=iBearsPower("EURGBP",PERIOD_D1,51,PRICE_MEDIAN,0);
// баланс последнего бара на дневном графике EURGBP. Используем 51 бар для усреднения и среднюю цену.


Bollinger Bands (BB) или Полосы Боллинджера

Индикатор Bollinger Bands (BB) или Полосы Боллинджера используются для определения верхних и нижних границ нормального диапазона колебаний цен.
http://ta.mql4.com/ru/indicators/trends/bollinger_bands
Прототип функции:

double iBands( string symbol, int timeframe, int period, int deviation, int bands_shift,
               int applied_price, int mode, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • deviation – отклонение от основной линии.
  • bands_shift - cдвиг относительно цен.
  • 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
  • mode – выбираем линию, значение которой получим. Используем такие предопределенные константы:
    • MODE_UPPER - верхняя линия
    • MODE_LOWER - нижняя линия
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double bb;
 
bb=iBands(0,0,20,2,0,PRICE_LOW,MODE_LOWER,0);
// нижняя граница последнего бара на активном графике и периоде. 
// Используем 20 баров для усреднения, а также наименьшую цену.
// Отклонение от основной линии - 2, сдвиг не используем.
 
bb=iBands("EURUSD",PERIOD_H1,13,2,3,PRICE_HIGH,MODE_UPPER,1);
// верхняя граница предпоследнего бара на часовом графике EURUSD. 
// Используем 13 баров для усреднения, а также наибольшую цену.
// Отклонение от основной линии - 2, сдвиг - 3 бара.
 
bb=iBands("EURGBP",PERIOD_D1,21,3,4,PRICE_HIGH,MODE_UPPER,0);
// верхняя граница последнего бара на дневном графике EURGBP. 
// Используем 21 бар для усреднения, а также наибольшую цену.
// Отклонение основной линии - 3, сдвиг - 4 бара.


Bulls Power

Индикатор Bulls Power используется для оценки баланса сил «быков».
http://www.forexdealer.net/help/bul_hlp.htm
Прототип функции:

double iBullsPower(string symbol, int timeframe, int period, int applied_price, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:


double bp;
 
bp=iBullsPower(0,0,10,PRICE_CLOSE,1);
// баланс предпоследнего бара на активном графике и периоде. Используем 10 баров для усреднения
// и цену закрытия.
 
bp=iBullsPower("EURGBP",PERIOD_M1,21,PRICE_HIGH,1);
// баланс последнего бара на минутном графике EURGBP. Используем 21 бар для усреднения и наивысшую цену.
 
bp=iBullsPower("EURUSD",PERIOD_H1,33,PRICE_MEDIAN,0);
// баланс последнего бара на часовом графике EURUSD. Используем 33 бара для усреднения и среднюю цену.


Commodity Channel Index (CCI) или Индекс Товарного Канала

Индикатор Commodity Channel Index (CCI) или Индекс Товарного Канала используется для измерения отклонений цены инструмента от его среднестатистической цены.
http://ta.mql4.com/ru/indicators/trends/commodity_channel_index
Прототип функции:

double iCCI( string symbol, int timeframe, int period, int applied_price, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:

double cci;
   
cci=iCCI(0,0,14,PRICE_TYPICAL,0);
// индекс последнего бара на активном графике и периоде.
// Используем 14 баров для получения среднего значения и
// типичную цену.
 
cci=iCCI("EURUSD",PERIOD_M1,21,PRICE_HIGH,1);
// индекс предпоследнего бара на минутном графике EURUSD.
// Используем 21 бар для получения среднего значения и
// наивысшую цену.
 
 
cci=iCCI("EURGBP",PERIOD_D1,7,PRICE_CLOSE,0);
// индекс последнего бара на дневном графике EURGBP.
// Используем 7 баров для получения среднего значения и
// цену закрытия.


DeMarker (DeM)

Индикатор DeMarker (DeM) используется для прогнозирования разворота цен на основе разницы цен прошлых баров.
http://ta.mql4.com/ru/indicators/oscillators/DeMarker
Прототип функции:

double iDeMarker( string symbol, int timeframe, int period, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:

double dm;
   
dm=iDeMarker(0,0,13,0);
// показатель Демарка последнего бара на текущем графике и периоде.
// Используем 13 баров для получения среднего значения.
 
dm=iDeMarker("EURJPY",PERIOD_H4,51,1);
// показатель Демарка предпоследнего бара на четырехчасовом графике EURJPY.
// Используем 51 бар для получения среднего значения.
 
dm=iDeMarker("USDCAD",PERIOD_M30,21,0);
// показатель Демарка последнего бара на тридцатиминутном графике USDCAD.
// Используем 21 бар для получения среднего значения.


Envelopes или Огибающие Линии (Конверты)

Индикатор Envelopes или Огибающие Линии (Конверты) используется для определения границ колебаний цены на основе двух скользящих средних.
http://ta.mql4.com/ru/indicators/oscillators/envelopes
Прототип функции:

double iEnvelopes( string symbol, int timeframe, int ma_period, int ma_method, int ma_shift, 
                   int applied_price, double deviation, int mode, 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).
  • ma_period - количество баров, которые будут использованы для получения основной линии.
  • ma_method – определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
    • MODE_SMA - простое скользящее среднее
    • MODE_EMA - экспоненциальное скользящее среднее
    • MODE_SMMA - сглаженное скользящее среднее
    • MODE_LWMA - линейно-взвешенное скользящее среднее
  • ma_shift – сдвиг линий индикатора в барах. Если сдвиг положительный, то линии индикатора смещаются вправо. И наоборот, если сдвиг отрицательный, то линии смещаются влево.
  • 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
  • deviation – отклонение от основной линии в процентном соотношении. Например, если вы напишите 0.1, то это будет означать 10%, 0.25 – 25% и т.д.
  • mode - выбираем линию, значение которой получим. Используем такие предопределенные константы:
    • MODE_UPPER - верхняя линия
    • MODE_LOWER - нижняя линия
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double e;
   
e=iEnvelopes(0,0,21,MODE_SMA,0,PRICE_CLOSE,0.05,MODE_LOWER,0);
// нижняя граница последнего бара на активном графике и периоде.
// Используем 21 бар и цену закрытия для получения простого скользящего 
// среднего значения. Сдвиг не используем. Отклонение от основной 
// линии: 5%.
 
e=iEnvelopes("EURUSD",PERIOD_H1,13,MODE_SMMA,3,PRICE_MEDIAN,0.15,MODE_UPPER,1);
// верхняя граница предпоследнего бара на часовом графике EURUSD.
// Используем 13 баров и среднюю цену для получения сглаженного скользящего 
// среднего значения. Сдвиг: 3 бара. Отклонение от основной линии: 15%.
 
e=iEnvelopes("EURAUD",PERIOD_D1,7,MODE_EMA,2,PRICE_CLOSE,0.20,MODE_LOWER,0);
// нижняя граница последнего бара на дневном графике EURAUD.
// Используем 7 баров и цену закрытия для получения экспоненциального 
// скользящего среднего значения. Сдвиг: 2 бара. Отклонение от основной 
// линии: 20%.


Force Index (FRC) или Индекс Силы

Индикатор Force Index (FRC) или Индекс Силы используется для измерения силы «быков» при каждом подъеме цены и силу «медведей» при каждом спаде.
http://ta.mql4.com/ru/indicators/oscillators/force_index
Прототип функции:

double iForce( string symbol, int timeframe, int period, int ma_method, 
               int applied_price, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • ma_period - количество баров, которые будут использованы для получения основной линии.
  • ma_method – определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
    • MODE_SMA - простое скользящее среднее
    • MODE_EMA - экспоненциальное скользящее среднее
    • MODE_SMMA - сглаженное скользящее среднее
    • MODE_LWMA - линейно-взвешенное скользящее среднее
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:


double f;
   
f=iForce(0,0,13,MODE_SMA,PRICE_CLOSE,0);
// индекс силы последнего бара на активном графике и периоде. Период
// усреднения: 13 баров. Метод усреднения: простое скользящее среднее.
// Используем цену закрытия.  
 
f=iForce("EURGBP",PERIOD_M5,21,MODE_LWMA,PRICE_HIGH,1);
// индекс силы предпоследнего бара на пятиминутном графике EURGBP. Период
// усреднения: 21 бар. Метод усреднения: линейно-взвешенное скользящее среднее.
// Используем наивысшую цену.
 
f=iForce("EURUSD",PERIOD_M1,32,MODE_SMMA,PRICE_MEDIAN,0);
// индекс силы последнего бара на минутном графике EURUSD. Период
// усреднения: 32 бара. Метод усреднения: сглаженное скользящее среднее.
// Используем среднюю цену.


Fractals или Фракталы

Fractals (Фракталы) — это один из пяти индикаторов торговой системы Билла Вильямса, которые используются для обнаружения впадин или вершин графика цены. Фракталы образуются не на каждом баре. Поэтому, если на каком-то баре фрактал не сформировался, то функция возвращает нуль.
http://ta.mql4.com/ru/indicators/bills/fractal
Прототип функции:

double iFractals( string symbol, int timeframe, int mode, 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).
  • mode - выбираем линию, значение которой получим. Используем такие предопределенные константы:
    • MODE_UPPER - верхние фракталы
    • MODE_LOWER - нижние фракталы
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double f;
 
f=iFractals(0,0,MODE_UPPER,0);
// верхний фрактал последнего бара на активном графике и
// периоде.
 
f=iFractals("USDCAD",PERIOD_M5,MODE_LOWER,1);
// нижний фрактал предпоследнего бара на пятиминутном графике
// USDCAD.
 
f=iFractals("USDJPY",PERIOD_D1,MODE_UPPER,0);
// верхний фрактал последнего бара на дневном графике USDJPY.


Gator Oscillator

Gator Oscillator строится на основе индикатора Alligator и используется для измерения степени схождения или расхождения его линий баланса.
http://ta.mql4.com/ru/indicators/bills/gator
Прототип функции:

double iGator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period, 
               int teeth_shift, int lips_period, int lips_shift, int ma_method, 
               int applied_price, int mode, 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).
  • jaw_period - период усреднения челюсти аллигатора (синяя линия)
  • jaw_shift - смещение челюсти аллигатора
  • teeth_period - период усреднения зубов аллигатора (красная линия)
  • teeth_shift - смещение зубов аллигатора
  • lips_period - период усреднения губ аллигатора (зеленая линия)
  • lips_shift - смещение губ аллигатора
  • ma_method – определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
    • MODE_SMA - простое скользящее среднее
    • MODE_EMA - экспоненциальное скользящее среднее
    • MODE_SMMA - сглаженное скользящее среднее
    • MODE_LWMA - линейно-взвешенное скользящее среднее
  • 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
  • mode – определяет, значение чего вы хотите узнать (челюстей, зуб или губ). Что бы выбрать, используйте одну из констант:
    • MODE_UPPER - верхняя гистограмма
    • MODE_LOWER - нижняя гистограмма
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double g;
 
g=iGator(0,0,13,8,8,0,0,0,MODE_SMA,PRICE_CLOSE,MODE_UPPER,0);
// верхняя гистограмма последнего бара активного графика и периода. Периоды 
// усреднения для челюстей, зубов и губ соответственно: 13,8,8. Сдвиги не используем. 
// Для усреднения используем цену закрытия и метод простого скользящего среднего.
 
g=iGator("EURGBP",PERIOD_M1,21,13,9,4,3,2,MODE_SMMA,PRICE_OPEN,MODE_LOWER,1);
// нижняя гистограмма предпоследнего бара минутного графика EURGBP. Периоды 
// усреднения для челюстей, зубов и губ соответственно: 21,13,9. Сдвиги соответственно:
// 4,3 и 2. Для усреднения используем цену открытия и метод сглаженного 
// скользящего среднего.
 
g=iGator("USDCAD",PERIOD_D1,51,21,13,8,5,4,MODE_EMA,PRICE_MEDIAN,MODE_UPPER,0);
// верхняя гистограмма последнего бара дневного графика USDCAD. Периоды усреднения
// для челюстей, зубов и губ соответственно: 51,21,13. Сдвиги соответственно: 8,5 и 4.
// Для усреднения используем среднюю цену и метод экспоненциального скользящего среднего.


Ichimoku Kinko Hyo или Ишимоку Кинко Хайо

Индикатор Ichimoku Kinko Hyo или Ишимоку Кинко Хайо используется для определения тренда, уровней поддержки и сопротивления, а также сигналов покупки и продажи.
http://ta.mql4.com/ru/indicators/oscillators/ichimoku
Прототип функции:

double iIchimoku( string symbol, int timeframe, int tenkan_sen, int kijun_sen, 
                  int senkou_span_b, int mode, 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).
  • tenkan_sen - период усреднения Tenkan Sen.
  • kijun_sen - период усреднения Kijun Sen.
  • senkou_span_b - период усреднения Senkou Span B.
  • mode - определяет, значение чего вы хотите узнать. Что бы выбрать, используйте одну из констант:
    • MODE_TENKANSEN - Tenkan-sen
    • MODE_KIJUNSEN - Kijun-sen
    • MODE_SENKOUSPANA - Senkou Span A
    • MODE_SENKOUSPANB - Senkou Span B
    • MODE_CHINKOUSPAN - Chinkou Span
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double i;
 
i=iIchimoku(0,0,13,21,53,MODE_KIJUNSEN,0);
// значение линии Kijun-sen последнего бара на текущем инструменте и периоде.
// Периоды для получения средних значений для Tenkan Sen, Kijun Sen и Senkou Span B
// соответственно: 13,21 и 53.
 
i=iIchimoku("EURUSD",PERIOD_M5,21,53,96,MODE_TENKANSEN,1);
// значение линии Tenkan-sen предпоследнего бара на пятиминутном графике EURUSD.
// Периоды для получения средних значений для Tenkan Sen, Kijun Sen и Senkou Span B
// соответственно: 21,53 и 96.
 
i=iIchimoku("USDCAD",PERIOD_D1,3,5,9,MODE_CHINKOUSPAN,0);
// значение линии Chinkou Span последнего бара на дневном графике USDCAD.
// Периоды для получения средних значений для Tenkan Sen, Kijun Sen и Senkou Span B
// соответственно: 3,5 и 9.


Market Facilitation Index (BW MFI) или Индекс Облегчения Рынка

Индикатор Market Facilitation Index (BW MFI) или Индекс Облегчения Рынка используется для измерения изменений цены на один тик.
http://ta.mql4.com/ru/indicators/bills/market_facilitation_index
Прототип функции:

double iBWMFI( 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 mfi;
 
mfi=iBWMFI(0,0,0);
// индекс облегчения рынка последнего бара на активном графике и периоде.
 
mfi=iBWMFI("EURUSD",PERIOD_H1,1);
// индекс облегчения рынка предпоследнего бара на часовом графике EURUSD.
 
mfi=iBWMFI("EURGBP",PERIOD_D1,0);
// индекс облегчения рынка последнего бара на дневном графике EURGBP.


Momentum или Темп

Индикатор Momentum или Темп используется для измерения величины изменения цены за промежуток времени.
http://ta.mql4.com/ru/indicators/oscillators/momentum
Прототип функции:

double iMomentum( string symbol, int timeframe, int period, int applied_price, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:


double m;
 
m=iMomentum(0,0,12,PRICE_CLOSE,1);
// темп предпоследнего бара на активном графике и периоде. Используем 
// 12 баров и цену закрытия для получения среднего значения.
 
m=iMomentum("EURUSD",PERIOD_D1,21,PRICE_OPEN,0);
// темп последнего бара на дневном графике EURUSD. Используем 
// 21 бар и цену открытия для получения среднего значения.
 
m=iMomentum("USDCAD",PERIOD_H1,7,PRICE_MEDIAN,1);
// темп предпоследнего бара на часовом графике USDCAD. Используем 
// 7 баров и среднюю цену для получения среднего значения.


Money Flow Index (MFI) или Индекс Денежных Потоков

Индикатор Money Flow Index (MFI) или Индекс Денежных Потоков используется для измерения интенсивности денежных вложений.
http://ta.mql4.com/ru/indicators/volumes/money_flow_index
Прототип функции:

double iMFI( string symbol, int timeframe, int period, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:


double mfi;
 
iMFI(0,0,14,1);
// интенсивность вложений предпоследнего бара на текущем графике и периоде.
// Используем 14 баров для получения среднего значения.
 
iMFI("EURGBP",PERIOD_H4,32,0);
// интенсивность вложений последнего бара на четырехчасовом графике EURGBP.
// Используем 32 бара для получения среднего значения.
 
iMFI("EURUSD",PERIOD_W1,9,1);
// интенсивность вложений предпоследнего бара на недельном графике EURUSD.
// Используем 9 баров для получения среднего значения.


Moving Average (MA) или Скользящее Среднее

Индикатор Moving Average (MA) или Скользящее Среднее показывает среднее значение цены инструмента за некоторый период времени.
http://ta.mql4.com/ru/indicators/trends/moving_average
Прототип функции:

double iMA( string symbol, int timeframe, int period, int ma_shift, 
            int ma_method, int applied_price, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • ma_shift – сдвиг средней линий в барах. Если сдвиг положительный, то линия смещается вправо. И наоборот, если сдвиг отрицательный, то линия смещается влево.
  • ma_method – определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
    • MODE_SMA - простое скользящее среднее
    • MODE_EMA - экспоненциальное скользящее среднее
    • MODE_SMMA - сглаженное скользящее среднее
    • MODE_LWMA - линейно-взвешенное скользящее среднее
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:


double ma;
 
ma=iMA(0,0,13,0,MODE_SMA,PRICE_CLOSE,0);
// скользящее среднее последнего бара на активном графике и периоде.
// Используем 13 баров и цену закрытия для получения простого скользящего среднего.
// Смещение не используем.
 
ma=iMA("GOLD",PERIOD_M15,21,6,MODE_LWMA,PRICE_LOW,1);
// скользящее среднее предпоследнего бара на пятнадцатиминутном графике GOLD.
// Используем 21 бар и наименьшую цену для получения линейно-взвешенного скользящего среднего.
// Смещение: 6 баров.
 
ma=iMA("EURCHF",PERIOD_D1,18,4,MODE_SMMA,PRICE_TYPICAL,0);
// скользящее среднее последнего бара на дневном графике EURCHF.
// Используем 18 баров и типичную цену для получения сглаженного скользящего среднего.
// Смещение: 4 бара.


Average Convergence/Divergence (MACD) или Схождение/Расхождение Скользящих Средних

Индикатор Average Convergence/Divergence (MACD) или Схождение/Расхождение Скользящих Средних – используется для отслеживания тенденций на основе соотношения между двумя скользящими средними цены.
http://ta.mql4.com/ru/indicators/oscillators/macd
Прототип функции:

double iMACD( string symbol, int timeframe, int fast_ema_period, 
              int slow_ema_period, int signal_period, int applied_price,
              int mode, 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).
  • fast_ema_period - количество баров, которые будут использованы для вычисления быстрой скользящей средней.
  • slow_ema_period - количество баров, которые будут использованы для вычисления медленной скользящей средней.
  • signal_period - количество баров, которые будут использованы для вычисления сигнальной линии.
  • 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
  • mode - определяет, значение чего вы хотите узнать. Что бы выбрать, используйте одну из констант:
    • MODE_MAIN - основная линия
    • MODE_SIGNAL - сигнальная линия
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double ma;
 
ma=iMACD(0,0,9,21,9,PRICE_CLOSE,MODE_MAIN,0);
// значение главной линии для последнего бара на активном графике и периоде.
// Используем баров для получения средних значений для быстрой, медленной и сигнальной 
// скользящей средней соответственно: 9,21 и 9. Используем цену закрытия.
 
ma=iMACD("EURUSD",PERIOD_H1,21,52,18,PRICE_HIGH,MODE_SIGNAL,1);
// значение сигнальной линии для предпоследнего бара на часовом графике EURUSD.
// Используем баров для получения средних значений для быстрой, медленной и сигнальной 
// скользящей средней соответственно: 21,52 и 18. Используем наивысшую цену.
 
ma=iMACD("USDCAD",PERIOD_D1,7,13,7,PRICE_MEDIAN,MODE_MAIN,1);
// значение главной линии для предпоследнего бара на дневном графике USDCAD.
// Используем баров для получения средних значений для быстрой, медленной и сигнальной 
// скользящей средней соответственно: 7,13 и 7. Используем среднюю цену.


Moving Average of Oscillator (OsMA) или Скользящая Средняя Осциллятора

Индикатор Moving Average of Oscillator (OsMA) или Скользящая Средняя Осциллятора используется для измерения разницы между главной и сигнальной линией индикатора Average Convergence/Divergence (MACD) или Схождение/Расхождение Скользящих Средних.
http://ta.mql4.com/ru/indicators/oscillators/macd_oscillator
Прототип функции:

double iOsMA( string symbol, int timeframe, int fast_ema_period, int slow_ema_period,
              int signal_period, int applied_price, 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).
  • fast_ema_period - количество баров, которые будут использованы для вычисления быстрой скользящей средней.
  • slow_ema_period - количество баров, которые будут использованы для вычисления медленной скользящей средней.
  • signal_period - количество баров, которые будут использованы для вычисления сигнальной линии.
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:


double osma;
 
osma=iOsMA(0,0,12,26,9,PRICE_CLOSE,0);
// разница последнего бара активного графика и периода. Используем баров для 
// получения средних значений для быстрой, медленной и сигнальной 
// скользящей средней соответственно: 12,26 и 9. Используем цену закрытия.
 
osma=iOsMA("EURUSD",PERIOD_M1,7,13,6,PRICE_OPEN,1);
// разница предпоследнего бара минутного графика EURUSD. Используем баров для 
// получения средних значений для быстрой, медленной и сигнальной 
// скользящей средней соответственно: 7,13 и 6. Используем цену открытия.
 
osma=iOsMA("EURAUD",PERIOD_H1,21,48,18,PRICE_TYPICAL,0);
// разница последнего бара часового графика EURAUD. Используем баров для 
// получения средних значений для быстрой, медленной и сигнальной 
// скользящей средней соответственно: 21,48 и 18. Используем типичную цену.


On Balance Volume (OBV) или Балансовый Объем

Индикатор On Balance Volume (OBV) или Балансовый Объем связывает объем и изменение цены, сопровождавшее данный объем.
http://ta.mql4.com/ru/indicators/volumes/on_balance_volume
Прототип функции:

double iOBV( string symbol, int timeframe, int applied_price, 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).
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:

double obv;
 
obv=iOBV(0,0,PRICE_OPEN,0);
// балансовый объем последнего бара на текущем графике и периоде. Используем цену открытия.
 
obv=iOBV("GBPCHF",PERIOD_M30,PRICE_CLOSE,1);
// балансовый объем предпоследнего бара на получасовом графике GBPCHF. Используем цену закрытия.
 
obv=iOBV("GBPJPY",PERIOD_H4,PRICE_MEDIAN,0);
// балансовый объем последнего бара на четырехчасовом графике GBPJPY. Используем среднюю цену.


Parabolic Stop and Reverse system (Parabolic SAR) или Параболическая Система SAR

Индикатор Parabolic Stop and Reverse system (Parabolic SAR) или Параболическая Система SAR используется для анализа трендовых рынков, определения точек выхода из рынка.
http://ta.mql4.com/ru/indicators/trends/parabolic_sar
Прототип функции:

double iSAR( string symbol, int timeframe, double step, double maximum, 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).
  • step - приращение уровня стопа, обычно 0.02.
  • maximum - максимальный уровень стопа, обычно 0.2.
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:

double sar;
 
sar=iSAR(0,0,0.02,0.2,0);
// значение индикатора для последнего бара текущего графика и периода.
// Шаг приращения уровня стопа: 0.02. Максимальный уровень стопа: 0.2.
 
sar=iSAR("EURUSD",PERIOD_M1,0.03,0.18,1);
// значение индикатора для предпоследнего бара минутного графика EURUSD.
// Шаг приращения уровня стопа: 0.03. Максимальный уровень стопа: 0.18.
 
sar=iSAR("EURCHF",PERIOD_H1,0.01,0.15,0);
// значение индикатора для последнего бара часового графика EURCHF.
// Шаг приращения уровня стопа: 0.01. Максимальный уровень стопа: 0.15.


Relative Strength Index (RSI) или Индекс Относительной Силы

Индикатор Relative Strength Index (RSI) или Индекс Относительной Силы используется для прогнозирования разворота цен.
http://ta.mql4.com/ru/indicators/oscillators/relative_strength_index
Прототип функции:

double iRSI( string symbol, int timeframe, int period, int applied_price, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:



double rsi;
 
rsi=iRSI(0,0,14,PRICE_CLOSE,0);
// значение индикатора для последнего бара на активном графике и периоде. 
// Используем 14 баров и цену закрытия для получения среднего значения.
 
rsi=iRSI("USDCAD",PERIOD_M1,9,PRICE_OPEN,1);
// значение индикатора для предпоследнего бара на минутном графике USDCAD. 
// Используем 9 баров и цену открытия для получения среднего значения.
 
rsi=iRSI("EURAUD",PERIOD_H1,25,PRICE_TYPICAL,0);
// значение индикатора для последнего бара на часовом графике EURAUD. 
// Используем 25 баров и типичную цену для получения среднего значения.


Relative Vigor Index (RVI) или Индекс Относительной Бодрости

Индикатор Relative Vigor Index (RVI) или Индекс Относительной Бодрости используется для определения сигналов на покупку и продажу. При этом рекомендуется использовать вместе с предыдущим индикатором для исключения неясностей.
http://ta.mql4.com/ru/indicators/oscillators/relative_vigor_index
Прототип функции:

double iRVI( string symbol, int timeframe, int period, int mode, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • mode - определяет, значение чего вы хотите узнать. Что бы выбрать, используйте одну из констант:
    • MODE_MAIN - основная линия
    • MODE_SIGNAL - сигнальная линия
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double rvi;
 
rvi=iRVI(0,0,12,MODE_MAIN,1);
// значение основной линии предпоследнего бара на активном графике и периоде. 
// Используем 12 баров для получения среднего значения.  
 
rvi=iRVI("EURUSD",PERIOD_D1,21,MODE_SIGNAL,0);
// значение сигнальной линии последнего бара на дневном графике EURUSD. 
// Используем 21 бар для получения среднего значения.  
 
rvi=iRVI("GBPJPY",PERIOD_H1,19,MODE_MAIN,1);
// значение основной линии предпоследнего бара на часовом графике GBPJPY. 
// Используем 19 баров для получения среднего значения.


Standard Deviation или Стандартное Отклонение

Индикатор Standard Deviation или Стандартное Отклонение используется для измерения волатильности рынка.
http://ta.mql4.com/ru/indicators/trends/standard_deviation
Прототип функции:

double iStdDev( string symbol, int timeframe, int ma_period, int ma_shift,
                int ma_method, int applied_price, 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).
  • ma_period - количество баров, которые будут использованы для получения линии индикатора.
  • ma_shift – сдвиг линий индикатора в барах. Если сдвиг положительный, то линия смещается вправо. И наоборот, если сдвиг отрицательный, то линия смещается влево.
  • ma_method – определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
    • MODE_SMA - простое скользящее среднее
    • MODE_EMA - экспоненциальное скользящее среднее
    • MODE_SMMA - сглаженное скользящее среднее
    • MODE_LWMA - линейно-взвешенное скользящее среднее
  • 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
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:



double sd;
 
sd=iStdDev(0,0,10,0,MODE_SMA,PRICE_CLOSE,1);
// отклонение предпоследнего бара на активном графике и периоде. 
// Используем 10 баров и цену закрытия для получения простого 
// скользящего среднего. Смещение не используем.
 
sd=iStdDev("EURUSD",PERIOD_D1,21,3,MODE_SMMA,PRICE_MEDIAN,0);
// отклонение последнего бара на дневном графике EURUSD. 
// Используем 21 бар и среднюю цену для получения сглаженного 
// скользящего среднего. Смещение: 3 бара.
 
sd=iStdDev("USDCAD",PERIOD_H4,17,2,MODE_EMA,PRICE_OPEN,1);
// отклонение предпоследнего бара на четырехчасовом графике USDCAD. 
// Используем 17 баров и цену открытия для получения экспоненциального
// скользящего среднего. Смещение: 2 бара.



Stochastic Oscillator или Стохастический Осциллятор

Индикатор Stochastic Oscillator или Стохастический Осциллятор используется для определения сигналов на покупку и продажу.
http://ta.mql4.com/ru/indicators/oscillators/stochastic
Прототип функции:

double iStochastic( string symbol, int timeframe, int %Kperiod, 
                    int %Dperiod, int slowing, int method, 
                    int price_field, int mode, 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).
  • %Kperiod - количество баров, которые будут использованы для получения линии %K.
  • %Dperiod - количество баров, которые будут использованы для получения линии %D.
  • slowing - значение замедления.
  • method - определяет метод, который используется для получения средних значений. Предопределены такие константы для выбора метода:
    • MODE_SMA - простое скользящее среднее
    • MODE_EMA - экспоненциальное скользящее среднее
    • MODE_SMMA - сглаженное скользящее среднее
    • MODE_LWMA - линейно-взвешенное скользящее среднее
  • price_field – определяет, какие цены использовать для расчета. Предопределены такие значения для выбора цен:
    • 0 - Low/High
    • 1 - Close/Close
  • mode - определяет, значение чего вы хотите узнать. Что бы выбрать, используйте одну из констант:
    • MODE_MAIN - основная линия
    • MODE_SIGNAL - сигнальная линия
  • shift – определяет, к какому бару применить индикатор.

С помощью параметра mode укажите, что возвращать:

Примеры использования:

double s;
 
s=iStochastic(0,0,10,6,6,MODE_SMA,0,MODE_MAIN,0);
// значение основной линии для последнего бара на текущем графике и периоде. 
// Используем баров для вычисления линий %K, %D и замедления 
// соответственно: 10, 6 и 6. Метод усреднения: простое скользящее среднее. 
// Используем цены: Low/High.
 
s=iStochastic("EURUSD",PERIOD_M1,6,3,3,MODE_SMMA,1,MODE_SIGNAL,1);
// значение сигнальной линии для предпоследнего бара на минутном графике EURUSD.
// Используем баров для вычисления линий %K, %D и замедления 
// соответственно: 6, 3 и 3. Метод усреднения: сглаженное скользящее среднее. 
// Используем цены: Close/Close.
 
s=iStochastic("EURGBP",PERIOD_M5,9,7,7,MODE_EMA,0,MODE_MAIN,0);
// значение основной линии для последнего бара на пятиминутном графике EURGBP.
// Используем баров для вычисления линий %K, %D и замедления 
// соответственно: 9, 7 и 7. Метод усреднения: экспоненциальное скользящее среднее.
// Используем цены: Low/High.


Williams’ Percent Range (%R) или Процентный Диапазон Вильямса

Индикатор Williams’ Percent Range (%R) или Процентный Диапазон Вильямса используется для определения состояния перекупленности/перепроданности.
http://ta.mql4.com/ru/indicators/oscillators/williams_percent
Прототип функции:

double iWPR( string symbol, int timeframe, int period, 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).
  • period - количество баров, которые будут использованы для получения среднего значения.
  • shift – определяет, к какому бару применить индикатор.

Примеры использования:


double wpr;
 
wpr=iWPR(0,0,14,1);
// перекупленность предпоследнего бара на активном графике и периоде.
// Используем 14 баров для получения среднего значения.
 
wpr=iWPR("USDCHF",PERIOD_D1,9,0);
// перекупленность последнего бара на дневном графике USDCHF.
// Используем 9 баров для получения среднего значения.
 
wpr=iWPR("GBPJPY",PERIOD_H1,23,1);
// перекупленность предпоследнего бара на часовом графике GBPJPY.
// Используем 23 баров для получения среднего значения.


Как правильно пользоваться функциями технических индикаторов

Что бы правильно использовать эти функции вы должны точно знать, как устроен конкретный индикатор и как ним пользоваться (торговые сигналы). Конечно, использовать их нужно в собственных советниках или индикаторах. Но все же, в качестве домашнего задания, попробуйте написать скрипт, который будет вам сообщать точки входа в рынок, основываясь на сигналах какого-то индикатора (выберите сами).

Для примера напишем одно из таких домашних заданий, которое будет показывать точки входа в рынок, основываясь на торговых сигналах Стохастического Осциллятора. Будем использовать такие правила для входа в рынок:
Покупаем, если главная линия поднимается выше сигнальной линии. Продаем, если главная линия опускается ниже сигнальной линии.
На рисунке обведены точки входа в рынок:

Для начала объявим несколько переменных, в которых будем хранить показатели сигнальной и главной линии на текущем и предыдущем баре:

double mainLine;
double prevMainLine;
double signalLine;
double prevSignalLine;

Теперь давайте узнаем показатели для этих переменных:

mainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);
prevMainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
signalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
prevSignalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);

Как видно, мы ограничились последним и предпоследним баром. Теперь проверим, нет ли сигналов на покупку и продажу:

if(prevMainLine<prevSignalLine && mainLine>signalLine)
   Alert("Сигнал на покупку");
// если главная линия была под сигнальной, а стала над, то
// это сигнал на покупку
         
if(prevMainLine>prevSignalLine && mainLine<signalLine)
   Alert("Сигнал на продажу");         
// если главная линия была над сигнальной, а стала под, то
// это сигнал на продажу

Мы использовали операторы сравнения и логическое И (&&). Разберитесь, как следует.

А теперь давайте «засунем» все это в цикл, что бы «пройтись» по сотне последних баров:

for(int a=0;a<100;a++)
{
   mainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a);
   prevMainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a+1);
   signalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a);
   prevSignalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a+1);
 
   if(prevMainLine<prevSignalLine && mainLine>signalLine)
      Alert("Сигнал на покупку");
         
   if(prevMainLine>prevSignalLine && mainLine<signalLine)
      Alert("Сигнал на продажу");         
}

Видели?? Мы просто добавили счетчик из цикла и уже с его помощью перебираем бары. А теперь давайте для удобства вместо сотни объявим константу BARS_TO_ANALYSE, которая будет определять, сколько последним баров анализировать. А вот и финальная версия скрипта:

//+------------------------------------------------------------------+
//|                                        showStochasticSignals.mq4 |
//|                                    Antonuk Oleg Copyright © 2007 |
//|                                                   banderass@i.ua |
//+------------------------------------------------------------------+
#property copyright "Antonuk Oleg Copyright © 2007"
#property link      "banderass@i.ua"
 
#define BARS_TO_ANALYSE 100
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
   double mainLine;
   double prevMainLine;
   double signalLine;
   double prevSignalLine;
      
   for(int a=0;a<BARS_TO_ANALYSE;a++)
   {
      mainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a);
      prevMainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a+1);
      signalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a);
      prevSignalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a+1);
 
      if(prevMainLine<prevSignalLine && mainLine>signalLine)
         Alert("Сигнал на покупку. Время: ",TimeToStr(Time[a]));
         
      if(prevMainLine>prevSignalLine && mainLine<signalLine)
         Alert("Сигнал на продажу. Время: ",TimeToStr(Time[a]));
   }
   return(0);
}

В этом скрипте вам должен быть непонятен вот этот маленький фрагмент кода (а если понятно, то, вы, пожалуй, преуспевающий ученик):

TimeToStr(Time[a])

Эта функция принимает количество секунд, прошедших с 01.01.1970 и возвращает строку с датой. А предопределенный массив Time[] возвращает то самое количество секунд применительно к выбранному бару. Вот и имеем идеальную парочку :))
В качестве дополнительного задания «накиньте» тяжелую скользящую среднюю (с периодом 200-500) и отфильтруйте лишние сигналы по таким правилам: если цена выше средней линии, то не продаем. Если цена ниже средней, то не покупаем.
Ну что? Разобрались?? Нет? Тогда вот вам еще.


Кое-что новенькое про объявление переменных

Обычно мы объявляем переменные так:

double maxPrice;
double minPrice;
double lastPrices[100];
 
int maxIndex;
int minIndex;
int levels[10];

Больше так не делайте. А поступайте вот так:

double maxPrice,
       minPrice,
       lastPrices[100];
 
int maxIndex,
    minIndex,
    levels[10];

То есть сначала тип, а потом через запятую названия переменных (массивов). Разницы никакой, а лишние движения никому не нужны. Инициализацию тоже проводите в таком стиле:

int value1=10,
    value2=12,
    matrix[2][2]={1,2,
                  3,4};


Функции, которые возвращают несколько значений

Ого, а что такое бывает?? Конечно, сейчас вы сами напишете парочку! Давайте посмотрим, что мы уже умеем.
Простейшая функция, которая возвращает одно значение:

int func()
{
   return(100);
}

А что же если нужно возвратить несколько значений, да еще и разных типов, да еще и одновременно? Мотайте на ус:

void SuperFunc(int& valueForReturn1,double& valueForReturn2,string& valueForReturn3)
{
   valueForReturn1=100;
   valueForReturn2=300.0;
   valueForReturn3="it works!!";
}

А теперь вызовем эту чудо-функцию:

int value1=0;
double value2=0.0;
string value3="";
 
SuperFunc(value1,value2,value3);
MessageBox("value1="+value1+" value2="+value2+" value3="+value3);

Результат:

Эта функция имеет лишь одно маленькое отличие от простых функций: когда мы ее объявляли, то после типа аргумента мы поставили знак амперсанда (&). Если вы так сделали с каким-то аргументом, то вы можете изменять его значение внутри функции, и после вызова результат сохраниться. Такая работа с аргументом правильно называется передача параметра по ссылке. Таким способом можно возвращать сколько угодно переменных различных типов. Попробуйте убрать знаки амперсанда в коде выше и посмотрите на результат:



Новый вид комментариев

Вы знаете, как закомментировать одну строку:

// it is a one string comment

Но иногда полезно закомментировать какой-то блок кода, что бы временно исключить его. И тогда не очень удобно таким способом комментировать 20-30 строк. Для этого существуют многострочные комментарии:

/*
   it is a multi-line comment.
   Very convenient, try it.
*/


Заключение

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

Перевод с английского произведен MetaQuotes Software Corp.
Оригинальная статья: https://www.mql5.com/en/articles/1496

Прикрепленные файлы |
superFunction.mq4 (1.14 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (22)
alex
alex | 16 июл 2011 в 16:34

Разве здесь:

не должна быть функция

MathMod

а в Вашем примере стоит

MathExp
double a;
 
a=MathExp(5,2); // a=1.0
a=MathExp(10,3); // a=1.0, все правильно
a=MathExp(50,10); // a=0.0, делится без остатка
fenix74
fenix74 | 5 июл 2013 в 07:08
banderass:
Да, я неправильно вас понял. Мне казалось, что вы не читали предидущие статьи. Но это не так.
То есть вам не хватает детального построчного разбора законченной программы (скрипта, индикатора, эксперта)?
Чтобы было показано как подобная программа развивается от идеи до законченного кода??
Думаю, можно организовать и такую статью (как дополнение к теории).


Поддерживаю просьбу "детального построчного разбора законченной программы (скрипта, индикатора, эксперта)". Когда раньше, 25 лет назад, изучали языки программирования Бейсик и Фортран, то после разбора рабочей программы было освоение языка шло намного быстрее и более понятна была работа операторов программы в связке. Прошу учитывать, что некоторым Вашим ученикам по 40-50 лет :)
Мне очень нравятся Ваши статьи, понятно и доходчиво написаны. Большое спасибо!!! Успехов Вам в жизни!!!
MQL4 Comments
MQL4 Comments | 17 дек 2013 в 20:31

Здравствуйте Олег!

Такой вопрос.

Есть окно индикатора1. Там первым индикатором стоит RSI, CCI, STOH или другой (не слишком важно). В это же окно перетаскиваю МА. В поле "Применить к" использую Previous или First Indicator's Data. Какой applied_price прописывать в iMA?

Putevod
Putevod | 31 янв 2015 в 21:39
Пишу    if(iMA(0,0,13,0,MODE_SMA,PRICE_CLOSE,0)>iMA(0,0,13,0,MODE_SMA,PRICE_CLOSE,1))
Почему выдает ошибку? implicit conversion from 'number' to 'string'
Че ему не нравиться?
Michael Ryndin
Michael Ryndin | 16 окт 2015 в 18:41

Вот хотел же у профи спросить, так к чайникам пришлось идти.

 

Простой вопрос:

bool  ObjectCreate(

   long          chart_id,      // идентификатор графика

   string        object_name,   // имя объекта

   ENUM_OBJECT   object_type,   // тип объекта

   int           sub_window,    // индекс окна

   datetime      time1,         // время первой точки привязки

   double        price1,        // цена первой точки привязки

   ...

   datetime      timeN=0,       // время N-точки привязки

   double        priceN=0       // цена N-точки привязки

   );

 Функция с N+4 параметрами.

Могу я такую организовать ?

Могу передавать ей нужное количество, если мои параметры в массиве ?

Спаcибо  за честный и искренний ответ.

Как реализовать свой критерий оптимизации Как реализовать свой критерий оптимизации

Для стандртного эксперта Moving Average реализован пример оптимизации по критерию прибыль/просадка с выводом результатов в файл

Брейкпойнты в тестере – это возможно! Брейкпойнты в тестере – это возможно!

Статья посвящается программной эмуляции точки останова при прогоне на тестерe с выводом отладочной информации.

Универсальный шаблон экспертов Универсальный шаблон экспертов

Данная статья поможет начинающим трейдерам создавать гибко-настраиваемые эксперты.

Математика в трейдинге. Оценка результатов торговых сделок Математика в трейдинге. Оценка результатов торговых сделок

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