分享

大智慧数据格式

 读好书2019 2020-02-12

  SYSN.DTA 存放系统提供的公式 
  *.xml 动态显示牌不同页面布局文件 
  *.htk 快捷键文件

USERDATA 下的文件: 
  AUTOBLK.CFG: 自动板块设定 
  SELF.DTA 存放用户自编的公式

BLOCK 文件夹下的文件: 
  *.IBK 板块指数定义 
  *.BLK 板块定义 
  *.EBK 条件选股结果

SELF 文件夹下的文件: 
  *.WSV 保存页面文件 
  ALERT.DAT 历史预警纪录 
  EXTDATA.INF 扩展数据定义 
  *.CEP 保存组合条件选股条件 
  TEMPCMPD.CEP 测试附加条件 
  *.INV 用户个人投资纪录 
  *.TPT 保存指标模板 
  SELF 年月日 .DTA 每日自动公式备份文件 

TEST 文件夹下的文件: 
  *.TST 存放系统测试结果 
  *.OPT 存放参数优化的结果 
PARAM 参数指引文件夹 
   *.PRM 存放参数指引的结果

TABLE 文件夹下的文件: 
  *.ESS 数据表文件 
  *.ESD 数据表文件(带数据保存)

SelfData 文件夹下的文件: 
  *.str  字符串数据


  *.oth 与股票无关序列值数据

Pattern 文件夹下的文件

  *.PIN 模式匹配设计

  *.PWT 模式匹配方法

potAna 文件夹下的文件 :

  *.SPT 定位分析结果

Relate 文件夹下的文件 :

  *.RTL  相关分析结果

Posible 文件夹下的文件 :

  *.PSB  预测分布设计

DATA 件夹下的文件: 
  DAY.DAT 日线数据 
  EXTDAY.DAT 扩展数据 
  MIN.DAT 5 分钟线数据 
  REPORT.DAT 当天的分笔成交数据 
  STKINFO.DAT 代码表 / 即时行情数据 / 财务数据 / 除权数据 
  *.PRP 历史回忆数据,一天一个文件 
  abh.txt A 股、 B 股及 H 股相关信息文件 
NEWS 文件夹下的文件: 
  *.TXT 财经报道、上交所公告、深交所公告


大智慧新一代 2

大智慧二和大智慧三的日线数据格式没有变化。这个文档适用于c++开发人员。

以深圳为例 数据放在 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;

};

大智慧版块数据格式

关键的数据文件plank.ctf,plank.cxt。

其中ctf文件存放的是一个目录,是平行结构的。

而cxt文件则是存放具体板块下的股票代码数据。

格式分别为:

ctf格式:

该文件最前面的124个byte数据最好是舍弃不要。因为首先是基本上没有数据,其次,格式似乎跟后面的有些出入。从125个byte开始,每18个byte为一个板块的数据。

0~1 为某板块的股票个数

2~9 为该板块的名称(中文)

10~13 为该板块的股票的起始位置,该位置与cxt中对应。后面会详细介绍。

14~17 为该板块的股票的截止位置。同上。

该文件中间部分存在着很多无法正确获取名称的板块,但格式与这里是完全一致的。

cxt格式:

该文件,每12个byte为一个股票的数据。

0~3 为该股票的位置。此位置与ctf中的位置完全对应。

4~9 为该股票的代码

10~11 。

读出来后,ctf举例读出

板块名称 股票数 起始位置 截止位置

准权证 3 6545 6547

cxt中可以对应的找到

股票代码 位置

000752 6544

600873 -1(即那堆FFFF)

600688 6546

600795 6547

600028 -1

此时,从600688开始一直到600028就都是准权证板块的了。即起始位置所标注的下一个股票,截止位置所标注的下一个股票。就好了。这样通过这两个表的相互配合,就可以完成所有板块以及相关股票的对应关系了。


大智慧日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,散户线


大智慧新一代逐笔数据格式(L2D文件格式)

在Level-2之前,沪深交易所提供的都是行情快照,大家看到的分笔成交其实是两次快照期间累计的成交量和最后一笔的价格,而逐笔成交则是真实的每笔成交价和成交量的明细数据。逐笔成交极大地提高了行情的透明度。

Level-2的逐笔成交数据是缓存在dzh2\data\sh\TEMP目录下,文件名以证券代码为名,后辍是.L2D,如果重启大智慧,L2D文件会全部被删除,而且临时文件只有在浏览过该证券的逐笔成交后才会生成。

此文档只公布部分L2D格式:

位置

字节

含义

示例

解码结果

0x28

4

分笔成交总笔数

7C 1C 00 00

0x2a0

4

时间

5E E0 01 00

0x2a0 + 4

4

价格

B9 17 00 00

2

数量

2

买卖标志

20个字节为一个记录块,一共为320个记录块。


大智慧新一代4.01版本 最新行情数据结构

文件名是STKINFO60.DAT

文件的目录结构如下图:

代码10个字节


大智慧新一代一分钟线

大智慧1分钟线是通过分笔数据转换而来:

分笔数据解析格式得到结果如下:

1分钟线 由开盘 收盘 最高 最低 成交量 成交金额组成

举例说明 9:31一分钟线如何获得:

开盘

就是9:31的第一个时间的价格 15.35

收盘

15.40

最高

9:31此分钟最大值

最低

同上 求最小值

成交量

此一分钟现手和 666 + 815 + … + 3599

成交金额

每秒价格*现手 然后将结果相加。

