public override void Plot(double value) { IsBusy = true; var weeklyData = getOxyWeeklyOhlcs(value); if (weeklyData == null) { IsBusy = false; return; } var lineSeries1 = new CandleStickSeries { XAxisKey = "X", YAxisKey = "Y1" }; lineSeries1.Items.AddRange(weeklyData); var lineSeries2 = new LineSeries { XAxisKey = "X", YAxisKey = "Y2" }; MainChart.Series.Add(lineSeries1); double[] outData = new double[weeklyData.Count]; var res = Core.Roc(weeklyData.Select(d => d.Close).ToArray(), 0, weeklyData.Count - 1, outData, out int begIdx, out int element, 13); for (int i = 0; i < weeklyData.Count; i++) { if (i >= begIdx) { lineSeries2.Points.Add(new DataPoint(weeklyData[i].X, outData[i - begIdx])); } } MainChart.Series.Add(lineSeries2); MainChart.InvalidatePlot(true); IsBusy = false; }
public override void Plot(DateTime value) { if (MainChart.Series.Any(_ => (DateTime)_.Tag == value)) { return; } IsBusy = true; Task.Run(async() => { data = await dataManager.GetData(value); if (data.DataRow.Count > 0) { var lineSeries1 = new LineSeries { MarkerType = MarkerType.Circle, MarkerStrokeThickness = 2, MarkerSize = 2, LineStyle = LineStyle.Solid, StrokeThickness = 2, Title = value.ToShortDateString(), InterpolationAlgorithm = InterpolationAlgorithms.CanonicalSpline, Tag = value }; lineSeries1.MarkerStroke = lineSeries1.Color; data.DataRow.ForEach(item => { lineSeries1.Points.Add(new DataPoint(item.Period, item.Value)); }); MainChart.Series.Add(lineSeries1); MainChart.InvalidatePlot(true); dataManager.Status = string.Empty; } else { dataManager.Status = $"No data for {value}"; } IsBusy = false; }); }