分享

券商网络接口分析方法(已经可以与通达信服务器行情数据连接!)(页 1) - 股软开源综合交...

 sumi2005 2010-12-03
大智慧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,散户线(这个好像不太正确,不知道为什么,可能分析有误)

jsyzc 发表于 2007-12-18 15:10

通达信股票分析软件日线数据格式

其每32个字节记录的是一日线数据:

其数据结构定义如下:

typedef struct mystructtag
{
    int date;
    int open;
    int high;
    int low;
    int close;
    int amount;
    int vol;
    int reservation;
} StockData;

jsyzc 发表于 2007-12-18 15:14

通信达分时数据格式

通达信的zst的数据记录是每6508个字节为一天的数据,每26个字节为一个分钟的记录,这26个字节是这样分配的,时间占两个字节化为十进制为570的话表示9:30分(570/60=9.5) 下一个是占四个字节的叫现价,再下四个字节叫均价,另外还有两个字节为该分钟成交量(现在有可能已经改为四个字节),剩下的14个字节是预留的,那么大家会发现用我以前所有介绍的方法求出的现价和均价都是个天文数字,和股票价格相差甚远但又有规律似的,一般好像玛雅人才用到似的,我介绍一种最简单的办法给大家去求价格的对应关系,大家任找门股票把他的在整数位价格对应的四个字节的16进制和价格位记下来,如4元对应40800000 其实这时你如果对zstli任意个16进制的价格x 想求出他的对应的真实价格,只要用过比例式就能求出,不过先别高兴去操作,因为并不是所有价格档次都是同个比例的,大家看下面的表对照一下,我已经帮大家总结到32的价格,可算到64块钱内个股票64和128元的各位有兴趣在回复中补上,补充一点就是该方法是我导师陈尹力教授指导下完成的,程序代码将公布在个人随笔里的思想里面,也是这个月四月发布,由于笔记本被偷失去很多资料,具体公布的东西仅供大家参考,也作为抛砖引玉,支持我的朋友请在回复中发表您的发现,丰富知识内容。
该算法适用与所有通达信行情软件,如南方证券,鑫网通达信行情软件,并且价格的换算算法对通达信的day日数据里面的价格也适用



RMB zst数据 zst数据10进制 1¥对应的16进制间隔 人民币间隔 1¥对应的10进制间隔
A B C D E F
0 3F800000 1065353216 400000 1¥ 4194304
4 40800000 1082130432 200000 1¥ 2097152
8 41000000 1090519040 100000 1¥ 1048576
16 41800000 1098907648 80000 1¥ 524288
32 42240000 1109655552 40000 1¥ 262144
    1118830592      

按比例算法求。设取到的数为X(化为十进制的了),那么(X-C)/real(x)=F/(1¥*1000) 扩大一千倍,其实以上的C和F就是你可以通过判断逻辑求出取哪个对应的哪个C只有real(x)未知
移动方程两边可求出准确的价格(均价可达到0.001精度),求出后的十进制价格是放大了1000倍的

jsyzc 发表于 2007-12-18 15:16

大智慧新一代 2.08.07.0907日线数据格式
  
   上海日线存储文件为:C:\dzh2\data\sh\day.dat
   深圳日线存储文件为:C:\dzh2\data\sz\day.dat
  
   以上海日线存储文件day.dat为例:
  
   00000h: F4 9B 13 FC 10 02 00 00-00 00 00 00 D1 04 00 00
   00000h: 81 0C 00 00 48 0C 00 00-31 41 30 30 30 31 00 FF
   00020h: FF FF B0 09 00 00 16 00-17 00 18 00 19 00 1A 00
   00030h: 1B 00 1C 00 1D 00 1E 00-07 0A FF FF FF FF FF FF
   00040h: FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF
   00050h: FF FF FF FF FF FF FF FF
   ......
   ......
   41000h: 80 47 B2 2B B9 1E 25 41-CD CC 4C 41 EC 51 18 41
   41010h: 9A 99 41 41 80 06 B2 47-40 1C BC 4C 00 00 00 00
   41020h: 00 3C B6 2B 34 33 3F 41-AF 47 49 41 01 00 30 41
   41030h: 34 33 3B 41 00 07 12 47-A4 3C 26 4C 00 00 00 00
  
   该文件格式与磁盘文件物理存储方式类似:
  
   起止地址 数据内容 数据含义 数据类型
   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
   14 - 17 48 0C 00 00 当前最后空块号 Integer
   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]
   ......
   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
  
   注:
   1)起止地址、数据内容为十六进制,数据类型为 Delphi 下之定义。
   2)从18h开始至40017h每64byte为一条股票数据分配记录,含义如上表18h - 57h所示;
   3)从41000h开始每8KB为一股票数据存储块,每个股票数据存储块共存储256条日线记录,每一条记录的长度为32 byte(含义如上表;上涨家数及下跌家数只对指数有效);
   4)从41000h开始的8KB为第0号数据存储块,以后类推;
   5)系统对每个股票日线数据存储以存储块为单位进行分配。
   6)具体应用实例分析家数据管理程序。
   7) 日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数。

