Мне вообще непонятно, как сам автор смог сделать тестирование, дабы убедиться, что советник работает. Проблема заключается в том, что при программировании здесь не учтена особенность выполнения основной процедуры start(). Эта процедура выполняется при каждом тике. Если чрезмерно нагрузить ее вычислениями, то советник не успеет пересчитывать значения индикатора за время от одного тика до другого. Поэтому часть тиков советник просто теряет. Здесь же на каждом тике происходит многократное обращение к прилагаемому индикатору с передачей большого числа параметров. Это сильно тормозит выполнение советника, про тестирование в реальном времени я уже не говорю. Тем более про оптимизацию. Я немного изменил код советника так, чтобы расчеты он делал только в начале каждой новой свечи. На мой взгляд, это оптимально, т.к. дает более устойчивые результаты. После модификации советник стал работать заметно быстрее. По крайней мере, уже можно худо-бедно тестировать. Но результаты все равно не радуют.