Добрый день!
Результат на рисунках
Не могу понять это баг или я неправильно что то делаю:
Создаю график со скользящей средней:
//Объявляю:
public ChartPanel TradeChartPanel { get; set; }
private ChartIndicatorElement _emaChartElement;
private ExponentialMovingAverage _ema;
public ChartArea CandlesArea { get; set; }
public ChartCandleElement CandlesElem { get; set; }
//Инициализирую:
TradeChartPanel = panel;
TradeChartPanel.IsInteracted = true;
TradeChartPanel.ClearAreas();
TradeChartPanel.FillIndicators();
CandlesArea = new ChartArea();
var yAxis = CandlesArea.YAxises.First();
var xAxis = CandlesArea.XAxises.First();
//yAxis.AutoRange = true;
//TradeChartPanel.IsAutoRange = true;
//TradeChartPanel.IsAutoScroll = true;
TradeChartPanel.AddArea(CandlesArea);
CandlesElem = new ChartCandleElement { FullTitle = "Candles", YAxisId = yAxis.Id, /*XAxisId = xAxis.Id*/};
TradeChartPanel.AddElement(CandlesArea, CandlesElem, series);
_ema = new ExponentialMovingAverage() { Length = 9 };
_emaChartElement = new ChartIndicatorElement
{
DrawStyle = ChartIndicatorDrawStyles.Line,
AntiAliasing = true,
StrokeThickness = 1,
Color = Colors.Blue,
YAxisId = yAxis.Id,
// XAxisId = xAxis.Id
};
TradeChartPanel.AddElement(CandlesArea, _emaChartElement, series, _ema);
//Обрабатываю событие:
protected override void DrawCandle(CandleSeries series, Candle candle)
{
Application.Current.Dispatcher.InvokeAsync(() =>
{
var dict = new Dictionary<IChartElement, object>
{
{ CandlesElem, candle },
};
if (_emaChartElement != null )
{
dict.Add(_emaChartElement, _ema.Process(candle));
}
TradeChartPanel.Draw(candle.OpenTime, dict);
}
}
Kommentare (12)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Красота... Не знаю почему так получается, но, для размышления 1. вы скользяшку строите не по свечам, а по тикам...
Так она мне нужна живая ;) Подразумевается что время в каждом тике OpenTime свечи! Добавление условия:
if (_emaChartElement != null && candle.State == CandleStates.Finished) { dict.Add(_emaChartElement, _ema.Process(candle)); }
картины не меняет ;(
Посмотрите примеры. Как там передаются свечи и индикаторы.
Так из примеров и код ;)
Изменены только названия переменных
Хотите сказать что пример не работает? Какой именно?
Я просто скопировал последовательность действий из примера. Насколько я понимаю дело не в примере, а в реализации интерфейса индикатора. Хотя Вам виднее. Я пробовал разные примеры в том числе из документации про Chart.
Какой-то индикатор не работает? EMA? Проверил сейчас на примере SampleChart - рисуется как должно.
Возможно. Я за базовый брал пример из документации. В приведенном коде где может быть ошибка?
Не знаю. Я проверяю на примере
Тогда получается что в документации по Chart написано "что то написано" :)
Если у вас есть замечания, оформляйте их через пул реквесты в нашем репозитарии https://github.com/StockSharp/StockSharp/.
А можно просто банальную поддержку на элементарный вопрос по Вашей документации без отсыланий в "пул реквесты в нашем репозитарии"? ;) Так слона не продашь :) Пример, на который Вы ссылаетесь, достаточно сложный, а по документации описано все просто. Но по документации что то не так работает :) Я прекрасно понимаю Ваше желание монетизировать Вашу прекрасную разработку, но то что сделано для широкой публики ДОЛЖНО соответствовать заявленному, работать и поддерживаться. Хотя .... Вам решать :) Я спрашиваю только по документации :)