К тому что явного указания на порядок расчета в нем не было.
А это что тогда по Вашему:
ArraySetAsSeries(ExtBuffer_MA,true);
ArraySetAsSeries(ExtBuffer_EMA,true);
ArraySetAsSeries(ExtBuffer_CF,true);
Не надо считать своих коллег дураками на столько что посылаете читать справку.
Так я никого и не считаю "дураками", это только Ваше мнение/умозаключение...
А читать справку никогда лишним не будет, сам заглядываю, всего помнить/знать не к чему - главное, что нужно знать где можно быстро найти ответ на нужный вопрос, вот тут справка в первую очередь.
От того что вы поменяли порядок расчета изменилось вообще все. Т.е. вы не исправили ситуацию и сделали совершенно другой индикатор.
Красный - оригинал, Белый - ваш.
Да, изменилось. Но тут скорее всего, вопрос к автору индюка, т.к. ф-ция CalculateCF данного индюка начинается с:
int i,limit;
//--- first calculation or number of bars was changed
if(prev_calculated==0)
{
limit=ext_period_MA+begin;
for(i=begin;i<limit;i++)
ExtBuffer_CF[i]=ExtBuffer_EMA[i];
}
else limit=prev_calculated-1;
//--- main loop
for(i=limit;i<rates_total && !IsStopped();i++)
{
....
Т.е., при первом проходе, в момент старта, у нас всегда
prev_calculated = 0, а rates_total равно значению доступных баров. После первого прохода
prev_calculated = rates_total, например, доступно 5000 баров, тогда
limit станет равным 4999. А теперь смотрим на цикл: куда считаем? Имеем:
for(i=4999; i<5000 && !IsStopped();i++)
Вопрос: а что, новый бар имеет индекс 5000? То откуда и куда считаем, какое направление индексации?
Поэтому,
i-1 не означает, что заглядывает в будущие, в данном случае - настоящие.
PS.
да, можно сделать, что будет один в один, например вот так:
int i,limit;
//--- first calculation or number of bars was changed
prev_calculated=0;
if(prev_calculated==0)
{
limit=ext_period_MA+begin;
for(i=begin;i<limit;i++)
ExtBuffer_CF[i]=ExtBuffer_EMA[i];
}
Но в таком случае индюк будет пересчитывать всю историю на каждом тике, что в свою очередь будет нагружать терминал или переписать всю ф-цию, применив расчет как в таймсерии, но я не знаю как все изначально было задумано автором, а Вы знаете?
К тому же, Вы даже не удосужились проверить индюка на перерисовку хотя бы на М1...