← Atrás

Не могу отобразить методом Draw индикаторы класса BaseComplexIndicator на графике.

Здравствуйте,

Не могу разобраться как вывести на график составные индикаторы типа BollingerBands. Метод Draw говорит что не поддерживает данный тип данных.

 private void InitIndicators()
        {
            _chartCandleElement = new ChartCandleElement(); //  после чего определим новый элемент графика для свечей и
            area1.Elements.Add(_chartCandleElement); // добавим ее на область графика

            _chBolBands = new ChartIndicatorElement {FullTitle = "Боллинжер", Color = Colors.DeepPink, };
            area1.Elements.Add(_chBolBands);

            _chAlligatorEl = new ChartIndicatorElement { FullTitle = "Аллигатор", Color = Colors.SaddleBrown };
            area1.Elements.Add(_chAlligatorEl);

            _chartIndElSMAFast = new ChartIndicatorElement { FullTitle = "Короткая", Color = Colors.OrangeRed };
            area1.Elements.Add(_chartIndElSMAFast);

            _chartIndElSMALong = new ChartIndicatorElement { FullTitle = "Длинная", Color = Colors.GreenYellow };
            area1.Elements.Add(_chartIndElSMALong);

            _chartIndElVolume = new ChartIndicatorElement { FullTitle = "Объем", Color = Colors.Blue, DrawStyle = ChartIndicatorDrawStyles.Histogram };
            area3.Elements.Add(_chartIndElVolume);

            _chDiMin = new ChartIndicatorElement() { FullTitle = "Di-", Color = Colors.Red, DrawStyle = ChartIndicatorDrawStyles.Histogram };
            area2.Elements.Add(_chDiMin);

            _chDiPlus = new ChartIndicatorElement() { FullTitle = "Di+", Color = Colors.DarkGreen };
            area2.Elements.Add(_chDiPlus);


            _alligator = new Alligator() {Teeth = { Shift = 2, Length = 2}};
            _diMin = new DiMinus() { Length = 10 };
            _diPlus = new DiPlus() { Length = 10 };
            _smaFast = new SimpleMovingAverage() { Length = 5};
            _smaLong = new SimpleMovingAverage() { Length = 50 };
            _totalVolume = new SimpleMovingAverage() { Length = 1 };
            _bollingerBands = new BollingerBands() { Length = 3, UpBand = {  Width = 2,} };


        }

        private void InitChart()
        {
            ChartPanel.ClearAreas(); // очистим от старых свечей
            area1 = new ChartArea(); // и создадим нову область графика
            area2 = new ChartArea();
            area3 = new ChartArea();
            ChartPanel.AddArea(area1); // добавим ее на график
            ChartPanel.AddArea(area2);
            ChartPanel.AddArea(area3);
        }

        private void DrawData(CandleSeries series, Candle candle)
        {
            var longValueFast = _smaFast.Process(candle.ClosePrice);
            var longValueLong = _smaLong.Process(candle.ClosePrice);
            var diMin = _diMin.Process(candle);
            var diPlus = _diPlus.Process(candle);
            var totalVol = _totalVolume.Process(candle.TotalVolume);
            var bolVol = _bollingerBands.Process(candle.ClosePrice);
            
            var data = new ChartDrawData();

            this.GuiAsync(()=>
            {
               data
                   .Group(candle.OpenTime)
                   .Add(_chartCandleElement, candle)
                   .Add(_chartIndElSMAFast, longValueFast)
                   .Add(_chartIndElSMALong, longValueLong)
                   .Add(_chDiMin, diMin)
                   .Add(_chDiPlus, diPlus)
                   .Add(_chartIndElVolume, totalVol)
                   .Add(_chBolBands, bolVol)
                   ;
           
           ChartPanel.Draw(data);
                
            });

Подскажите, пожалуйста, в чем ошибка.

¿Le resultó útil este tema?

Compartir tema

Comentarios (0)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Aún no hay comentarios. ¡Sea el primero!