赞
踩
最近在学习量化分析,需要采集一些历史数据,虽然途径有很多,但通达信自带的数据是不错的获取途径。
但现有网上的资料大多说明不清晰,导致浪费了不少时间。现把自己的解析写出来,为各位爱好者提供帮助。
这里只涉及日线历史数据,主要是以.day文件存在( 还有eday fzline minline 等其他指标,暂时不详细讨论),包括的途径:
vipdoc\sh\lday —上海
vipdoc\sz\lday —深圳
vipdoc\ds\lday —扩展
vipdoc\cw 和vipdoc\ot 两个目录尚未明白,如果有高人请指点一二。
内容格式:
每32个字节为一天数据
每4个字节为一个字段,每个字段内低字节在前。
但每个文件格式有所不同,这是比较坑人的地方。
00 ~ 03 字节:年月日, 整型
04 ~ 07 字节:开盘价
08 ~ 11 字节:最高价
12 ~ 15 字节:最低价
16 ~ 19 字节:收盘价
20 ~ 23 字节:成交额(元)
24 ~ 27 字节:成交量(手)
28 ~ 31 字节:保留,一般都是0
其中开盘价、最高价、最低价、收盘价, 在sh或sz 中是整数,其中基金或债券等需要除以1000,普通股票和指数等则除以100,而在扩展行情中则是浮点数。
特别需要解释的是:
在上证 sh\lday 中,sh204xxx 表示逆回购债券,sh5xxxxx 表示基金,sh88xxxx 表示上海板块指数,sh90xxxx表示上证B股,sh99xxxx表示指数,其余sh6xxxxx是上证A股,sh000xxx 上海指数,其中有几个指标需要注意,sh000001与sh999999其实都是上证指数,
在深证 sz\lday 中,sz2xxxxx深圳B股,sz1318xx 深圳逆回购债券,sz1xxxxx 表示债券、基金,sz0xxxx深圳A股,sz3xxxxx 创业板,
在扩展 ds\lday 中,文件格式为 xx#xxxxx.day , 其中#前2位代码分别表示属性,如31#xxxxx 表示港股主板,71#xxxxx 表示港股通,47#xxxx表示债券等。
几个重要的代码:
sh99999 sh000001 上证指数,真的有两个代码,一样的数据
sh39001 深证成指
27#HSI 港股恒生指数
47#00405 港股越秀房产基金
31#01810 港股小米集团
71#01508 港股中国再保险
示例代码如下():
详细完整代码和程序可参考 通达信day格式文件转换(含港股和基金等)
// 如果认准一个目标,那么就遇事要忍,出手要狠,善后要稳 //希冀一旦产生,除了实现它,别无他法 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <io.h> union data { int n; float m; } int main() { FILE *fp; int nLen; int i=0; union data num[8]; // 把任意一个day文件拷贝为s.day,并以二进制方式打开 if( (fp=fopen("s.day","rb")) == NULL ) { printf("Fail to open file!"); exit(0); } while(!feof(fp)) { nLen = fread(num, sizeof(int), 8, fp); for(i=0;i<8;i++) { printf("i=%d ",i); // 把day的数据显示出来,可看到具体的数据,分别显示原始16进制数据、整数型和浮点数 printf("== %x and %d and %f \n",num[i].n,num[i].n,num[i].m); } } fclose(fp); return 0; }
这是sz000631 在20180115的数据
这是小米公司的上市首日的数据
不同的股票取值不同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。