Вот я вернулся к этой проблеме, так и не переварив.
И так исходные, используется пример SampleConnection из ночной сборки апи за ноябрь.
я модифицировал класс ChartWindow (файл класса прилагаю)так ,что бы он отрисовывал индикатор MACD signal.
Но или я не понял ваше объяснение или что то не работает.
Получаю ошибку на методе draw: Указанный метод не поддерживается.
из трасировки видно ,что косяк тут:
at StockSharp.Algo.Indicators.ComplexIndicatorValue.GetValue[T]()
Полная:
System.NotSupportedException
HResult=0x80131515
Сообщение = Указанный метод не поддерживается.
Источник = StockSharp.Algo
Трассировка стека:
at StockSharp.Algo.Indicators.ComplexIndicatorValue.GetValue[T]()
at StockSharp.Xaml.Charting.IndicatorPainters.BaseChartIndicatorPainter`1.#=zk9036Ro=(IList`1 #=zFsAlfBA=, Int32 #=zPyNoDzM=)
at StockSharp.Xaml.Charting.IndicatorPainters.BaseChartIndicatorPainter`1.#=zP5ntCAXu3kc4HQPuH7ljQwM=.#=zydjJIQlML2tuONAbmw==(Int32 #=zycFec1E=)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__97`1.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__97`1.MoveNext()
at #=zAuXtmwo_UFdzWVVSiImlM63HcRIkO9Rk3i2tbosrvzDDD1nU_YsPK9gA62La.#=z8SGlJVg=[TX1](IEnumerableEx`1 #=z8Cqh5Eg=)
at StockSharp.Xaml.Charting.IndicatorPainters.BaseChartIndicatorPainter`1.DrawValues(IList`1 vals, IChartElement element)
at StockSharp.Xaml.Charting.IndicatorPainters.BaseChartIndicatorPainter`1.Draw(ChartDrawData data)
at #=zx24ajpn1eHsuu_VYWsSDObVHmCQkPa79lI0bsVbZ4_TXnui8LBYeXlVxIZKi.#=zQMvP4FWk4J6y(ChartDrawData #=zVByD5Xs=)
at #=zx24ajpn1eHsuu_VYWsSDObVHmCQkPa79lI0bsVbZ4_TXnui8LBYeXlVxIZKi.#=z8SGlJVg=(ChartDrawData #=zVByD5Xs=)
at StockSharp.Xaml.Charting.Chart.#=zgPLuF158PsVf.#=z8SGlJVg=(ChartDrawData #=zVByD5Xs=)
at SampleConnection.ChartWindow.ProcessNewCandle(CandleSeries series, Candle candle) in E:\Users\Ghost-mo\Desktop\проджекты\Сергей\API_4.4.17_ru (1)\Samples\Connectors\SampleConnection\ChartWindow.xaml.cs:line 71
at StockSharp.Algo.Connector.ProcessCandleMessage(CandleMessage message)
at StockSharp.Algo.Connector.OnProcessMessage(Message message)
Прошу посмотреть)
Можно конечно руками разбить МАКД сигнал на составляющие, но это сложно в коде и плюс на графике все равно не будет его имени, если в элементе не указывать индикатор.
.Add(indicatorElement1, ((ComplexIndicatorValue)osnValue).InnerValues.ToArray()[0].Value)
.Add(indicatorElement2, ((ComplexIndicatorValue)osnValue).InnerValues.ToArray()[1].Value);
Так же прошу передать кому то подумать, что куда то в индикатор запихнуть всякие рекомендованные нюансы их отрисовки: в зоне свеч, или в отдельной зоне, DrawStyle = ChartIndicatorDrawStyles.Histogram и прочее
Спасибо.