Почему увеличиваеться нагрузка на компьютер?
Иначе получается игра в прятки. У Вас что-то там не так работает, но Вы теряете время, задавая вопросы без полного кода.
Тут достаточно программистов - наверняка сразу же укажут на проблемное место.
Смотрите. Пробуйте. Если убрать вышеуказанный код, а qwerty заменить на 24, задержек не будет.
int period=Period(); double qwerty=24; if(period==PERIOD_M1) qwerty=1440; if(period==PERIOD_M5) qwerty=288; if(period==PERIOD_M15) qwerty=96; if(period==PERIOD_M30) qwerty=48; if(period==PERIOD_H1) qwerty=24; if(period==PERIOD_H4) qwerty=6; if(period==PERIOD_D1) qwerty=1; if(period==PERIOD_W1) qwerty=0.25; if(period==PERIOD_MN1) qwerty=0.0417;
Попробуйте
int period=Period(); double qwerty=24; if(period==PERIOD_M1) qwerty=1440; if(period==PERIOD_M5) qwerty=288; if(period==PERIOD_M15) qwerty=96; if(period==PERIOD_M30) qwerty=48; if(period==PERIOD_H1) qwerty=24; if(period==PERIOD_H4) qwerty=6; if(period==PERIOD_D1) qwerty=1; if(period==PERIOD_W1) qwerty=0.25; if(period==PERIOD_MN1) qwerty=0.0417;
Но в момент переключения таймфрейма весь индикатор пересчитывается с самого начала.
Какова глубина истории в барах?
Можно сократить немного
double qwerty = PERIOD_D1/period;
if(period==PERIOD_W1) qwerty=0.25;
if(period==PERIOD_MN1) qwerty=0.0417;
Можно сократить немного
double qwerty = PERIOD_D1/period;
if(period==PERIOD_W1) qwerty=0.25;
if(period==PERIOD_MN1) qwerty=0.0417;
собсно и
if(period==PERIOD_W1) qwerty=0.25;
if(period==PERIOD_MN1) qwerty=0.0417;
тоже нада в инит()
Только сейчас увидел, что расчёт qwerty идёт внутри цикла. При том, что эта переменная является инвариантом.
При полном пересчёте индикатора - неоправданные тормоза.
2.присвоения вынес в инит()
3.никаких изменений в скорости отработки не заметил
4.при переключении с между М1и М5 задержка 1-1,5 с. (отрабатываются все бары)
5.Машина - Р 2,4Г, 1Г мозгов
При переключении ТФ, задержки и нагрузка на процессор.
При использовании такого же индикатора, но без этого кода, тормозов нет. Кто знает в чем дело?