Почему при типе отрисовки DRAW_SECTION отрисовывается линии вниз?
Нужно инициализировать буфер пустым значением, если это ноль, то установить ноль как 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-ой индекс.
Совершенно верно. Именно поэтому практически все индикаторы постоянно пересчитывают нулевой (на графике самый правый) бар.
Пишу индикатор. Условия ещё прописал не все. Пишу по частям. На данном этапе, замечено, все отрисовывается корректно, но до отрисовки последнего экстремума постоянно на последнем баре с экстремумом появляется вертикальная линия вниз. Если посотреть в "Окно данных" видно, что цена индикатора в этот момент равна цене экстремума т.е. хаю или лою бара.
На скрине видно окно данных в таймсерии именно на том месте красной свечи от которой отрисована вертикальная линия вниз:
Если всё-таки отрисовался экстремум вниз на этом баре, почему дальше отрисовка не прерывается? Ведь цена индикатора в тот момент равна хаю свечи, и соответственно, на том хаю непустое место т.е. экстремум. Почему после этого экстремума вертикальная линия вниз отрисована?