MQL4-программирование: торговый робот за один вечер - Евгений Ждан 2 стр.


#property copyright «Copyright 2017»

#property link»»

#property version «1.00»

#property strict

//+                                  +

double enveUP, enveDW, ZZ;

datetime open;

//+                                  +

int OnInit ()

{

return (INIT_SUCCEEDED);

}

void OnDeinit (const int reason)

{

}

void OnTick ()

{

if (Open [0]!= open)

{

enveUP = iEnvelopes (NULL,0,13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,1);

enveDW = iEnvelopes (NULL,0,13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_LOWER,1);

ZZ = iCustom (Symbol (),0,«ZigZag», 0,1);

if (enveUP> 0 && enveDW> 0 && ZZ> 0) open = Open [0];

}

}

Разберем, что же означает каждая строчка.



В глобальных переменных, кроме переменных для значений индикаторов, мы объявили переменную типа datetime с названием open. Сейчас она содержит 0.

ВАЖНЫЙ МОМЕНТ: установите курсор на слово datetime и нажмите на клавиатуре F1  появится СПРАВКА с описанием, что означает тип datetime. Так можно делать НА всех встроенных командах!

if (Open [0]!=open): ЕслиВремя Открытия Нулевой СвечиНЕ РАВНОopen (т. е. нулю), то выполнится код в фигурных скобках. Команда Open [0] означает Время Открытия Нулевой (т. е. текущей, еще не закрытой свечи). Также, установите курсор на Open и нажмите F1  почитайте, что это за команда.

EnveUP = iEnvelopes (NULL,0,13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,1);  нажимаем на iEnvelopes и видим, в каком порядке и какие данные должны быть указаны:

double iEnvelopes (

 string symbol, // имя символа

 int timeframe, // таймфрейм

 int ma_period, // период

 int ma_method, // метод усреднения

 int ma_shift, // сдвиг средней

 int applied_price, // тип цены

 double deviation, // отклонение (в процентах)

 int mode, // индекс линии

 int shift // сдвиг

);

В нашем коде мы не предусмотрели возможность изменять данные индикатора Envelopes. Давайте это исправим. Нам нужно вывести во внешние параметры Период и Отклонение, выраженное в процентах.

Назад