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

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

钱龙中权息数据存储在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笑话生成器_爸爸笑话发生器

笑话生成器(If you’re just here for the generated jokes, scroll down to the bottom!)(如果您只是在这里生成笑话&#xff0c;请向下滚动到底部&#xff01;) I thought: what is super easy to build, yet would still get an approving chuckle if someone found it on …

AWS Amplify Console:赋予应用程序快速部署的能力

AWS re:Invent 2018大会发布了很多新功能和服务&#xff0c;包括新的AWS Amplify Console&#xff0c;一种针对移动Web应用程序的持续部署服务。 AWS Amplify Console承诺可以支持快速发布新功能&#xff0c;避免在部署应用程序时停机&#xff0c;并降低同时更新应用程序客户端…

机器学习实践二 -多分类和神经网络

本次练习的任务是使用逻辑归回和神经网络进行识别手写数字&#xff08;form 0 to 9, 自动手写数字问题已经应用非常广泛&#xff0c;比如邮编识别。 使用逻辑回归进行多分类分类 练习2 中的logistic 回归实现了二分类分类问题&#xff0c;现在将进行多分类&#xff0c;one vs…

Hadoop 倒排索引

倒排索引是文档检索系统中最常用的数据结构&#xff0c;被广泛地应用于全文搜索引擎。它主要是用来存储某个单词&#xff08;或词组&#xff09;在一个文档或一组文档中存储位置的映射&#xff0c;即提供了一种根据内容来查找文档的方式。由于不是根据文档来确定文档所包含的内…

koa2异常处理_读 koa2 源码后的一些思考与实践

koa2的特点优势什么是 koa2Nodejs官方api支持的都是callback形式的异步编程模型。问题&#xff1a;callback嵌套问题koa2 是由 Express原班人马打造的&#xff0c;是现在比较流行的基于Node.js平台的web开发框架&#xff0c;Koa 把 Express 中内置的 router、view 等功能都移除…

Bind9的dns解析服务

前言随着原中国电信集团按南北地域分家&#xff0c;新的中国电信和网通集团随即成立&#xff0c;互联网的骨干网也被一分为二了&#xff0c;北有网通、南有电信。从此&#xff0c;细心的网民可以发现&#xff0c;有些经常访问的网站速度一下子慢了下来&#xff0c;有时候还有访…

上凸包和下凸包_使用凸包聚类

上凸包和下凸包I recently came across the article titled High-dimensional data clustering by using local affine/convex hulls by HakanCevikalp in Pattern Recognition Letters. It proposes a novel algorithm to cluster high-dimensional data using local affine/c…

sqlmap手册

sqlmap用户手册 | by WooYun知识库 sqlmap用户手册 当给sqlmap这么一个url (http://192.168.136.131/sqlmap/mysql/get_int.php?id1) 的时候&#xff0c;它会&#xff1a; 1、判断可注入的参数 2、判断可以用那种SQL注入技术来注入 3、识别出哪种数据库 4、根据用户选择&…

幸运三角形 南阳acm491(dfs)

幸运三角形 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;3描述话说有这么一个图形&#xff0c;只有两种符号组成&#xff08;‘’或者‘-’&#xff09;&#xff0c;图形的最上层有n个符号&#xff0c;往下个数依次减一&#xff0c;形成倒置…

jsforim

var isMouseDownfalse;var isFirsttrue;var centerdivObj;var ndiv1;var ndiv2;var ndiv3;var kjX;var kjY; window.οnerrοrfunction(){ return true;}; var thurlhttp://qq.jutoo.net/;var wzId12345; function createDiv(){ var sWscreen.width; var sHscree…

决策树有框架吗_决策框架

决策树有框架吗In a previous post, I mentioned that thinking exhaustively is exhausting! Volatility and uncertainty are ever present and must be factored into our decision making — yet, we often don’t have the time or data to properly account for it.在上一…

凑个热闹-LayoutInflater相关分析

前言 最近给组内同学做了一次“动态换肤和换文案”的主题分享&#xff0c;其中的核心就是LayoutInflater类&#xff0c;所以把LayoutInflater源码梳理了一遍。巧了&#xff0c;这周掘金新榜和部分公众号都发布了LayoutInflater或者换肤主题之类的文章。那只好站在各位大佬的肩膀…

ASP.NET Core文件上传、下载与删除

首先我们需要创建一个form表单如下: <form method"post" enctype"multipart/form-data" asp-controller"UpLoadFile" asp-action"FileSave"> <div> <div> <p>Form表单多个上传文件:</p> <input type…

8 一点就消失_消失的莉莉安(26)

文|明鸢Hi&#xff0c;中午好&#xff0c;我是暖叔今天是免费连载《消失的莉莉安》第26章消失的莉莉安▶▶往期链接&#xff1a;▼ 向下滑动阅读1&#xff1a;“消失的莉莉安(1)”2&#xff1a; 消失的莉莉安(2)3&#xff1a;“消失的莉莉安(3)”4&#xff1a;“消失的莉莉安…

透明的WinForm窗体

this.Location new System.Drawing.Point(100, 100); this.Cursor System.Windows.Forms.Cursors.Hand; // 定义在窗体上&#xff0c;光标显示为手形 this.Text "透明的WinForm窗体&#xff01;"; // 定义窗体的标题…

mysql那本书适合初学者_3本书适合初学者

mysql那本书适合初学者为什么要书籍&#xff1f; (Why Books?) The internet is a treasure-trove of information on a variety of topics. Whether you want to learn guitar through Youtube videos or how to change a tire when you are stuck on the side of the road, …

junit与spring-data-redis 版本对应成功的

spring-data-redis 版本:1.7.2.RELEASE junit 版本:4.12 转载于:https://www.cnblogs.com/austinspark-jessylu/p/9366863.html

语音对话系统的设计要点与多轮对话的重要性

这是阿拉灯神丁Vicky的第 008 篇文章就从最近短视频平台的大妈与机器人快宝的聊天说起吧。某银行内&#xff0c;一位阿姨因等待办理业务的时间太长&#xff0c;与快宝机器人展开了一场来自灵魂的对话。对于银行工作人员的不满&#xff0c;大妈向快宝说道&#xff1a;“你们的工…

c读取txt文件内容并建立一个链表_C++链表实现学生信息管理系统

可以增删查改&#xff0c;使用链表存储&#xff0c;支持排序以及文件存储及数据读取&#xff0c;基本可以应付期末大作业&#xff08;狗头&#xff09; 界面为源代码为一个main.cpp和三个头文件&#xff0c;具体为 main.cpp#include <iostream> #include <fstream>…

注册表启动

public void SetReg() { RegistryKey hklmRegistry.LocalMachine; RegistryKey runhklm.CreateSubKey("Software/Microsoft/Windows/CurrentVersion/Run"); //定义hklm指向注册表的LocalMachine,对注册表的结构&#xff0c;可以在windows的运行里&#…