Пример #1
0
        public Form1(BanKuaiDta bankuaiDta)
        {
            InitializeComponent();

            GraphPane mPane = zedGraphControl1.GraphPane;                          //获取索引到GraphPane面板上

            mPane.XAxis.Title.Text = "DaySeries";                                  //X轴标题
            mPane.YAxis.Title.Text = "PercentUP%";                                 //Y轴标题
            mPane.Title.Text       = "板块测试";                                       //标题
            //mPane.XAxis.Scale.MaxAuto = true;
            mPane.XAxis.Type                  = ZedGraph.AxisType.LinearAsOrdinal; //出现图表右侧出现空白的情况....
            mPane.XAxis.CrossAuto             = true;                              //容许x轴的自动放大或缩小
            mPane.YAxis.MajorGrid.IsVisible   = true;                              //设置虚线.
            zedGraphControl1.IsShowHScrollBar = true;                              //不显示水平滚动条
            zedGraphControl1.PanModifierKeys  = Keys.None;                         //鼠标拖拽可移动
            mPane.Legend.IsVisible            = false;                             //不显示Lenged,因为当股票很多的时候,下面的图表会被压缩到一点点没有。

            //加载窗口
            this.Text = bankuaiDta.BanKuaiName;

            //图表标题
            mPane.Title.Text = bankuaiDta.BanKuaiName;//标题

            //加载数据
            StockListToChart(bankuaiDta);
        }
Пример #2
0
        private void MarketDataUserControlSelf_BanKuaiEvent(BanKuaiDta data)
        {
            Form1 form = new Form1(data);

            form.TopLevel  = false;//设置为非顶级控件
            form.MdiParent = this;
            form.Show();

            m_BanKuaiFormList.Add(form);

            this.LayoutMdi(MdiLayout.TileHorizontal);
        }
Пример #3
0
        private void DataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || this.dataGridView1.Rows[e.RowIndex].DataBoundItem == null)
            {
                return;
            }

            BanKuaiDta dta = this.dataGridView1.Rows[e.RowIndex].DataBoundItem as BanKuaiDta;

            if (BanKuaiEvent != null && dta != null)
            {
                BanKuaiEvent(dta);
            }
        }
        public void SubScribe()
        {
            //1.获取所有的板块和股票数据
            List <BanKuaiDta> handleBankuaiStocksDic = DataHandler.HandleBanKuaiAndStocks();

            //2.加载到datagrid上等待被Click
            foreach (BanKuaiDta kvP in handleBankuaiStocksDic)
            {
                BanKuaiDta dta = new BanKuaiDta()
                {
                    BanKuaiName      = kvP.BanKuaiName,
                    BanKuaiStockList = kvP.BanKuaiStockList
                };
                m_banKuaiList.Add(dta);
            }
        }
        private void DataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || this.dataGridView1.Rows[e.RowIndex].DataBoundItem == null)
            {
                return;
            }

            BanKuaiDta dta = this.dataGridView1.Rows[e.RowIndex].DataBoundItem as BanKuaiDta;

            if (BanKuaiEvent != null && dta != null)
            {
                //点击之后调用一下DataHandler完成数据整理和加入总Handle中
                DataHandler.BKStockDatList(dta);
                BanKuaiEvent(dta);

                //计算板块占比
                CalBanKuaiQaingRuoTrend(dta);
            }
        }
Пример #6
0
        public void StockListToChart(BanKuaiDta dta)
        {
            GraphPane mPane = zedGraphControl1.GraphPane;//获取索引到GraphPane面板上

            //
            foreach (KeyValuePair <string, Dictionary <string, List <List <string> > > > kv in DataHandler.BanKuaiStockDataDic)
            {
                if (kv.Key != dta.BanKuaiName)
                {
                    continue;
                }

                Dictionary <string, List <List <string> > > stockDataDic = kv.Value;

                foreach (KeyValuePair <string, List <List <string> > > kp in stockDataDic)
                {
                    List <List <string> > dataCountList = kp.Value;

                    PointPairList dataList = new PointPairList();

                    for (int j = 0; j < dataCountList.Count; j++)
                    {
                        PointPair pairData = new PointPair();

                        double x = 0.00;
                        double.TryParse(kp.Value[j][1], out x);

                        double y = 0.00;
                        double.TryParse(kp.Value[j][4], out y);

                        pairData.X = x;
                        pairData.Y = y;

                        dataList.Add(pairData);
                    }

                    LineItem mCure = mPane.AddCurve(kp.Key, dataList, Common.GetRandomColor(), SymbolType.None);
                    m_LineItemList.Add(mCure);
                    zedGraphControl1.AxisChange();//画到zedGraphControl1控件中,此句必加
                }
            }
        }
Пример #7
0
        /// <summary>
        /// 根据板块和个股数据源获取各个股票的数据以及处理的数据
        /// </summary>
        public static void BKStockDatList(BanKuaiDta data)
        {
            Dictionary <string, List <List <string> > > stockDataDic = new Dictionary <string, List <List <string> > >();

            for (int j = 0; j < data.BanKuaiStockList.Count; j++)
            {
                //内部把token和Url,日期,数据周期,等参数封包了,只暴露了股票代码参数,默认从20190601开始的数据
                StockData             sData1 = HttpHelper.PostUrl(data.BanKuaiStockList[j]);
                List <List <string> > maList = sData1.HoladMaList();

                if (maList.Count <= 0)
                {
                    continue;
                }
                maList.Reverse();

                stockDataDic.Add(data.BanKuaiStockList[j], maList);
            }

            m_banKuaiStockDataDic.Add(data.BanKuaiName, stockDataDic);
        }
Пример #8
0
        /// <summary>
        /// 获取所有文件夹-及个股的数据
        /// </summary>
        /// <returns></returns>
        public static List <BanKuaiDta> HandleBanKuaiAndStocks()
        {
            List <BanKuaiDta> banKuaiAndStocksDic = new List <BanKuaiDta>();

            //1.获取所有的板块和股票数据
            string filePath = AppDomain.CurrentDomain.BaseDirectory + "A股板块";

            string[] files = Directory.GetFiles(filePath, "*.txt");

            foreach (string file in files)
            {
                string fileName = Path.GetFileNameWithoutExtension(file);

                List <string> stockList = new List <string>();

                //设置文件共享方式为读写,FileShare.ReadWrite,这样的话,就可以打开了
                FileStream   fs   = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                StreamReader sr   = new StreamReader(fs, System.Text.Encoding.Default);
                string       line = "";
                while ((line = sr.ReadLine()) != null)
                {
                    if (line != "")
                    {
                        stockList.Add(line.ToString());
                    }
                }

                BanKuaiDta dat = new BanKuaiDta()
                {
                    BanKuaiName      = fileName,
                    BanKuaiStockList = stockList
                };

                banKuaiAndStocksDic.Add(dat);
            }

            return(m_HoldBanKuaiAndStocks = banKuaiAndStocksDic);
        }
Пример #9
0
        public void SubScribe()
        {
            //1.获取所有的板块和股票数据
            string filePath = @"C:\Users\Administrator\Desktop\SinaFinalDataLoader\TuShareLoader\bin\Debug\板块";

            string[] files = Directory.GetFiles(filePath, "*.txt");

            foreach (string file in files)
            {
                string fileName = Path.GetFileNameWithoutExtension(file);

                List <string> stockList = new List <string>();

                //设置文件共享方式为读写,FileShare.ReadWrite,这样的话,就可以打开了
                FileStream   fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
                String       line;
                while ((line = sr.ReadLine()) != null)
                {
                    stockList.Add(line.ToString());
                }

                m_stockDic.Add(fileName, stockList);
            }

            //2.加载到datagrid上等待被Click
            foreach (KeyValuePair <string, List <string> > kvP in m_stockDic)
            {
                BanKuaiDta dta = new BanKuaiDta()
                {
                    BanKuaiName      = kvP.Key,
                    BanKuaiStockList = kvP.Value
                };

                m_banKuaiList.Add(dta);
            }
        }
        /// <summary>
        /// 计算板块强弱[同一个板块内部,站上60均的个股数量占板块内所有股票数量的比例作为板块的强度,可以一直追踪]
        /// </summary>
        private void CalBanKuaiQaingRuoTrend(BanKuaiDta dta)
        {
            //板块1 --- 股票1  (1)--开
            //                --高
            //                --低
            //                --收
            //                (2)--开
            //                 --高
            //                 --低
            //                 --收
            //     --- 股票2
            //     --- 股票3
            //板块2....................
            //板块3....................

            GraphPane mPane = zedGraphControl2.GraphPane;//获取索引到GraphPane面板上

            //板块 - 股票 - 数据
            Dictionary <string, Dictionary <string, List <List <string> > > > banKuaiStockDataDic = DataHandler.BanKuaiStockDataDic;

            foreach (KeyValuePair <string, Dictionary <string, List <List <string> > > > kv in banKuaiStockDataDic)
            {
                if (kv.Key != dta.BanKuaiName)
                {
                    continue;
                }

                //如果是这个我选入的板块
                Dictionary <string, List <List <string> > > stockDataDic = kv.Value;

                PointPairList datalist = new PointPairList();

                //由于可能不能的票数据长度不一致(停牌等),所以一律从最后的往前推100根K验证
                for (int pp = 0; pp < 100; pp++)
                {
                    double UpCreaseStocksNum = 0;
                    double x = 0.00;

                    foreach (KeyValuePair <string, List <List <string> > > kp in stockDataDic)
                    {
                        string stockCode = kp.Key;
                        List <List <string> > dataCountList = kp.Value;

                        if (dataCountList.Count < 100)
                        {
                            continue;
                        }

                        double radio = 0.00;
                        double.TryParse(dataCountList[dataCountList.Count - 1 - pp][4], out radio);
                        if (radio >= 0)
                        {
                            UpCreaseStocksNum = UpCreaseStocksNum + 1;
                        }

                        double.TryParse(dataCountList[dataCountList.Count - 1 - pp][1], out x);
                    }

                    double Y = UpCreaseStocksNum / stockDataDic.Count * 100;

                    PointPair pairData = new PointPair();
                    pairData.X = x;
                    pairData.Y = Y;

                    datalist.Add(pairData);
                }

                datalist.Reverse();

                LineItem mCure = mPane.AddCurve(kv.Key, datalist, Common.GetRandomColor(), SymbolType.None);

                BanKuaiQiangdu qiangDu = new BanKuaiQiangdu()
                {
                    BanKuaiQiangduNum = datalist[datalist.Count - 1].Y,
                    BanKuaiName       = kv.Key
                };

                //====================================//
                m_banKuaiQiangDuList.Add(qiangDu);
                //====================================//

                zedGraphControl2.AxisChange();//画到zedGraphControl1控件中,此句必加
                zedGraphControl2.Refresh();
            }
        }