Помогите!!! с iMA (Moving Average)

 

Проблема в следующем.
Я три дня пытаюсь получить данные при тестировании эксперта.
Все 4 вызова функции возвращают исключительно ноль.
Получается получить данные только по текущему бару. (т.е. MA_bar0 )
Бары по 15 минут.
Подскажите где я ошибаюсь?

MA_bar0 = iMA(NULL, 0, 7, 0, MODE_EMA, PRICE_CLOSE,0);

MA_bar1 = iMA(NULL, 1, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar2 = iMA(NULL, 2, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar3 = iMA(NULL, 3, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar4 = iMA(NULL, 4, 7, 0, MODE_EMA, PRICE_CLOSE,0);

С уважением.
Александр.

 
Alex2112 писал(а) >>

Проблема в следующем.
Я три дня пытаюсь получить данные при тестировании эксперта.
Все 4 вызова функции возвращают исключительно ноль.
Получается получить данные только по текущему бару. (т.е. MA_bar0 )
Бары по 15 минут.
Подскажите где я ошибаюсь?

MA_bar0 = iMA(NULL, 0, 7, 0, MODE_EMA, PRICE_CLOSE,0);

MA_bar1 = iMA(NULL, 1, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar2 = iMA(NULL, 2, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar3 = iMA(NULL, 3, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar4 = iMA(NULL, 4, 7, 0, MODE_EMA, PRICE_CLOSE,0);

С уважением.
Александр.


double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
Расчет скользящего среднего.

Параметры:

symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
period - Период усреднения для вычисления скользящего среднего.
ma_shift - Сдвиг индикатора относительно ценового графика.
ma_method - Метод усреднения. Может быть любым из значений методов скользящего среднего (Moving Average).
applied_price - Используемая цена. Может быть любой из ценовых констант.
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

Пример:
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
 

Хорошо пьёт тот, кто плохо закусывает :)
https://docs.mql4.com/ru/constants/timeframes

 
Человеку явно нужно в МТ5 смотреть... Там с такими таймфреймами ему явно попроще будет...
 

Спасибо за ответ я книжку по этому вопросу прочитал 20 раз.

Я не догоняю что вы имеете ввиду - "Период. Может быть одним из периодов графика. 0 означает период текущего графика."
А какие могут быть периоды графика, TimeFrame как то связан с period ?

т.е. функция iMA не имеет таймфрэйм массив?
Я думал что TimeFrame - это и емть индекс в таймфрэймовом массива iMA.
Если нет массива, то значит я зделаю его сам но мне нужно разобраться в сути вопроса.

Проша Вас помогите разобраться.
Стою на месте 3-й день.

 
Таймфрейм оставьте в покое (М1 например), а для получения данных нужного периода для Вашей задачи варьируйте параметр "int ma_method" (период сглаживания) и получите нужный результат...
 

MA_bar0 = iMA(NULL, 0, 7, 0, MODE_EMA, PRICE_CLOSE,0);
-
MA_bar1 = iMA(NULL, 1, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar2 = iMA(NULL, 5, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar3 = iMA(NULL, 15, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar4 = iMA(NULL, 30, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar5 = iMA(NULL, 60, 7, 0, MODE_EMA, PRICE_CLOSE,0);
MA_bar6 = iMA(NULL, 240, 7, 0, MODE_EMA, PRICE_CLOSE,0);
и т.д.

 

Я похоже понял. Но не до конца.

Поясню суть задачи.

Индикатор Moving Average прикрепленный к графику, и чертящий линию.
Имеет таймфрэйм масиив. Если я вызываю iMA, то я получаю данные разово для данной конкретной свечки.
И следовательно для получения массива истории, данные я должен писать сам в массив?

 
Да, а метод МА не при чем. Это я про совет Joker'а. // тогда уж логичнее период кратно тф увеличивать. Наверно, он это имел ввиду.
 

Alex2112, а что вы хотите, я так и не понял. Подробнее можно?

 
Svinozavr >>:
Да, а метод МА не при чем. Это я про совет Joker'а. // тогда уж логичнее период кратно тф увеличивать. Наверно, он это имел ввиду.

именно...

А то человек уж историю рынка собрался писать в массивы истории... Машину времени однозначно пишет )))

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