Учимся писать эксперты для MetaTrader. Урок №19
|

Учимся писать эксперты для MetaTrader. Урок №19

Обучение MQL II. Урок 19


   Здравствуйте дорогие читатели! Уже не один читатель просил меня переписать с Омеги или Метастока АМА (адаптивную скользящую среднюю) Кауфмана. В сегодняшнем выпуске мы напишем именно это индикатор.


   Алгоритм
  
   Подробное описание индикатора и алгоритма его работы изложено Константином Копыркиным, в статье “Динамические скользящие средние. Часть 2”, журнала “Современный трейдинг”. Статью в формате PDF (475 kB), сможете скачать тут: http://fxtest.ru/AMA.pdf


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


   Для тех, кто не скачал статью, в двух словах опишу алгоритм. Индикатор имеет период, он определятся количеством баров участвующих в расчета индикатора. За этот период определяется, так называемая, “эффективность движения”. “Эффективность движения” рассчитывается как отношение перемещения к траектории цены за период. Максимальное значение этого коэффициента 1, минимальное 0. Например, период 10 и все прошлые 10 свечей “бычьи”, в этом случае “эффективность движения” будет равно 1. Траекторию считаем по ценам закрытия. В индикаторе устанавливаем два периода усреднения (ЕМА), большой и маленький. В этих пределах будет меняться период АМА в зависимости от “эффективности движения”. Т.е. минимальный период для значения 1 и максимальный для 0.


   Во внешние переменные вынесем период АМА, граничные периоды (большой и маленький ЕМА) и количество баров на котором будет отображаться индикатор.


   Заключение
  
   О полезности этого индикатора разные люди говорят разное, но его идея настолько просто и логична, что это технический инструмент вызывает у меня большую симпатию. Я уверен, что найдутся трейдеры, которым этот индикатор придется по душе.


   /*[[
   Name := AMA
   Author := forextimes
   Link := fxtest.ru
   Notes := AMA Kaufman
   Separate Window := No
   First Color := Blue
   First Draw Type := Line
   First Symbol := 217
   Use Second Data := No
   Second Color := Red
   Second Draw Type := Line
   Second Symbol := 218
   ]]*/
   inputs:n(10),fastMA(2),slowMA(30),Nbars(500);
   Variable : shift(0),k(0),Noise(0),signal(0),i(0),AMA(0),ssc(0),er(0),AMA1(0);


   SetLoopCount(0);
   // loop from first bar to current bar (with shift=0)
   AMA1=c[Nbars]; //это исскуственное первое значение индикатора, приравниваем к цене закрытия


   For shift =Nbars Downto 0 Begin //начало рассчета значачений индикатора


   signal=0; //перемещение
   Noise=0; // траектория


   signal=abs(c[shift]-c[shift+n-1]); //вычисляем перемещение


   for i=shift To shift+n-1 Begin
   Noise=Noise+abs(c[i]-c[i+1]); //вычисляем траекторию
   end;


   er=signal/Noise; //<эффективность движения>
   ssc=er*(2/(1+fastMA)-2/(1+slowMA))+(2/(1+slowMA));// изменяющая сглаживающая константа


   AMA=(c[shift]*ssc*ssc)+GetIndexValue(shift+1)*(1-ssc*ssc); //значение АМА
   if shift=Nbars then AMA=(c[shift]*ssc*ssc)+AMA1*(1-ssc*ssc); //знгачение АМА для первого бара


   SetIndexValue(shift,AMA); //заносим значение АМА в массив индикатора


   End;


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