Esempio n. 1
0
 public void AddSeries(CandleStickSeries s)
 {
     s.Color = colors[plot.Series.Count() % colors.Count()].ToOxyColor();
     plot.Series.Add(s);
     this.Root.Model.IsLegendVisible = false;
     this.Root.Model = plot;
 }
        public static PlotModel CandleStickSeries()
        {
            var model = new PlotModel { Title = "CandleStickSeries", LegendSymbolLength = 24 };
            var s1 = new CandleStickSeries
                {
                    Title = "CandleStickSeries 1",
                    Color = OxyColors.Black,
                };
            var r = new Random(314);
            var price = 100.0;
            for (int x = 0; x < 16; x++)
            {
                price = price + r.NextDouble() + 0.1;
                var high = price + 10 + (r.NextDouble() * 10);
                var low = price - (10 + (r.NextDouble() * 10));
                var open = low + (r.NextDouble() * (high - low));
                var close = low + (r.NextDouble() * (high - low));
                s1.Items.Add(new HighLowItem(x, high, low, open, close));
            }

            model.Series.Add(s1);
            model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, MaximumPadding = 0.3, MinimumPadding = 0.3 });
            model.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, MaximumPadding = 0.03, MinimumPadding = 0.03 });

            return model;
        }
        public static Example LargeDataSetNarrow()
        {
            var pm = new PlotModel { Title = "Large Data Set (narrow window)" };

            var timeSpanAxis1 = new DateTimeAxis { Position = AxisPosition.Bottom };
            pm.Axes.Add(timeSpanAxis1);
            var linearAxis1 = new LinearAxis { Position = AxisPosition.Left };
            pm.Axes.Add(linearAxis1);
            var n = 1000000;
            var items = HighLowItemGenerator.MRProcess(n).ToArray();
            var series = new CandleStickSeries
                             {
                                 Color = OxyColors.Black,
                                 IncreasingColor = OxyColors.DarkGreen,
                                 DecreasingColor = OxyColors.Red,
                                 TrackerFormatString =
                                     "High: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}",
                                 ItemsSource = items
                             };

            timeSpanAxis1.Minimum = items[0].X;
            timeSpanAxis1.Maximum = items[29].X;

            linearAxis1.Minimum = items.Take(30).Select(x => x.Low).Min();
            linearAxis1.Maximum = items.Take(30).Select(x => x.High).Max();

            pm.Series.Add(series);

            timeSpanAxis1.AxisChanged += (sender, e) => AdjustYExtent(series, timeSpanAxis1, linearAxis1);

            var controller = new PlotController();
            controller.UnbindAll();
            controller.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
            return new Example(pm, controller);
        }
        private async Task Initialize()
        {
            var variacionDivisas = await MockDatabase.ObtenerVariacionDivisas();

            var serie = new CandleStickSeries()
            {
                Color           = OxyColor.Parse(Colors[0]),
                StrokeThickness = 2,
                LineStyle       = LineStyle.Solid,
                DataFieldClose  = "Cierre",
                DataFieldHigh   = "Maximo",
                DataFieldLow    = "Minimo",
                DataFieldOpen   = "Apertura",
                DataFieldX      = "Hora",
                ItemsSource     = variacionDivisas,
                Title           = "Variación del peso frente al dólar"
            };

            ChartModel.Series.Add(serie);
            ChartModel.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "Hora del día"
            });
            ChartModel.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Valor [$]"
            });
        }
        public static PlotModel MinuteData_DateTimeAxis()
        {
            var pm = new PlotModel {
                Title = "Minute Data (DateTimeAxis)"
            };

            var timeSpanAxis1 = new DateTimeAxis {
                Position = AxisPosition.Bottom, StringFormat = "hh:mm"
            };

            pm.Axes.Add(timeSpanAxis1);
            var linearAxis1 = new LinearAxis {
                Position = AxisPosition.Left
            };

            pm.Axes.Add(linearAxis1);
            var candleStickSeries = new CandleStickSeries
            {
                CandleWidth         = 6,
                Color               = OxyColors.Black,
                IncreasingFill      = OxyColors.DarkGreen,
                DecreasingFill      = OxyColors.Red,
                DataFieldX          = "Time",
                DataFieldHigh       = "H",
                DataFieldLow        = "L",
                DataFieldOpen       = "O",
                DataFieldClose      = "C",
                TrackerFormatString = "High: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}",
                ItemsSource         = lst
            };

            pm.Series.Add(candleStickSeries);
            return(pm);
        }
Esempio n. 6
0
        public static Chart Graph(this CandleStickSeries series, DateTimeAxis a1, LinearAxis a2)
        {
            Chart chart = new Chart(true);

            chart.AddSeries(series);
            return(chart);
        }
        public TraderBotResultsPlotViewModel(PlotHelper drawer)
        {
            Drawer             = drawer;
            this.PlotViewModel = new PlotModel {
                Title = Drawer.Title
            };


            CreateAxes();
            Candles = new CandleStickSeries();
            Candles.TrackerFormatString = "{0}\n{1}: {2}\nHigh: {3:0.########}\nLow: {4:0.########}\nOpen: {5:0.########}\nClose: {6:0.########}";

            Volumes = new VolumeSeries()
            {
                PositiveHollow = false,
                VolumeStyle    = VolumeStyle.Stacked,
                YAxisKey       = Volume_Yaxis.Key,
            };



            PlotViewModel.KeyDown += PlotViewModel_KeyDown;
            timer = new System.Timers.Timer()
            {
                Interval  = 100,
                AutoReset = true,
            };
            timer.Elapsed += UpdateOnTimerTick;
            timer.Start();
        }
        public static PlotModel MinuteData_DateTimeAxis()
        {
            var pm = new PlotModel { Title = "Minute Data (DateTimeAxis)" };

            var timeSpanAxis1 = new DateTimeAxis { Position = AxisPosition.Bottom, StringFormat = "hh:mm" };
            pm.Axes.Add(timeSpanAxis1);
            var linearAxis1 = new LinearAxis { Position = AxisPosition.Left };
            pm.Axes.Add(linearAxis1);
            var candleStickSeries = new CandleStickSeries
            {
                CandleWidth = 6,
                Color = OxyColors.Black,
                IncreasingFill = OxyColors.DarkGreen,
                DecreasingFill = OxyColors.Red,
                DataFieldX = "Time",
                DataFieldHigh = "H",
                DataFieldLow = "L",
                DataFieldOpen = "O",
                DataFieldClose = "C",
                TrackerFormatString = "High: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}",
                ItemsSource = lst
            };
            pm.Series.Add(candleStickSeries);
            return pm;
        }
Esempio n. 9
0
 public void AddSeries(CandleStickSeries s)
 {
     s.Color = colors[plot.Series.Count() % colors.Count()].ToOxyColor();
     plot.Series.Add(s);
     this.Root.Model.IsLegendVisible = false;
     this.Root.Model = plot;
 }
        public static PlotModel CandleStickSeries()
        {
            var model = new PlotModel {
                Title = "CandleStickSeries", LegendSymbolLength = 24
            };
            var s1 = new CandleStickSeries
            {
                Title = "random values",
                Color = OxyColors.Black,
            };
            var r     = new Random(314);
            var price = 100.0;

            for (int x = 0; x < 16; x++)
            {
                price = price + r.NextDouble() + 0.1;
                var high  = price + 10 + (r.NextDouble() * 10);
                var low   = price - (10 + (r.NextDouble() * 10));
                var open  = low + (r.NextDouble() * (high - low));
                var close = low + (r.NextDouble() * (high - low));
                s1.Items.Add(new HighLowItem(x, high, low, open, close));
            }

            model.Series.Add(s1);
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, MaximumPadding = 0.3, MinimumPadding = 0.3
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, MaximumPadding = 0.03, MinimumPadding = 0.03
            });

            return(model);
        }
Esempio n. 11
0
 private static CandleStickSeries AddToHighLowSeriesDel(CandleStickSeries candle, List <OHLC> oHLCs)
 {
     foreach (var item1 in oHLCs)
     {
         candle.Items.Add(new HighLowItem(item1.Time, (double)item1.High, (double)item1.Low, (double)item1.Open, (double)item1.Close));
         //points.Points.Add(new DataPoint((double)item1.Time, (double)item1.Vwap));
     }
     return(candle);
 }
Esempio n. 12
0
        public static SeriesWrapper <CandleStickSeries, HighLowItem, T> CandleStick <T>(IEnumerable <T> items, Func <T, HighLowItem> itemMapper)
        {
            var series = new CandleStickSeries();

            foreach (var item in items)
            {
                series.Items.Add(itemMapper(item));
            }

            return(new SeriesWrapper <CandleStickSeries, HighLowItem, T>(series, series.Items, item => new PointWrapper(item.X, item.High, item.Low), itemMapper));
        }
Esempio n. 13
0
        Task RenderCandleStick(Series plot)
        {
            var candleStickSeries = new CandleStickSeries();

            foreach (var item in plot.Data)
            {
                candleStickSeries.Items.Add(new HighLowItem(item.X, item.High, item.Low, item.Open, item.Close));
            }
            OxyplotModel.Series.Add(candleStickSeries);

            return(Task.CompletedTask);
        }
Esempio n. 14
0
        public static Example LargeDataSetNarrow()
        {
            var pm = new PlotModel {
                Title = "Large Data Set (narrow window)"
            };

            var timeSpanAxis1 = new DateTimeAxis {
                Position = AxisPosition.Bottom
            };

            pm.Axes.Add(timeSpanAxis1);
            var linearAxis1 = new LinearAxis {
                Position = AxisPosition.Left
            };

            pm.Axes.Add(linearAxis1);
            var series = new CandleStickSeries
            {
                Color               = OxyColors.Black,
                IncreasingColor     = OxyColors.DarkGreen,
                DecreasingColor     = OxyColors.Red,
                DataFieldX          = "Time",
                DataFieldHigh       = "H",
                DataFieldLow        = "L",
                DataFieldOpen       = "O",
                DataFieldClose      = "C",
                TrackerFormatString = "High: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}",
            };

            var n = 1000000;

            foreach (var bar in HighLowItemGenerator.MRProcess(n))
            {
                series.Append(bar);
            }

            timeSpanAxis1.Minimum = series.Items[0].X;
            timeSpanAxis1.Maximum = series.Items[29].X;

            linearAxis1.Minimum = series.Items.Take(30).Select(x => x.Low).Min();
            linearAxis1.Maximum = series.Items.Take(30).Select(x => x.High).Max();

            pm.Series.Add(series);

            timeSpanAxis1.AxisChanged += (sender, e) => AdjustYExtent(series, timeSpanAxis1, linearAxis1);

            var controller = new PlotController();

            controller.UnbindAll();
            controller.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
            return(new Example(pm, controller));
        }
Esempio n. 15
0
        private void UpdateDealSeries(long botId, string isin)
        {
            //not our isin
            if (isin != m_isin)
            {
                return;
            }

            //not elements
            if (m_plaza2Connector.DictBots[botId].GUIBot.UserDealsCollection.Count == 0)
            {
                return;
            }



            //if allready subscribed just update
            if (m_dictDealsCollection.ContainsKey(botId))
            {
                UpdateDealsCollection(botId, isin);
                return;
            }

            // if not created yet, update, create series on graph



            m_dictDealsCollection[botId] = new CObservableIdCollection <CGUIUserDealViewModel, long>();
            int cnt = m_dictDealsCollection.Count;

            m_dictColorsOfBots[botId] = m_listColorsOfSeries[cnt - 1];


            UpdateDealsCollection(botId, isin);

            Style stl = (Style)App.Current.Resources["DealsStyle"];


            CandleStickSeries css = new CandleStickSeries();

            css.ItemsSource           = m_dictDealsCollection[botId];
            css.IndependentValuePath  = "DateTF";// "Date";
            css.DependentValueBinding = new Binding("Pos");
            css.SizeValueBinding      = new Binding("Height");

            css.DataPointStyle = stl;



            ChartGraph.Series.Add(css);
        }
Esempio n. 16
0
        private void AddCandleStickSeries(string title, List <StockData> list)
        {
            CandleStickSeries newSeries = new CandleStickSeries()
            {
                Color               = OxyColors.Black,
                IncreasingColor     = OxyColor.FromRgb(0, 197, 49),
                DecreasingColor     = OxyColor.FromRgb(255, 95, 95),
                DataFieldX          = "dt",
                DataFieldHigh       = "high",
                DataFieldLow        = "low",
                DataFieldClose      = "close",
                DataFieldOpen       = "open",
                TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}",
                ItemsSource         = todaysList
            };

            Model.Series.Add(newSeries);
        }
Esempio n. 17
0
        private CandleStickSeries GetNewSerie(CandleStickData data)
        {
            Random countRandom = new Random();
            ChartYAxisValueCollection <CandleStickYAxisValue> yVals = new ChartYAxisValueCollection <CandleStickYAxisValue>();
            int count = data.XAxisCount;

            for (int i = 0; i < count; i++)
            {
                yVals.Add(new CandleStickYAxisValue(countRandom.Next(0, count), countRandom.Next(0, count), countRandom.Next(0, count), countRandom.Next(0, count)));
            }
            CandleStickSeries set1 = new CandleStickSeries(yVals, "DataSet 1");

            set1.AddColor(DemoGlobal.GetRandomColor());
            set1.AddColor(DemoGlobal.GetRandomColor());
            set1.AddColor(DemoGlobal.GetRandomColor());

            return(set1);
        }
Esempio n. 18
0
        public CandleStickArea(OxyAreaSettings settings, List <OxyArea> all_areas, OxyChartPainter owner) : base(settings, owner)
        {
            area_settings  = settings;
            this.all_areas = all_areas;

            date_time_axis_X.MinimumMargin = 25;
            date_time_axis_X.MaximumMargin = 25;

            var assembly = this.GetType().GetTypeInfo().Assembly;

            using (var stream = assembly.GetManifestResourceStream("OsEngine.Resources.OsEngine_logo_transpared.png"))
            {
                image = new OxyImage(stream);
            }

            plot_model.Annotations.Add(new ImageAnnotation
            {
                ImageSource         = image,
                Opacity             = 1,
                Interpolate         = false,
                X                   = new PlotLength(0.5, PlotLengthUnit.RelativeToPlotArea),
                Y                   = new PlotLength(0.5, PlotLengthUnit.RelativeToPlotArea),
                Width               = new PlotLength(0.5, PlotLengthUnit.RelativeToPlotArea),
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Middle,
                Layer               = AnnotationLayer.BelowSeries
            });

            candle_stick_seria = new CandleStickSeries()
            {
                IncreasingColor   = OxyColor.FromArgb(255, 55, 219, 186),
                DecreasingColor   = OxyColor.FromArgb(255, 235, 96, 47),
                EdgeRenderingMode = EdgeRenderingMode.PreferSpeed
            };

            plot_view.LayoutUpdated += Plot_view_LayoutUpdated;
            plot_view.MouseLeave    += Plot_view_main_chart_MouseLeave;
            plot_view.MouseMove     += Plot_view_main_chart_MouseMove;
            plot_view.MouseWheel    += Plot_view_main_chart_MouseWheel;

            plot_model.Updated   += Plot_model_Updated;
            plot_model.MouseDown += Plot_model_MouseDown;
            plot_model.MouseUp   += Plot_model_MouseUp;
        }
Esempio n. 19
0
        public static Example SmallDataSet()
        {
            var pm = new PlotModel {
                Title = "Small Data Set"
            };

            var timeSpanAxis1 = new DateTimeAxis {
                Position = AxisPosition.Bottom
            };

            pm.Axes.Add(timeSpanAxis1);
            var linearAxis1 = new LinearAxis {
                Position = AxisPosition.Left
            };

            pm.Axes.Add(linearAxis1);
            var n      = 100;
            var items  = HighLowItemGenerator.MRProcess(n).ToArray();
            var series = new CandleStickSeries
            {
                Color               = OxyColors.Black,
                IncreasingColor     = OxyColors.DarkGreen,
                DecreasingColor     = OxyColors.Red,
                DataFieldX          = "X",
                DataFieldHigh       = "High",
                DataFieldLow        = "Low",
                DataFieldOpen       = "Open",
                DataFieldClose      = "Close",
                TrackerFormatString =
                    "High: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}",
                ItemsSource = items
            };

            pm.Series.Add(series);

            timeSpanAxis1.AxisChanged += (sender, e) => AdjustYExtent(series, timeSpanAxis1, linearAxis1);

            var controller = new PlotController();

            controller.UnbindAll();
            controller.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
            return(new Example(pm, controller));
        }
