大智慧日 K线的数据结构
一、 数据文件和数据结构:
大智慧数据文件和数据结构: (假设大智慧股票行情软件安装在 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);
......
}
}
大智慧Internet版 5.58.2760 的数据格式
上海日线数据目录: C:\dzh\DATA\SHase\Day
深圳日线数据目录: C:\dzh\DATA\SZnse\Day
每个数据块 40个字节。
每个文件一开头就是日数据, 不像有些股软数据开始有一些格式。
每日数据一共为 40个字节。
第一个四字节: 日期, 转换为十进制即可。
第二个四字节: 开盘, 除以 1000
第三个四字节: 最高, 除以 1000
第四个四字节: 最低, 除以 1000
第五个四字节: 收盘, 除以 1000
第六个四字节: 成交额, 除以 10
第七个四字节: 成交量
第八个四字节: 散户线
第九个四字节: 似乎无用
第十个四字节: 似乎与散户线有关
下边以601988 为例说明一下:
打开文件 601988.day , 看到最后四十个字节为:
EC 1A 32 01 C6 0C 00 00
DA 0C 00 00 BC 0C 00 00 D0 0C 00 00 A9 5D 01 00
02 2C 04 00 D3 00 00 00 00 00 00 00 00 00 00 00
第一个四字节: EC 1A 32 01 , 十六进制为 0x01321AEC , 转换为十进制就是 20060908 , 是日期
第二个四字节: C6 0C 00 00 , 十六进制为 0x0CC6 , 转换为十进制就是 3270 , 除以1000 为3.27 , 是开盘
价
第三个四字节: DA 0C 00 00 , 十六进制为 0x0CDA, 转换为十进制就是 3290 , 除以1000 为3.29 , 是最高
价
第四个四字节: BC 0C 00 00 , 十六进制为 0x0CBC, 转换为十进制就是 3260 , 除以1000 为3.26 , 是最低
价
第五个四字节: D0 0C 00 00 , 十六进制为 0x0CD0, 转换为十进制就是 3280 , 除以1000 为3.28 , 是收盘
价
第六个四字节: A9 5D 01 00, 十六进制为 0x00015DA9 , 转换为十进制就是 89513 , 除以10为8951.3 ,
是成交额
第七个四字节: 02 2C 04 00 , 十六进制为 0x00042C02 , 转换为十进制就是 273410 , 是成交量
第八个四字节: D3 00 00 00 , 十六进制为 0xD3, 转换为十进制为 211 , 散户线