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