Индикатор использует историю нескольких инструментов. Как предварительно загрузить историю? - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
prev_calculated запоминается, массивы генерятся в обработке таймера. Все. prev_calculated стопудов будет правильным, если нет, перед событием будет системный вызов OnCalculate. Ну и с нулем порешать.
Это нарушает потокобезопасность индикаторов и вообще всего. Разве что асинхронными событиями что вы и сами можете сделать.
Ну, то есть в первом вызове лучше в любом случае делать prev_calculated = rates_total. Я правильно понял?
Да не в первом, вообще всегда при системном вызове
Ну так и сделано у меня. prev_calculated=rates_total запоминается. по нему пишется из массива, который заполняется по OnCalculate или таймеру, если OnCalculate давно не было. Мерцает тока...
Ладно, надо еще раз всё перебрать. ChartRedraw() вне OnCalculate надо? Хотя и без него мерцает, но меньше.
Вот есть ощущение, что при системном вызове OnCalculate(), вся отрисовка происходит как-то правильно, а по таймеру что-то не то ))
Мерцает тока...
А на некоторых инструментах их может не быть в течении часов или дней...
И в итоге на таких получается:
1. ОнКалкулейт происходит только при старте,
2. т.к. история не подготовилась, пропускаем расчет, прев_калкулейтед=0
3. при использовании ОнТаймер повлиять на прев_калкулейтед мы не можем (документированными способами)
4. при прев_калкулейтед=0 график не отрисовывается...
5. при изначальной установке прев_калкулейтед>0 и не готовых данных получаем не инициализированные значения в рядах и/или мерцание
Поправьте, если я ошибаюсь
Вот по этой схеме примеры из документации и не работают, если нет тиков. (Проблема выходного дня).
По штатному prev_calculated есть такое мнение тут + тут
С таймером схема немного другая. Проверяю не значение prev_calculated, а что вернули Copy*, в зависимости от результата устанавливаю флаги, по которым рисую или перезапускаю Copy*.
Пример.
Извиняюсь, поскромничал в первом посте выкладывать.
5. По индикаторному буферу нужно обязательно пройтись и присвоить каждой ячейке значение. Тогда не будет мерцаний, обрывов и астрономических значений
Вообще, введение подписки в конкретном советнике/индикаторе на события OnTick(), OnCalculate() по любому инструменту полностью решило бы все эти проблемы. и позволит оптимизировано обрабатывать эти события, без лишних проверок по таймеру.
Вот по этой схеме примеры из документации и не работают, если нет тиков. (Проблема выходного дня).
По штатному prev_calculated есть такое мнение тут + тут
С таймером схема немного другая. Проверяю не значение prev_calculated, а что вернули Copy*, в зависимости от результата устанавливаю флаги, по которым рисую или перезапускаю Copy*.
Пример.
Извиняюсь, поскромничал в первом посте выкладывать.
Спасибо за пример.