Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
            });
        }