15.35*666 + 15.38*815 + … 154.*3599

大智慧新一代分笔数据PRP格式(大智慧L2分笔数据PRP格式)

大智慧新一代分笔数据PRP格式(大智慧L2分笔数据PRP格式)

分笔数据保存 C:\dzh2\data\sh\20071025.prp

起止地址 数据内容 数据含义 数据类型

00 - 03 F4 9B 13 FC 日线文件标志 int

04 - 07 10 02 00 00 未知 int

08 - 0B 00 43 DF 46 1970.01.01 00:00:00始的秒数 int

0C - 0F 5D 05 00 00 证券总数 int

10 - 13 ED 20 00 00 未知 int

14 - 17 ED 20 00 00 未知 int

18 - 21 30 30 30 30 30 31 00 00 证券代码 byte[10]

22 - 25 9C 12 00 00 日分笔记录数 int

26 - 57 00 00 BA 03...FF FF 记录块号 char[25]

00041000 记录页起始点,

每记录长: 0x34 = 52

每页记录数: 0xEC = 236

每页长: 每记录长0x34 * 每页记录数0xEC = 0x2FF0 = 12272

地 址 数据内容 数据含义 数据类型

41000 - 41003 35 FA DF 46 1970.01.01 00:00:00 始的秒数 int

41004 - 41007 00 00 18 41 最新价 float

41008 - 4100B 00 80 B4 43 累计成交量 float

4100C - 4100F 80 46 A7 48 累计成交金额 float

41010 - 41011 51 9C 累计成交笔数 char

41012 - 41013 00 00 未知 char

41014 10 累计成交笔数的溢出标志(00|10) byte

41015 80 买入,卖出标识(80|E0买入,C0|A0卖出) byte

41016 - 41017 23 01 委买量1 char

41018 - 41019 8E 5B 委买量2 char

4101A - 4101B 80 27 委买量3 char

4101C - 4101D 8E 5B 委买量4 char

4101E - 4101F B8 40 委买量5 char

41020 - 41021 23 01 委卖量1 char

41022 - 41023 8E 5B 委卖量2 char

41024 - 41025 80 27 委卖量3 char

41026 - 41027 8E 5B 委卖量4 char

41028 - 41029 B8 40 委卖量5 char

4102A 16 委买价1 与成交价的差 byte

4102B 9A 委买价2 与成交价的差 byte

4102C 80 委买价3 与成交价的差 byte

4102D 40 委卖价4 与成交价的差 byte

4102E 30 委卖价5 与成交价的差 byte

4102F 57 委卖价1 与成交价的差 byte

41030 68 委卖价2 与成交价的差 byte

41031 69 委卖价3 与成交价的差 byte

41032 7A 委卖价4 与成交价的差 byte

41033 81 委卖价5 与成交价的差 byte

注意:

1.数据类型为JAVA数据类型定义,实际读数据时应该将数据十六进制取反,如:41000 - 41003的数据为 35 FA DF 46,实际应该读成:0x46DFFA35 = 1189083701, 这个1189083701值就是距1970.01.01 00:00:00 始的实际秒数。其他int,float,char都是这样取反的。

2.委买卖与成交价的差,是小数点后的整数差,如果买卖标识为80或C0,成交价小数点后是两位(股票),如果买卖标识为E0或A0,成交价小数点后是三位(权证等)

3.累计成交笔数如果溢出,则41014位上的值不为00,而是10或者20,30等,成交笔数计算方法应为:41014位上的值取第一位,10取前面的1,20取前面的2。。。 再与41010 - 41011位上的值合并成一个16进制串,本例中,实际值应该为0x19C51。

4.记录块号计算方法:char[0] = 0x00 第一个记录块起始地址为:41000h + 0x0000 * 0x2FF0 = 41000h,char[1] = 0x03BA 则第二个记录块起始地址为:41000h + 0x03BA * 0x2FF0 = 0x00077F78

5.记录块号计算方法:char[0] = 0x00 第一个记录块起始地址为:41000h + 0x0000 * 0xEC = 41000h,char[1] = 0x03BA 则第二个记录块起始地址为:41000h + 03BA * 0xEC = 0x00077F78

上面的页长应该是0x2FF0,而不是0xEC。


大智慧新一代Level-2日线文件day.dat数据格式

数据格式几乎与分析家相同

起止地址 数据内容 数据含义 数据类型

00 - 03 F4 9B 13 FC 文件标志 int

04 - 07 00 06 00 00 未知 int

08 - 0B 00 00 00 00 保留 int

0C - 0F 97 04 00 00 证券总数 int

10 - 13 00 18 00 00 未知 int

14 - 17 DB 17 00 00 未知 int

18 - 21 31 41 30 30 30...FF 证券代码 byte[10]

22 - 25 B0 09 00 00 日线记录数 int

26 - 57 00 00 25 04...FF FF 记录块号 char[25]

......

记录块开始于0x41000

41000 - 41003 80 47 B2 2B 日期 int

41004 - 41007 B9 1E 25 41 开盘价 float

41008 - 4100B CD CC 4C 41 最高价 float

4100C - 4100F EC 51 18 41 最低价 float

41010 - 41013 9A 99 41 41 收盘价 float

41014 - 41017 80 06 B2 47 成交量 float

41018 - 4101B 40 1C BC 4C 成交金额 float

4101C - 4101D 00 00 上涨家数 char

4101E - 4101F 00 00 下跌家数 char

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多