大智慧3日线数据格式文档(非常详尽版)适用于c++开发人员 大智慧二和大智慧三的日线数据格式没有变化。这个文档适用于c++开发人员。本文档由alantop原创,转载请标明. 来自
http://alantop.5166.info以深圳为例 数据放在 C:\\\\dzh2\\\\data\\\\sz\\\\day.dat数据结构共分三个结构体:1. 开始部分,存放一些全局数据的结构体(共24个字节)由0x00 - 0x17开始起止地址 数据内容 数据含义 数据类型 00 - 03 F4 9B 13 FC 日线文件标志 Integer 04 - 07 10 02 00 00 保留 Integer 08 - 0B 00 00 00 00 保留 Integer 0C - 0F D1 04 00 00 证券总数 Integer 10 - 13 81 0C 00 00 需添加之起始块号 Integer 就是文件的最后,计算方法是 0x41000 + 这个数字 * 8192 14 - 17 48 0C 00 00 当前最后空块号 Integer 最后一个空块 方法同上,就是说写数据,就在这个地方写,写完就在上面地方新增加新的块struct GLOBAL_DATA { int dayflag; int reserve1; int reserve2; int stocksum; int startblock; int lastblock;};2. 存放后面具体数据的索引 (64个字节)由0x18 - 0x58开始,总共有多少由0x0c提供.从18h开始至40017h每64byte为一条股票数据分配记录,含义下表18h - 57h所示起止地址 数据内容 数据含义 数据类型 18 - 21 31 41 30 30 30...FF 证券代码 Char[10] 22 - 25 B0 09 00 00 日线记录数 Integer 26 - 57 16 00 17 00...FF FF 记录块号 Word[25] struct INDEX_DATA{ char code[10]; int dayrecordnum; unsigned short int reocrd[25];};3. 具体数据的内容(32个字节)0x41000开始8192 = 256 * 32从41000h开始每8KB为一股票数据存储块,每个股票数据存储块共存储256条日线记录,每一条记录的长度为32 byte(含义如上表;上涨家数及下跌家数只对指数有效); 从41000h开始的8KB为第0号数据存储块,以后类推; 系统对每个股票日线数据存储以存储块为单位进行分配。 日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数。对于c++来说直接用__time32_t类型直接出来就是日期(vs2005中,这个代表32位时间类型值,在vc6中直接用time_t即可【vc2005中time_t代表64位时间值】)起止地址 数据内容 数据含义 数据类型41000 - 41003 80 47 B2 2B 日期 Integer 41004 - 41007 B9 1E 25 41 开盘价 Single 41008 - 4100B CD CC 4C 41 最高价 Single 4100C - 4100F EC 51 18 41 最低价 Single 41010 - 41013 9A 99 41 41 收盘价 Single 41014 - 41017 80 06 B2 47 成交量 Single 41018 - 4101B 40 1C BC 4C 成交金额 Single 4101C - 4101D 00 00 上涨家数 Word 4101E - 4101F 00 00 下跌家数 Word struct DAY_DATA{ __time32_t date; float open; float high; float low; float close; float amount; float money; unsigned short int rise; unsigned short int fall; };-----------------------------------------------读取接口文件:finddata.dll ,下载地址:
http://blog.ce.cn/batch.download.php?aid=46409 这是一款前人开发的数据接口,语言为C#,使它适用于“大智慧新一代 Level-2 V3.03.08.0801 ”的版本。估计分析家6.0的版本也适用,暂没测试过。 对于一些有独特的行情分析方法并且现有的股票分析软件又不能满足的人士,可以考虑采用该数据接口进行二次开发。 组件方法和属性说明: (1)方法GetData语法:public string[,] GetData(string dataType, string code,int iRecordCount)或public string[,] GetData(string dataType, string code, string newFileName,int iRecordCount)功能:读取各类数据参数说明:•dataType为数据类型,目录允许的值如下:“dm”——代码表,对应大智慧文件STKINFO60.DAT“hq”——日行情,对应大智慧文件day.dat“hqmb”——每笔成交,对应大智慧文件report.dat或*.prp“hq0”——最新行情,对应大智慧文件STKINFO60.DAT“hq0_ag”——上海、深圳A股市场动态行情,对应大智慧文件STKINFO60.DAT“hq5”——五分钟线,对应大智慧文件min.dat“cq”——除权数据,对应大智慧文件STKINFO60.DAT“cw0”——专业财务数据,对应大智慧文件STKINFO60.DAT“hqfq”——复权行情。复权计算方法与一般行情软件有所不同:只对日线数据中的开盘价、最高价、最低价、收盘价进行复权处理,成交量未作复权处理;先根据价格和除权数据计算出每日总收益率,然后用“向前复权”方法计算出复权价格(优点是:假设了分红再投资,任何两点间的收益率不受分红送配时间的影响,便于分析比较);提供根据收盘价计算的收益率。 •code为证券代码,格式如“SH000001”、“SZ000001”、“HK0001”等,其中板块指数的代码如“$$AA01”、“$$AA02”等;当dataType为“dm”或”hq0”时,为市场代码“SH”或“SZ”等,板块指数的市场代码为“$$”。 如:GetData("hq","SZ399001")读取SZ399001(深成指)的所有行情数据;GetData("hq","$$AA01")读取板块指数$$AA01行情; GetData(“dm”,”SH”)读取沪市证券代码表; GetData(“hq0”,”SH”)读取沪市股票的动态行情; GetData(“hq_ag”,””)读取沪市和深市股票的动态行情。•newFileName为不含路径的文件名,例如:读取沪市代码表时默认从大智慧目录安装目录下的DATA\\SH\\StkInfo60.dat文件中读取,但可以指定从其它文件读取,如GetData(“dm”,”SH”,”stkinfo88888.dat”)将从stkinfo8888.dat文件读取代码表(当然前提是该文件结构与stkinfo60.dat相同)。该功能主要用于读取历史分笔数据,如GetData(“hqmb”,”SZ000001”,”20080926.PRP”)将读取深发展2008年9月26日的分笔成交数据。•newFileName为读取的行情记录的数量。为0则读取所有记录。如:GetData("hq","SH600000",0)读取SH600000(浦发银行)的所有日行情数据;GetData("hq","SH600000",10)读取SH600000(浦发银行)的最后10日行情数据。返回值:返回一个二维字符串数组,每一列为一字段,每一行为一数据记录。注意,这里返回的是一个字符串数组,一般需要根据需要类型转换。 (2)方法GetFields语法:public string[,] GetFields(string dataType)功能:读取各种数据类型的字段名、字段含义、类型。参数说明:dataType为指定数据类型同GetData。返回值:一个二维数组 (3)方法GetTables调用格式:public string[,] GetTables()功能:读取各表的表名、中文说明、对应文件。返回值:一个二维数组 (4)方法GetMarkets语法:public string[,] GetMarkets()功能:从注册表中读取市场列表:代码、简称、名称,如:SH、沪、上海证券交易所;SZ、深、深圳证券交易所。返回值:一个二维数组 (5)方法GetTableDef语法:public string GetTableDef(string dataType, string descDataType, bool delOldTable)功能:生成创建SAS表的PROC SQL语句。参数:dataType为“dm”等数据表名,descDataType目前只能为“SAS”,delOldTable是否同时生成删除同名数据表的语句。返回值:一个字符串 (6)方法GetCodeType语法:public string GetCodeType(string code)功能:根据证券代码获取证券品种,如:GetCodeType("SZ000001")将返回"gp"表示这是股票代码;GetCodeType("SH000001")将返回"zs”(指数);GetCodeType("SZ184688")将返回"jj"(基金),等。参数:code为证券代码。返回值:一个字符串:gp(股票)、zq(债券)、jj(基金)、qz(权证)、zs(指数)。 (7)方法ShowAboutBox语法:public void ShowAboutBox()功能:显示组件的“关于”窗口。 (8)方法ShowFxjConverter语法:public void ShowFxjConverter()功能:显示“大智慧数据转换器”窗口。可以读取各类数据,不过一般每次只能读取一只证券的数据;可以读取各字段信息;可以将读取出来的数据保存为文本文件。 (9)方法ShowFxjReader语法:public void ShowFxjReader()功能:显示“大智慧数据读取器”窗口。可以将各类数据转换为文本文件,字段间的分隔符可以自定义; (10)属性FxjDataPath功能:字符串型,可读写,返回大智慧数据目录(一般为c:\\dzh\\data\\),如果组件无法自动获取正确的大智慧数据目录,可以设置该属性指定大智慧数据目录。 (11)属性FxjPath功能:字符串型,返回大智慧安装目录(一般为c:\\dzh\\)。 (12)属性Error功能:整型,只读,返回上一步操作是否出现错误。若该属性为0,表示没有错误发生,若为1则表示发生了错误,具体错误信息可以通过MSG属性获得。 (13)属性Msg功能:字符串型,只读,返回上一步操作的错误信息。 (14)属性Version功能:实型,返回组件当前版本号。
<br />该文章转载自<a href="
http://blog.eastmoney.com">东方财富网博客</a>:<a href="
http://blog.eastmoney.com/joekazz/blog_130142466.html">大智慧3日线数据格式及读取接口(zt)</a>