程序员学炒股(3) 个股和大盘的关系之二

有了前一节的基础,这一节就简单多了,无非就是把所有股票遍历一下,我这里为了代码简单起见,就没有考虑停牌天数的影响。

下面就直接上代码了,我这里只是计算了一下沪市所有股票与上证指数的关系。

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using MathNet.Numerics.Statistics;


namespace 获得股票相关性
{
    class Program
    {
        static void Main(string[] args)
        {
            var arrayOfValues1 = new List<double>();
            var arrayOfValues2 = new List<double>();
            string connString = "Data Source=.;Initial Catalog=Stock;Integrated Security=True";
            var list = SSECI.获得股票代码();

            foreach (var StockCode in list)
            {
                arrayOfValues1.Clear();
                arrayOfValues2.Clear();
                using (SqlConnection connection = new SqlConnection(connString))
                {
                    connection.Open();
                    String SQL = String.Format(@"SELECT     a.日期, a.涨跌幅 AS 个股涨跌, b.涨跌幅 AS 大盘涨跌
                    FROM         (SELECT     日期, 涨跌幅
                       FROM          dbo.DayData
                       WHERE      (股票代码 = '{0}') AND (股票名称 NOT LIKE 'XD%')) AS a LEFT OUTER JOIN
                          (SELECT     日期, 涨跌幅
                            FROM          dbo.StockIndex
                            WHERE      (股票代码 = '000001')) AS b ON a.日期 = b.日期",StockCode);
                    SqlCommand CMD = new SqlCommand(SQL, connection);
                    SqlDataReader reader = CMD.ExecuteReader();
                    while (reader.Read())
                    {
                        if (reader["个股涨跌"] != DBNull.Value && reader["个股涨跌"] != null)
                        {
                            arrayOfValues1.Add(Convert.ToDouble(reader["个股涨跌"]));
                            arrayOfValues2.Add(Convert.ToDouble(reader["大盘涨跌"]));
                        }
                    }
                }
                var correlation = Correlation.Pearson(arrayOfValues1, arrayOfValues2);
                Console.WriteLine(StockCode+":"+correlation);
               
            }
            Console.WriteLine("输出完毕");
            Console.ReadKey();

        }
    }
}
复制代码

经过一运算,很容易得出结果如下,结果我用Excel处理了一下:

  

  

  可见和大盘关系最密切的是潞安环能,和大盘关系最不密切的是四通股份,不过四通股份是新股,我们找一个停牌较少的非新股进行比较,这里取603600,我们把它们放在坐标系里,非常容易看的出来,不过603600是受第一天上市的影响,产生的波动较大,下图已经略去,但原理都是一样的,大家可以自行分析每一只股票。

posted @   小钊^^  阅读(957)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示