Нужно инициализировать буфер пустым значением, если это ноль, то установить ноль как EMPTY_VALUE
Обычно, такая картинка, когда значение последнего перелома равно нулю, вот индикатор и уходит в ноль.
Нужно инициализировать буфер пустым значением, если это ноль, то установить ноль как EMPTY_VALUE
У меня пустые значения буфера цены (рисующего) всегда инициализируются как EMPTY_VALUE. Поэтому нулей и быть не может. Обрабатывается всегда лишь предыдущий бар (волновой анализ). Последний не обрабатывается т.к. цены закрытия бара ещё нет. Вот я и не понял, как это вообще так.
А как это можно проверить интересно?
У меня есть функция, которая возвращает первый рассчётный бар:
//================================================================================================================================================================================== // Определение индекса бара, с которого необходимо производить перерасчет. ========================================================================================================= int recalcIndex(int barsTotal, int countedBars) { if (countedBars == 0 || barsTotal - countedBars > 1) { ArrayInitialize(extremum_price_buffer, EMPTY_VALUE); ArrayInitialize(trend_buffer, TREND_NONE); return barsTotal - 1; } //--- return 1; }
Вызывается в OnCalculate() вот так:
int limit = recalcIndex(rates_total, prev_calculated); // Определим первый расчетный бар
Как видно, первый раз рисующий буфер extremum_price_buffer[] инициализируется пустым значением, а дальше уже я просчитываю лишь последний бар.. Вс красиво и компактно.
Я так понял ошибка была в том, что я инициализировал буфер лишь в начале, а потом когда рассчитываем 1-ый индекс не инициализировали именно 0-ой индекс.
Совершенно верно. Именно поэтому практически все индикаторы постоянно пересчитывают нулевой (на графике самый правый) бар.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пишу индикатор. Условия ещё прописал не все. Пишу по частям. На данном этапе, замечено, все отрисовывается корректно, но до отрисовки последнего экстремума постоянно на последнем баре с экстремумом появляется вертикальная линия вниз. Если посотреть в "Окно данных" видно, что цена индикатора в этот момент равна цене экстремума т.е. хаю или лою бара.
На скрине видно окно данных в таймсерии именно на том месте красной свечи от которой отрисована вертикальная линия вниз:
Если всё-таки отрисовался экстремум вниз на этом баре, почему дальше отрисовка не прерывается? Ведь цена индикатора в тот момент равна хаю свечи, и соответственно, на том хаю непустое место т.е. экстремум. Почему после этого экстремума вертикальная линия вниз отрисована?