Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Информация о количестве уже посчитанных баров используется во всех наших встроенных индикаторах. И считается стандартным для всех индикаторов способом. Функция IndicatorCounted просто отдаёт эту уже посчитанную информацию, чтобы индикаторописатели тоже могли вкусить от благ.
Не нравится - не пользуйтесь. Учитывайте самостоятельно.
Просто есть два типа индикаторов:
1. Рассчитываемый относительно текущего бара (по сути как в Омеге с их Ref) и просчет истории таких индикаторов можно поручить терминалу
2. Требующие перерассчета на истории
Тут не смысла в кол-ве неподсчитанных баров, можно пропустить все неподсчитанные и рассчитать текущий бар (0й). Но и тут может оказаться выгодней иметь обратную нумерацию относительно сегодняшней. Когда 0й бар это самый старый, тогда нет смысла на каждом новом баре пересчитывать массивы, достаточно пересчитать новый бар сохраняя значения имеющегося массива. Плюс добавить функцию или сигнал что 0й бар сместился вглубь при докачке истории , старее имеющейся.
Тут не смысла в кол-ве неподсчитанных баров, можно пропустить все неподсчитанные и рассчитать текущий бар (0й). Но и тут может оказаться выгодней иметь обратную нумерацию относительно сегодняшней. Когда 0й бар это самый старый, тогда нет смысла на каждом новом баре пересчитывать массивы, достаточно пересчитать новый бар сохраняя значения имеющегося массива. Плюс добавить функцию или сигнал что 0й бар сместился вглубь при докачке истории , старее имеющейся.
Здесь есть проблема при запуске терминала. Происходит следующее:
-Индикатор рассчитывается на имеющейся истории
-Приходит первый тик, т.е. начинается новый бар. Индикатор рассчитывется для истории+новый бар(то есть для истории с дырой)
-Докачивается история. Индикатор рассчитывается для истории без дыры.
Пусть у нас вначале было Bars0 баров. При получении первого тика их становится Bars0+1, то есть нулевой бар при нумерации от начала получает номер Bars0+1. Затем при докачке между ними втискивается ещё энное количества баров и номер Bars0+1 начинает соответствовать первому докачанному бару. Если мы для нулевого бара успели что-нибудь посчитать и запомнить по номеру от начала графика получаем ошибку - величина, рассчитанная для нулевого бара будет отнесена к первому докачанному.
Пример возникающего из-за этого бага есть в "Что возвращают функции Lowest и Highest"
Slawa:
На самом деле проблема не в написании кода, а в тестировании. Функция ответственная, разнообразие возможных ситуаций велико, отсюда неслабые требования к времени тестирования (или к количеству тестирующих).
Тем не менее, раз я вроде бы заварил эту небольшую кашу, предложу проект решения.
Независимо от результата спасибо Славе за замечания по существу.
Применение:
Если есть желающие тестировать, готов это дело сопровождать.