Не могу отобразить методом Draw индикаторы класса BaseComplexIndicator на графике.
1/28/2019
Здравствуйте,
Не могу разобраться как вывести на график составные индикаторы типа BollingerBands. Метод Draw говорит что не поддерживает данный тип данных.
Code 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);
});
Подскажите, пожалуйста, в чем ошибка.