コード例 #1
0
        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);
        }
コード例 #2
0
 public virtual void BuildIndicatorSeries(IndicatorSeria indi_seria, List <decimal> data_points, TimeSpan time_frame_span)
 {
 }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
                    }
                }
            }
        }