建议先用ultraedit打开,把里面的结构搞清楚,例如那一段是股票代号,哪一段是名称,哪一段价格。
第二步:读写流。读写二进制文件用System.IO.BinaryReader和System.IO.BinaryWriter类;
你同样要分析数据格式。特别day文件里的日期,我是老早搞过,现在都忘了。里面的日期好像还要换算。day文件里存储的是一段时期的每天价格。这个好像很好分析的。原来用delphi编过,刚才找没找到,可能被老婆给删除了。
这个给你参考:
一、数据文件和数据结构:
大智慧数据文件和数据结构:(假设大智慧股票行情软件安装在D:dzh目录下)
上海日线存储路径为:D:dzhDATASHaseDay,文件扩展名为:.day
上海周线存储路径为:D:dzhDATASHaseweek,文件扩展名为: .wek
上海月线存储路径为:D:dzhDATASHasemonth,文件扩展名为: .mnt
深圳日线存储路径为:D:dzhDATASZnseDay
深圳周线存储路径为:D:dzhDATASZnseweek
深圳月线存储路径为:D:dzhDATASZnsemonth
周线,月线格式与日线格式一致.
以深发展日线为例:
1A76:0100 D6 CD 2F 01 52 07 01 00-52 07 01 00 52 07 01 00
1A76:0110 52 07 01 00 86 0F 00 00-4D 02 00 00 00 00 00 00
1A76:0120 00 00 00 00 00 00 00 00-D7 CD 2F 01 60 03 01 00
1A76:0130 60 03 01 00 60 03 01 00-60 03 01 00 82 05 00 00
1A76:0140 D4 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
每一条记录的长度为40字节:
1-4字节为日期,D6 CD 2F 01转换为十进制是:19910102
5-8字节=开盘价(元)*1000
9-12字节=最高价(元)*1000
13-16字节=最低价(元)*1000
17-20字节=收盘价(元)*1000
21-24字节=成交金额(元)/1000
25-28字节=成交量(手)
其余12字节未使用
实现步骤:
1、先定义日线数据结构数组
2、再以实际记录数分配动态数组空间
3、然后把数据读入相应数组中
日线数据放在:%app_dir%\DATA\SHase\Day(上证A股) 以及 %app_dir%\DATA\SZnse\Day(深圳A股)
#pragma once
struct DZH5Day
{
unsigned long date//date的格式:20070423
unsigned long open//开盘价
unsigned long high//最高价
unsigned long low//最低价
unsigned long close//收盘价
unsigned long moneysum//成交金额
unsigned long turnover//成交数量
char unused[12]//保留
}
整个结构共40个字节,读者可以查看所有的日线文件,大小肯定是40的倍数
这样很容易读出相应的数据:
如:
FILE* pFile = fopen("600001.day", "rb")
if (NULL != pFile)
{
while(!feof(pFile))
{
DZH5Day dayK
fread(&dayK, sizeof(DZH5Day), 1, pFile)
......
}
}
-------------------------------------------------------------------------------------------------------
*.day文件,就是你的脱机个股资料,也就是脱机缓存。收市后你可以下载全部日线数据。如果不下载,那么你收市后看过的个股资料,会自动生成*.day文件。当你离线,你就只能看到这些个股的资料,别的个股资料空白。
*.day文件一般在cache文件夹内,例如:你有SH601398.day文件,你离线后就可以脱机查看工商银行的资料。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)