从钱龙数据中读取股票权息信息导入到数据库
前面写了如果读股票代码和日线数据,下面是如何读股票的权息信息。

钱龙中权息数据存储在QLDATA/history/shase/weight和QLDATA/history/sznse/weight目录下,每个文件对应一只股票。

与前文一样,只贴核心代码:

private static void ReadStockWeights(string strPath, string p_strMarket)
        {
            string[] parts = strPath.Split('//');
            string strStockCode = null;
            for (int i = parts.Length - 1; i >= 0;i-- )
            {
                string strTemp = parts[i];
                if (strTemp.ToUpper().EndsWith(".WGT"))
                {
                    strStockCode = strTemp.Substring(0, strTemp.Length - 4) ;
                    break;
                }
            }
            Debug.Assert(strStockCode != null);
            Console.WriteLine("Read stock weight from file '" + strPath + "'");
            FileStream stream = new FileStream(strPath, FileMode.Open, FileAccess.Read);
            BinaryReader b_reader = new BinaryReader(stream);
            List<StockWeightInfo> weightInfos = new List<StockWeightInfo>();
            try
            {
                while (stream.CanRead && stream.Position < stream.Length)
                {
                    int[] oneRow = new int[9];
                    for( int i=0;i<9;i++)
                    {
                        oneRow[i] = b_reader.ReadInt32();
                    }//for
                    if (oneRow[8] != 0)
                    {
                        throw new Exception("Last entry is not empty");
                    }
                    //read date
                    int nYear = oneRow[0] >> 20;
                    int nMon = (int)(((uint)(oneRow[0] << 12))>> 28);
                    int nDay = (oneRow[0] & 0xffff)>> 11;

DateTime wgtDate;
                    if (nYear == 0 && nMon == 0 && nDay == 0)
                        wgtDate = DateTime.MinValue;
                    else
                            wgtDate = new DateTime(nYear, nMon, nDay);
                    StockWeightInfo wgtInfo = new StockWeightInfo();
                    wgtInfo.m_date = wgtDate;
                    wgtInfo.m_stockCountAsGift = oneRow[1];/**10000.0f;
                    wgtInfo.m_stockCountForSell = oneRow[2];/**10000.0f;
                    wgtInfo.m_priceForSell = oneRow[3];/**1000.0f;
                    wgtInfo.m_bonus = oneRow[4];/**1000.0f;
                    wgtInfo.m_stockCountOfIncreasement = oneRow[5];/**10000.0f;
                    wgtInfo.m_stockOwnership = (ulong)oneRow[6];
                    wgtInfo.m_freeStockCount = (ulong)oneRow[7];
                    if (!weightInfos.Contains(wgtInfo))
                    {
                        weightInfos.Add(wgtInfo);
                        //Console.WriteLine();
                        //Console.Write(wgtInfo.ToString());
                    }
                }//while
                weightInfos.Sort();
            }
            catch (EndOfStreamException)
            {
                Console.WriteLine("Unexpected end of stream");
            }
            catch (Exception ex)
            {

Console.WriteLine(ex.Message);
                throw;
            }
            finally
            {
                stream.Close();
            }
            SqlCommand cmd = new SqlCommand("", m_conn);
            cmd.Transaction = m_tran;
            cmd.CommandText = "INSERT INTO [StockWeightInfos] ([StockCode] ,[Market] ,[Date] ,[StockCountAsGift] ,[StockCountForSell] ,[PriceForSell] ,[Bonus] ,[StockCountOfIncreasement] ,[StockOwnership] ,[FreeStockCount]) " +
                               "VALUES (@StockCode, @Market ,@Date ,@StockCountAsGift ,@StockCountForSell ,@PriceForSell ,@Bonus ,@StockCountOfIncreasement ,@StockOwnership ,@FreeStockCount)";
            cmd.Parameters.Add("@StockCode", SqlDbType.NVarChar, 50);
            cmd.Parameters.Add("@Market", SqlDbType.NVarChar, 50);
            cmd.Parameters.Add("@Date", SqlDbType.DateTime);
            cmd.Parameters.Add("@StockCountAsGift", SqlDbType.Real);
            cmd.Parameters.Add("@StockCountForSell", SqlDbType.Real);
            cmd.Parameters.Add("@PriceForSell", SqlDbType.Real);
            cmd.Parameters.Add("@Bonus", SqlDbType.Real);
            cmd.Parameters.Add("@StockCountOfIncreasement", SqlDbType.Real);
            cmd.Parameters.Add("@StockOwnership", SqlDbType.BigInt);
            cmd.Parameters.Add("@FreeStockCount", SqlDbType.BigInt);
            foreach(StockWeightInfo info in weightInfos)
            {
                cmd.Parameters["@StockCode"].Value = strStockCode;
                cmd.Parameters["@Market"].Value = p_strMarket;
                cmd.Parameters["@Bonus"].Value = info.m_bonus / 1000.0;
                if (info.m_date != DateTime.MinValue)
                    cmd.Parameters["@Date"].Value = info.m_date;
                else
                    cmd.Parameters["@Date"].Value = DBNull.Value;
                cmd.Parameters["@FreeStockCount"].Value = info.m_freeStockCount;
                cmd.Parameters["@PriceForSell"].Value = info.m_priceForSell/1000.0;
                cmd.Parameters["@StockCountAsGift"].Value = info.m_stockCountAsGift/10000.0;
                cmd.Parameters["@StockCountForSell"].Value = info.m_stockCountForSell/10000.0;
                cmd.Parameters["@StockCountOfIncreasement"].Value = info.m_stockCountOfIncreasement/10000.0;
                cmd.Parameters["@StockOwnership"].Value = info.m_stockOwnership;
                int nCnt=cmd.ExecuteNonQuery();
                Debug.Assert(nCnt == 1);
            }//foreach
        }//ReadStockWeights

从钱龙数据中读取股票权息信息导入到数据库相关推荐

  1. 从钱龙数据中读取股票代码信息导入到数据库

    写股票相关的程序最苦恼的事莫过于没有数据了, 于是参考了网上其他朋友的一些文章,写了一个程序,可以把钱龙里的一些数据导入到数据库,以便进一步使用. 在我的例子里使用的是MS SqlServer 200 ...

  2. 从MySQL中读取股票数据——从零到实盘10

    前文介绍了把股票数据写入MySQL的过程,本文记录从MySQL中读取股票数据的过程. 到目前为止,我们在访问股票代码列表时,每次需要通过BaoStock重新下载.本文将把下载的股票代码保存到MySQL ...

  3. python读取大智慧数据_大智慧365权息数据格式及读取过程步骤记录

    准备工作 1.十六进制查看软件 UltraEdit 2.查看数据格式 00000000h: 32 C8 43 FF DE 83 CC FF FF FF FF FF 53 48 35 30 ; 2菴迌 ...

  4. OpenGL:如何从缓存中读取颜色、深度信息【转】

    GPU渲染完数据在显存,回传内存的唯一方式glReadPixels函数 显存也被叫做显示内存.帧缓存,它是用来存储显示芯片处理过或者即将读取的渲染数据.如同计算机的内存一样,显存是用来存储图形数据的硬 ...

  5. 李德仁院士:在夜光遥感数据中挖掘民生相关的信息

     我今天的演讲主题是<夜光遥感的数据挖掘>.大家做遥感做了那么多年,主要做自然的,地球的变化,能不能利用我们的遥感,来研究以人类以及人类活动为中心的,来做社会经济学的一个应用?因此今天 ...

  6. mysql读取股票数据_读取股票数据存储到本地MySQL数据库(一)

    主要有三个步骤:(1)从东方财富上爬虫读取到所有股票的codelist:(2)从凤凰网的api获取到某只股票历史上所有数据,开盘收盘价,成交量,成交金额,ma均线价格等数据:(3)通过pymysql将 ...

  7. 图书数据中选取个人借书信息代码

    中国图书馆图书分类法 原始数据集 对整个图书借阅信息进行筛选,选取有用的部分重新保存为新的Excel import pandas as pd from string import *#PATRON_I ...

  8. datagrid如何获取一行数据中的某个字段值_使用Mysql 数据库 新手常见问题

    松勤软件测试 坚持教育初心 既问收获也问耕耘 平时用惯了 SQL Server 和 Oracle,基本语法已定型,导致在Mysql数据库操作时经常会报错 1.mysql 中如果字段是字符类型(含中文) ...

  9. 从Config文件中读取节点的配置信息

    下面是web.config中与本内容有关的细节 <appSettings><add key="servername" value="www"/ ...

最新文章

  1. 从PHP安全讲DedeCms的安全加固
  2. UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资
  3. std::future和std::promise和std::packaged_task
  4. springmvc-返回值
  5. 【Heritrix基础教程之2】Heritrix基本内容介绍
  6. java安装版本哪种好_我怎么知道我安装了哪个版本的Java?
  7. Oracle conn 协议适配器错误解决
  8. 论文阅读 - TransNet and TransNet V2
  9. 系统架构师学习笔记-基于构件的开发
  10. Linux命令kill和signal
  11. 从传统ICT到互联网的技术之路
  12. php模拟post提交 在线,curl post请求 , postman 模拟请求 , 在线测试工具模拟请求...
  13. 三相逆变器双pi控制器参数如何调节_单相光伏并网逆变器的环路控制
  14. UVC 摄像头驱动(二)描述符分析
  15. 2018秋招心酸路---持续更新【面挂家】
  16. undefined reference to `vtkRenderingVolumeOpenGL_AutoInit_Destruct()',`vtkRenderingVolumeOpenGL_Auto
  17. echarts绘制地图-china.json
  18. SAP ERP SD模块中维护销售人员
  19. C# 飞行棋小游戏 (控制台应用)
  20. mysql wal_我所理解的MySQL之一:基础架构

热门文章

  1. 括号配对问题(C++栈)
  2. 计算机网络(湖科大教书匠)
  3. matlab中将数据保存为txt文件_matlab中将数据输出保存为txt格式文件的方法 (1)
  4. 有一台服务器远程失败其他电脑可以_使用闲置电视盒子打造家庭网盘和远程下载器和小型服务器(二)...
  5. 189. 旋转数组 golang
  6. mysql 远程load data,PyMySQL将(文件)数据加载到远程MySQL实例时发生错误/异常
  7. 一个通用纯C队列的实现
  8. C++ 模板全特化中的函数特化
  9. 最高效的进(线)程间通信机制--eventfd
  10. 一个Linux下C线程池的实现(转)