示例#1
0
        void addTrendlineOption(string text, EventHandler handler)
        {
            OptionInfo option = new OptionInfo(text, handler);

            Trendlines.Add(option);
            this.AddOption(option);
        }
        // Function that creates the plot
        public static void plotChart(string columnTitle)
        {
            Range  chartRange;
            object misValue = System.Reflection.Missing.Value;

            // Creates the chart
            ChartObjects xlCharts = (ChartObjects)ExcelExecutions.xlWorksheet.ChartObjects(Type.Missing);
            ChartObject  myChart  = xlCharts.Add(250, 50, 600, 350);
            Chart        xlChart  = myChart.Chart;

            xlChart.ChartType = XlChartType.xlXYScatter;

            // Gets the range for the column title
            Range XcolumnTitleLocation = findCell(ExcelExecutions.xTitle);
            Range YcolumnTitleLocation = findCell(columnTitle);

            // The title for the x- and y-axis
            Axis xAxis = xlChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary) as Axis;
            Axis yAxis = xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary) as Axis;

            xAxis.HasTitle       = true;
            yAxis.HasTitle       = true;
            xAxis.AxisTitle.Text = XcolumnTitleLocation.Value;
            yAxis.AxisTitle.Text = YcolumnTitleLocation.Value;

            // The values for the chart
            string xColumnPrefix = ExcelExecutions.columnNames[XcolumnTitleLocation.Column - 1];
            string yColumnPrefix = ExcelExecutions.columnNames[YcolumnTitleLocation.Column - 1];
            Range  xValues       = ExcelExecutions.xlWorksheet.Range[xColumnPrefix + "2", (xColumnPrefix + ExcelExecutions.xlRange.Rows.Count.ToString())];
            Range  yvalues       = ExcelExecutions.xlWorksheet.Range[yColumnPrefix + "2", (yColumnPrefix + ExcelExecutions.xlRange.Rows.Count.ToString())];

            // Assigns the value to the chart
            SeriesCollection seriesCollection = xlChart.SeriesCollection();
            Series           pointPlot        = seriesCollection.NewSeries();

            pointPlot.XValues = xValues;
            pointPlot.Name    = columnTitle;
            pointPlot.Values  = yvalues;

            // Creates trendline(regression)
            Trendlines trendlines       = (Trendlines)pointPlot.Trendlines(Type.Missing);
            Trendline  linearRegression = trendlines.Add(XlTrendlineType.xlLinear);

            linearRegression.DisplayEquation = true;
            linearRegression.DisplayRSquared = true;


            saveChart(xlChart, pointPlot.Name);
        }
示例#3
0
        private IndicatorBase CreateTrendline(Trendlines trendlineToAdd)
        {
            switch (trendlineToAdd)
            {
            case Trendlines.MovingAverageIndicator:
                var maIndicator = new MovingAverageIndicator();
                maIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                maIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                maIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                maIndicator.Period          = 12;
                maIndicator.Stroke          = Color.Orange;
                maIndicator.StrokeThickness = 1;
                return(maIndicator);

            case Trendlines.AdaptiveMovingAverageKaufmanIndicator:
                var amakIndicator = new AdaptiveMovingAverageKaufmanIndicator();
                amakIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                amakIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                amakIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                amakIndicator.Period          = 10;
                amakIndicator.SlowPeriod      = 30;
                amakIndicator.FastPeriod      = 2;
                amakIndicator.Stroke          = Color.Orange;
                amakIndicator.StrokeThickness = 1;
                return(amakIndicator);

            case Trendlines.ExponentialMovingAverageIndicator:
                var emaIndicator = new ExponentialMovingAverageIndicator();
                emaIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                emaIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                emaIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                emaIndicator.Period          = 8;
                emaIndicator.Stroke          = Color.Orange;
                emaIndicator.StrokeThickness = 1;
                return(emaIndicator);

            case Trendlines.BollingerBandsIndicator:
                var bbIndicator = new BollingerBandsIndicator();
                bbIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                bbIndicator.CategoryBinding    = new PropertyNameDataPointBinding("DateCategory");
                bbIndicator.ValueBinding       = new PropertyNameDataPointBinding("Close");
                bbIndicator.Period             = 5;
                bbIndicator.Stroke             = Color.Orange;
                bbIndicator.LowerBandStroke    = Color.Orange;
                bbIndicator.StandardDeviations = 3;
                bbIndicator.StrokeThickness    = 1;
                return(bbIndicator);

            case Trendlines.WeightedMovingAverageIndicator:
                var wmaIndicator = new WeightedMovingAverageIndicator();
                wmaIndicator.SetBinding(CommodityChannelIndexIndicator.ItemsSourceProperty, new Binding("SeriesData"));
                wmaIndicator.CategoryBinding = new PropertyNameDataPointBinding("DateCategory");
                wmaIndicator.ValueBinding    = new PropertyNameDataPointBinding("Close");
                wmaIndicator.Period          = 12;
                wmaIndicator.Stroke          = Color.Orange;
                wmaIndicator.StrokeThickness = 1;
                return(wmaIndicator);

            default:
                return(null);
            }
        }