jsyzc 发表于 2007-12-18 15:16

同花顺日线数据格式

日数据格式为
64个字节的文件头,另外每48个字节为一天纪录
日期 32位 4个字节
开盘 32位无符号整型 4个字节
最高 32位无符号整型 4个字节
最低 32位无符号整型 4个字节
收盘 32位无符号整型 4个字节
跳过? 32位 4个字节
成交量 32位 4个字节
跳过? 20个字节

以上跳过部分只有最后4个字节未使用
跳过部分包含数值,涨幅,振幅,总成交金额,换手率。

jsyzc 发表于 2007-12-18 15:34

分析家3.1x版数据存储格式 ()
  
   上海日线存储文件为:\superstk\data\sh\day.dat
   深圳日线存储文件为:\superstk\data\sz\day.dat
  
   以上海日线存储文件day.dat为例:
  
   00000h: F4 9B 13 FC 10 02 00 00-00 00 00 00 D1 04 00 00
   00000h: 81 0C 00 00 48 0C 00 00-31 41 30 30 30 31 00 FF
   00020h: FF FF B0 09 00 00 16 00-17 00 18 00 19 00 1A 00
   00030h: 1B 00 1C 00 1D 00 1E 00-07 0A FF FF FF FF FF FF
   00040h: FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF
   00050h: FF FF FF FF FF FF FF FF
   ......
   ......
   41000h: 80 47 B2 2B B9 1E 25 41-CD CC 4C 41 EC 51 18 41
   41010h: 9A 99 41 41 80 06 B2 47-40 1C BC 4C 00 00 00 00
   41020h: 00 3C B6 2B 34 33 3F 41-AF 47 49 41 01 00 30 41
   41030h: 34 33 3B 41 00 07 12 47-A4 3C 26 4C 00 00 00 00
  
   该文件格式与磁盘文件物理存储方式类似:
  
   起止地址 数据内容 数据含义 数据类型
   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
   14 - 17 48 0C 00 00 当前最后空块号 Integer
   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]
   ......
   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
  
   注:
   1)起止地址、数据内容为十六进制,数据类型为 Delphi 下之定义。
   2)从18h开始至40017h每64byte为一条股票数据分配记录,含义如上表18h - 57h所示;
   3)从41000h开始每8KB为一股票数据存储块,每个股票数据存储块共存储256条日线记录,每一条记录的长度为32 byte(含义如上表;上涨家数及下跌家数只对指数有效);
   4)从41000h开始的8KB为第0号数据存储块,以后类推;
   5)系统对每个股票日线数据存储以存储块为单位进行分配。
   6)具体应用实例分析家数据管理程序。
   7) 日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数。
  

radarbaron 发表于 2007-12-18 16:03

楼上强人,虽然不懂,还是顶个先

i51stock 发表于 2007-12-18 16:47

这是从SECURE.DLL导出的函数

但是直接使用DecryptBuf来解密的话,总是解不出来.
附件是SECURE.DLL中的函数.
知道使用方法的请告诉我们!

[[i] 本帖最后由 i51stock 于 2007-12-18 16:49 编辑 [/i]]

neckman 发表于 2009-1-3 13:45

i51stock你还在研究不??

i51stock 发表于 2009-1-6 20:18

[b] [url=http://www./redirect.php?goto=findpost&pid=13395&ptid=1085]29#[/url] [i]neckman[/i] [/b]

   这几天继续看了通达信和大智慧的行情服务器数据格式。
偶有一得:
      上述二者服务器的行情数据都是采用ZLIB里提供的压缩函数来压缩的。
但是因为版本的不同,到底采用何种方式的压缩方式换没有分析出来了!
     如果确认了,压缩方式,那么本站的股软又有了一种直接接入券商行情
服务器的路径。
      ZLIB.DLL的函数使用演示程序已经完成,现在正在确认压缩方式。

   如果哪位知道,希望能告诉我哦!

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多