Обсуждение статьи "Как написать индикатор в MQL5"

 

Опубликована статья Как написать индикатор в MQL5:

На примере создания индикатора True Strength Index в статье рассказывается, как писать индикаторы на MQL5

Вторая версия индикатора True Strength Index выглядит лучше

Автор: MetaQuotes Software Corp.

 
Нет ли ошибки в том, что расчет индикатора (начиная с буферов MTM) выполняется, игнорируя параметр begin? Было упомянуто, что пользователь может применить индикатор к другому произвольному индикатору, и не факт, что там будут данные.
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
marketeer   :

Нет ли ошибки в том, что расчет индикатора (начиная с буферов MTM) выполняется, игнорируя параметр begin? Было упомянуто, что пользователь может применить индикатор к другому произвольному индикатору, и не факт, что там будут данные.
Вы совершенно правы, этот момент не отражен в статье. Надо будет добавить соответствующий абзац в статью и код как можно скорее, иначе возникнут вопросы. Спасибо.
 
Пожалуй, будет добавлено только предупрждение, так как иначе статья станет слишком сложной для первого знакомства. Этот момент будет отражен в следующей готовящейся статье.

 
Спасибо за традиционно понятное изложение. Ещё бы по советникам и по новинкам, Вашим текстом.
 
Всех с наступившем NY. Подскажите, планируется ли работа отладчика MQL5 в индикаторах? Спс

 
AdwareRu   :
Всех с наступившем NY. Подскажите, планируется ли работа отладчика MQL5 в индикаторах? Спс

Да, будет.

 
Rosh   :

Да, будет.



Это очень радует
 

незначительный комментарий:

в статье на сайте где написано "Требуется оптимизировать только вычисление значений для массива TSIBuffer[], но это не сложно сделать тем же способом, что был использован для MTMBuffer[].

идет код :

//--- теперь вычислим значения индикатора
   if(prev_calculated==0) start=r+s-1; // установим начальный индекс для входных массивов
   for(int i=start;i<rates_total;i++)
     {
      TSIBuffer[i]=100*EMA2_MTMBuffer[i]/EMA2_AbsMTMBuffer[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);

где нужно дописать значение переменной start, если prev_calculated не равно 0. В исходнике этот упущенный момент присутствует.

 
Diver:

где нужно дописать значение переменной start, если prev_calculated не равно 0. В исходнике этот упущенный момент присутствует.

ничего не упущено. код для start выше.
 
sergeev:
ничего не упущено. код для start выше.

вы посмотрите код который я привел и сравните с исходником.

нужно добавить :

else start=prev_calculated-1; 

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