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); }
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); }
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); } }
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控件中,此句必加 } } }
/// <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); }
/// <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); }
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(); } }