2 способа вычисления индикатора, какой более правильный?

 

индикатор самый простой, рисует график инструмента, но способы получения разные, какой более предпочтительный и почему?(я только недавно изучаю МТ5)

способ 1:

int first;
  if(prev_calculated == 0)  //если ранее ни один бар не был пересчитан
    first = 0;  //можно указать любой начальный бар
  else
    first = prev_calculated - 1;  //если бары уже считались то ставим щетчик начала на последний бар

  for(int i = first; i < rates_total; i++)  //
    {
    Buf1[i] = close[i];   
    }

способ 2:

int first2;
  if(rates_total == prev_calculated)  //нет нового бара
    first2 = rates_total - (prev_calculated - 1);  //пересчетать последний тк по ценам закрытия(можно просто 1)
  else
    first2 = rates_total - prev_calculated;  //баров для копирования
    
  CopyClose(Symbol_1, 0, 0, first2, Buf1);

или лучше вообще все по другому сделать?