Форум трейдеров рынка ФОРЕКС (FOREX)


MetaQuotes Language II - учимся программировать. Урок №5

Дата:  3.3.07 | Раздел: MQL программирование

MetaQuotes Language II - учимся программировать. Урок №5

Обучение MQL II Урок №5



   Здравствуйте дорогие читатели! Сегодня мы научимся писать эксперты с использованием встроенных индикаторов. В МТ реализовано довольно много индикаторов классического теханализа, так что поле для действий довольно большое. В конце урока мы напишем эксперт.

   5.1. Синтаксис индикатора в общем виде

   iInd(period, mode, shift);

   Ind - условное название индикатора;
   Period - период усреднения;
   Mode - чаще всего указывает какое из значений индикатора принимается (для индикаторов из двух линий)
   Shift - индекс указывает, какое порядковое значение индикатора брать для расчета (0 это текущее значение индикатора, 1-прошлое, 2-позапрошлое и т.д. по аналогии с индексами при котировках).  Перед названием индикатора <Ind> стоит буква i, это обязательно для всех индикаторов в МТ.

 

   5.2. Скользящие средние

   Скользящие средние являются самым распространенным индикатором. Поэтому я бы хотел разобрать этот индикатор более подробно.

   Moving Average (iMA)
   iMA(period, ma_method, shift)

   period - период усреднения;
   ma_method - этот параметр указывается для метода вычисления средней, параметр может принимать

следующие значения:
   MODE_SMA,
   MODE_EMA,
   MODE_SMMA,
   MODE_LWMA.

 Пример:

   iMA(21, MODE_SMA, 1)- прошлое значение скользящей средней простого типа с периодом усреднения 21
   iMA(9, MODE_EMA, 0)- текущее значение скользящей средней экспоненциального типа с периодом усреднения 9

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

 

   5.3. Extended (расширенные) индикаторы
  
   Как я уже говорил, индикаторы чаще всего строятся от цен закрытия <close>. Это не всегда удовлетворяет запросам пользователей, поэтому в арсенале МТ есть extended (расширенные) индикаторы. На текущий момент существует 7 extended индикаторов:

   ADX extended
   iADXEx (period ,applied_price, mode, shift)

   CCI extended
   iCCIEx (period, applied_price, shift)

   Bolinger bands extended iBandsEx (period, deviation, bands_shift, applied_price, mode, shift)

   MACD extended
   iMACDEx (fast_ema_period, slow_ema_period, signal_period, applied_price, mode, shift)

   Moving average extended
   iMAEx (period, ma_method, ma_shift, applied_price, shift)

   Momentum extended
   iMomEx (period, applied_price, shift)

   RSI extended
   iRSIEx (period, period2, applied_price, mode, shift)

   Если Вы заметили, у любого из расширенных индикаторов есть параметр <applied_price>. Этот параметр может принимать 7 значений: PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL и PRICE_WEIGHTED. Т.е индикатор может строится от цены закрытия, цены открытия, максимальной цены, минимальной цены, PRICE_MEDIAN ( (high+low)/2), PRICE_TYPICAL ((high+low+close)/3 ), PRICE_WEIGHTED ((high+low+close+close)/4 ). Все названия расширенных индикаторов заканчиваются буквами <Ex>, и только этим отличаются от названий таких же стандартных индикаторов.

 

   5.4. Эксперт

   Для закрепления знаний, напишем эксперт. Он будет использовать 2 индикатора, скользящую среднюю с большим периодом и RSI. Если RSI выше определенной нами верхней оверзоны, развернулся вниз и средняя направлена вниз, то эксперт будет продавать. Если RSI ниже нижней оверзоны, развернулся вверх и средняя направлена вверх, то покупаем. Выход из позиции осуществляется по выставленным стопам.

/*[[
Name := Expert4
Author := Fxtest.ru
Link := forextimes.ru
Lots := 1.00
Stop Loss := 40
Take Profit := 40
Trailing Stop := 0
]]*/
defines:
per(7), Upzone(70), Downzone(30), BigTrend(100);
//per-период RSI; Upzone, Downzone-оверзоны, BigTrend - период средней показывающей глобальный тренд
var: r1(0), r2(0), m1(0), m2(0);
// r1-прошлое значение RSI r2-позапрошлое значение RSI

r1=iRSI(per,1);
r2=iRSI(per,2);
m1=iMA(BigTrend, MODE_SMA,1); //MA простого типа (SMA)
m2=iMA(BigTrend, MODE_SMA,2);

if TotalTrades<1 then { //играть если открытых позиций нет

if r2>r1 and r2>Upzone and m1<m2 then //если образовался экстремум и он выше верхней оверзоны, и глобальный

тренд вниз, продавай
{SetOrder(op_sell, lots, bid, 3, ask+stoploss*point, ask-takeprofit*point, red); exit;};

if r2<r1 and r2<Downzone and m1>m2 then //если образовался экстремум и он ниже нижней оверзоны, и

глобальный тренд вверх, покупай {SetOrder(op_buy, lots, ask, 3, bid-stoploss*point, bid+takeprofit*point, green);

exit;};};

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

Компания «Fxtest»
Халхальян Артур
техническая поддержка трейдеров
artur@fxtest.ru






Cтатья опубликована на сайте "Форекс форум. Торговля на Forex. Cообщество трейдеров":
http://youfx.ru

Адрес статьи:
http://youfx.ru/modules/myarticles/article_storyid_5.html