Ошибки, баги, вопросы - страница 1546

[Удален]  
comp:

Если скриптом, то можно (реализация совсем иная - без изменения ТФ) вызывать OnCalculate уже какого-то конкретного индикатора на чарте, либо всех сразу.

Но такой (скрипт) вариант тоже не подходит, если индикатор должен заставить терминал вызвать свой же OnCalculate (MT5).

OnCalculate(параметры);
Так не пробовали?
[Удален]  
pako:
Так не пробовали?
Пробовал (CLASS::FullOnCalculate()), бестолку. Надо, чтобы САМ терминал вызвал, а не я.
[Удален]  
comp:
Пробовал (CLASS::FullOnCalculate()), бестолку.

Не могу найти, где то на форуме видел

именно из сторонней функции вызывается OnCalculate(с параметрами);

int ваша функция()

{

OnCalculate(с параметрами);

}

Чтото наподобие 

[Удален]  
pako:

Не могу найти, где то на форуме видел

Это и привел.
[Удален]  
comp:
Это и привел.

Нет , это не то

индюк пересчитывается в OnCalculate , только по приходу новой котировки  

Сова видит только буферы индикатора, которые заполняются в  OnCalculate

т.е если вызвать  OnCalculate между приходами котировок

и передать в буферы индикатора значения из другой функции

ну и т.д 

 
Теперь внимание вопрос -- как заставить терминал тотчас же перерисовать данные которые были рассчитаны таким образом?
[Удален]  
Комбинатор:
Теперь внимание вопрос -- как заставить терминал тотчас же перерисовать данные которые были рассчитаны таким образом?
Похоже, никак.
[Удален]  
Комбинатор:
Теперь внимание вопрос -- как заставить терминал тотчас же перерисовать данные которые были рассчитаны таким образом?

У него рисует данные из буферов, которые находятся не в OnCalculate

в  OnCalculate минимальное время отрисоки 1 минута

Тиковые индикаторы рисуют каждый тик

[Удален]  
comp:
Похоже, никак.

Хотя, в четверке ChartRedraw 100% сделает то, что надо.

Да и в пятерке, как оказалось, нормально.

Так что ChartRedraw в обеих платформах отработает норм. 

[Удален]  

Когда приходит CHARTEVENT_CHART_CHANGE, делаю расчет, длящийся иногда секунду/другую. Если во время расчета, например, подвинуть чарт, то после расчета будет вызван из очереди снова CHARTEVENT_CHART_CHANGE.

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

Например, если даже в очень тяжелую расчетную часть запихнуть всюду проверку на IsStopped(), то закрытие советника будет происходить мгновенно - не дожидаясь расчета.

Вот бы что-то подобное, но не с событие закрытия, а с ChartEvent.