public MacdPaneViewModel(CreateMultiPaneStockChartsViewModel parentViewModel, PriceSeries prices)
            : base(parentViewModel)
        {
            IEnumerable <MacdPoint> macdPoints = prices.CloseData.Macd(12, 26, 9).ToList();

            var histogramDataSeries = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Histogram"
            };

            histogramDataSeries.Append(prices.TimeData, macdPoints.Select(x => x.Divergence));
            ChartSeriesViewModels.Add(new ColumnRenderableSeriesViewModel {
                DataSeries = histogramDataSeries
            });

            var macdDataSeries = new XyyDataSeries <DateTime, double>()
            {
                SeriesName = "MACD"
            };

            macdDataSeries.Append(prices.TimeData, macdPoints.Select(x => x.Macd), macdPoints.Select(x => x.Signal));
            ChartSeriesViewModels.Add(new BandRenderableSeriesViewModel
            {
                DataSeries      = macdDataSeries,
                StrokeThickness = 2,
            });

            YAxisTextFormatting = "0.00";

            Height = 100;
        }
        private void FanChartExampleViewLoaded(object sender, RoutedEventArgs e)
        {
            // Variance data is a 2D table containing actual values and several levels of projected high, low values
            IEnumerable <VarPoint> varianceData = GetVarianceData().ToArray();

            // To render the Fan, we use an XyDataSeries and three band series'
            var actualDataSeries = new XyDataSeries <DateTime, double>();
            var var3DataSeries   = new XyyDataSeries <DateTime, double>();
            var var2DataSeries   = new XyyDataSeries <DateTime, double>();
            var var1DataSeries   = new XyyDataSeries <DateTime, double>();

            // Append data values from the Variance table
            actualDataSeries.Append(varianceData.Select(x => x.Date), varianceData.Select(x => x.Actual));
            var3DataSeries.Append(varianceData.Select(x => x.Date), varianceData.Select(x => x.VarMin), varianceData.Select(x => x.VarMax));
            var2DataSeries.Append(varianceData.Select(x => x.Date), varianceData.Select(x => x.Var1), varianceData.Select(x => x.Var4));
            var1DataSeries.Append(varianceData.Select(x => x.Date), varianceData.Select(x => x.Var2), varianceData.Select(x => x.Var3));

            // Assign data to renderableseries
            lineSeries.DataSeries    = actualDataSeries;
            projectedVar3.DataSeries = var3DataSeries;
            projectedVar2.DataSeries = var2DataSeries;
            projectedVar1.DataSeries = var1DataSeries;

            sciChart.ZoomExtents();
        }
示例#3
0
            public MacdPaneModel(Context context, PriceSeries prices) : base(context, MACD, "0.0", false)
            {
                var macdPoints = prices.CloseData.Macd(12, 25, 9);

                var histogramSeries = new XyDataSeries <DateTime, double> {
                    SeriesName = "Histogram"
                };

                histogramSeries.Append(prices.TimeData, macdPoints.Select(x => x.Divergence));
                AddRenderableSeries(new FastColumnRenderableSeries {
                    DataSeries = histogramSeries, YAxisId = MACD
                });

                var macdSeries = new XyyDataSeries <DateTime, double> {
                    SeriesName = "MACD"
                };

                macdSeries.Append(prices.TimeData, macdPoints.Select(x => x.Macd), macdPoints.Select(x => x.Signal));
                AddRenderableSeries(new FastBandRenderableSeries {
                    DataSeries = macdSeries, YAxisId = MACD
                });

                Annotations.Add(new AxisMarkerAnnotation(context)
                {
                    Y1 = (Java.Lang.IComparable)histogramSeries.YValues.Get(histogramSeries.Count - 1), YAxisId = MACD
                });
                Annotations.Add(new AxisMarkerAnnotation(context)
                {
                    Y1 = (Java.Lang.IComparable)macdSeries.YValues.Get(macdSeries.Count - 1), YAxisId = MACD
                });
            }
        protected override void InitExample()
        {
            var xAxis = new SCIDateTimeAxis {
                GrowBy = new SCIDoubleRange(0.1, 0.1), TextFormatting = "dd/MM/YYYY"
            };
            var yAxis = new SCINumericAxis {
                GrowBy = new SCIDoubleRange(0.1, 0.1)
            };

            var dataSeries = new XyDataSeries <DateTime, double> {
                DataDistributionCalculator = new SCIUserDefinedDistributionCalculator()
            };
            var xyyDataSeries = new XyyDataSeries <DateTime, double> {
                DataDistributionCalculator = new SCIUserDefinedDistributionCalculator()
            };
            var xyyDataSeries1 = new XyyDataSeries <DateTime, double> {
                DataDistributionCalculator = new SCIUserDefinedDistributionCalculator()
            };
            var xyyDataSeries2 = new XyyDataSeries <DateTime, double> {
                DataDistributionCalculator = new SCIUserDefinedDistributionCalculator()
            };

            DataManager.Instance.GetFanData(10, result =>
            {
                dataSeries.Append(result.Date, result.ActualValue);
                xyyDataSeries.Append(result.Date, result.MaxValue, result.MinValue);
                xyyDataSeries1.Append(result.Date, result.Value1, result.Value4);
                xyyDataSeries2.Append(result.Date, result.Value2, result.Value3);
            });

            var dataRenderSeries = new SCIFastLineRenderableSeries
            {
                DataSeries  = dataSeries,
                StrokeStyle = new SCISolidPenStyle(UIColor.Red, 1.0f)
            };

            var animation = new SCIWaveRenderableSeriesAnimation(3, SCIAnimationCurve.EaseOut);

            animation.StartAfterDelay(0.3f);
            dataRenderSeries.AddAnimation(animation);

            using (Surface.SuspendUpdates())
            {
                Surface.XAxes.Add(xAxis);
                Surface.YAxes.Add(yAxis);

                Surface.RenderableSeries.Add(createRenderableSeriesWith(xyyDataSeries));
                Surface.RenderableSeries.Add(createRenderableSeriesWith(xyyDataSeries1));
                Surface.RenderableSeries.Add(createRenderableSeriesWith(xyyDataSeries2));
                Surface.RenderableSeries.Add(dataRenderSeries);

                Surface.ChartModifiers = new SCIChartModifierCollection
                {
                    new SCIZoomPanModifier(),
                    new SCIPinchZoomModifier(),
                    new SCIZoomExtentsModifier()
                };
            }
        }
        public DragThresholdMvvmViewModel()
        {
            _dataSeries = new XyyDataSeries <double, double>();
            var someData = DataManager.Instance.GetDampedSinewave(1.0, 0.01, 300);

            _thresholdValue = 0.0;
            _dataSeries.Append(someData.XData, someData.YData, Enumerable.Repeat(_thresholdValue, someData.Count));
        }
        private static IXyyDataSeries <double, double> GetXyyDataSeries(IEnumerable <double> data)
        {
            var dataSeries = new XyyDataSeries <double, double>();

            dataSeries.Append(data,
                              data.Select(x => x % 2 == 0 ? 2 * x : x),
                              data.Select(x => x % 2 == 1 ? 2 * x : x));

            return(dataSeries);
        }
示例#7
0
        private void BandSeriesChartExampleView_OnLoaded(object sender, RoutedEventArgs e)
        {
            // Set a DataSeries of type x=DateTime, y0=Double, y1=double on the RenderableSeries declared in XAML
            var series = new XyyDataSeries <double, double>();

            sciChart.RenderableSeries[0].DataSeries = series;

            // Get some data for the upper and lower band
            var data     = DataManager.Instance.GetDampedSinewave(1.0, 0.01, 1000);
            var moreData = DataManager.Instance.GetDampedSinewave(1.0, 0.005, 1000, 12);

            // Append data to series. SciChart automatically redraws
            series.Append(
                data.XData,
                data.YData,
                moreData.YData);
        }
示例#8
0
        private void DigitalBandSeriesChartExampleView_OnLoaded(object sender, RoutedEventArgs e)
        {
            // Add a data series which handles X-Y0-Y1 data
            var dataSeries = new XyyDataSeries <double, double>();

            // Get some reference data to display
            var data     = DataManager.Instance.GetDampedSinewave(1.0, 0.01, 1000);
            var moreData = DataManager.Instance.GetDampedSinewave(1.0, 0.005, 1000, 12);

            // Append data to series. SciChart automatically redraws
            dataSeries.Append(
                data.XData,
                data.YData,
                moreData.YData);

            bandRenderSeries.DataSeries = dataSeries;
        }
示例#9
0
 private void ReloadChartSeries()
 {
     ohlcSeries = new OhlcDataSeries <DateTime, double>()
     {
         SeriesName = "Candles", FifoCapacity = 100
     };
     macdDataSeries = new XyyDataSeries <DateTime, double>()
     {
         SeriesName = "MACD"
     };
     dataSeries = new XyDataSeries <DateTime, double> {
         SeriesName = "Histogram", FifoCapacity = 100
     };
     CandleSeries.DataSeries = ohlcSeries;
     MACD2.DataSeries        = macdDataSeries;
     Histo.DataSeries        = dataSeries;
 }
        protected override void InitExample()
        {
            var xAxis = new NumericAxis(Activity)
            {
                VisibleRange = new DoubleRange(1.1, 2.7)
            };
            var yAxis = new NumericAxis(Activity)
            {
                GrowBy = new DoubleRange(0.1, 0.1)
            };

            var data     = DataManager.Instance.GetDampedSinewave(1.0, 0.01, 1000);
            var moreData = DataManager.Instance.GetDampedSinewave(1.0, 0.005, 1000, 12);

            var dataSeries = new XyyDataSeries <double, double>();

            dataSeries.Append(data.XData, data.YData, moreData.YData);

            var rSeries = new FastBandRenderableSeries
            {
                DataSeries       = dataSeries,
                StrokeStyle      = new SolidPenStyle(0xFFFF1919, 1f.ToDip(Activity)),
                StrokeY1Style    = new SolidPenStyle(0xFF279B27, 1f.ToDip(Activity)),
                FillBrushStyle   = new SolidBrushStyle(0x33279B27),
                FillY1BrushStyle = new SolidBrushStyle(0x33FF1919)
            };

            using (Surface.SuspendUpdates())
            {
                Surface.XAxes.Add(xAxis);
                Surface.YAxes.Add(yAxis);
                Surface.RenderableSeries.Add(rSeries);

                Surface.ChartModifiers = new ChartModifierCollection
                {
                    new ZoomPanModifier(),
                    new PinchZoomModifier(),
                    new ZoomExtentsModifier(),
                };

                new ScaleAnimatorBuilder(rSeries)
                {
                    Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600
                }.Start();
            }
        }
        protected override void InitExampleInternal()
        {
            Surface = new SCIChartSurface(_exampleViewLayout.SciChartSurfaceView);
            StyleHelper.SetSurfaceDefaultStyle(Surface);

            var data0 = DataManager.Instance.GetDampedSinewave(1.0, 0.01, 1000);
            var data1 = DataManager.Instance.GetDampedSinewave(1.0, 0.005, 1000, 12);

            var dataSeries = new XyyDataSeries <double, double>();

            dataSeries.Append(data0.XData, data0.YData, data1.YData);

            var axisStyle = StyleHelper.GetDefaultAxisStyle();
            var xAxis     = new SCINumericAxis {
                IsXAxis = true, VisibleRange = new SCIDoubleRange(1.1, 2.7), Style = axisStyle
            };
            var yAxis = new SCINumericAxis {
                GrowBy = new SCIDoubleRange(0.1, 0.1), Style = axisStyle
            };

            var renderSeries = new SCIBandRenderableSeries
            {
                DataSeries = dataSeries,
                Style      = new SCIBandSeriesStyle
                {
                    Pen1   = new SCIPenSolid(0xFFFF1919, 0.7f),
                    Pen2   = new SCIPenSolid(0xFF279B27, 0.7f),
                    Brush1 = new SCIBrushSolid(0x33279B27),
                    Brush2 = new SCIBrushSolid(0x33FF1919)
                }
            };

            Surface.AttachAxis(xAxis, true);
            Surface.AttachAxis(yAxis, false);
            Surface.AttachRenderableSeries(renderSeries);

            Surface.ChartModifier = new SCIModifierGroup(new ISCIChartModifierProtocol[]
            {
                new SCIZoomPanModifier(),
                new SCIPinchZoomModifier(),
                new SCIZoomExtentsModifier()
            });

            Surface.InvalidateElement();
        }
        protected override void InitExample()
        {
            var data0 = DataManager.Instance.GetDampedSinewave(1.0, 0.01, 1000);
            var data1 = DataManager.Instance.GetDampedSinewave(1.0, 0.005, 1000, 12);

            var dataSeries = new XyyDataSeries <double, double>();

            dataSeries.Append(data0.XData, data0.YData, data1.YData);

            var xAxis = new SCINumericAxis {
                VisibleRange = new SCIDoubleRange(1.1, 2.7)
            };
            var yAxis = new SCINumericAxis {
                GrowBy = new SCIDoubleRange(0.1, 0.1)
            };

            var renderSeries = new SCIFastBandRenderableSeries
            {
                DataSeries       = dataSeries,
                StrokeStyle      = new SCISolidPenStyle(0xFFFF1919, 0.7f),
                StrokeY1Style    = new SCISolidPenStyle(0xFF279B27, 0.7f),
                FillBrushStyle   = new SCISolidBrushStyle(0x33279B27),
                FillY1BrushStyle = new SCISolidBrushStyle(0x33FF1919)
            };

            var animation = new SCIScaleRenderableSeriesAnimation(3, SCIAnimationCurve.EaseOutElastic);

            animation.StartAfterDelay(0.3f);
            renderSeries.AddAnimation(animation);

            using (Surface.SuspendUpdates())
            {
                Surface.XAxes.Add(xAxis);
                Surface.YAxes.Add(yAxis);
                Surface.RenderableSeries.Add(renderSeries);

                Surface.ChartModifiers = new SCIChartModifierCollection
                {
                    new SCIZoomPanModifier(),
                    new SCIPinchZoomModifier(),
                    new SCIZoomExtentsModifier()
                };
            }
        }
示例#13
0
            public MacdPaneModel(PriceSeries prices) : base(MACD, "%.2f", false)
            {
                var macdPoints = prices.CloseData.Macd(12, 25, 9);

                var histogramSeries = new XyDataSeries <DateTime, double> {
                    SeriesName = "Histogram"
                };

                histogramSeries.Append(prices.TimeData, macdPoints.Select(x => x.Divergence));
                AddRenderableSeries(new SCIFastColumnRenderableSeries {
                    DataSeries = histogramSeries, YAxisId = MACD, StrokeStyle = new SCISolidPenStyle(UIColor.White, 1f)
                });

                var macdSeries = new XyyDataSeries <DateTime, double> {
                    SeriesName = "MACD"
                };

                macdSeries.Append(prices.TimeData, macdPoints.Select(x => x.Macd), macdPoints.Select(x => x.Signal));
                AddRenderableSeries(new SCIFastBandRenderableSeries
                {
                    DataSeries       = macdSeries,
                    YAxisId          = MACD,
                    FillBrushStyle   = new SCISolidBrushStyle(UIColor.Clear),
                    StrokeStyle      = new SCISolidPenStyle(0xffe26565, 1f),
                    FillY1BrushStyle = new SCISolidBrushStyle(UIColor.Clear),
                    StrokeY1Style    = new SCISolidPenStyle(0xff52cc54, 1f)
                });

                Annotations.Add(new SCIAxisMarkerAnnotation
                {
                    Position = histogramSeries.YValues.ValueAt(histogramSeries.Count - 1).ToComparable(),
                    YAxisId  = MACD
                });
                Annotations.Add(new SCIAxisMarkerAnnotation
                {
                    Position = macdSeries.YValues.ValueAt(macdSeries.Count - 1).ToComparable(),
                    YAxisId  = MACD
                });
            }
        protected override void InitExample()
        {
            var data0 = DataManager.Instance.GetDampedSinewave(1.0, 0.01, 1000);
            var data1 = DataManager.Instance.GetDampedSinewave(1.0, 0.005, 1000, 12);

            var dataSeries = new XyyDataSeries <double, double>();

            dataSeries.Append(data0.XData, data0.YData, data1.YData);

            var xAxis = new NumericAxis(Activity)
            {
                VisibleRange = new DoubleRange(1.1, 2.7)
            };
            var yAxis = new NumericAxis(Activity)
            {
                GrowBy = new DoubleRange(0.1, 0.1)
            };

            var rs = new FastBandRenderableSeries
            {
                DataSeries       = dataSeries,
                StrokeStyle      = new PenStyle.Builder(Activity).WithColor(Color.Argb(0xFF, 0xFF, 0x19, 0x19)).Build(),
                StrokeY1Style    = new PenStyle.Builder(Activity).WithColor(Color.Argb(0xFF, 0x27, 0x9B, 0x27)).Build(),
                FillBrushStyle   = new SolidBrushStyle(Color.Argb(0x33, 0x27, 0x9B, 0x27)),
                FillY1BrushStyle = new SolidBrushStyle(Color.Argb(0x33, 0xFF, 0x19, 0x19))
            };

            Surface.XAxes.Add(xAxis);
            Surface.YAxes.Add(yAxis);
            Surface.RenderableSeries.Add(rs);

            Surface.ChartModifiers = new ChartModifierCollection()
            {
                new ZoomPanModifier(),
                new PinchZoomModifier(),
                new ZoomExtentsModifier(),
            };
        }