Для пересечения машек на M15 пять лет реальных тиков это минут 20-40 на обычном ноутбуке. Почти наверняка ты на каждом тике создаёшь хэндлы индикаторов или копируешь сотни баров. Хэндлы создаются один раз в OnInit, а сигнал достаточно считать раз в бар:
Код:
// hFast, hSlow, hRsi создаются один раз в OnInit
datetime lastBar = 0;
void OnTick()
{
datetime t = iTime(_Symbol, PERIOD_M15, 0);
if(t == lastBar) return; // бар тот же, считать нечего
lastBar = t;
double fast[3], slow[3];
if(CopyBuffer(hFast, 0, 1, 3, fast) < 3 || CopyBuffer(hSlow, 0, 1, 3, slow) < 3) return;
// дальше пересечение по закрытым барам 1 и 2
}
Если стоп и тейк ставятся сразу при входе, то между барами советнику вообще нечего делать, тестер сам отработает их на тиках.