Esempio n. 20
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;
        }
        public static PlotModel SimpleExample()
        {
            var startTimeValue = DateTimeAxis.ToDouble(new DateTime(2016, 1, 1));
            var pm             = new PlotModel {
                Title = "Simple CandleStickSeries example"
            };

            pm.Axes.Add(new DateTimeAxis {
                Position = AxisPosition.Bottom, Minimum = startTimeValue - 7, Maximum = startTimeValue + 7
            });
            pm.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left
            });
            var series = new CandleStickSeries();

            series.Items.Add(new HighLowItem(startTimeValue, 100, 80, 92, 94));
            series.Items.Add(new HighLowItem(startTimeValue + 1, 102, 77, 94, 93));
            pm.Series.Add(series);
            return(pm);
        }
Esempio n. 22
0
        /// <summary>
        /// Adjusts the Y extent.
        /// </summary>
        /// <param name="series">Series.</param>
        /// <param name="xaxis">Xaxis.</param>
        /// <param name="yaxis">Yaxis.</param>
        private static void AdjustYExtent(CandleStickSeries series, DateTimeAxis xaxis, LinearAxis yaxis)
        {
            var xmin = xaxis.ActualMinimum;
            var xmax = xaxis.ActualMaximum;

            var istart = series.FindByX(xmin);
            var iend   = series.FindByX(xmax, istart);

            var ymin = double.MaxValue;
            var ymax = double.MinValue;

            for (int i = istart; i <= iend; i++)
            {
                var bar = series.Items[i];
                ymin = Math.Min(ymin, bar.Low);
                ymax = Math.Max(ymax, bar.High);
            }

            var extent = ymax - ymin;
            var margin = extent * 0.10;

            yaxis.Zoom(ymin - margin, ymax + margin);
        }
Esempio n. 23
0
        public ChartWeather()
        {
            _model = new PlotModel();

            var magnitudeAxis = new LinearAxis()
            {
                Minimum = 0,
                Maximum = 40,
                Title   = "Temperature Cº",
                MajorGridlineThickness = 1,
                MajorGridlineStyle     = LineStyle.Solid,
                MajorGridlineColor     = OxyColor.Parse("#E9ECEF"),
                CropGridlines          = true,
                TickStyle = TickStyle.None,
            };

            _model.Axes.Add(magnitudeAxis);

            var dateAxis = new DateTimeAxis()
            {
                StringFormat   = "MMM dd",
                TickStyle      = TickStyle.None,
                MaximumPadding = 0.05,                // adds padding inside the view
                MinimumPadding = 0.05,
            };

            _model.Axes.Add(dateAxis);

            _serie_candle = new CandleStickSeries
            {
                IncreasingColor = OxyColors.BlueViolet,
                DecreasingColor = OxyColors.BlueViolet,
                CandleWidth     = 0.2,
            };

            _model.Series.Add(_serie_candle);
        }
Esempio n. 24
0
        private PlotModel CreateCandlePlotModel(UserData.Rootobject user, object item)
        {
            var model = new PlotModel();
            var s1    = new CandleStickSeries()
            {
                Color = OxyColors.Black,
            };

            UserData.Uservaluta userValuta = (UserData.Uservaluta)item;

            foreach (UserData.Usergraph userGraph in user.UserGraphs)
            {
                if (userGraph.Graph.Valuta.Id == userValuta.Valuta.Id)
                {
                    model.Title = userGraph.Graph.Name;
                    foreach (UserData.Graphdata graphPoint in userGraph.Graph.graphData)
                    {
                        s1.Items.Add(new HighLowItem(DateTimeAxis.ToDouble(UnixTimeStampToDateTime(graphPoint.TimeStamp)), graphPoint.High, graphPoint.Low, graphPoint.Open, graphPoint.Close));
                    }
                }
            }

            model.Series.Add(s1);
            model.Axes.Add(new LinearAxis()
            {
                MaximumPadding = 0.3, MinimumPadding = 0.3
            });
            model.Axes.Add(new DateTimeAxis
            {
                Position          = AxisPosition.Bottom,
                MinorIntervalType = DateTimeIntervalType.Hours,
                IntervalType      = DateTimeIntervalType.Hours,
                StringFormat      = "HH-dd"
            });

            return(model);
        }
Esempio n. 25
0
        public SymbolTabItem(Symbol symbol)
        {
            Symbol = symbol ?? throw new ArgumentNullException(nameof(symbol));

            Model = new PlotModel();

            XAxis = new DateTimeAxis
            {
                TextColor          = TextColor,
                StringFormat       = XAxisFormat,
                TicklineColor      = TickLineColor,
                AxislineColor      = AxisLineColor,
                AxislineStyle      = LineStyle.Solid,
                MajorGridlineColor = MajorGridLineColor,
                MajorGridlineStyle = LineStyle.Dash,
                MajorStep          = PeriodToX(TimeSpan.FromMinutes(10)),
                Position           = AxisPosition.Bottom,
                IsZoomEnabled      = false,
                MaximumRange       = PeriodToX(TimeSpan.FromHours(1.5)),

                //MinimumRange = PeriodToX(TimeSpan.FromHours(1))
            };

            Model.Axes.Add(XAxis);

            var yAxis = new LinearAxis
            {
                TextColor          = TextColor,
                TicklineColor      = TickLineColor,
                AxislineColor      = AxisLineColor,
                AxislineStyle      = LineStyle.Solid,
                MajorGridlineColor = MajorGridLineColor,
                MajorGridlineStyle = LineStyle.Dash,
                Position           = AxisPosition.Right
            };

            Model.Axes.Add(yAxis);

            Model.PlotAreaBorderThickness = new OxyThickness(thickness: 0);
            Model.PlotAreaBorderColor     = PlotAreaBorderColor;

            CandleStickSeries = new CandleStickSeries
            {
                IncreasingColor = IncreasingColor,
                DecreasingColor = DecreasingColor,
                ItemsSource     = Candles,
                CandleWidth     = PeriodToX(TimeSpan.FromMinutes(1))
            };

            XAxis.AxisChanged += (sender, args) => { AdjustYExtent(CandleStickSeries, XAxis, yAxis); };

            Model.Series.Add(CandleStickSeries);

            BidLineAnnotation = new LineAnnotation
            {
                StrokeThickness = 1,
                Color           = BidLineColor,
                Type            = LineAnnotationType.Horizontal,
                Text            = (0.0m).ToString(CultureInfo.InvariantCulture),
                //TextLinePosition = 1,
                TextColor = DecreasingColor,
                X         = 0,
                Y         = 0
            };

            Model.Annotations.Add(BidLineAnnotation);
        }
Esempio n. 26
0
        private PlotModel CreatePlotModel(OHLCResult result, string pair)
        {
            var tmpModel = new PlotModel {
                Title = "Chart", Subtitle = pair
            };
            //tmpModel.ZoomAllAxes(0);
            DateTimeAxis timeSPanAxis1 = new DateTimeAxis()
            {
                Position           = AxisPosition.Bottom,
                MinorIntervalType  = DateTimeIntervalType.Auto,
                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
                MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                TicklineColor      = OxyColor.FromRgb(82, 82, 82)
            };

            tmpModel.Axes.Add(timeSPanAxis1);

            LinearAxis YAxisRight = new LinearAxis()
            {
                Position           = AxisPosition.Right,
                Minimum            = GetMinValueY(result, pair),
                Maximum            = GetMaxValueY(result, pair),
                StartPosition      = 0,
                Selectable         = true,
                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
                MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                TicklineColor      = OxyColor.FromRgb(82, 82, 82)
            };
            LinearAxis XAxisBottom = new LinearAxis()
            {
                Position = AxisPosition.Bottom,

                StartPosition = 0,

                MajorGridlineStyle = LineStyle.Dot,
                MinorGridlineStyle = LineStyle.Dot,
                MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                TicklineColor      = OxyColor.FromRgb(82, 82, 82)
            };

            tmpModel.Axes.Add(YAxisRight);
            tmpModel.Axes.Add(XAxisBottom);

            CandleStickSeries candle = new CandleStickSeries()
            {
                Color               = OxyColors.Black,
                IncreasingColor     = OxyColor.FromRgb(0, 197, 49),
                DecreasingColor     = OxyColor.FromRgb(255, 95, 95),
                DataFieldX          = "Time",
                DataFieldHigh       = "H",
                DataFieldLow        = "L",
                DataFieldClose      = "C",
                DataFieldOpen       = "O",
                TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}",
            };

            var points = new LineSeries {
                Title = "Series 1", MarkerType = MarkerType.Circle
            };


            candle.AddToHighLowSeries(result.Pairs[pair]);
            //candle.Tag = result.Pairs[pair];

            // tmp.Series.Add(points);
            tmpModel.Series.Add(candle);

            return(tmpModel);
        }
Esempio n. 27
0
        private List <Hashtable> SeriesToHashtables(List <Series> listOfSeries)
        {
            List <Hashtable> hashtableList = new List <Hashtable>();

            foreach (Series series in listOfSeries)
            {
                List <object> dataList   = new List <object>();
                Hashtable     hashtable1 = new Hashtable();
                if (series is LineSeries)
                {
                    if (series.ToHashtable().ContainsKey((object)"data"))
                    {
                        Hashtable hashtable2 = series.ToHashtable();
                        hashtableList.Add(hashtable2);
                        continue;
                    }
                    LineSeries lineSeries = series as LineSeries;
                    lineSeries.Data.ForEach(
                        (Action <LineSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    lineSeries.Type = LineSeriesType.Line;
                    hashtable1      = lineSeries.ToHashtable();
                }
                if (series is SplineSeries)
                {
                    SplineSeries splineSeries = series as SplineSeries;
                    splineSeries.Data.ForEach((Action <SplineSeriesData>)(data =>
                                                                          dataList.Add((object)data.ToHashtable())));
                    splineSeries.Type = SplineSeriesType.Spline;
                    hashtable1        = splineSeries.ToHashtable();
                }
                if (series is AreaSeries)
                {
                    AreaSeries areaSeries = series as AreaSeries;
                    areaSeries.Data.ForEach(
                        (Action <AreaSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    areaSeries.Type = AreaSeriesType.Area;
                    hashtable1      = areaSeries.ToHashtable();
                }
                if (series is AreasplineSeries)
                {
                    AreasplineSeries areasplineSeries = series as AreasplineSeries;
                    areasplineSeries.Data.ForEach(
                        (Action <AreasplineSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    areasplineSeries.Type = AreasplineSeriesType.Areaspline;
                    hashtable1            = areasplineSeries.ToHashtable();
                }
                if (series is AreasplinerangeSeries)
                {
                    AreasplinerangeSeries areasplinerangeSeries = series as AreasplinerangeSeries;
                    areasplinerangeSeries.Data.ForEach(
                        (Action <AreasplinerangeSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    areasplinerangeSeries.Type = AreasplinerangeSeriesType.Areasplinerange;
                    hashtable1 = areasplinerangeSeries.ToHashtable();
                }
                if (series is ArearangeSeries)
                {
                    ArearangeSeries arearangeSeries = series as ArearangeSeries;
                    arearangeSeries.Data.ForEach(
                        (Action <ArearangeSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    arearangeSeries.Type = ArearangeSeriesType.Arearange;
                    hashtable1           = arearangeSeries.ToHashtable();
                }
                if (series is ColumnrangeSeries)
                {
                    ColumnrangeSeries columnrangeSeries = series as ColumnrangeSeries;
                    columnrangeSeries.Data.ForEach(
                        (Action <ColumnrangeSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    columnrangeSeries.Type = ColumnrangeSeriesType.Columnrange;
                    hashtable1             = columnrangeSeries.ToHashtable();
                }
                if (series is ColumnSeries)
                {
                    ColumnSeries columnSeries = series as ColumnSeries;
                    columnSeries.Data.ForEach((Action <ColumnSeriesData>)(data =>
                                                                          dataList.Add((object)data.ToHashtable())));
                    columnSeries.Type = ColumnSeriesType.Column;
                    hashtable1        = columnSeries.ToHashtable();
                }
                if (series is ScatterSeries)
                {
                    ScatterSeries scatterSeries = series as ScatterSeries;
                    scatterSeries.Data.ForEach(
                        (Action <ScatterSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    scatterSeries.Type = ScatterSeriesType.Scatter;
                    hashtable1         = scatterSeries.ToHashtable();
                }
                if (series is PolygonSeries)
                {
                    PolygonSeries polygonSeries = series as PolygonSeries;
                    polygonSeries.Data.ForEach(
                        (Action <PolygonSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    polygonSeries.Type = PolygonSeriesType.Polygon;
                    hashtable1         = polygonSeries.ToHashtable();
                }
                if (series is CandleStickSeries)
                {
                    CandleStickSeries candleStickSeries = series as CandleStickSeries;
                    candleStickSeries.Data.ForEach(
                        (Action <CandleStickSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    candleStickSeries.Type = CandleStickSeriesType.Candlestick;
                    hashtable1             = candleStickSeries.ToHashtable();
                }
                if (series is FlagsSeries)
                {
                    FlagsSeries flagsSeries = series as FlagsSeries;
                    flagsSeries.Data.ForEach((Action <FlagsSeriesData>)(data =>
                                                                        dataList.Add((object)data.ToHashtable())));
                    flagsSeries.Type = FlagsSeriesType.Flags;
                    hashtable1       = flagsSeries.ToHashtable();
                }
                if (series is OhlcSeries)
                {
                    OhlcSeries ohlcSeries = series as OhlcSeries;
                    ohlcSeries.Data.ForEach(
                        (Action <OhlcSeriesData>)(data => dataList.Add((object)data.ToHashtable())));
                    ohlcSeries.Type = OhlcSeriesType.Ohlc;
                    hashtable1      = ohlcSeries.ToHashtable();
                }
                hashtableList.Add(hashtable1);
            }
            return(hashtableList);
        }
Esempio n. 28
0
        //bool showXAxis = true, showYAxix = true, isZoomable = true, isMovable = true;
        //IPlotType chart;
        //public bool ShowXAxis
        //{
        //    get => showXAxis;
        //    set
        //    {
        //        if (showXAxis == value) return;
        //        showXAxis = value;
        //    }
        //}
        //public bool ShowYAxix
        //{
        //    get => showYAxix;
        //    set
        //    {
        //        if (showYAxix == value) return;
        //        showYAxix = value;
        //    }
        //}
        //public bool IsZoomable
        //{
        //    get => isZoomable;
        //    set
        //    {
        //        if (isZoomable == value) return;
        //        isZoomable = value;
        //    }
        //}
        //public bool IsMovable
        //{
        //    get => isMovable;
        //    set
        //    {
        //        if (isMovable == value) return;
        //        isMovable = value;
        //    }
        //}

        public async Task Add(PlotModel plotModel)
        {
            this.oxyplotModel       = new OxyPlot.PlotModel();
            this.oxyplotModel.Title = plotModel.Title;
            foreach (var chart in plotModel.Series)
            {
                if (chart is TwoColorArea) //it should be placed before Area if clause
                {
                    var twoColorAreaSeries = new TwoColorAreaSeries
                    {
                        Color  = ChartColor.CastToOxyColor(((TwoColorArea)chart).Color),
                        Color2 = ChartColor.CastToOxyColor(((TwoColorArea)chart).Color2),
                        Limit  = ((TwoColorArea)chart).Limit
                    };
                    foreach (var item in ((TwoColorArea)chart).Data)
                    {
                        twoColorAreaSeries.Points.Add(item);
                    }
                    this.oxyplotModel.Series.Add(twoColorAreaSeries);
                }
                else if (chart is Area)
                {
                    var areaSeries = new AreaSeries();
                    foreach (var point in ((Area)chart).Data)
                    {
                        areaSeries.Points.Add(point);
                    }
                    this.oxyplotModel.Series.Add(areaSeries);
                }
                else if (chart is TwoColorLine)//it should be placed before line if clause
                {
                    var twoColorLineSeries = new TwoColorLineSeries
                    {
                        Color  = ChartColor.CastToOxyColor(((TwoColorLine)chart).Color),
                        Color2 = ChartColor.CastToOxyColor(((TwoColorLine)chart).Color2),
                        Limit  = ((TwoColorLine)chart).Limit
                    };
                    foreach (var item in ((TwoColorLine)chart).Data)
                    {
                        twoColorLineSeries.Points.Add(item);
                    }
                    this.oxyplotModel.Series.Add(twoColorLineSeries);
                }
                else if (chart is Line)
                {
                    var lineSeries = new LineSeries
                    {
                        MarkerType   = MarkerType.Circle,
                        MarkerSize   = 4,
                        MarkerStroke = OxyColors.White
                    };

                    foreach (var point in ((Line)chart).Data)
                    {
                        lineSeries.Points.Add(point);
                    }
                    this.oxyplotModel.Series.Add(lineSeries);
                }
                else if (chart is Pie)
                {
                    var pieSeries = new PieSeries();
                    foreach (var slice in ((Pie)chart).Data)
                    {
                        pieSeries.Slices.Add(slice);
                    }
                    this.oxyplotModel.Series.Add(pieSeries);
                }
                else if (chart is Bar)
                {
                    var barSeries = new BarSeries();
                    foreach (var item in ((Bar)chart).Data)
                    {
                        barSeries.Items.Add(item);
                    }
                    this.oxyplotModel.Series.Add(barSeries);
                }
                else if (chart is ErrorColumn)
                {
                    var errorColumn = new ErrorColumnSeries();
                    foreach (ErrorColumnItem item in ((ErrorColumn)chart).Data)
                    {
                        errorColumn.Items.Add((OxyPlot.Series.ErrorColumnItem)item);
                    }
                    this.oxyplotModel.Series.Add(errorColumn);
                }
                else if (chart is Column)
                {
                    var barSeries = new ColumnSeries();
                    foreach (var item in ((Column)chart).Data)
                    {
                        barSeries.Items.Add(item);
                    }
                    this.oxyplotModel.Series.Add(barSeries);
                }
                else if (chart is Box)
                {
                    var boxSeries = new BoxPlotSeries();
                    foreach (var item in ((Box)chart).Data)
                    {
                        boxSeries.Items.Add(item);
                    }
                    this.oxyplotModel.Series.Add(boxSeries);
                }
                else if (chart is Contour)
                {
                    var contourSeries = new ContourSeries
                    {
                        Data = ((Contour)chart).Data,
                        ColumnCoordinates = ((Contour)chart).ColumnCoordinates,
                        RowCoordinates    = ((Contour)chart).RowCoordinates
                    };
                    this.oxyplotModel.Series.Add(contourSeries);
                }
                else if (chart is RectangleBar)
                {
                    var rectangleBarSeries = new RectangleBarSeries
                    {
                        Title = ((RectangleBar)chart).Title
                    };
                    foreach (var item in ((RectangleBar)chart).Data)
                    {
                        rectangleBarSeries.Items.Add(item);
                    }
                    this.oxyplotModel.Series.Add(rectangleBarSeries);
                }
                else if (chart is CandleStick)
                {
                    var candleStickSeries = new CandleStickSeries();
                    foreach (var item in ((CandleStick)chart).Data)
                    {
                        candleStickSeries.Items.Add(item);
                    }
                    this.oxyplotModel.Series.Add(candleStickSeries);
                }
                else if (chart is HeatMap)
                {
                    var heatMapSeries = new HeatMapSeries()
                    {
                        Data         = ((HeatMap)chart).Data,
                        X0           = ((HeatMap)chart).X0,
                        X1           = ((HeatMap)chart).X1,
                        Y0           = ((HeatMap)chart).Y0,
                        Y1           = ((HeatMap)chart).Y1,
                        Interpolate  = ((HeatMap)chart).Interpolate,
                        RenderMethod = ((HeatMap)chart).RenderMethod
                    };
                    this.oxyplotModel.Series.Add(heatMapSeries);
                }
                else if (chart is HighLow)
                {
                    var highLowSeries = new HighLowSeries();
                    foreach (var item in ((HighLow)chart).Data)
                    {
                        highLowSeries.Items.Add(item);
                    }
                    this.oxyplotModel.Series.Add(highLowSeries);
                }
                else if (chart is IntervalBar)
                {
                    var intervalBarSeries = new IntervalBarSeries();
                    foreach (var item in ((IntervalBar)chart).Data)
                    {
                        intervalBarSeries.Items.Add(item);
                    }
                    this.oxyplotModel.Series.Add(intervalBarSeries);
                }
                else if (chart is Scatter)
                {
                    var scatterSeries = new ScatterSeries();
                    foreach (var item in ((Scatter)chart).Data)
                    {
                        scatterSeries.Points.Add(item);
                    }
                    this.oxyplotModel.Series.Add(scatterSeries);
                }
            }
            foreach (var axis in plotModel.Axes)
            {
                this.oxyplotModel.Axes.Add(axis);
            }
        }
Esempio n. 29
0
        private void LoadChart(string symbol, CandleInterval interval)
        {
            CurrentLoadedSymbol = symbol;
            CurrentInterval     = interval;
            //client.SetApiCredentials("118180a6a91e29425c90c2e2afe349aa71", "e36a6307025c4b4fb1b20a4a00c4c9ef");
            client.SetApiCredentials(Key, Secret);


            //get min trade size
            var markets = client.GetSymbols();

            if (markets.Data != null)
            {
                var market = markets.Data.FirstOrDefault(l => l.Symbol == symbol);
                CurrentMinTradeSize = market.MinTradeSize;
            }


            //get high low data
            var summary = client.GetSymbolSummary(symbol);

            if (summary.Data != null)
            {
                CurrentPriceHigh = summary.Data.High;
                CurrentPriceLow  = summary.Data.Low;
            }

            //get balance for currency
            var balance = client.GetBalance(symbol.Substring(0, 3));

            if (balance.Data != null)
            {
                AccountBalance = balance.Data.Available.ToString() + " " + balance.Data.Currency;
            }

            //get order history
            var orderhistory = client.GetOrderBook(symbol);

            if (orderhistory.Data != null)
            {
                OrderBook = orderhistory.Data;
            }

            //get closed orders
            var d = client.GetClosedOrders(symbol);

            if (d.Data != null)
            {
                ClosedOrders = new ObservableCollection <BittrexOrderV3>(d.Data);
            }

            //get open orders
            var o = client.GetOpenOrders(symbol);

            if (o.Data != null)
            {
                OpenOrders = new ObservableCollection <BittrexOrderV3>(o.Data);
            }

            //var balance = client.GetBalance(CurrentLoadedSymbol);
            //if (balance.Data != null)
            //{
            //    AccountBalance = balance.Data.Total.ToString();
            //}
            //else
            //{
            //    AccountBalance = "0.00";
            //}

            string intervalstring = "";

            if (interval == CandleInterval.Day1)
            {
                intervalstring = "DAY_1";
            }
            else if (interval == CandleInterval.Hour1)
            {
                intervalstring = "HOUR_1";
            }
            else if (interval == CandleInterval.Minute1)
            {
                intervalstring = "MINUTE_1";
            }
            else if (interval == CandleInterval.Minutes5)
            {
                intervalstring = "MINUTE_5";
            }

            var coincandledatajson = CallRestMethod("https://api.bittrex.com/v3/markets/" + symbol + "/candles/" + intervalstring + "/recent");
            var coincandledata     = JsonConvert.DeserializeObject <CandleData[]>(coincandledatajson);

            coinsCb.SelectedItem = symbol; //defualt


            foreach (CandleData candle in coincandledata)
            {
                candle.Time = candle.StartsAt.DateTime;
            }

            if (plotmodel != null)
            {
                plotmodel.Series.Clear();
            }

            OxyPlot.PlotModel model = new OxyPlot.PlotModel();
            //x
            model.Axes.Add(new DateTimeAxis
            {
                //StringFormat = "hh:mm",
                Title             = "Time",
                AxislineColor     = OxyColors.White,
                TitleColor        = OxyColors.White,
                TicklineColor     = OxyColors.White,
                TextColor         = OxyColors.White,
                MinorIntervalType = DateTimeIntervalType.Auto,

                Position = AxisPosition.Bottom,
            });
            XAxis = model.Axes[0];

            //y
            model.Axes.Add(new LinearAxis()
            {
                Title = "Market Price",

                Position      = AxisPosition.Left,
                AxislineColor = OxyColors.White,
                TitleColor    = OxyColors.White,
                TicklineColor = OxyColors.White,
                TextColor     = OxyColors.White,
            });
            YAxis = model.Axes[1];


            //create plot model and add the line series
            CandleStickSeries data = new CandleStickSeries()
            {
                Title = symbol
            };

            data.DataFieldClose      = "Close";
            data.DataFieldHigh       = "High";
            data.DataFieldLow        = "Low";
            data.DataFieldOpen       = "Open";
            data.DataFieldX          = "Time";
            data.Color               = OxyColors.DarkGray;
            data.IncreasingColor     = OxyColors.Green;
            data.DecreasingColor     = OxyColors.Red;
            data.ItemsSource         = coincandledata;
            data.TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}";



            plotmodel = model;
            model.PlotAreaBorderColor = OxyColors.White;
            model.LegendTextColor     = OxyColors.YellowGreen;
            model.Series.Add(data);
            model.Background = OxyColors.Black;
            model.MouseUp   += Model_MouseUp;;
            model.MouseDown += Model_MouseDown;;

            plotview.Model = model;

            if (LimitLineSeries != null)
            {
                DrawLimitLine(OrderSide.Buy, LimitLineSeries);
            }
        }
Esempio n. 30
0
        public void PlotConvergencyCurve(double[] CurveAvg, double[] CurveErr)
        {
            //1. PlotModel data definition
            var PlotModel = new PlotModel();

            Axis Err = new LinearAxis()
            {
                Position      = AxisPosition.Left,
                Title         = "Error", AxisTitleDistance = 15,
                TitleFontSize = 18
            };
            Axis Step = new LinearAxis()
            {
                Position      = AxisPosition.Top,
                Title         = "Iteration Num.", AxisTitleDistance = 30,
                TitleFontSize = 18
            };

            PlotModel.Axes.Add(Err);
            PlotModel.Axes.Add(Step);

            //2. CurveAvg and CurveErr data Plot as Candlesticks
            var PlotData_CurveErr = new CandleStickSeries {
                CandleWidth = 0.85, Color = OxyColors.Red
            };

            double[] CurveErrNorm = new double[CurveErr.Length];
            int      CandleScale  = 1;

            for (int m = 0; m < CurveErr.Length; m++)
            {
                CurveErrNorm[m] = CurveErr[m];
            }
            while (Math.Abs(CurveErrNorm[CurveErrNorm.GetUpperBound(0) - 1] / CurveAvg[CurveErrNorm.GetUpperBound(0) - 1]) > 4)
            {
                for (int m = 0; m < CurveErrNorm.Length; m++)
                {
                    CurveErrNorm[m] *= 0.2;
                }
                CandleScale *= 5;
            }

            for (int i = 0; i < CurveAvg.Length; i++)
            {
                HighLowItem Candle     = new HighLowItem();
                double      CandleAvg  = CurveAvg[i];
                double      CandleStdD = CurveErrNorm[i];

                Candle.High  = CandleAvg + 3 * CandleStdD;
                Candle.Low   = CandleAvg - 3 * CandleStdD;
                Candle.Open  = CandleAvg + 1 * CandleStdD;
                Candle.Close = CandleAvg - 1 * CandleStdD;
                Candle.X     = i;

                PlotData_CurveErr.Items.Add(Candle);
            }
            PlotModel.Series.Add(PlotData_CurveErr);

            //3. PlotModel plot on PlotBoard
            this.PlotBoard.Model = PlotModel;
            PlotModel.Title      = "Convergency per Iteration - " + FitTypeString;
            PlotModel.Subtitle   = "CandleSticks Scale: 1 : " + CandleScale.ToString();
        }
Esempio n. 31
0
 public void AddSeries(CandleStickSeries s)
 {
     s.Color = colors[plot.Series.Count() % colors.Count()];
     plot.Series.Add(s);
     this.Root.Model = plot;
 }
Esempio n. 32
0
        private PlotModel plotModelCAndleDln(DadosEntrada Dados)
        {
            string mensagemErro = "";

            try
            {
                var candlePlot = new PlotModel {
                    Title = "Candle"
                };
                DateTime DataInicial = Program.objParametros.UltimaDataInicial;
                DateTime DataFinal   = Program.objParametros.UltimaDataFinal;

                // Create two axis
                candlePlot.Axes.Add(new DateTimeAxis {
                    Position = AxisPosition.Bottom, Minimum = DateTimeAxis.ToDouble(DataInicial), Maximum = DateTimeAxis.ToDouble(DataFinal), StringFormat = "d/M"
                });
                LinearAxis linearAxis1 = new LinearAxis()
                {
                    Position           = AxisPosition.Right,
                    MajorGridlineStyle = LineStyle.Dot,
                    MinorGridlineStyle = LineStyle.Dot,
                    MajorGridlineColor = OxyColor.FromRgb(44, 44, 44),
                    TicklineColor      = OxyColor.FromRgb(82, 82, 82)
                };
                candlePlot.Axes.Add(linearAxis1);


                Calculos calc = new Calculos();

                // Create the data collection
                var luminanceData = new Collection <LuminanceData>();


                for (DateTime data = DataInicial; data <= DataFinal; data = data.AddDays(1))
                {
                    Dados.Data = data;
                    EnviaMensagem("Calculating " + data.ToString("dd - MMM"));
                    double        maxValue = double.MinValue, minValue = double.MaxValue;
                    LuminanceData luminance = new LuminanceData();
                    for (int hour = Program.objParametros.StartTime; hour <= Program.objParametros.EndTime; hour++)
                    {
                        Dados.horas = hour;
                        calc.Calcula(Dados, hour);
                        maxValue = Math.Max(maxValue, calc.Resultados.TotalLightCC);
                        minValue = Math.Min(minValue, calc.Resultados.TotalLightCE);
                    }
                    luminance.Data  = data;
                    luminance.Open  = 1.3 * minValue;
                    luminance.Close = 0.7 * maxValue;
                    luminance.High  = maxValue;
                    luminance.Low   = minValue;
                    luminanceData.Add(luminance);
                }


                //string xx= lineSeriesCC.TrackerFormatString;
                //{ 0}
                //{ 1}: { 2}
                //{ 3}: { 4}

                var candleSerie = new CandleStickSeries()
                {
                    Title               = "Day Light",
                    Color               = OxyColors.Black,
                    IncreasingColor     = OxyColor.FromRgb(0, 197, 49),
                    DecreasingColor     = OxyColor.FromRgb(255, 95, 95),
                    DataFieldX          = "Data",
                    DataFieldHigh       = "High",
                    DataFieldLow        = "Low",
                    DataFieldClose      = "Close",
                    DataFieldOpen       = "Open",
                    TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}",
                    ItemsSource         = luminanceData
                };
                candlePlot.Series.Add(candleSerie);

                return(candlePlot);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(null);
            }
        }
Esempio n. 33
0
        private void CandleSticks_Click(object sender, RoutedEventArgs e)
        {
            List<CandleStickSeries> all = new List<CandleStickSeries>();
            TimeSeries open, close, high, low;
            foreach (var a in InspectionSymbols) {
                this.data.GetOpenCloseHighLow(a, startDate_dt, endDate_dt, out open, out close, out high, out low);

                CandleStickSeries css = new CandleStickSeries() { StrokeThickness = .5,
                    Title = "Candle sticks" };
                css.Items.Clear();
                for (int i = 0; i < open.Count(); i++) {
                    css.Items.Add(
                        new HighLowItem() {
                            Open = open.GetRange()[i],
                            Close = close.GetRange()[i],
                            High = high.GetRange()[i],
                            Low = low.GetRange()[i],
                            X = open.GetDomain()[i]
                        }
                        );
                }

                all.Add(css);
            }
                this.addChart(all.Graph(
                    new DateTimeAxis() { Title = "Date" },
                    new LinearAxis() { Title = "Close" }), "Close");
        }
        public SymbolTabItem(Symbol symbol)
        {
            Symbol = symbol ?? throw new ArgumentNullException(nameof(symbol));

            Model = new PlotModel();

            XAxis = new DateTimeAxis
            {
                TextColor          = TextColor,
                StringFormat       = XAxisFormat,
                TicklineColor      = TickLineColor,
                AxislineColor      = AxisLineColor,
                AxislineStyle      = LineStyle.Solid,
                MajorGridlineColor = MajorGridLineColor,
                MajorGridlineStyle = LineStyle.Dash,
                MajorStep          = PeriodToX(TimeSpan.FromMinutes(10)),
                Position           = AxisPosition.Bottom,
                IsZoomEnabled      = false,
                MaximumRange       = PeriodToX(TimeSpan.FromHours(1.5)),
                MinimumRange       = PeriodToX(TimeSpan.FromHours(1))
            };

            Model.Axes.Add(XAxis);

            var yAxis = new LinearAxis
            {
                TextColor          = TextColor,
                TicklineColor      = TickLineColor,
                AxislineColor      = AxisLineColor,
                AxislineStyle      = LineStyle.Solid,
                MajorGridlineColor = MajorGridLineColor,
                MajorGridlineStyle = LineStyle.Dash,
                Position           = AxisPosition.Right
            };

            Model.Axes.Add(yAxis);

            Model.PlotAreaBorderThickness = new OxyThickness(thickness: 0);
            Model.PlotAreaBorderColor     = PlotAreaBorderColor;

            CandleStickSeries = new CandleStickSeries
            {
                IncreasingColor = IncreasingColor,
                DecreasingColor = DecreasingColor,
                ItemsSource     = Candles,
                CandleWidth     = PeriodToX(TimeSpan.FromMinutes(1))
            };

            XAxis.AxisChanged += (sender, args) => { AdjustYExtent(CandleStickSeries, XAxis, yAxis); };

            Model.Series.Add(CandleStickSeries);

            BidLineAnnotation = new LineAnnotation
            {
                StrokeThickness  = 1,
                Color            = BidLineColor,
                Type             = LineAnnotationType.Horizontal,
                Text             = 0.0m.ToString(CultureInfo.InvariantCulture),
                TextLinePosition = 1,
                TextColor        = BidLineColor,
                X = 0,
                Y = 0
            };

            AskLineAnnotation = new LineAnnotation
            {
                StrokeThickness       = 1,
                Color                 = AskLineColor,
                Type                  = LineAnnotationType.Horizontal,
                Text                  = 0.0m.ToString(CultureInfo.InvariantCulture),
                TextLinePosition      = 1,
                TextVerticalAlignment = OxyPlot.VerticalAlignment.Bottom,
                TextColor             = AskLineColor,
                X = 0,
                Y = 0
            };

            Model.Annotations.Add(BidLineAnnotation);
            Model.Annotations.Add(AskLineAnnotation);
            Model.Updated += async(sender, args) =>
            {
                await Application.Current.Dispatcher.InvokeAsync(() =>
                {
                    if (Model.PlotView != null)
                    {
                        Model.PlotView?.ActualController.Unbind(PlotCommands.ZoomRectangle);
                    }
                }, DispatcherPriority.Background);
            };
        }
        void LoadPlot()
        {
            PlotModel plot = new PlotModel()
            {
                LegendSymbolLength = 24.0,
                LegendOrientation = LegendOrientation.Horizontal,
                LegendPlacement = LegendPlacement.Inside,
                LegendPosition = LegendPosition.TopCenter,
                LegendBackground = OxyColor.FromAColor(200, OxyColors.White),
                LegendBorder = OxyColors.Black
            };

            var x_axis = new OxyPlot.Axes.DateTimeAxis { Position = OxyPlot.Axes.AxisPosition.Bottom, MajorStep=50, Title = "Date", StringFormat = "yyyyMMdd", MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot };
            x_axis.TextColor = OxyColors.White; x_axis.TitleColor = OxyColors.White;
            plot.Axes.Add(x_axis);
            var y_axis = new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Left, Title = "Price", MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot };
            y_axis.TextColor = OxyColors.White; y_axis.TitleColor = OxyColors.White;
            plot.Axes.Add(y_axis);

            try
            {
                CharacterVector symbol = _engine.CreateCharacterVector(new[] {_symbol});
                CharacterVector from = _engine.CreateCharacterVector(new[] {_fromdate});
                CharacterVector to = _engine.CreateCharacterVector(new[] {_todate});
                _engine.SetSymbol("symbol",symbol);
                _engine.SetSymbol("from",from);
                _engine.SetSymbol("to", to);
                _engine.Evaluate("getSymbols(symbol, from=from, to=to)");

                NumericMatrix bars = _engine.GetSymbol(_symbol).AsNumericMatrix();
                // 1970-01-01 = 0
                DateTime rootdate = new DateTime(1970, 1, 1);
                IntegerVector dates = _engine.Evaluate("index(" + _symbol + ")").AsInteger();

                CandleStickSeries candleStickSeries = new CandleStickSeries
                {
                    Title = _symbol,
                    CandleWidth = 5,
                    Color = OxyColors.DarkGray,
                    IncreasingFill = OxyColors.DarkGreen,
                    DecreasingFill = OxyColors.Red,
                    TrackerFormatString = "Date: {1:yyyyMMdd}\nHigh: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}"
                };

                // add to bars
                for (int i = 0; i < dates.Count(); i++)
                {
                    DateTime d = rootdate.AddDays(dates[i]);
                    int dint = TradingBase.Util.ToIntDate(d);
                    candleStickSeries.Items.Add(new HighLowItem(OxyPlot.Axes.DateTimeAxis.ToDouble(d), bars[i, 1], bars[i, 2], bars[i, 0], bars[i, 3]));
                }

                plot.Series.Add(candleStickSeries);
                MyPlot = plot;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        /// <summary>
        /// Adjusts the Y extent.
        /// </summary>
        /// <param name="series">Series.</param>
        /// <param name="xaxis">Xaxis.</param>
        /// <param name="yaxis">Yaxis.</param>
        private static void AdjustYExtent(CandleStickSeries series, DateTimeAxis xaxis, LinearAxis yaxis)
        {
            var xmin = xaxis.ActualMinimum;
            var xmax = xaxis.ActualMaximum;

            var istart = series.FindByX(xmin);
            var iend = series.FindByX(xmax, istart);

            var ymin = double.MaxValue;
            var ymax = double.MinValue;
            for (int i = istart; i <= iend; i++)
            {
                var bar = series.Items[i];
                ymin = Math.Min(ymin, bar.Low);
                ymax = Math.Max(ymax, bar.High);
            }

            var extent = ymax - ymin;
            var margin = extent * 0.10;

            yaxis.Zoom(ymin - margin, ymax + margin);
        }
        public static Example SmallDataSet()
        {
            var pm = new PlotModel { Title = "Small Data Set" };

            var timeSpanAxis1 = new DateTimeAxis { Position = AxisPosition.Bottom };
            pm.Axes.Add(timeSpanAxis1);
            var linearAxis1 = new LinearAxis { Position = AxisPosition.Left };
            pm.Axes.Add(linearAxis1);
            var n = 100;
            var items = HighLowItemGenerator.MRProcess(n).ToArray();
            var series = new CandleStickSeries
                             {
                                 Color = OxyColors.Black,
                                 IncreasingColor = OxyColors.DarkGreen,
                                 DecreasingColor = OxyColors.Red,
                                 DataFieldX = "X",
                                 DataFieldHigh = "High",
                                 DataFieldLow = "Low",
                                 DataFieldOpen = "Open",
                                 DataFieldClose = "Close",
                                 TrackerFormatString =
                                     "High: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}",
                                 ItemsSource = items
                             };

            pm.Series.Add(series);

            timeSpanAxis1.AxisChanged += (sender, e) => AdjustYExtent(series, timeSpanAxis1, linearAxis1);

            var controller = new PlotController();
            controller.UnbindAll();
            controller.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
            return new Example(pm, controller);
        }
 public static PlotModel SimpleExample()
 {
     var startTimeValue = DateTimeAxis.ToDouble(new DateTime(2016, 1, 1));
     var pm = new PlotModel { Title = "Simple CandleStickSeries example" };
     pm.Axes.Add(new DateTimeAxis { Position = AxisPosition.Bottom, Minimum = startTimeValue - 7, Maximum = startTimeValue + 7 });
     pm.Axes.Add(new LinearAxis { Position = AxisPosition.Left });
     var series = new CandleStickSeries();
     series.Items.Add(new HighLowItem(startTimeValue, 100, 80, 92, 94));
     series.Items.Add(new HighLowItem(startTimeValue + 1, 102, 77, 94, 93));
     pm.Series.Add(series);
     return pm;
 }
        public static PlotView GetPlotView(CandleTimeSeriesPlotInfo info
                                           , Action <object, AxisChangedEventArgs> onAxisChangedMethod = null)
        {
            List <HighLowItem> items = info.Series.Candles
                                       .OrderBy(candle => candle.Start)
                                       .Select(candle => new HighLowItem()
            {
                X     = DateTimeAxis.ToDouble(candle.Start),
                Open  = candle.Open,
                Close = candle.Close,
                High  = candle.Max,
                Low   = candle.Min,
            })
                                       .ToList();
            CandleStickSeries series = new CandleStickSeries
            {
                RenderInLegend = true,
                Title          = info.Title,
                Background     = OxyColor.FromArgb(
                    info.BackgroundColor.A,
                    info.BackgroundColor.R,
                    info.BackgroundColor.G,
                    info.BackgroundColor.B),
                //CandleWidth = info.CandleWidth,
                IsVisible       = true,
                DecreasingColor = OxyColor.FromArgb(
                    info.DecreasingColor.A,
                    info.DecreasingColor.R,
                    info.DecreasingColor.G,
                    info.DecreasingColor.B),
                IncreasingColor = OxyColor.FromArgb(
                    info.IncreasingColor.A,
                    info.IncreasingColor.R,
                    info.IncreasingColor.G,
                    info.IncreasingColor.B),
                Color = OxyColor.FromArgb(
                    info.BackgroundColor.A,
                    info.BackgroundColor.R,
                    info.BackgroundColor.G,
                    info.BackgroundColor.B),
                ItemsSource = items,
                //Hollow = info.PositiveCandlesHollow,
            };

            PlotModel model = new PlotModel();

            model.Axes.Clear();
            DateTimeAxis timeAxis = new DateTimeAxis();

            if (onAxisChangedMethod != null)
            {
                timeAxis.AxisChanged += onAxisChangedMethod.Invoke;
            }
            model.Axes.Add(timeAxis);
            model.Series.Clear();
            model.Series.Add(series);
            PlotView view = new PlotView
            {
                Model = model,
                Dock  = DockStyle.Fill,
            };

            return(view);
        }
        private void SetPlotModel()
        {
            if (oxyMainPlot.Model != null)
                oxyMainPlot.Model = null;
            PlotModel l_PlotModel = new PlotModel("Remote CTrader chart");
            l_PlotModel.PlotAreaBorderColor = OxyColor.FromRgb(0, 0, 0);

            CandleStickSeries l_CandleSticks = new CandleStickSeries();
            l_CandleSticks.DataFieldClose = "Close";
            l_CandleSticks.DataFieldOpen = "Open";
            l_CandleSticks.DataFieldHigh = "Max";
            l_CandleSticks.DataFieldLow = "Min";
            l_CandleSticks.DataFieldX = "Time";

            l_CandleSticks.CandleWidth = 5;

            l_CandleSticks.Background = OxyColor.FromRgb(0, 0, 0);

            if (m_SelectedRobot > 0)
            {
                m_MarketData = m_PipeProxy.GetMarketDataByLength(m_SelectedRobot, 100);
                m_AdditionalData = m_PipeProxy.GetAdditionalData(m_SelectedRobot);
            }
            l_CandleSticks.ItemsSource = m_MarketData;
            l_PlotModel.Series.Add(l_CandleSticks);

            #region Bottom Axis setup
            DateTimeAxis l_BottomAxis = new DateTimeAxis();
            l_BottomAxis.StringFormat = "yy-MM-dd hh:mm";
            l_BottomAxis.IntervalType = DateTimeIntervalType.Auto;
            l_BottomAxis.FontSize = 8;
            l_PlotModel.Axes.Add(l_BottomAxis);
            l_BottomAxis.AxisChanged += l_BottomAxis_AxisChanged;
            #endregion

            #region Side Axis setup
            LinearAxis l_SideAxis = new LinearAxis();
            l_PlotModel.Axes.Add(l_SideAxis);
            l_SideAxis.AxisChanged += l_SideAxis_AxisChanged;
            #endregion

            #region Initialize top line
            m_TopLine = new LineAnnotation();
            m_TopLine.Color = OxyColor.FromRgb(125, 230, 125);
            m_TopLine.LineStyle = LineStyle.Solid;
            m_TopLine.StrokeThickness = 3;
            m_TopLine.Type = LineAnnotationType.Horizontal;
            m_TopLine.Selectable = true;
            m_TopLine.TextColor = m_TopLine.Color;
            m_TopLine.Y = m_MarketData.Last().Close;
            m_TopLine.Text = m_TopLine.Y.ToString("N4");

            l_PlotModel.Annotations.Add(m_TopLine);
            #endregion

            #region Initialize bottom line
            m_BottomLine = new LineAnnotation();
            m_BottomLine.Color = OxyColor.FromRgb(230, 125, 125);
            m_BottomLine.LineStyle = LineStyle.Solid;
            m_BottomLine.StrokeThickness = 3;
            m_BottomLine.Type = LineAnnotationType.Horizontal;
            m_BottomLine.Selectable = true;
            m_BottomLine.Y = m_MarketData.Last().Close;
            m_BottomLine.TextColor = m_BottomLine.Color;
            m_BottomLine.Text = m_BottomLine.Y.ToString("N4");
            l_PlotModel.Annotations.Add(m_BottomLine);
            #endregion

            #region Initialize pending order line
            m_PendingLine = new LineAnnotation();
            m_PendingLine.Color = OxyColor.FromRgb(125, 125, 230);
            m_PendingLine.LineStyle = LineStyle.Solid;
            m_PendingLine.StrokeThickness = 3;
            m_PendingLine.Type = LineAnnotationType.Horizontal;
            m_PendingLine.Selectable = true;
            m_PendingLine.Y = m_MarketData.Last().Close;
            m_PendingLine.TextColor = m_PendingLine.Color;
            m_PendingLine.Text = m_PendingLine.Y.ToString("N4");
            if(chbPEnabled.IsEnabled)
                l_PlotModel.Annotations.Add(m_PendingLine);
            #endregion

            oxyMainPlot.Model = l_PlotModel;
            l_PlotModel.Updated += l_PlotModel_Updated;
        }
Esempio n. 41
0
        void LoadPlot()
        {
            PlotModel plot = new PlotModel()
            {
                LegendSymbolLength = 24.0,
                LegendOrientation  = LegendOrientation.Horizontal,
                LegendPlacement    = LegendPlacement.Inside,
                LegendPosition     = LegendPosition.TopCenter,
                LegendBackground   = OxyColor.FromAColor(200, OxyColors.White),
                LegendBorder       = OxyColors.Black
            };

            var x_axis = new OxyPlot.Axes.DateTimeAxis {
                Position = OxyPlot.Axes.AxisPosition.Bottom, MajorStep = 50, Title = "Date", StringFormat = "yyyyMMdd", MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot
            };

            x_axis.TextColor = OxyColors.White; x_axis.TitleColor = OxyColors.White;
            plot.Axes.Add(x_axis);
            var y_axis = new OxyPlot.Axes.LinearAxis {
                Position = OxyPlot.Axes.AxisPosition.Left, Title = "Price", MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot
            };

            y_axis.TextColor = OxyColors.White; y_axis.TitleColor = OxyColors.White;
            plot.Axes.Add(y_axis);

            try
            {
                CharacterVector symbol = _engine.CreateCharacterVector(new[] { _symbol });
                CharacterVector from   = _engine.CreateCharacterVector(new[] { _fromdate });
                CharacterVector to     = _engine.CreateCharacterVector(new[] { _todate });
                _engine.SetSymbol("symbol", symbol);
                _engine.SetSymbol("from", from);
                _engine.SetSymbol("to", to);
                _engine.Evaluate("getSymbols(symbol, from=from, to=to)");

                NumericMatrix bars = _engine.GetSymbol(_symbol).AsNumericMatrix();
                // 1970-01-01 = 0
                DateTime      rootdate = new DateTime(1970, 1, 1);
                IntegerVector dates    = _engine.Evaluate("index(" + _symbol + ")").AsInteger();

                CandleStickSeries candleStickSeries = new CandleStickSeries
                {
                    Title               = _symbol,
                    CandleWidth         = 5,
                    Color               = OxyColors.DarkGray,
                    IncreasingFill      = OxyColors.DarkGreen,
                    DecreasingFill      = OxyColors.Red,
                    TrackerFormatString = "Date: {1:yyyyMMdd}\nHigh: {2:0.00}\nLow: {3:0.00}\nOpen: {4:0.00}\nClose: {5:0.00}"
                };

                // add to bars
                for (int i = 0; i < dates.Count(); i++)
                {
                    DateTime d    = rootdate.AddDays(dates[i]);
                    int      dint = TradingBase.Util.ToIntDate(d);
                    candleStickSeries.Items.Add(new HighLowItem(OxyPlot.Axes.DateTimeAxis.ToDouble(d), bars[i, 1], bars[i, 2], bars[i, 0], bars[i, 3]));
                }

                plot.Series.Add(candleStickSeries);
                MyPlot = plot;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }