Привет!
Пишу индикатор со сложными вычислениями, при которых данные могут подгружаться не с первого раза.
Поэтому я принудительно вызываю функцию OnCalculate() по клавише.
Если данные подгрузились с первого раза, то индикатор нормально срабатывает запоминая rates_total и time[]
Если данные не подгрузились, то CalcOffLine возвращает "0", т.е в индикаторе не произошел расчет.
При повторном нажатии клавиши данные подгружаются, индикаторные буферы заполняются правильно, но графики не отображаются.
Почему?
Или как заставить индикатор сделать вычисления повторно в offLine режиме?
в 5-ке вызов OnCalculate для перерасчёта "в ручном режиме" чреват эффектами. Совсем просто НИКАК
для перерасчёта из OnTimer,OnChartEvent: заводить отдельные массивы my_time,my_open,my_high.. аттачить их как индикаторные буферы,
внутри OnCalculate если нет флага OffLine - копировать в них данные из time, open, high...если взведён то не трогать
снаружи при самостоятельном вызове взводить флаг OffLine и вызывать OnCalculate(my_time,my_open,.....); Не забывать убирать флаг обратно; И вызывать ChartRedraw ;
Тогда данные все правильно синхронны и рассчёты правильны.
и даже так отрисовывается через раз.
Но вышесказанное про перерасчеты (например с другими коэфф),
а при подкачке данных OnCalculate будет и так вызван терминалом. Просто отдайте ему управление :-) Ради контроля/отладки в OnTimer смотреть/печатать SeriesInfoInteger() SERIES_BARS_COUNT SERIES_SYNCHRONIZED
в 5-ке вызов OnCalculate для перерасчёта "в ручном режиме" чреват эффектами. Совсем просто НИКАК
для перерасчёта из OnTimer,OnChartEvent: заводить отдельные массивы my_time,my_open,my_high.. аттачить их как индикаторные буферы,
внутри OnCalculate если нет флага OffLine - копировать в них данные из time, open, high...если взведён то не трогать
снаружи при самостоятельном вызове взводить флаг OffLine и вызывать OnCalculate(my_time,my_open,.....); Не забывать убирать флаг обратно; И вызывать ChartRedraw ;
Тогда данные все правильно синхронны и рассчёты правильны.
и даже так отрисовывается через раз.
Но вышесказанное про перерасчеты (например с другими коэфф),
а при подкачке данных OnCalculate будет и так вызван терминалом. Просто отдайте ему управление :-) Ради контроля/отладки в OnTimer смотреть/печатать SeriesInfoInteger() SERIES_BARS_COUNT SERIES_SYNCHRONIZED
Большое спасибо за подсказку, совсем забыл, что в индикаторе можно использовать таймер.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет!
Пишу индикатор со сложными вычислениями, при которых данные могут подгружаться не с первого раза.
Поэтому я принудительно вызываю функцию OnCalculate() по клавише.
Если данные подгрузились с первого раза, то индикатор нормально срабатывает запоминая rates_total и time[]
Если данные не подгрузились, то CalcOffLine возвращает "0", т.е в индикаторе не произошел расчет.
При повторном нажатии клавиши данные подгружаются, индикаторные буферы заполняются правильно, но графики не отображаются.
Почему?
Или как заставить индикатор сделать вычисления повторно в offLine режиме?