Медленное выполнение советника в тестере

 

Добрый день. Сталкнулся с задачей. Прошу помощи.

Есть код:

// Расчет чисел Фибоначчи по периоду
int FiboPeriod (int n)
{
   if (n <= 1)
      return 1;
   else
      return FiboPeriod(n - 1) + FiboPeriod(n - 2);
}

void start ()
{
   // 10 периодов чисел Фибоначчи
   for (int i = 1; i <= 10; i ++)
   {
      // Раскладываем каждый период
      for (int j = 0; j < FiboPeriod(i); j ++)
      {
         // Требуется получить
         // сумму всех чисел
         // по периоду Фибоначчи
      }
   }
}

Тестирую его в тестере стратегий. На 5-минутке. За последний месяц. Подгрузил все минутные котировки. Настройки баров в истории и в окне стандартные. Но что-то идет не так...

Прокрутка выполнения советника стоит на максимум (32), а график движется чуть быстрее средней скорости (~25).
Когда нажимаю "Прокрутить до" последней даты - приходится ждать минут по 5-10, чтобы тестирование завершилось.

Изначально в Журнале получал, что-то вроде "Слишком много тиков для D1 графика" - но я нигде не указывал, что нужно связываться с D1 таймфреймом :).

Этот же советник но без 2-го цикла выполняется как надо - быстро и без лишнего. 

Что я делаю не так? Почему так долго?
Этот код настолько грамоздкий для выполнения его на моем компьютере (2 ядра, 2 гб. процессора)?
Можно этот код загрузить в индикатор, а в советник передавать только результаты выполнения? Это ускорит работу?
Другая причина, что может быть?

Не знаю что делать... Помогите пожалуйста :).

 
Нашел вариант решения. Тестировать не по всем тикам, а только по ценам открытия
 
А зачем вам на каждом тике пересчитывать этот ряд? Рассчитайте его в OnInit(), поместите результаты в массив, и используйте там где нужно.
Причина обращения: