Отрицательный MovingShift в ima

 

......

extern int MovingShift1 = -3;

......

ma1=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,0);

.....


Есть такой вот кусок кода, ma1 = 0 всегда, хотя на графике mooving с MovingShift<0 строится прекрасно.

Подскажите как правильно получить значение ima для MovingShift<0 ?

 

Никогда не понимал значение сдвига МА. Это чтобы запудрить себе мозги покруче и потом в замешательстве задаваться такими вопросами? 

В вашем случае на текущем, первом и втором барах значений МА еще нет. Вы ведь сдвинули все эти значения на третий бар! Выходит, что для получения текущего значения средней нужно обратиться к значению  средней со сдвигом 3 на третьем баре. В итоге это будет эквивалентно значению средней со сдвигом 0 на текущем баре.

 

Как я понял вы предлагаете сделать цикл из 3х нулевых значений мувинга, а потом обращаться к 3му элементу массива?

Нечто следующие:

for (i=0; i<=3; i++)

{

ma[i]=iMA(NULL,0,MovingPeriod,0,MODE_LWMA,PRICE_CLOSE,0);

}

ma1=ma[3];



Как я понимаю в этом случае будет сдвиг -3. Верно?

 
Не работает почему то такой способ. Вопрос открыт
 

Я застенчивый, поэтому, прежде чем спросить, провожу примитивные проверки в пределах своей некомпетентности.

      double ma0=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,0);
      double ma1=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,1);
      double ma2=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,2);
      double ma3=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,3);
      double ma4=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,4);
      double ma5=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,5);
      Comment("  ma1= ",ma1,"  ma2= ",ma2,"  ma3= ",ma3,"  ma4= ",ma4,"  ma5= ",ma5);
//результат вывода Comment:   ma1= 0  ma2= 0  ma3= 133.7084  ma4= 133.7147  ma5= 133.7208      

Подозреваю, что это может сделать каждый, кто написал свои первые три строки кода..

 

Отрицательное смещение индикатора означает, что линия индикатора смещается на ценовом графике влево.

В данном случае влево на 3 бара. Это означает, что последнее значимое значение индикатора находится на 3-м баре.

ma1=iMA(NULL,0,MovingPeriod,MovingShift1,MODE_LWMA,PRICE_CLOSE,3);

То есть обращения по индексу 0, 1 и 2 дадут 0, что мы и видим

 
О-о! stringo нашел время заглянуть на форум! Похоже, МТ5 вот-вот опубликуют. Или это Вы на перекур вышли?
 

Спасибо за объяснение

ps

я не застенчивый, поэтому спросил совет у профессионалов, застенчивые пусть советуются с мануалами, чего я им и желаю

 
Aristotel >>:

..я не застенчивый, поэтому спросил совет у профессионалов, застенчивые пусть советуются с мануалами, чего я им и желаю

ТушЕ..

Причина обращения: