public string CreateSeries(string areaName, IndicatorChartPaintType indicatorType, string seria_name) { if (series.Exists(x => (string)x.SeriaName == seria_name)) { return(seria_name); } var new_seria = new IndicatorSeria() { AreaName = areaName, IndicatorType = indicatorType, SeriaName = seria_name, BotTab = this.bot_tab }; if (!series.Contains(new_seria)) { series.Add(new IndicatorSeria() { AreaName = areaName, IndicatorType = indicatorType, SeriaName = seria_name, BotTab = this.bot_tab }); } return(seria_name); }
public virtual void BuildIndicatorSeries(IndicatorSeria indi_seria, List <decimal> data_points, TimeSpan time_frame_span) { }
public void RePaintIndicator(IIndicator indicatorCandle) { if (isPaint == false || can_draw == false) { return; } if (indicatorCandle == null) { return; } if (indicatorCandle.NameSeries != null) { if (!indicatorCandle.PaintOn) { return; } if (!all_areas.Exists(x => (string)x.Tag == indicatorCandle.NameArea) && indicatorCandle.NameArea != "Prime") { var indicator_chart = new IndicatorArea(new OxyAreaSettings() { cursor_X_is_active = true, cursor_Y_is_active = true, Tag = indicatorCandle.NameArea, AbsoluteMinimum = double.MinValue, Y_Axies_is_visible = true, X_Axies_is_visible = true, brush_background = "#111721" }, all_areas, indicatorCandle.NameArea, this); indicator_chart.indicator_name = indicatorCandle.NameArea.Replace("Area", ";").Split(';')[0]; indicator_chart.bot_tab = this.bot_tab; indicator_chart.bot_name = this.bot_name; indicator_chart.plot_model.Axes[0].TextColor = OxyColors.Transparent; indicator_chart.plot_model.Axes[0].TicklineColor = OxyColors.Transparent; indicator_chart.plot_model.Axes[0].AxisDistance = -50; indicator_chart.plot_model.Axes[1].IntervalLength = 10; indicator_chart.plot_model.Axes[1].MinorGridlineStyle = LineStyle.None; indicator_chart.plot_model.PlotMargins = new OxyThickness(0, indicator_chart.plot_model.PlotMargins.Top, indicator_chart.plot_model.PlotMargins.Right, indicator_chart.plot_model.PlotMargins.Bottom); indicator_chart.plot_model.Padding = new OxyThickness(0, 0, indicator_chart.plot_model.Padding.Right, 0); indicator_chart.plot_model.PlotMargins = new OxyThickness(0, 0, indicator_chart.plot_model.PlotMargins.Right, 0); indicator_chart.plot_view.Padding = new System.Windows.Thickness(0, 0, indicator_chart.plot_view.Padding.Right, 0); indicator_chart.plot_view.Margin = new System.Windows.Thickness(0, 0, indicator_chart.plot_view.Margin.Right, 0); all_areas.Add(indicator_chart); mediator.AddOxyArea(indicator_chart); } if (!series.Exists(x => x.SeriaName == indicatorCandle.NameSeries && x.AreaName == indicatorCandle.NameArea)) { var indi_area = all_areas.FindLast(x => (string)x.Tag == indicatorCandle.NameArea); if (indi_area == null) { return; } if (!indicatorCandle.NameSeries.StartsWith(this.bot_name)) { return; } var new_seria = new IndicatorSeria() { AreaName = indicatorCandle.NameArea, IndicatorType = indicatorCandle.TypeIndicator, SeriaName = indicatorCandle.NameSeries, BotTab = this.bot_tab }; if (!series.Contains(new_seria)) { series.Add(new IndicatorSeria() { AreaName = indicatorCandle.NameArea, IndicatorType = indicatorCandle.TypeIndicator, SeriaName = indicatorCandle.NameSeries, BotTab = this.bot_tab }); } } } else { foreach (var ser_name in ((Aindicator)indicatorCandle).DataSeries) { if (!ser_name.IsPaint) { continue; } string seria_name = ser_name.NameSeries; if (!all_areas.Exists(x => (string)x.Tag == indicatorCandle.NameArea) && indicatorCandle.NameArea != "Prime") { var indicator_chart = new IndicatorArea(new OxyAreaSettings() { cursor_X_is_active = true, cursor_Y_is_active = true, Tag = indicatorCandle.NameArea, AbsoluteMinimum = double.MinValue, Y_Axies_is_visible = true, X_Axies_is_visible = true, brush_background = "#111721" }, all_areas, indicatorCandle.NameArea, this); indicator_chart.indicator_name = indicatorCandle.NameArea.Replace("Area", ";").Split(';')[0]; indicator_chart.bot_tab = this.bot_tab; indicator_chart.bot_name = this.bot_name; indicator_chart.plot_model.Axes[0].TextColor = OxyColors.Transparent; indicator_chart.plot_model.Axes[0].TicklineColor = OxyColors.Transparent; indicator_chart.plot_model.Axes[0].AxisDistance = -50; indicator_chart.plot_model.Axes[1].IntervalLength = 10; indicator_chart.plot_model.Axes[1].MinorGridlineStyle = LineStyle.None; indicator_chart.plot_model.PlotMargins = new OxyThickness(0, indicator_chart.plot_model.PlotMargins.Top, indicator_chart.plot_model.PlotMargins.Right, indicator_chart.plot_model.PlotMargins.Bottom); indicator_chart.plot_model.Padding = new OxyThickness(0, 0, indicator_chart.plot_model.Padding.Right, 0); indicator_chart.plot_model.PlotMargins = new OxyThickness(0, 0, indicator_chart.plot_model.PlotMargins.Right, 0); indicator_chart.plot_view.Padding = new System.Windows.Thickness(0, 0, indicator_chart.plot_view.Padding.Right, 0); indicator_chart.plot_view.Margin = new System.Windows.Thickness(0, 0, indicator_chart.plot_view.Margin.Right, 0); all_areas.Add(indicator_chart); mediator.AddOxyArea(indicator_chart); } if (!series.Exists(x => x.SeriaName == seria_name && x.AreaName == indicatorCandle.NameArea)) { var indi_area = all_areas.FindLast(x => (string)x.Tag == indicatorCandle.NameArea); if (indi_area == null) { return; } if (!seria_name.StartsWith(this.bot_name)) { return; } var new_seria = new IndicatorSeria() { AreaName = indicatorCandle.NameArea, IndicatorType = indicatorCandle.TypeIndicator, SeriaName = seria_name, BotTab = this.bot_tab }; if (!series.Contains(new_seria)) { series.Add(new IndicatorSeria() { AreaName = indicatorCandle.NameArea, IndicatorType = indicatorCandle.TypeIndicator, SeriaName = seria_name, BotTab = this.bot_tab }); } } } } if (main_grid_chart != null) { main_grid_chart.Children.Clear(); main_grid_chart.RowDefinitions.Clear(); MakeChart(main_grid_chart); } }
public override void BuildIndicatorSeries(IndicatorSeria indi_seria, List <decimal> data_points, TimeSpan time_frame_span) { var time_step_double = 1 / (1000 * 60 * 60 * 24 / time_frame_span.TotalMilliseconds); indi_seria.DataPoints = data_points; if (indi_seria.DataPoints == null || indi_seria.DataPoints.Count == 0) { return; } if (plot_view == null || plot_model == null) { return; } var main_chart = (CandleStickArea)all_areas.Find(x => x is CandleStickArea); lock (series_locker) { if (main_chart != null && (main_chart.axis_Y_type == "linear" || (string)Tag != "Prime")) { if (indi_seria.IndicatorType == IndicatorChartPaintType.Column) { if (indi_seria.DataPoints.Count == indi_seria.IndicatorPoints.Count) { double last_point = (double)indi_seria.DataPoints.Last(); if (last_point == 0) { last_point = double.NaN; } indi_seria.IndicatorHistogramPoints[indi_seria.IndicatorHistogramPoints.Count - 1] = new DataPoint(items_oxy_candles.Last().X, last_point); } else if (indi_seria.DataPoints.Count == indi_seria.IndicatorPoints.Count + 1) { double last_point = (double)indi_seria.DataPoints.Last(); if (last_point == 0) { last_point = double.NaN; } indi_seria.IndicatorHistogramPoints.Add(new DataPoint(items_oxy_candles.Last().X, last_point)); } else { indi_seria.IndicatorHistogramPoints.Clear(); List <DataPoint> points = new List <DataPoint>(); for (int i = 0; i < indi_seria.DataPoints.Count; i++) { double last_point = (double)indi_seria.DataPoints[i]; if (last_point == 0) { last_point = double.NaN; } try { points.Add(new DataPoint(items_oxy_candles[i].X, last_point)); } catch { return; } } indi_seria.IndicatorHistogramPoints = points.ToList(); } LinearBarSeries linear_bar_seria = new LinearBarSeries() { StrokeThickness = 1, StrokeColor = OxyColor.FromArgb(255, 55, 219, 186), FillColor = OxyColor.FromArgb(69, 55, 219, 186), NegativeFillColor = OxyColor.FromArgb(69, 235, 96, 47), NegativeStrokeColor = OxyColor.FromArgb(255, 235, 96, 47), Tag = indi_seria.SeriaName }; linear_bar_seria.Points.AddRange(indi_seria.IndicatorHistogramPoints); if (linear_bar_series_list.Exists(x => (string)x.Tag == indi_seria.SeriaName)) { linear_bar_series_list.Remove(linear_bar_series_list.Find(x => (string)x.Tag == indi_seria.SeriaName)); } linear_bar_series_list.Add(linear_bar_seria); } if (indi_seria.IndicatorType == IndicatorChartPaintType.Line) { if (indi_seria.DataPoints.Count == indi_seria.IndicatorPoints.Count) { double last_point = (double)indi_seria.DataPoints.Last(); if (last_point == 0) { last_point = double.NaN; } indi_seria.IndicatorPoints[indi_seria.IndicatorPoints.Count - 1] = new DataPoint(items_oxy_candles.Last().X, last_point); indi_seria.IndicatorPoints[indi_seria.IndicatorPoints.Count - 1] = new DataPoint(items_oxy_candles.Last().X, last_point); } else if (indi_seria.DataPoints.Count == indi_seria.IndicatorPoints.Count + 1) { double last_point = (double)indi_seria.DataPoints.Last(); if (last_point == 0) { last_point = double.NaN; } indi_seria.IndicatorPoints.Add(new DataPoint(items_oxy_candles.Last().X, last_point)); } else { indi_seria.IndicatorPoints.Clear(); List <DataPoint> points = new List <DataPoint>(); for (int i = 0; i < indi_seria.DataPoints.Count; i++) { double last_point = (double)indi_seria.DataPoints[i]; if (last_point == 0) { last_point = double.NaN; } try { points.Add(new DataPoint(items_oxy_candles[i].X, last_point)); } catch { return; } } ; indi_seria.IndicatorPoints = points; } LineSeries line_seria = new LineSeries() { StrokeThickness = 1, LineStyle = LineStyle.Solid, Color = indi_seria.OxyColor, Tag = indi_seria.SeriaName }; line_seria.Points.AddRange(indi_seria.IndicatorPoints); if (lines_series_list.Exists(x => (string)x.Tag == indi_seria.SeriaName)) { lines_series_list.Remove(lines_series_list.Find(x => (string)x.Tag == indi_seria.SeriaName)); } lines_series_list.Add(line_seria); } if (indi_seria.IndicatorType == IndicatorChartPaintType.Point) { if (indi_seria.DataPoints.Count == indi_seria.IndicatorScatterPoints.Count) { double last_point = (double)indi_seria.DataPoints.Last(); if (last_point == 0) { last_point = double.NaN; } indi_seria.IndicatorScatterPoints[indi_seria.IndicatorScatterPoints.Count - 1] = new ScatterPoint(items_oxy_candles.Last().X, last_point); } else if (indi_seria.DataPoints.Count == indi_seria.IndicatorScatterPoints.Count + 1) { double last_point = (double)indi_seria.DataPoints.Last(); if (last_point == 0) { last_point = double.NaN; } indi_seria.IndicatorScatterPoints.Add(new ScatterPoint(items_oxy_candles.Last().X, last_point)); } else { indi_seria.IndicatorScatterPoints.Clear(); List <ScatterPoint> points = new List <ScatterPoint>(); for (int i = 0; i < indi_seria.DataPoints.Count; i++) { double last_point = (double)indi_seria.DataPoints[i]; if (last_point == 0) { last_point = double.NaN; } try { points.Add(new ScatterPoint(items_oxy_candles[i].X, last_point)); } catch { return; } } ; indi_seria.IndicatorScatterPoints = points; } ScatterSeries scatter_seria = new ScatterSeries() { MarkerType = MarkerType.Circle, MarkerFill = indi_seria.OxyColor, MarkerSize = 2, MarkerStrokeThickness = 0, Tag = indi_seria.SeriaName }; scatter_seria.Points.AddRange(indi_seria.IndicatorScatterPoints); if (scatter_series_list.Exists(x => (string)x.Tag == indi_seria.SeriaName)) { scatter_series_list.Remove(scatter_series_list.Find(x => (string)x.Tag == indi_seria.SeriaName)); } scatter_series_list.Add(scatter_seria); } } } }