Когда изменения в индикаторном буфере отображаются на графике? - страница 2

 
Karputov Vladimir:
Не, не. Это понятно, вопрос был именно КОГДА отрисовка: сразу после внесения изменений в буфер и внутри OnCalculate() или отрисовка осуществляется по факту покидания OnCalculate().

Скорее всего по факту покидания OnCalculate(), иначе просто нереально.

Если буфер пересчитывается заново и после каждого пересчета будет перерисрвка - компьютер просто не выдержит.

 
Alexey Volchanskiy:

Ну правильно, он все другие индикаторы тормознул, система и ругается. Поток-то один на всех, этакая кооперативная многозадачность времен Windows 3.1

Раз ничего не отображает, значит отрисовка происходит не после заполнения буфера, а после выхода из OnCalculate, что вообще-то логично. Откуда рантайм знает, заполнен буфер или нет? Может, с ним еще что-то будут делать. А вот раз вышли из функции - надо отрисовать 

 и

Sergey Chalyshev:

Скорее всего по факту покидания OnCalculate(), иначе просто нереально.

Если буфер пересчитывается заново и после каждого пересчета будет перерисрвка - компьютер просто не выдержит.

 

 Выходит, что так. Спасибо.

 
Karputov Vladimir:

  1. изменения рисуются на графике сразу (то есть внутри OnCalculate())?
  2. изменения рисуются на графике после выхода из OnCalculate()?

2 конечно.

OnCalculate это реакция на событие, вот после завершения всех реакций и обновляется график.

Постоянно обновлять в процессе ресурсоемко.

Кроме того OnCalculate это такая же простая функция как и другие, просто она вызывается еще и терминалом.

Если OnCalculate вызывается из таймера, переотрисовки вообще не будет.

 
Комбинатор:

2 конечно.

OnCalculate это реакция на событие, вот после завершения всех реакций и обновляется график.

Постоянно обновлять в процессе ресурсоемко.

Кроме того OnCalculate это такая же простая функция как и другие, просто она вызывается еще и терминалом.

Если OnCalculate вызывается из таймера, переотрисовки вообще не будет.

Не, ну не тяпница? 
 
Alexey Volchanskiy:

Так что, если зациклить один индикатор, другие перестанут работать. Но для эксперимента это не критично. 

Индикатор-то запускали? Или продолжаете фантазировать?

Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить.

 Тормозной индикатор вешает весь интерфейс, поэтому смотреть не на что.

 
Andrey Khatimlianskii:

Индикатор-то запускали? Или продолжаете фантазировать?

фантазировать проще, не требует никаких усилий
Причина обращения: