⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findata.fxjdata.cs

📁 分析家数据格式解析源码。日线行情、分笔成交
💻 CS
📖 第 1 页 / 共 5 页
字号:
using System;
using System.Collections;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Runtime.InteropServices;


namespace FinData
{
    [ProgId("FinData.DzhData"),ComVisible(true)]
    public class DzhData
    {
        public enum DataTypes { dm,hq,hqmb,hq0,hq1,hq5,cq,cw0,fp,gb,gd,cw,jjjz,jjzh,bk,pj,hqfq};
        private string[,] tableNames = new string[,] {
            #region 表名
            {"dm","代码",""},
            {"hq","行情",""},
            {"hqmb","分笔成交",""},
            {"hq0","动态行情",""},
            {"hq1","一分钟行情(N/A)",""},
            {"hq5","五分钟行情<(N/A)",""},
            {"cq","除权数据",""},
            {"cw0","最新财务数据",""},
            {"fp","分红送配(N/A)",""},
            {"gb","股本结构(N/A)",""},
            {"gd","十大股东(N/A)",""},
            {"cw","财务数据(N/A)",""},
            {"jjjz","基金净值(N/A)",""},
            {"jjzh","基金投资组合(N/A)",""},
            {"bk","板块",""},
            {"pj","评级(N/A)",""},
            {"hqfq","复权行情",""} 

        };//行顺序与Datatype一致,列分别为表名、表中文名、对应文件名(GetTables函数中赋值)
            #endregion
        public DzhData()
        {
            try
            {
                //从注册表中读取大智慧数据目录,如c:\dzh\data
                RegistryKey keyDzh;
                RegistryKey keySoftware = Registry.LocalMachine.OpenSubKey("Software");
                keyDzh = keySoftware.OpenSubKey("DZH");
                if (keyDzh == null)
                {
                    keyDzh = keySoftware.OpenSubKey("Huitianqi");
                    if (keyDzh == null)
                    {
                        dzhPath = "";
                        dzhDataPath = "";
                        msg = "没有找到大智慧安装信息!";
                        return;
                    }
                }
                RegistryKey keySuperstk = keyDzh.OpenSubKey("SUPERSTK");
                if (keySuperstk != null)
                {
                    dzhPath = (string)keySuperstk.GetValue("InstPath");
                    if (dzhPath != "")
                    {
                        dzhPath = dzhPath.ToUpper();
                        if (dzhPath != "" && dzhPath.EndsWith(@"\") == false)
                            dzhPath = dzhPath + @"\";
                        dzhDataPath = dzhPath+ @"DATA\";
                        dzhDataPath = dzhDataPath.ToUpper();
                        RegistryKey keyMarket = keySuperstk.OpenSubKey("Market");
                        if (keyMarket != null)
                        {
                            string[] marketSubKeyNames = keyMarket.GetSubKeyNames();
                            if (marketSubKeyNames.Length > 0)
                            {
                                RegistryKey[] marketSubKey = new RegistryKey[marketSubKeyNames.Length];
                                dzhMarket = new string[marketSubKeyNames.Length, 3];
                                for (int i = 0; i < marketSubKeyNames.Length; i++)
                                {
                                    marketSubKey[i] = keyMarket.OpenSubKey(marketSubKeyNames[i]);
                                    if (marketSubKey[i] != null)
                                    {
                                        dzhMarket[i, 0] = marketSubKeyNames[i];
                                        dzhMarket[i, 1] = (string)marketSubKey[i].GetValue("name");
                                        dzhMarket[i, 2] = (string)marketSubKey[i].GetValue("shortname");
                                    }
                                }
                                for (int i = 0; i < marketSubKeyNames.Length; i++)
                                {
                                    int lastI=marketSubKeyNames.Length-1;
                                    if (dzhMarket[i, 0].ToUpper() == "SH")
                                    {
                                        string[] temp = new string[3];
                                        temp[0] = dzhMarket[0, 0];
                                        temp[1] = dzhMarket[0, 1];
                                        temp[2] = dzhMarket[0, 2];
                                        dzhMarket[0, 0] = dzhMarket[i, 0];
                                        dzhMarket[0, 1] = dzhMarket[i, 1];
                                        dzhMarket[0, 2] = dzhMarket[i, 2];
                                        dzhMarket[i, 0] = temp[0];
                                        dzhMarket[i, 1] = temp[1];
                                        dzhMarket[i, 2] = temp[2];
                                    }
                                    if (dzhMarket[i, 0].ToUpper() == "SZ")
                                    {
                                        string[] temp = new string[3];
                                        temp[0] = dzhMarket[1, 0];
                                        temp[1] = dzhMarket[1, 1];
                                        temp[2] = dzhMarket[1, 2];
                                        dzhMarket[1, 0] = dzhMarket[i, 0];
                                        dzhMarket[1, 1] = dzhMarket[i, 1];
                                        dzhMarket[1, 2] = dzhMarket[i, 2];
                                        dzhMarket[i, 0] = temp[0];
                                        dzhMarket[i, 1] = temp[1];
                                        dzhMarket[i, 2] = temp[2];
                                    }
                                    if (dzhMarket[i, 0].ToUpper() == "$$")
                                    {
                                        string[] temp = new string[3];
                                        temp[0] = dzhMarket[lastI, 0];
                                        temp[1] = dzhMarket[lastI, 1];
                                        temp[2] = dzhMarket[lastI, 2];
                                        dzhMarket[lastI, 0] = dzhMarket[i, 0];
                                        dzhMarket[lastI, 1] = dzhMarket[i, 1];
                                        dzhMarket[lastI, 2] = dzhMarket[i, 2];
                                        dzhMarket[i, 0] = temp[0];
                                        dzhMarket[i, 1] = temp[1];
                                        dzhMarket[i, 2] = temp[2];
                                    }
                                }
                            }
                        }
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }
        }
        struct fileStruct
        {
            public string fileName;//文件名
            public int startAddress,blockSize,recordSize;//起始地址,每块长度,记录长度
            public bool codeIsLong, isIndexDataStruct;   //codeIsLong索引中的代码包含有市场代码SH、SZ等;isIndexDataStruct象Day.Dat那样的结构即由索引+数据组成; 
            public string[,] fields;//字段
            public fileStruct(DataTypes fileType)
            {
                fileName = "";
                startAddress = 0;
                blockSize = 0;
                recordSize = 0;
                codeIsLong = false;
                isIndexDataStruct = true;
                string fieldString = ""; //字段名,字段标签,类型,长度字段,存储顺序,偏移量
                switch (fileType)
                {

                    #region 代码表STKINFO60.dat
                    case DataTypes.dm:
                        fileName = "STKINFO60.DAT";
                        startAddress = 0x68A8A6;
                        blockSize = 0;
                        recordSize = 273;//fxj248
                        codeIsLong = false;
                        isIndexDataStruct = false;
                        fieldString =
"dm,代码,code,10,0,0,;" +
"jc,简称,string,32,1,10,";
                        break;
                    #endregion
                    #region 分红送配STKINFO60.dat
                    case DataTypes.cq:
                        fileName = "STKINFO60.DAT";
                        startAddress = 0x44aa;
                        blockSize = 2227;
                        recordSize = 20;
                        codeIsLong = false;
                        isIndexDataStruct = false;
                        fieldString =
"dm,代码,code,10,0,0,;" +
"rq,日期,date,4,0,0,;" +
"sgbl,送股比例,single,4,1,4,;" +
"pgbl,配股比例,single,4,2,8,;" +
"pgjg,配股价格,single,4,3,12,;" +
"fh,分红,single,4,4,16,";
                        break;
                    #endregion
                    #region 财务数据(简单)STKINFO60.dat
                    case DataTypes.cw0:
                        fileName = "STKINFO60.DAT";
                        startAddress = 0x4c2a;
                        blockSize = 2227;
                        recordSize = 273;//196
                        codeIsLong = false;
                        isIndexDataStruct = false;
                        fieldString =
"dm,代码,code,10,0,0,;" +
"rq,报告期,date,4,0,4,;" +
"gxrq,更新日期,date,4,0,0,;" +
"ssrq,上市日期,date,4,0,8,;" +
"col1,每股收益,single,4,0,12,;" +
"col2,每股净资产,single,4,0,16,;" +
"col3,净资产收益率,single,4,0,20,;" +
"col4,每股经营现金,single,4,0,24,;" +
"col5,每股公积金,single,4,0,28,;" +
"col6,每股未分配,single,4,0,32,;" +
"col7,股东权益比,single,4,0,36,;" +
"col8,净利润同比,single,4,0,40,;" +
"col9,主营收入同比,single,4,0,44,;" +
"col10,销售毛利率,single,4,0,48,;" +
"col11,调整每股净资产,single,4,0,52,;" +
"col12,总资产,single,4,0,56,;" +
"col13,流动资产,single,4,0,60,;" +
"col14,固定资产,single,4,0,64,;" +
"col15,无形资产,single,4,0,68,;" +
"col16,流动负债,single,4,0,72,;" +
"col17,长期负债,single,4,0,76,;" +
"col18,总负债,single,4,0,80,;" +
"col19,股东权益,single,4,0,84,;" +
"col20,资本公积金,single,4,0,88,;" +
"col21,经营现金流量,single,4,0,92,;" +
"col22,投资现金流量,single,4,0,96,;" +
"col23,筹资现金流量,single,4,0,100,;" +
"col24,现金增加额,single,4,0,104,;" +
"col25,主营收入,single,4,0,108,;" +
"col26,主营利润,single,4,0,112,;" +
"col27,营业利润,single,4,0,116,;" +
"col28,投资收益,single,4,0,120,;" +
"col29,营业外收支,single,4,0,124,;" +
"col30,利润总额,single,4,0,128,;" +
"col31,净利润,single,4,0,132,;" +
"col32,未分配利润,single,4,0,136,;" +
"col33,总股本,single,4,0,140,;" +
"col34,无限售股合计,single,4,0,144,;" +
"col35,A股,single,4,0,148,;" +
"col36,B股,single,4,0,152,;" +
"col37,境外上市股,single,4,0,156,;" +
"col38,其他流通股,single,4,0,160,;" +
"col39,限售股合计,single,4,0,164,;" +
"col40,国家持股,single,4,0,168,;" +
"col41,国有法人股,single,4,0,172,;" +
"col42,境内法人股,single,4,0,176,;" +
"col43,境内自然人股,single,4,0,180,;" +
"col44,其他发起人股,single,4,0,184,;" +
"col45,募集法人股,single,4,0,188,;" +
"col46,境外法人股,single,4,0,192,;" +
"col47,境外自然人股,single,4,0,196,;" +
"col48,优先股或其他,single,4,0,200,";
                        break;
                    #endregion
                    #region 最新行情STKINFO60.dat
                    case DataTypes.hq0:
                        fileName = "STKINFO60.DAT";
                        startAddress = 0x68A8A6;
                        blockSize = 0;
                        recordSize = 273;
                        codeIsLong = false;
                        isIndexDataStruct = false;
                        fieldString =
"dm,代码,code,10,0,0,;" +
"jc,简称,string,32,1,10,;" +
"rq,更新时间,datetime,4,5,60,;" +
"zs,昨收,single,4,7,68,;" +
"kp,今开,single,4,8,72,;" +
"zg,最高,single,4,9,76,;" +
"zd,最低,single,4,10,80,;" +
"sp,最新,single,4,11,84,;" +
"sl,总手数,single,4,12,88,;" +
"je,金额,single,4,13,92,;" +
"xss,现手数,single,4,14,96,;" +
"ztj,涨停价,single,4,27,184,;" +
"dtj,跌停价,single,4,28,188,;" +
"np,内盘,single,4,27,192,;" +
"wp,外盘,single,4,28,196,;" +
"mrjg1,买一价,single,4,15,100,;" +
"mrsl1,买一量,single,4,18,120,;" +
"mrjg2,买二价,single,4,16,104,;" +
"mrsl2,买二量,single,4,19,124,;" +
"mrjg3,买三价,single,4,17,108,;" +
"mrsl3,买三量,single,4,20,128,;" +
"mrjg4,买四价,single,4,32,112,;" +
"mrsl4,买四量,single,4,34,132,;" +
"mrjg5,买五价,single,4,33,116,;" +
"mrsl5,买五量,single,4,35,136,;" +
"mcjg1,卖一价,single,4,21,140,;" +
"mcsl1,卖一量,single,4,24,160,;" +
"mcjg2,卖二价,single,4,22,144,;" +

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -