Skip to content

Проблема с отрисовкой индикатора BollingerBands #285

@suglosta

Description

@suglosta

Симптоматика.

В коде пэинтора этого индикатора есть небольшая ошибка, приводящая к преждевременной, ненужной отрисовке графиков во время "разогрева" внутреннего Moving Average.
Из-за этого, основной свечной график сжимается и требует ручного масштабирования.
Выглядит это так:
photo_2017-01-07_02-56-10

Причина.

Пока индикатор не "разогрелся", значения абсолютно бестолковые и индикатор честно сообщает об этом через IsFormed = false
При этом в коде пэинтора есть проверка на сформированность индикатора и отрисовка пустых значений, которые не рисуются на графике.
В результате небольшой ошибки, допущенной при реализации, после выполнения этого проверочного кода идет обычный код отрисовки, который перетирает пустые значения ошибочными цифрами не разогретого индикатора.

Как лечить.

В коде StockSharp.Xaml.Charting.IndicatorPainters.BollingerBandsPainter добавить одну строчку

        if (!value.IsFormed)
        {
            draw(upBandElement, 0, new double[]
            {
                double.NaN
            });
            draw(lowBandElement, 0, new double[]
            {
                double.NaN
            });
            draw(maElement, 0, new double[]
            {
                double.NaN
            });
            return;      //<-------------- вот эту
        }

После этого график будет выглядеть вот так:
photo_2017-01-08_00-30-24

Автор индикатора явно с самого начала так все и задумывал, но, видимо, ошибся при реализации.

PS: Пул реквеста от меня не будет, т.к. код пэинтора проприетарный.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions