ВОПРОС: линии индикатора по истории прорисовываются, перерисовываются, когда нужно. В режиме онлайн - тоже рисуются, но не перерисовываются. Почему? подскажите

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Комрады программеры, подскажите!
При открытии графика, при переключении таймфреймов, по истории баров все линии индикатора корректно просчитываются, прорисовываются, 1 линия правильно перерисовывается на определенных отрезках, по моим условиям. В режиме онлайн, в тиковом режиме, при появлении новых баров, все линии нормально отрисовываются. Но нет перерисовки (по определенным условиям) линии RSI. Также, заметил: текущий бар, если линия RSI нуждается в перерисовке, нормально перерисуется. Но вот уже следующий бар опять не будет перерисован.
Сказать, что это проблема логики? Тогда бы и история и активный бар не были бы перерисованы. Потому на оператор switch думаю... Какое-то непосредственное обращение на каждом новом баре нужно добавить. Что подскажете? Еще вариант: по закрытию баров логика работает нормально, тк по истории все хорошо рисуется, перерисовывается. Активный бар - тоже. А вот все другие бары в режиме онлайн теряют значения при новых тиках, очевидно. Хотя странно, я же работаю с циклом i-х баров. Не могу понять, как исправить.
Вариант решения проблемы: часть логики проверять по закрытию баров, часть в тиковом режиме (я переделаю тогда), но как это устроить, не знаю. Кстати, такой вариант предпочтительнее, тк повысит быстродействие, уменьшит нагрузку на терминал.
Использую:
строгий режим проверки ошибок (#property strict)
Тк индюк рассчитан на несколько торговых инструментов и несколько тайм-фреймов, некоторые константы, что ввожу 1 раз в окне индикатора, уточняю через арифметические формулы (там ошибок нет). Беру значения констант из нескольких операторов switch (пример, таймфрейм m5, кусок кода, аналогично по другим тф, коэффициенты другие):
switch(Period())
{
case 5: ImpCoef=Base_Imp*Coef_m5; bLongNCh=iLngNCh; bLongMCh=iLngMCh; bLongECh=iLngECh;
cCh_midOUT=iCh_midOUT+0.5; cCh_bigSIGN=iCh_bigSIGN+0.2; cCh_minSIGN=iCh_minSIGN+0.3; break;
Использую 1 цикл, обычный:
int i,counted_bars=IndicatorCounted();
int limit=Bars-counted_bars-1;
for(i=limit;i>=0;i--) {...}
и вот кусочек кода в цикле: (использую только логические операции и опять же конструкцию switch..case.. break). Если бы была ошибка в логических операциях, то, по истории баров, при переключении тф, на активном баре после открытия графика логика бы тоже не работала, а она работает. Суть: присваиваю значение линии индикатора i-го бара gLongNCh[i] от уже расcчитанного значения RSI (таким образом перерисовываю кусок линии RSI другим цветом), а триггером TrLongNCh=1 запоминаю определенное состояние.
gLongNCh[i]=gRSISig[i];
if(gRSISig[i]>=(gVolUp[i]+gVolDn[i])/2) TrLongNCh=1;
Никаких дополнительных условий, поверок: до закрытия бара, по закрытию бара, появления нового бара в коде не использую.
СПАСИБО ЗАРАНЕЕ!!!
С уважением,