high = sec.HighPrices[i];
low = sec.LowPrices[i];
highM = sec2.HighPrices[i];
lowM = sec2.LowPrices[i];

так нельзя. связано с тем что при обращении к данным массивам сначала идет обращение в кэш и это жрет много времени. посмотрите как реализовано в нативном коде тслаба. обычно перед торговым циклом всегда идет забор этих массивов в локальную переменную и дальше работаем с миссивами из локальных переменных.
Это может сильно влиять.
В общем как я ранее говорил - изучайте статьи на русалго по скорости скриптов ну и нужен опыт. Иначе можно легко написать плохо.
_________________________
__