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); }
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; }
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); }
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); }
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)); }
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); }
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)); }
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); }
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); }
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); }
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; }
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 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); }
/// <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 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); }
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); }
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); }
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); }
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); }
//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); } }
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); } }
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(); }
public void AddSeries(CandleStickSeries s) { s.Color = colors[plot.Series.Count() % colors.Count()]; plot.Series.Add(s); this.Root.Model = plot; }
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); } }
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); } }
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; }
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); } }