马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
说明:
下面是我以前写一个小工具的时候,根据一些资料和自己实际的分析所得。Prp文件在最后一段,应该还有写库数据,不过不太感兴趣没去管它。
应该是最详尽的了,用Macd上的数据,基本上准确。
发出来,省得大家不停的作重复劳动,这个没啥技术含量。
Prp文件结构:
1、文件分成三个部分:
文件头:0-23字节
索引:24开始-266240之间,深圳的,这个数字已经改变。在文件头4-7字节计算。
数据:266240开始,分块存放数据
2、文件头:
0-3:标记,表示是PRP文件,所有文件该值均为F4 9B 13 Fc
4-7:int 类型,由这个值可以定位数据开始位置,数据开始位置=(整数-8)*64*8,目前是0x210或528,
由此计算数据开始位置是266240,考察分析家预留
的空间,短期内不会改变这个值。
深圳市场文件:00 03 00 00 =768
上海市场文件:10 02 00 00 =528
如果确实是这样,则我们处理深圳数据的时候,应该更改这个值!
如果这两个值到目前为止没有变化,则我们可以使用它来判断文件是存放上海还是深圳的行情。
最后确定,这个是开始读数据的地方,深圳文件在2002年的时候和上海一致的,最近改成了这个数字。为此我修改了程序.
8-11:日期,是C语言格式。表示存放的是哪天的数据。
12-15:股票数量,是4字节整数,但在4.0版是使用短整数读取的。所以若处理以前的文件,用短整数读比较保险。
16-19:整数,好像这个整数*256*32+266240=文件长度
20-23 (4 byte):下一个记录开始位置,写数据时用。我们好像不用管它。
3、索引:从24开始,到数据块的开始位置之前,索引块的结束位置由文件头的4-7决定。
从24开始,是每只股票的64个字节的索引。多少只股票由文件头的12-15确定。64个字节如下:
0-9 (10 byte):股票代码,如31 41 30 30 30 31 00 FF FF FF。
10-13 (4 byte):long int 类型,这个股票的总分笔数据个数。
14-63 (50 byte):short int 类型,共25个短整数,每个数据块的开始位置。数据块的开始位置=短整数*113*36+股票数据开始位置(由文件头4-7决定),遇-1(0xFFFF)结束。
4、数据:从4-7决定的位置开始,以块的形式确认。
我们通过索引找到块,索引中的股票分笔数据数目/113,如果余数不为0则+1,是块的数目;由此我们也能够按顺序的访问每条分笔数据,
即:序号/133,表示在哪一块,序号%133表示在该块的偏移。
在每一块内,是多条分笔行情记录的按顺序排列的数组,每笔行情包括36个字节:
16个字段,以下是相对位置。
0-3 (4 byte):time_t 类型,日期和时间。
4-7 (4 byte):float 类型,最新价(成交价)。
8-11 (4 byte):float 类型,成交量累计。
12-15 (4 byte):float 类型,成交额累计。
16-17 (2 byte):unsigned short int 类型,买一量。
18-19 (2 byte):unsigned short int 类型,买二量
20-21 (2 byte):unsigned short int 类型,买三量
22-23 (2 byte):unsigned short int 类型,卖一量
24-25 (2 byte):unsigned short int 类型,卖二量
26-27 (2 byte):unsigned short int 类型,卖三量
28-28 (1 byte):char 类型,买一价,实际值是这个有符号数除100加最新价。
29-29 (1 byte):char 类型,买二价,实际值是这个有符号数除100加最新价。
30-30 (1 byte):char 类型,买三价,实际值是这个有符号数除100加最新价。
31-31 (1 byte):char 类型,卖一价,实际值是这个有符号数除100加最新价。
32-32 (1 byte):char 类型,卖二价,实际值是这个有符号数除100加最新价。
33-33 (1 byte):char 类型,卖三价,实际值是这个有符号数除100加最新价。
34-35 (2 byte):为0080或00C0,内外盘。
注意,基金和权证,买一价之类是除以0.001 |