Индикаторы: ColorZerolagMomentumOSMA

 

ColorZerolagMomentumOSMA:

Сглаженная скорость изменения индикатора ColorZerolagMomentum, представленная цветной гистограммой, позволяет достаточно точно определять направление действующего тренда.

Рис.1. ColorZerolagMomentumOSMA

Автор: Nikolay Kositsin

 

Здравствуйте, хотелось бы обсудить такой момент. В данном индикаторе у Вас идет проверка:

if(BarsCalculated(Momentum1_Handle)<rates_total
      || BarsCalculated(Momentum2_Handle)<rates_total
      || BarsCalculated(Momentum3_Handle)<rates_total
      || BarsCalculated(Momentum4_Handle)<rates_total
      || BarsCalculated(Momentum5_Handle)<rates_total
      || rates_total<min_rates_total)
      return(0);

Получается, если количество баров по одному из используемых индикаторов меньше rates_total, то индикатор пересчитается полностью (т.к. return(0)). Не лучше ли было вынести все проверки на равенство с rates_total отдельно и, в случае не совпадения, возвращать return(prev_calculated)? Ведь тогда будет пересчитываться только последний бар (когда BarsCalculated() == rates_total), а не вся история. 

Заранее спасибо за ответ. 

 
Tapochun:

Здравствуйте, хотелось бы обсудить такой момент. В данном индикаторе у Вас идет проверка:

Получается, если количество баров по одному из используемых индикаторов меньше rates_total, то индикатор пересчитается полностью (т.к. return(0)). Не лучше ли было вынести все проверки на равенство с rates_total отдельно и, в случае не совпадения, возвращать return(prev_calculated)? Ведь тогда будет пересчитываться только последний бар (когда BarsCalculated() == rates_total), а не вся история. 

Заранее спасибо за ответ. 

Да, в принципе, ваша логика вполне разумна. Я как-то пытался именно так и делать, но что-то у меня не срослось, но что конкретно, я за давностию лет уже и не припомню. Помню только, что поймал индикатор при таком варианте кода на каком-то глюке и решил оставить, как было.
Причина обращения: