Esempio n. 1
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);
            }
        private void CreateMainPriceChart()
        {
            // Create an XAxis and YAxis for our chart
            var xAxis = new CategoryDateAxis(Activity)
            {
                BarTimeFrame       = TimeSpan.FromMinutes(5).TotalSeconds,
                DrawMajorGridLines = false,
                GrowBy             = new DoubleRange(0, 0.1)
            };
            var yAxis = new NumericAxis(Activity)
            {
                AutoRange = AutoRange.Always
            };

            // Create RenderableSeries to render the data
            var ohlcSeries = new FastOhlcRenderableSeries
            {
                DataSeries      = _ohlcDataSeries,
                StrokeUpStyle   = new SolidPenStyle(StrokeUpColor, StrokeThickness.ToDip(Activity)),
                StrokeDownStyle = new SolidPenStyle(StrokeDownColor, StrokeThickness.ToDip(Activity)),
            };

            var movingAverage50Series = new FastLineRenderableSeries {
                DataSeries = _xyDataSeries, StrokeStyle = new SolidPenStyle(0xFFFF6600, 1.0f)
            };

            // Create axis markers annotations to show the last values on real-time chart
            _smaAxisMarker = new AxisMarkerAnnotation(Activity)
            {
                Y1Value = 0d
            };
            _smaAxisMarker.SetBackgroundColor(SmaSeriesColor.ToColor());

            _ohlcAxisMarker = new AxisMarkerAnnotation(Activity)
            {
                Y1Value = 0d
            };
            _ohlcAxisMarker.SetBackgroundColor(StrokeUpColor.ToColor());

            // Populate the chart with Axis, RenderableSeries. The chart automatically updates when any property changes
            using (MainSurface.SuspendUpdates())
            {
                MainSurface.XAxes.Add(xAxis);
                MainSurface.YAxes.Add(yAxis);
                MainSurface.RenderableSeries.Add(ohlcSeries);
                MainSurface.RenderableSeries.Add(movingAverage50Series);
                MainSurface.Annotations.Add(_ohlcAxisMarker);
                MainSurface.Annotations.Add(_smaAxisMarker);

                // Populate some pinch and touch interactions. Pinch to zoom, drag to pan and double-tap to zoom extents
                MainSurface.ChartModifiers = new ChartModifierCollection
                {
                    new XAxisDragModifier(),
                    new ZoomPanModifier {
                        Direction = Direction2D.XDirection
                    }.WithReceiveHandledEvents(true),
                    new ZoomExtentsModifier(),
                    new LegendModifier(Activity).WithOrientation(Orientation.Horizontal).WithPosition(GravityFlags.CenterHorizontal | GravityFlags.Bottom, 20).WithReceiveHandledEvents(true),
                };
            }
        }