Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть идея. Позднее напишу.
идея накрылась.
Буду просить разрабов чтобы сделали что то типа HistoryUpdated() системную проверку обновилась ли вся история или нет.
Разрабы вам не помогут, потому что не будут
Сказано же уже: если разница между rates_total и prev_calculated больше 1, то это и есть HistoryUpdated
больше 0, а не 1.
И? Это решает проблему?
Или для вас не проблема пересчёта всей истории на каждом новом баре?
больше 0, а не 1.
И? Это решает проблему?
Или для вас не проблема пересчёта всей истории на каждом новом баре?
Вам правильно сказали. Больше 1. При появлении нового бара разность равна 1.
И это полностью решает проблему.
Нормальный индикатор для полного перерасчета тратит очень мало времени. Меньше секунды
Вам правильно сказали. Больше 1. При появлении нового бара разность равна 1.
И это полностью решает проблему.
Нормальный индикатор для полного перерасчета тратит очень мало времени. Меньше секунды
Работает только если буфера обнулять.
Работает только если буфера обнулять.
Sorry, но позвольте поинтересоваться:
- для чего вам здесь присваивать на каждом тике создаваемым отдельным переменным значения rates_total и prev_calculated?
- в выражении условного оператора if() и в цикле for() проводить повторные вычисления разницы этих переменных?
- почему бы просто не ввести переменную для разницы между rates_total и prev_calculated, например, limit?
Реализация может быть различной в зависимости от задач. Нюансы могут быть различны. Может вам посмотреть, как что реализовано у других в зависимости от различных условий? В т.ч., и с помощью распринтовки разобраться, определиться, сформировать приемлемые для себя в зависимости от задач варианты?Постскриптумом ещё дополню:
Ваша задумка по обнулению (counted=0) в блоке условного оператора if(){} похоже мне была и есть понятна.
На всякий случай, что бы и вам было понятнее что, в том числе, имела в виду кратко выше, приведу выдержку из Документации, из раздела ... Основы языка / Функции / Функции обработки событий:
... Если с момента последнего вызова функции OnCalculate() ценовые данные были изменены (подкачана более глубокая история или были заполнены пропуски истории), то значение входного параметра prev_calculated будет установлено в нулевое значение самим терминалом.
Работает только если буфера обнулять.
Да не надо ничего обнулять.
При обнулении prev_caclulated индикатор пересчитается полностью. И это правильно - вы же не знаете, что именно изменилось в истории. Может какая-то дыра подгрузилась, может где-то шпильки почистили... Обязательно нужно пересчитать полностью. Во всех остальных случаях будет пересчитываться только один последний бар (при появлении нового бара - два последних).
Sorry, но позвольте поинтересоваться:
- для чего вам здесь присваивать на каждом тике создаваемым отдельным переменным значения rates_total и prev_calculated?
- в выражении условного оператора if() и в цикле for() проводить повторные вычисления разницы этих переменных?
- почему бы просто не ввести переменную для разницы между rates_total и prev_calculated, например, limit?
Реализация может быть различной в зависимости от задач. Нюансы могут быть различны. Может вам посмотреть, как что реализовано у других в зависимости от различных условий? В т.ч., и с помощью распринтовки разобраться, определиться, сформировать приемлемые для себя в зависимости от задач варианты?Спасибо. Хорошее замечание.
А нет. Это для того чтобы можно было всю историю пересчтитать если есть разрыв.
Постскриптумом ещё дополню:
Ваша задумка по обнулению (counted=0) в блоке условного оператора if(){} похоже мне была и есть понятна.
На всякий случай, что бы и вам было понятнее что, в том числе, имела в виду кратко выше, приведу выдержку из Документации, из раздела ... Основы языка / Функции / Функции обработки событий:
... Если с момента последнего вызова функции OnCalculate() ценовые данные были изменены (подкачана более глубокая история или были заполнены пропуски истории), то значение входного параметра prev_calculated будет установлено в нулевое значение самим терминалом.
Да не надо ничего обнулять.
При обнулении prev_caclulated индикатор пересчитается полностью. И это правильно - вы же не знаете, что именно изменилось в истории. Может какая-то дыра подгрузилась, может где-то шпильки почистили... Обязательно нужно пересчитать полностью. Во всех остальных случаях будет пересчитываться только один последний бар (при появлении нового бара - два последних).