Оптимизация кода индикатора BB

 

Есть очень простой и поэтому очень быстрый советник, 95% времени исполнения которого занимает вызываемая на каждом тике дважды функция iBands:

lower = iBands(_Symbol,0,_Period,dev,0,0,MODE_LOWER,0);
upper = iBands(_Symbol,0,_Period,dev,0,0,MODE_UPPER,0);

Возможно ли как-нибудь перенести вычисления индикатора в сам советник таким образом, чтобы скорость вычисления уровней lower и upper увеличилась в несколько раз?

Первое что приходит в голову - можно вычислить lower через индикатор, а upper вычислить как SMA + расстояние от SMA до lower.

Или просто через какой-нибудь индикатор вычислять на каждом тике стандартное отклонение и откладывать его величину вверх и вниз от SMA.

Полагаю что это должно увеличить скорость вычисления уровней индикатора почти в 2 раза.

Но возможно ли увеличить скорость ещё в несколько раз если перенести код индикатора в советник?

 
Можно значения запрашивать при закрытии свечи
 
seeder:

Есть очень простой и поэтому очень быстрый советник, 95% времени исполнения которого занимает вызываемая на каждом тике дважды функция iBands:

Возможно ли как-нибудь перенести вычисления индикатора в сам советник таким образом, чтобы скорость вычисления уровней lower и upper увеличилась в несколько раз?

Первое что приходит в голову - можно вычислить lower через индикатор, а upper вычислить как SMA + расстояние от SMA до lower.

Или просто через какой-нибудь индикатор вычислять на каждом тике стандартное отклонение и откладывать его величину вверх и вниз от SMA.

Полагаю что это должно увеличить скорость вычисления уровней индикатора почти в 2 раза.

Но возможно ли увеличить скорость ещё в несколько раз если перенести код индикатора в советник?

А работа по ценам открытия не нравится?
 

Дело в том что в советнике используются значения индикатора для цен закрытия и только актуальные (для текущего тика).

Значения для других баров или для цен открытия не нужны. Да, по ценам открытия было бы очень быстро конечно

Причина обращения: