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;
        }
Example #2
0
        public VolumePaneViewModel(CreateMultiPaneStockChartsViewModel parentViewModel, PriceSeries prices)
            : base(parentViewModel)
        {
            var volumePrices = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Volume"
            };

            volumePrices.Append(prices.TimeData, prices.VolumeData.Select(x => (double)x));
            ChartSeriesViewModels.Add(new ColumnRenderableSeriesViewModel {
                DataSeries = volumePrices
            });

            YAxisTextFormatting = "###E+0";
        }
        public PricePaneViewModel(CreateMultiPaneStockChartsViewModel parentViewModel, PriceSeries prices)
            : base(parentViewModel)
        {
            // We can add Series via the SeriesSource API, where SciStockChart or SciChartSurface bind to IEnumerable<IChartSeriesViewModel>
            // Alternatively, you can delcare your RenderableSeries in the SciStockChart and just bind to DataSeries
            // A third method (which we don't have an example for yet, but you can try out) is to create an Attached Behaviour to transform a collection of IDataSeries into IRenderableSeries

            // Add the main OHLC chart
            var stockPrices = new OhlcDataSeries <DateTime, double>()
            {
                SeriesName = "OHLC"
            };

            stockPrices.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);
            ChartSeriesViewModels.Add(new CandlestickRenderableSeriesViewModel
            {
                DataSeries   = stockPrices,
                AntiAliasing = false,
            });

            // Add a moving average
            var maLow = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Low Line"
            };

            maLow.Append(prices.TimeData, prices.CloseData.MovingAverage(50));
            ChartSeriesViewModels.Add(new LineRenderableSeriesViewModel
            {
                DataSeries = maLow,
                StyleKey   = "LowLineStyle",
            });

            // Add a moving average
            var maHigh = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "High Line"
            };

            maHigh.Append(prices.TimeData, prices.CloseData.MovingAverage(200));
            ChartSeriesViewModels.Add(new LineRenderableSeriesViewModel
            {
                DataSeries = maHigh,
                StyleKey   = "HighLineStyle",
            });

            YAxisTextFormatting = "$0.0000";
        }
Example #4
0
        public RsiPaneViewModel(CreateMultiPaneStockChartsViewModel parentViewModel, PriceSeries prices)
            : base(parentViewModel)
        {
            var rsiSeries = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "RSI"
            };

            rsiSeries.Append(prices.TimeData, prices.Rsi(14));
            ChartSeriesViewModels.Add(new LineRenderableSeriesViewModel {
                DataSeries = rsiSeries
            });

            YAxisTextFormatting = "0.0";

            Height = 100;
        }