Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Делись ссылками на продукты и получай доход с этого
Иван
517
Иван 2012.05.03 10:35 

Привожу пример где iMAOnArray работает неправильно.

Параметрах индикатора можно переключать между iMAOnArray и функцией LWMA, которая считает машку по массиву правильно.

double utils.iMAOnArray(double &buffer[], int period, int shift) {
   //if(shift > 200 ) {
   //   return(0);
   //}
   if(isMaOnArray){
      double value = iMAOnArray(buffer, 0, period, 0, maType, Bars - 1 - shift);
   } else {
      value = LWMA(buffer, period, Bars - 1-shift);
   }
   return(value);
}
Файлы:
test_1.mq4 3 kb
Иван
517
Иван 2012.05.03 10:42  
TheXpert:
поиск рулит.

Не нашел обсуждения такой темы, похоже в функции явная ошибка.
Комбинатор
15636
Комбинатор 2012.05.03 10:51  
excelf:
Не нашел обсуждения такой темы, похоже в функции явная ошибка.

Редко, но всплывает. Вот например.

Или загуглите <iMAOnArray неправильно site:mql4.com>

Иван
517
Иван 2012.05.03 11:16  
Спасибо, остается пожалеть, что бы разработки обратили внимание на эту проблему и исправили.
Комбинатор
15636
Комбинатор 2012.05.03 11:17  
Возможно проблема шире и глубже чем мы ее видим. Я вот уже давно iMAOnArray использую с большой осторожностью.
Александр
1087
Александр 2012.05.03 18:00  

По теме ответ разработчиков:

Rosh:

Объяснение такое: все встроенные индикаторы, которые рассчитываются на массивах (iBandsOnArray, iCCIOnArray, iEnvelopesOnArray, iMomentumOnArray, iMAOnArray, iRSIOnArray, iStdDevOnArray), написаны со своей встроенной оптимизацией, которая экономно рассчитывает последние 1-2 бара. При этом алгоритм расчета в какой-то мере опирается на значение количества неизмененных баров с момента последнего пришедшего тика (вспомните IndicatorCounted). Такой механизм экономного расчета удовлетворяет в 99% случаев. Меняться это не будет, если Ваш случай не подходит под данный механизм расчета, Вы можете написать собственную функцию, что собственно Вы и сделали.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий