Beispiel #1
0
        private void MouseWheelToZoomPan_Loaded(object sender, RoutedEventArgs e)
        {
            using (sciChart.SuspendUpdates())
            {
                // Create some dataseries of type x=DateTime, y=Double
                var dataSeries0 = new OhlcDataSeries <DateTime, double>();
                var dataSeries1 = new XyDataSeries <DateTime, double>();
                var dataSeries2 = new XyDataSeries <DateTime, double>();
                var dataSeries3 = new XyDataSeries <DateTime, double>();

                // Prices are in the format Time, Open, High, Low, Close (all IList)
                var prices = DataManager.Instance.GetPriceData(Instrument.Indu.Value, TimeFrame.Daily);

                // Append data to series.
                // First series is rendered as a Candlestick Chart so we append OHLC data
                dataSeries0.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);

                // Subsequent series append moving average of the close prices
                dataSeries1.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 100));
                dataSeries2.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 50));
                dataSeries3.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 20));

                candlestickSeries.DataSeries = dataSeries0;
                lineSeries0.DataSeries       = dataSeries1;
                lineSeries1.DataSeries       = dataSeries2;
                lineSeries2.DataSeries       = dataSeries3;

                sciChart.ZoomExtents();
            }
        }
Beispiel #2
0
        private void CandlesticksWithLines_Loaded(object sender, RoutedEventArgs e)
        {
            var dataSeries0 = new OhlcDataSeries <DateTime, double>();
            var dataSeries1 = new XyDataSeries <DateTime, long>();

            var viewModel = new CandlesViewModel();
            var prices    = viewModel.Prices;

            dataSeries0.Append(
                prices.TimeData,
                prices.OpenData,
                prices.HighData,
                prices.LowData,
                prices.CloseData
                );
            dataSeries1.Append(prices.TimeData, prices.VolumeData);
            sciChart.RenderableSeries[0].DataSeries = dataSeries0;
            sciChart.RenderableSeries[1].DataSeries = dataSeries1;
            int index = 0;

            foreach (var pattern in prices.Patterns)
            {
                if (pattern > 0)
                {
                    sciChart.Annotations.Add(new TextAnnotation()
                    {
                        Text = pattern.ToString(), X1 = prices.TimeData[index], Y1 = prices.OpenData[index], Background = Brushes.Blue
                    });
                }
                index++;
            }

            sciChart.ZoomExtents();
        }
Beispiel #3
0
        private void StartNewChart()
        {
            ohlcSeries = new OhlcDataSeries <DateTime, double>()
            {
                SeriesName = "Candles", FifoCapacity = 100
            };
            BBMiddleSeries = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "BBMid", FifoCapacity = 100
            };
            BBUpperSeries = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "BBUpp", FifoCapacity = 100
            };
            BBLowerSeries = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "BBLow", FifoCapacity = 100
            };

            CandleSeries.DataSeries = ohlcSeries;
            BBMiddle.DataSeries     = BBMiddleSeries;
            BBUpper.DataSeries      = BBUpperSeries;
            BBLower.DataSeries      = BBLowerSeries;

            MonitorLogic.RunThread();
        }
        private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
        {
            using (sciChart.SuspendUpdates())
            {
                // Create some DataSeries of type x=DateTime, y=Double
                var dataSeries0 = new XyDataSeries <DateTime, double>();
                var dataSeries1 = new OhlcDataSeries <DateTime, double>();
                var dataSeries2 = new XyDataSeries <DateTime, double>();
                var dataSeries3 = new XyDataSeries <DateTime, double>();

                var dataSource = DataManager.Instance;

                // Prices are in the format Time, Open, High, Low, Close (all IList)
                var prices = dataSource.GetPriceData(Instrument.Indu.Value, TimeFrame.Daily);

                // Append data to series.
                dataSeries0.Append(prices.TimeData, dataSource.Offset(prices.LowData, -1000));
                dataSeries1.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);
                dataSeries2.Append(prices.TimeData, dataSource.ComputeMovingAverage(prices.CloseData, 50));
                dataSeries3.Append(prices.TimeData, prices.VolumeData.Select(x => (double)x));

                // Assign data to RenderableSeries
                mountainSeries.DataSeries    = dataSeries0;
                candlestickSeries.DataSeries = dataSeries1;
                lineSeries.DataSeries        = dataSeries2;
                columnSeries.DataSeries      = dataSeries3;

                sciChart.ZoomExtents();
            }
        }
Beispiel #5
0
        public void ModifyAxisPropertiesLoaded(object sender, EventArgs e)
        {
            using (sciChart.SuspendUpdates())
            {
                // Add a data series
                var dataSeries0 = new XyDataSeries <DateTime, double>();
                var dataSeries1 = new OhlcDataSeries <DateTime, double>();
                var dataSeries2 = new XyDataSeries <DateTime, double>();

                var dataSource = DataManager.Instance;

                // Prices are in the format Time, Open, High, Low, Close (all IList)
                var prices = dataSource.GetPriceData(Instrument.Indu.Value, TimeFrame.Daily);

                // Append data to series.
                dataSeries0.Append(prices.TimeData, dataSource.Offset(prices.LowData, -1000));
                dataSeries1.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);
                dataSeries2.Append(prices.TimeData, dataSource.ComputeMovingAverage(prices.CloseData, 50));

                columnSeries.DataSeries = dataSeries0;
                ohlcSeries.DataSeries   = dataSeries1;
                lineSeries.DataSeries   = dataSeries2;

                sciChart.ZoomExtents();
            }
        }
        private void CandlesticksWithLines_Loaded(object sender, RoutedEventArgs e)
        {
            // Create multiple DataSeries to store OHLC candlestick data, and Xy moving average data
            var dataSeries0 = new OhlcDataSeries <DateTime, double>();
            var dataSeries1 = new XyDataSeries <DateTime, double>();
            var dataSeries2 = new XyDataSeries <DateTime, double>();
            var dataSeries3 = new XyDataSeries <DateTime, double>();

            // Prices are in the format Time, Open, High, Low, Close (all IList)
            var prices = DataManager.Instance.GetPriceData(Instrument.Indu.Value, TimeFrame.Daily);

            // Append data to series.
            // First series is rendered as a Candlestick Chart so we append OHLC data
            dataSeries0.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);

            // Subsequent series append moving average of the close prices
            dataSeries1.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 100));
            dataSeries2.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 50));
            dataSeries3.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 20));

            sciChart.RenderableSeries[0].DataSeries = dataSeries0;
            sciChart.RenderableSeries[1].DataSeries = dataSeries1;
            sciChart.RenderableSeries[2].DataSeries = dataSeries2;
            sciChart.RenderableSeries[3].DataSeries = dataSeries3;

            sciChart.ZoomExtents();
        }
Beispiel #7
0
            public PricePaneModel(PriceSeries prices) : base(PRICES, "$%.4f", true)
            {
                var stockPrices = new OhlcDataSeries <DateTime, double> {
                    SeriesName = "EUR/USD"
                };

                stockPrices.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);
                AddRenderableSeries(new SCIFastCandlestickRenderableSeries
                {
                    DataSeries         = stockPrices,
                    YAxisId            = PRICES,
                    StrokeUpStyle      = new SCISolidPenStyle(0xff52cc54, 1f),
                    FillUpBrushStyle   = new SCISolidBrushStyle(0xa052cc54),
                    StrokeDownStyle    = new SCISolidPenStyle(0xffe26565, 1f),
                    FillDownBrushStyle = new SCISolidBrushStyle(0xd0e26565)
                });

                var maLow = new XyDataSeries <DateTime, double> {
                    SeriesName = "Low Line"
                };

                maLow.Append(prices.TimeData, prices.CloseData.MovingAverage(50));
                AddRenderableSeries(new SCIFastLineRenderableSeries {
                    DataSeries = maLow, StrokeStyle = new SCISolidPenStyle(0xFFFF3333, 1f), YAxisId = PRICES
                });

                var maHigh = new XyDataSeries <DateTime, double> {
                    SeriesName = "High Line"
                };

                maHigh.Append(prices.TimeData, prices.CloseData.MovingAverage(200));
                AddRenderableSeries(new SCIFastLineRenderableSeries {
                    DataSeries = maHigh, StrokeStyle = new SCISolidPenStyle(0xFF33DD33, 1f), YAxisId = PRICES
                });

                var priceMarker = new SCIAxisMarkerAnnotation
                {
                    Position = stockPrices.YValues.ValueAt(stockPrices.Count - 1).ToComparable(),
                    Style    = { BackgroundColor = 0xFFFF3333.ToColor() },
                    YAxisId  = PRICES
                };

                var maLowMarker = new SCIAxisMarkerAnnotation
                {
                    Position = maLow.YValues.ValueAt(maLow.Count - 1).ToComparable(),
                    Style    = { BackgroundColor = 0xFFFF3333.ToColor() },
                    YAxisId  = PRICES
                };

                var maHighMarker = new SCIAxisMarkerAnnotation
                {
                    Position = maHigh.YValues.ValueAt(maHigh.Count - 1).ToComparable(),
                    Style    = { BackgroundColor = 0xFF33DD33.ToColor() },
                    YAxisId  = PRICES
                };

                Annotations.Add(priceMarker);
                Annotations.Add(maLowMarker);
                Annotations.Add(maHighMarker);
            }
Beispiel #8
0
        protected override void InitExample()
        {
            var data = DataManager.Instance.GetPriceDataIndu();

            var dataSeries = new OhlcDataSeries <DateTime, double>();

            dataSeries.Append(data.TimeData, data.OpenData, data.HighData, data.LowData, data.CloseData);

            var xAxis = new CategoryDateAxis(Activity);
            var yAxis = new NumericAxis(Activity)
            {
                GrowBy = new DoubleRange(0, 0.1)
            };

            var rs = new FastCandlestickRenderableSeries
            {
                DataSeries         = dataSeries,
                StrokeUpStyle      = new PenStyle.Builder(Activity).WithColor(Color.Green).Build(),
                StrokeDownStyle    = new PenStyle.Builder(Activity).WithColor(Color.Red).Build(),
                FillUpBrushStyle   = new SolidBrushStyle(Color.Green),
                FillDownBrushStyle = new SolidBrushStyle(Color.Red)
            };

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

            Surface.ChartModifiers = new ChartModifierCollection()
            {
                new ZoomPanModifier(),
                new PinchZoomModifier(),
                new ZoomExtentsModifier(),
            };
        }
Beispiel #9
0
        public void SetSecurity(string board, string seccode)
        {
            if (Seccode == seccode)
            {
                return;
            }
            TickDataHandler.UnsubscribeFromTicksEvent(TicksToCandles);
            TXmlConnector.SendNewCandles -= ProcessCandles;
            OhlcDataSeries.Clear();
            XyDataSeries.Clear();
            StockChartAnnotations = new AnnotationCollection();
            Board       = board;
            Seccode     = seccode;
            _lastCandle = null;
            Task.Run(() => GetHistory());
            BubbleSeries.Clear();
            GetBubbleData();
            var volumes = TickDataHandler.AddChartSubscription(Board, Seccode, TicksToCandles);

            HorizontalVolumesBuy  = volumes[0];
            HorizontalVolumesSell = volumes[1];
            UpdateWindowInstrument();
            DragStep = Application.Current.Dispatcher
                       .Invoke(() => MainWindowViewModel.SecVm._secList
                               .First(s => s.Board == Board && s.Seccode == Seccode).Minstep);
            GetOrders();
        }
Beispiel #10
0
        //time\tprice\tvolume\tbidorask
        public HistogramBarDemoProjectViewModel()
        {
            _random = new FasterRandom();

            _timerNewDataUpdate           = new Timer(1);
            _timerNewDataUpdate.AutoReset = true;
            _timerNewDataUpdate.Elapsed  += OnNewData;

            _viewportManager = new HistogramBarViewportManager();

            _dataSeries0 = new OhlcDataSeries <DateTime, double>();
            _dataSeries1 = new OhlcDataSeries <DateTime, double>();

            _filterDataSeries = new XyDataSeries <DateTime, double>();
            _movingAverage    = new MovingAverage(5);

            YAutoRange = true;
            AlowToChangeVisibleRangeToMax = true;

            HorizontalBarSpacing = 5;
            HistogramBarMode     = HistogramMode.MarketProfile;
            MaxHistoBarCandles   = 40;
            TickSize             = 0.5;

            LoadRandomData(30, 250);
            _viewportManager.ZoomExtents();
        }
        public HitTestDatapoints()
        {
            InitializeComponent();

            // Append some data
            var series0 = new XyDataSeries <double, double> {
                SeriesName = "Line Series"
            };

            series0.Append(new double[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, new double[] { 0, 0.1, 0.3, 0.5, 0.4, 0.35, 0.3, 0.25, 0.2, 0.1 });
            renderableLineSeries.DataSeries = series0;

            var series1 = new XyDataSeries <double, double> {
                SeriesName = "Column Series"
            };

            series1.Append(series0.XValues, series0.YValues.Select(x => x * 0.7));
            renderableColumnSeries.DataSeries = series1;

            var series2 = new OhlcDataSeries <double, double> {
                SeriesName = "Candlestick Series"
            };

            series2.Append(series0.XValues, series0.YValues.Select(x => x + 0.5), series0.YValues.Select(x => x + 1.0), series0.YValues.Select(x => x + 0.3), series0.YValues.Select(x => x + 0.7));
            renderableCandlestickSeries.DataSeries = series2;
        }
Beispiel #12
0
        private void UpdatePriceChart(PriceSeries priceData)
        {
            // Create a new series and append Open, High, Low, Close data
            _ohlcDataSeries = new OhlcDataSeries <DateTime, double>();
            _ohlcDataSeries.Append(priceData.TimeData, priceData.OpenData, priceData.HighData, priceData.LowData, priceData.CloseData);
            PriceData            = (IOhlcDataSeries <DateTime, double>)(UseDiscontinuousDateTimeAxis ? new DiscontinuousAxisFilter <double>(_ohlcDataSeries, Calendar).FilteredDataSeries : _ohlcDataSeries);
            PriceData.SeriesName = priceData.Symbol;

            var xyDataSeries = new XyDataSeries <DateTime, double>();

            xyDataSeries.Append(priceData.TimeData, priceData.CloseData);
            var discontinuousSeries = new DiscontinuousAxisFilter <double>(xyDataSeries, Calendar).FilteredDataSeries as IDataSeries <DateTime, double>;

            // Create a series for the 200 period SMA which will be plotted as a line chart
            Sma200Series = UseDiscontinuousDateTimeAxis ? (IXyDataSeries <DateTime, double>) new MovingAverageFilter <DateTime>(discontinuousSeries, 200).FilteredDataSeries :
                           (IXyDataSeries <DateTime, double>) new MovingAverageFilter <DateTime>(xyDataSeries, 200).FilteredDataSeries;
            Sma200Series.SeriesName = "200 SMA";

            // Create a series for the 50 period SMA which will be plotted as a line chart
            Sma50Series = UseDiscontinuousDateTimeAxis ? (IXyDataSeries <DateTime, double>) new MovingAverageFilter <DateTime>(discontinuousSeries, 50).FilteredDataSeries :
                          (IXyDataSeries <DateTime, double>) new MovingAverageFilter <DateTime>(xyDataSeries, 50).FilteredDataSeries;
            Sma50Series.SeriesName = "50 SMA";

            // Update the chart type and timeframe with current settings
            UpdateChartType(_chartType);
        }
        private void LoadBricks(Symbol symbol)
        {
            var ticks = GetTicks(symbol);

            var decimals = (symbol == Symbol.USDJPY) ? Decimals.Three : Decimals.Five;

            var feed = new RenkoFeed(3.2, decimals);

            foreach (var tick in ticks)
            {
                feed.HandleTick(tick);
            }

            var dataSeries = new OhlcDataSeries <DateTime, double>();

            foreach (var brick in feed)
            {
                if (brick.Trend == Trend.Rising)
                {
                    dataSeries.Append(brick.OpenOn, brick.OpenRate,
                                      brick.CloseRate, brick.OpenRate, brick.CloseRate);
                }
                else
                {
                    dataSeries.Append(brick.OpenOn, brick.OpenRate,
                                      brick.OpenRate, brick.CloseRate, brick.CloseRate);
                }
            }

            chart.RenderableSeries[0].DataSeries = dataSeries;

            chart.ZoomExtents();
        }
        private void ProcessCandles(string data)
        {
            List <Candle> list;
            Candles       candles;

            using (var reader = new StringReader(data))
            {
                list = new List <Candle>();
                var candleSerializer = new XmlSerializer(typeof(Candles));
                candles =
                    (Candles)
                    candleSerializer.Deserialize(reader);
                reader.Close();
            }
            //check if seccode matches
            if (candles.Seccode != Seccode)
            {
                return;
            }
            list = candles.Candle.Where(
                item =>
                item.TradeTime.Date >= DateTime.Today).ToList();

            if (list.Count == 0)
            {
                return;
            }
            OhlcDataSeries.Append(GetDateTime(list), GetValues(list));
            TXmlConnector.SendNewCandles -= ProcessCandles;
        }
        private IOhlcDataSeries GetPriceDataSeries()
        {
            var stockPrices = new OhlcDataSeries <DateTime, double>();

            var prices = DataManager.Instance.GetPriceData(Instrument.Indu.Value, TimeFrame.Daily);

            stockPrices.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);

            return(stockPrices);
        }
Beispiel #16
0
        public static void SetChartViewModelPriceData(IList <Candle> candles, ChartViewModel cvm)
        {
            var priceDataSeries = new OhlcDataSeries <DateTime, double>();
            var xvalues         = new List <DateTime>();
            var openValues      = new List <double>();
            var highValues      = new List <double>();
            var lowValues       = new List <double>();
            var closeValues     = new List <double>();

            var atr = new AverageTrueRange();

            for (var i = 0; i < candles.Count; i++)
            {
                var time = new DateTime(candles[i].CloseTimeTicks, DateTimeKind.Utc).ToLocalTime();

                xvalues.Add(time);
                openValues.Add((double)candles[i].OpenBid);
                highValues.Add((double)candles[i].HighBid);
                lowValues.Add((double)candles[i].LowBid);
                closeValues.Add((double)candles[i].CloseBid);
            }

            priceDataSeries.Append(xvalues, openValues, highValues, lowValues, closeValues);
            priceDataSeries.SeriesName = "Price";

            var pricePaneVm = cvm.ChartPaneViewModels.Count > 0 ? cvm.ChartPaneViewModels[0] : null;
            var atrPaneVm   = cvm.ChartPaneViewModels.Count > 1 ? cvm.ChartPaneViewModels[1] : null;

            if (pricePaneVm == null)
            {
                pricePaneVm = new ChartPaneViewModel(cvm, cvm.ViewportManager)
                {
                    IsFirstChartPane = true,
                    IsLastChartPane  = false
                };

                var series = new FastCandlestickRenderableSeries {
                    AntiAliasing = false
                };
                series.SetValue(FilteringLegendModifier.IncludeSeriesProperty, false);
                series.SeriesColor = Colors.DarkBlue;
                pricePaneVm.ChartSeriesViewModels.Add(new ChartSeriesViewModel(priceDataSeries, series));
                cvm.ChartPaneViewModels.Add(pricePaneVm);
            }
            else
            {
                pricePaneVm.ChartSeriesViewModels.Clear();
                var renderableSeries = new FastCandlestickRenderableSeries {
                    AntiAliasing = false
                };
                renderableSeries.SetValue(FilteringLegendModifier.IncludeSeriesProperty, false);
                pricePaneVm.ChartSeriesViewModels.Add(new ChartSeriesViewModel(priceDataSeries, renderableSeries));
            }
        }
        void InteractionWithAnnotationsLoaded(object sender, RoutedEventArgs e)
        {
            var series = new OhlcDataSeries <DateTime, double>();

            var marketDataService = new MarketDataService(DateTime.Now, 5, 5);
            var data = marketDataService.GetHistoricalData(200);

            series.Append(data.Select(x => x.DateTime), data.Select(x => x.Open), data.Select(x => x.High), data.Select(x => x.Low), data.Select(x => x.Close));

            sciChart.RenderableSeries[0].DataSeries = series;
        }
Beispiel #18
0
        private void SetupRenderableSeries()
        {
            var dataManager = DataManager.Instance;
            var priceBars   = dataManager.GetPriceDataIndu();

            var mountainDataSeries = new XyDataSeries <double, double> {
                SeriesName = "Mountain Series"
            };
            var lineDataSeries = new XyDataSeries <double, double> {
                SeriesName = "Line Series"
            };
            var columnDataSeries = new XyDataSeries <double, long> {
                SeriesName = "Column Series"
            };
            var candlestickDataSeries = new OhlcDataSeries <double, double> {
                SeriesName = "Candlestick Series"
            };

            var xValues = Enumerable.Range(0, priceBars.Count).Select(x => (double)x).ToArray();

            mountainDataSeries.Append(xValues, priceBars.LowData.Select(x => x - 1000d));
            lineDataSeries.Append(xValues, dataManager.ComputeMovingAverage(priceBars.CloseData, 50));
            columnDataSeries.Append(xValues, priceBars.VolumeData);
            candlestickDataSeries.Append(xValues, priceBars.OpenData, priceBars.HighData, priceBars.LowData, priceBars.CloseData);

            var mountainRenderableSeries = new SCIFastMountainRenderableSeries {
                DataSeries = mountainDataSeries, YAxisId = "PrimaryAxisId"
            };
            var lineRenderableSeries = new SCIFastLineRenderableSeries {
                DataSeries = lineDataSeries, YAxisId = "PrimaryAxisId"
            };
            var columnRenderableSeries = new SCIFastColumnRenderableSeries {
                DataSeries = columnDataSeries, YAxisId = "SecondaryAxisId"
            };
            var candlestickRenderableSeries = new SCIFastCandlestickRenderableSeries {
                DataSeries = candlestickDataSeries, YAxisId = "PrimaryAxisId"
            };

            using (Surface.SuspendUpdates())
            {
                Surface.RenderableSeries.Add(mountainRenderableSeries);
                Surface.RenderableSeries.Add(lineRenderableSeries);
                Surface.RenderableSeries.Add(columnRenderableSeries);
                Surface.RenderableSeries.Add(candlestickRenderableSeries);
                Surface.ChartModifiers = new SCIChartModifierCollection
                {
                    new SCILegendModifier {
                        ShowCheckBoxes = false
                    },
                    new SCICursorModifier(),
                    new SCIZoomExtentsModifier()
                };
            }
        }
Beispiel #19
0
            public PricePaneModel(Context context, PriceSeries prices) : base(context, PRICES, "$0.0000", true)
            {
                var stockPrices = new OhlcDataSeries <DateTime, double> {
                    SeriesName = "EUR/USD"
                };

                stockPrices.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);
                AddRenderableSeries(new FastCandlestickRenderableSeries {
                    DataSeries = stockPrices, YAxisId = PRICES
                });

                var maLow = new XyDataSeries <DateTime, double> {
                    SeriesName = "Low Line"
                };

                maLow.Append(prices.TimeData, prices.CloseData.MovingAverage(50));
                AddRenderableSeries(new FastLineRenderableSeries {
                    DataSeries = maLow, StrokeStyle = new SolidPenStyle(0xFFFF3333, 1f.ToDip(context)), YAxisId = PRICES
                });

                var maHigh = new XyDataSeries <DateTime, double> {
                    SeriesName = "High Line"
                };

                maHigh.Append(prices.TimeData, prices.CloseData.MovingAverage(200));
                AddRenderableSeries(new FastLineRenderableSeries {
                    DataSeries = maHigh, StrokeStyle = new SolidPenStyle(0xFF33DD33, 1f.ToDip(context)), YAxisId = PRICES
                });

                var priceMarker = new AxisMarkerAnnotation(context)
                {
                    Y1 = (Java.Lang.IComparable)stockPrices.YValues.Get(stockPrices.Count - 1), YAxisId = PRICES
                };

                priceMarker.SetBackgroundColor(0xFFFF3333.ToColor());

                var maLowMarker = new AxisMarkerAnnotation(context)
                {
                    Y1 = (Java.Lang.IComparable)maLow.YValues.Get(maLow.Count - 1), YAxisId = PRICES
                };

                maLowMarker.SetBackgroundColor(0xFFFF3333.ToColor());

                var maHighMarker = new AxisMarkerAnnotation(context)
                {
                    Y1 = (Java.Lang.IComparable)maHigh.YValues.Get(maHigh.Count - 1), YAxisId = PRICES
                };

                maHighMarker.SetBackgroundColor(0xFF33DD33.ToColor());

                Annotations.Add(priceMarker);
                Annotations.Add(maLowMarker);
                Annotations.Add(maHighMarker);
            }
Beispiel #20
0
 private void ReloadChartSeries()
 {
     ohlcSeries = new OhlcDataSeries <DateTime, double>()
     {
         SeriesName = "Candles", FifoCapacity = 10000
     };
     dataSeries = new XyDataSeries <DateTime, double> {
         SeriesName = "Momentum Indicator", FifoCapacity = 10000
     };
     CandleSeries.DataSeries = ohlcSeries;
     LineSeries.DataSeries   = dataSeries;
 }
        private static IOhlcDataSeries <double, double> GetOhlcDataSeries(IEnumerable <double> data)
        {
            var dataSeries = new OhlcDataSeries <double, double>();

            dataSeries.Append(data,
                              data.Select(x => x + 2.4),
                              data.Select(x => x + 4.9),
                              data.Select(x => x - 5.3),
                              data.Select(x => x - 2.7));

            return(dataSeries);
        }
        void CreateAnnotationsDynamicallyLoaded(object sender, RoutedEventArgs e)
        {
            var dataSeries = new OhlcDataSeries <DateTime, double>();

            var marketDataService = new MarketDataService(DateTime.Now, 5, 5);
            var data = marketDataService.GetHistoricalData(200);

            dataSeries.Append(data.Select(x => x.DateTime), data.Select(x => x.Open), data.Select(x => x.High), data.Select(x => x.Low), data.Select(x => x.Close));

            sciChart.RenderableSeries[0].DataSeries = dataSeries;
            pointerButton.IsChecked     = true;
            AnnotationTypes.ItemsSource = _annotationTypes.Keys;
        }
Beispiel #23
0
 private void ReloadChartSeries()
 {
     ohlcSeries = new OhlcDataSeries <DateTime, double>()
     {
         SeriesName = "Candles", FifoCapacity = 10000
     };
     //easeSeries = new XyDataSeries<DateTime, decimal>() { SeriesName = "Ease of movement", FifoCapacity = 10000 };
     dataSeries = new XyDataSeries <DateTime, double> {
         SeriesName = "Chaikin Oscellator", FifoCapacity = 10000
     };
     CandleSeries.DataSeries = ohlcSeries;
     LineSeries.DataSeries   = dataSeries;
     //LineSeries.DataContext = dataSeries;
 }
Beispiel #24
0
        private void ReloadChartSeries()
        {
            cand = new OhlcDataSeries <DateTime, double>()
            {
                SeriesName = "Candles", FifoCapacity = 10000
            };
            sar = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Sar", FifoCapacity = 10000
            };

            CandleChart.DataSeries = cand;
            SarChart.DataSeries    = sar;
        }
Beispiel #25
0
        private void ReloadChartSeries()
        {
            ohlcSeries = new OhlcDataSeries <DateTime, double>()
            {
                SeriesName = "Candles", FifoCapacity = 10000
            };
            sarSeries = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Sar", FifoCapacity = 10000
            };

            CandleSeries.DataSeries = ohlcSeries;
            SarSeries.DataSeries    = sarSeries;
        }
        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";
        }
        private void OnLoaded_SciChartSurface(object sender, RoutedEventArgs e)
        {
            // Create multiple DataSeries to store OHLC candlestick data, and Xy moving average data
            var dataSeries0 = new OhlcDataSeries <DateTime, double>()
            {
                SeriesName = "Candles"
            };
            var dataSeries1 = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Red"
            };
            var dataSeries2 = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Blue"
            };
            var dataSeries3 = new XyDataSeries <DateTime, double>()
            {
                SeriesName = "Yellow"
            };

            // Prices are in the format Time, Open, High, Low, Close (all IList)
            var prices = DataManager.Instance.GetPriceData(Instrument.Indu.Value, TimeFrame.Daily);

            // Append data to series.
            // First series is rendered as a Candlestick Chart so we append OHLC data
            dataSeries0.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);

            // Subsequent series append moving average of the close prices
            dataSeries1.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 100));
            dataSeries2.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 50));
            dataSeries3.Append(prices.TimeData, DataManager.Instance.ComputeMovingAverage(prices.CloseData, 20));

            sciChart.RenderableSeries[0].DataSeries = dataSeries0;
            sciChart.RenderableSeries[1].DataSeries = dataSeries1;
            sciChart.RenderableSeries[2].DataSeries = dataSeries2;
            sciChart.RenderableSeries[3].DataSeries = dataSeries3;

            boxAnnotation.X1 = new DateTime(2011, 7, 21, 17, 2, 39);
            boxAnnotation.X2 = new DateTime(2011, 3, 16, 6, 44, 18);

            buyTxtAnnot.X1 = new DateTime(2011, 3, 14, 0, 24, 11);
            buyTxtAnnot.X2 = buyTxtAnnot.X1;

            sellTxtAnnot.X1 = new DateTime(2011, 7, 15, 21, 19, 28);
            sellTxtAnnot.X2 = sellTxtAnnot.X1;

            sciChart.ZoomExtents();
        }
Beispiel #28
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;
 }
Beispiel #29
0
        protected override void InitExample()
        {
            var priceSeries = DataManager.Instance.GetPriceDataIndu();

            var dataSeries = new OhlcDataSeries <DateTime, double>();

            dataSeries.Append(priceSeries.TimeData, priceSeries.OpenData, priceSeries.HighData, priceSeries.LowData, priceSeries.CloseData);

            var size  = priceSeries.Count;
            var xAxis = new CategoryDateAxis(Activity)
            {
                VisibleRange = new DoubleRange(size - 30, size), GrowBy = new DoubleRange(0, 0.1)
            };
            var yAxis = new NumericAxis(Activity)
            {
                GrowBy = new DoubleRange(0, 0.1), AutoRange = AutoRange.Always
            };

            var rSeries = new FastCandlestickRenderableSeries
            {
                DataSeries         = dataSeries,
                StrokeUpStyle      = new SolidPenStyle(0xFF00AA00, 1.ToDip(Activity)),
                StrokeDownStyle    = new SolidPenStyle(0xFFFF0000, 1.ToDip(Activity)),
                FillUpBrushStyle   = new SolidBrushStyle(0x8800AA00),
                FillDownBrushStyle = new SolidBrushStyle(0x88FF0000)
            };

            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 WaveAnimatorBuilder(rSeries)
                {
                    Interpolator = new DecelerateInterpolator(), Duration = 3000, StartDelay = 350
                }.Start();
            }
        }
Beispiel #30
0
        private void CreateSciTradeChartLoaded(object sender, RoutedEventArgs e)
        {
            var dataSeries = new OhlcDataSeries <DateTime, double>()
            {
                // Note: SeriesName is needed to display the legend correctly.
                SeriesName = "Price Data"
            };

            // Append price data
            var prices = DataManager.Instance.GetPriceData(Instrument.Indu.Value, TimeFrame.Daily);

            dataSeries.Append(prices.TimeData, prices.OpenData, prices.HighData, prices.LowData, prices.CloseData);

            // Set BarTimeFrame = 3600 seconds (time of one bar in the input data)
            StockChart.BarTimeFrame = TimeSpan.FromHours(1).TotalSeconds;

            StockChart.RenderableSeries[0].DataSeries = dataSeries;
        }
        public ChartViewModel()
        {
            this.SetDefaults();

            if (IsInDesignMode)
            {
                // Code runs in Blend --> create design time data.
                _marketDataService = new MarketDataService(new DateTime(2015, 08, 11), 1, 5000);
            }
            else
            {
                // Code runs "for real"
                _marketDataService = new MarketDataService(new DateTime(2015, 08, 11), 1, 1000);
            }

            var ds0 = new OhlcDataSeries<DateTime, double>();
            _seriesViewModels.Add(new ChartSeriesViewModel(ds0, new FastOhlcRenderableSeries() { Name = "Series1", XAxisId = "dateTimeXAxis", YAxisId = "Y1" }));
            // Append 500 historical bars to data series
            var prices = _marketDataService.GetHistoricalData(500);
            ds0.Append(
                prices.Select(x => x.DateTime),
                prices.Select(x => x.Open),
                prices.Select(x => x.High),
                prices.Select(x => x.Low),
                prices.Select(x => x.Close));

            //Create price/volume distribution
            double minPrice = prices.Select(x => x.Low).Min();
            double maxPrice = prices.Select(x => x.High).Max();

            int numBins = 5;
            double interval = (maxPrice - minPrice) / numBins;
            var bins = new Tuple<double, double>[numBins];
            double binLower = minPrice;
            for (int i = 0; i < numBins; i++)
            {
                bins[i] = new Tuple<double, double>(binLower, binLower + interval);
                binLower += interval;
            }

            var dsVolByPrice = new XyDataSeries<double, double>();
            _seriesViewModels.Add(new ChartSeriesViewModel(dsVolByPrice, new FastColumnRenderableSeries() { Name = "PriceByVol", XAxisId = "verticalXAxis", YAxisId = "Y2" }));

            var dblVolume = new List<double>();
            for (int i = 0; i < numBins; i++) dblVolume.Add(10 - i);

            dsVolByPrice.Append(bins.Select(x => x.Item1), dblVolume);

            _marketDataService.SubscribePriceUpdate(OnNewPrice);
            _xVisibleRange = new IndexRange(0, 1000);

            SelectedChartType = ChartType.FastOhlc;

            //this.DeleteCommand = new RelayCommand(DeleteCommandExecuted);
        }