iMAOnArray - помогите, пожалуйста! - страница 2

 
SeriousRacoon:

У вас индикатор считается от самого свежего бара в сторону истории. Подозреваю, что рисуется он не так, как должен, хоть вам и кажется, что всё нормально.

Далее, чему будут равны значения i в этом цикле: for(int i = k - TotalBars; i < k; i++), если k меньше TotalBars? вот.

Соглашусь с вами частично, т.к. рисует он все-таки нормально, хотя я понимаю, что данный цикл неверен...
 
Ihor Herasko:

Проанализируйте, что будет рассчитано вот в этом цикле, если значение k равно 0, а значение TotalBars более нуля:

Чтобы понять, в чем дело, запустите индикатор в тестере на всех тиках, а потом сравните полученный результат с индикатором, наброшенным на график после окончания тестирования:


Минутку, сейчас сделаю.
 
33valeta.ru:
Соглашусь с вами частично, т.к. рисует он все-таки нормально, хотя я понимаю, что данный цикл неверен...
Он может рисовать нормально только на истории, но будет с появлением новых баров выдавать мусор, как проиллюстрировал Игорь.
 

Наверное, имелся в виду такой вот подход:

   for(int k = limit - 1; k >= 0; k--)
     {
      white_4H=0;black_4H=0;
      for(int i = k + TotalBars; i > k; i--)
        {
         if(iClose(NULL,PERIOD_H4,i)>iOpen(NULL,PERIOD_H4,i))white_4H+=iClose(NULL,PERIOD_H4,i)-iOpen(NULL,PERIOD_H4,i);
         if(iClose(NULL,PERIOD_H4,i)<iOpen(NULL,PERIOD_H4,i))black_4H-=iOpen(NULL,PERIOD_H4,i)-iClose(NULL,PERIOD_H4,i);
        }

      ExtBuffer[k]=white_4H+black_4H;
     }

   for(int n=0;n<limit;n++)
      MA[n]=iMAOnArray(ExtBuffer,0,MA_per,0,MODE_SMA,n);

   return(rates_total);
 
Ihor Herasko:

Наверное, имелся в виду такой вот подход:

Приветствую!

если не затруднит, а Вы можете объяснить в ф-ции: https://docs.mql4.com/ru/indicators/imaonarray

double  iMAOnArray(
   double       array[],          // массив
   int          total,            // количество элементов
   int          ma_period,        // период
   int          ma_shift,         // сдвиг средней
   int          ma_method,        // метод усреднения
   int          shift             // сдвиг
   );


что делает параметр total ?

я пару месяцев назад перерыл весь форумпоиском, но к удивлению не нашел однозначного ответа, если total =0 , то обычно расчет МА происходит без проблем, а вот если задавать его вручную, то с вариантами, пробовал и total = 2 * ma_period , все равно бывает не рассчитывает значения, как правильно подбирать параметр total ?

iMAOnArray - Технические индикаторы - Справочник MQL4
iMAOnArray - Технические индикаторы - Справочник MQL4
  • docs.mql4.com
В отличие от iMA(...), функция iMAOnArray не выбирает данные на основе названия инструмента, таймфрейма и используемой цены - ценовые данные должны быть подготовлены заранее...
 
Ihor Herasko:

Проанализируйте, что будет рассчитано вот в этом цикле, если значение k равно 0, а значение TotalBars более нуля:

Чтобы понять, в чем дело, запустите индикатор в тестере на всех тиках, а потом сравните полученный результат с индикатором, наброшенным на график после окончания тестирования:


Благодарю за совет.

Странно, что два абсолютно идентичных индикатора (в советнике и прикрепленный после теста) не совпали. Хотя практически одинаковы.

Файлы:
forum001.PNG  45 kb
 
SeriousRacoon:
Он может рисовать нормально только на истории, но будет с появлением новых баров выдавать мусор, как проиллюстрировал Игорь.
Вы хотите сказать, что если я установлю его на график, то он будет красиво выглядеть. Но если появится новый H4 бар, то получится ерунда?
 
Ihor Herasko:

Наверное, имелся в виду такой вот подход:

Не совсем. Так как получается иной график. Хотя ваш вариант абсолютно рабочий. Спасибо. Сейчас попробую разобраться, как использовать ваш вариант, чтобы получить то, что я вижу в первом варианте.
 
Igor Makanu:

что делает параметр total ?

я пару месяцев назад перерыл весь форумпоиском, но к удивлению не нашел однозначного ответа, если total =0 , то обычно расчет МА происходит без проблем, а вот если задавать его вручную, то с вариантами, пробовал и total = 2 * ma_period , все равно бывает не рассчитывает значения, как правильно подбирать параметр total ?

К сожалению, у меня тоже нет ответа на этот вопрос. Всегда задавал его равным нулю и получал то, что нужно. Если total отлично от нуля, то полученный результат не удавалось никак объяснить. 

 
33valeta.ru:
Вы хотите сказать, что если я установлю его на график, то он будет красиво выглядеть. Но если появится новый H4 бар, то получится ерунда?
Запустите индикатор в тестере, для этого теста достаточно метода контрольных точек. Там всё будет видно.