huyutian

他强由他强,清风拂山岗;他横由他横,明月照大江。他自狠来他自恶,我自一口真气足

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  20 随笔 :: 47 文章 :: 22 评论 :: 0 Trackbacks

搞股票的很多人都听说过Wind资讯,Wind的板块分类是比较准确和精细的,更新也比较及时。最近想将Wind的板块分类移植到我自己开发的股票系统中去,花时间分析了一下网络协议和文件结构,记录于此。
Wind的板块文件一般在..\Windin\WWT\etc目录下,与之相关的文件主要有
1=cntradedates.dat      国内A股历史交易日期列表
2=INDEXSECTORS.DAT      Wind指数名称及代码
3=RelatedSymbols.dat    A股与港股对照关系表
4=secbasicdelt.dat      已发行未上市股票?
5=secbasichis.dat       已摘牌股票
6=sysgrp.xml            板块分类名称及编号
7=SectorElementDelt.dat 板块数据文件
8=SectorElementHis.dat  板块数据文件
9=stocksplit.dat
10=currency.dat         汇率
11=SysConfig.ini        文件索引
12=etc.zip              Wind服务器地址文件
以上文件都是文本文件,文件结构比较简单,一看就能明白。下面主要分析下Wind是如何更新以上文件的。为了保证能够与Wind的分类实时自动同步,这个是必须的。
Wind在系统启动时会与服务器相连检查上述配置文件是否最新。检查办法是,发送HTTP请求到
http://114.80.214.51/FileServer/DataFile.aspx?cfg=etc,服务器会返回一份上述文件的MD5码表,与本地文件的MD5进行比对,如果不相同,就准备更新。下面是截取的服务器应答包。
888888?  base\chardword.config:1F3A230D00B3262E447991CDB8F60E35;
cntradedates.dat:39A8AF6359FB70D8002689ACC70BF3A3;
currency.dat:2738738EF3A3F949A012A952E020E408;
etc.zip:72DDCB3B5F8CD52F4F3B00AA77788C49;
hqafdelt.dat:D41D8CD98F00B204E9800998ECF8427E;
hqafhis.dat:9A0120E611A11E8BC77C5285E537EA2E;
indexsectors.dat:7FB9699D40F9C47F309308662D704293;
relatedsymbols.dat:535A2D3DF67E42CAF3DABD3B91F3FFC2;
relatedsymbolslocal.dat:79ED9E9A02D46B57AE612370DAB8B84C;
secbasicdelt.dat:15CE8DCB34C0620DE6A0871A7624B309;
secbasichis.dat:AFA640C33669FFD0342F022650DBD536;
secbasicself.dat:88502DE7F9C14CC642FE9855EDDE0EA7;
secbrief.dat:A87B901E8BE18C431B5CCA6EC36D7AD0;
sectorelementdelt.dat:3BC53A5D76602DE056ABB7758D81451A;
sectorelementhis.dat:1397955C466767DAF9587F59F923B6B4;
stocksplit.dat:D41D8CD98F00B204E9800998ECF8427E;
suspension.dat:7FBBAFB7AAD5E68356FEAF9DE38036AA;
sysgrp.xml:463FE2657F9EA4A4545140C01D12DA95;
warrantinfo.dat:AFB2EF0A32F1ACDA9A30A4B0FF6253D3

888888是wind服务器返回的数据包头,以sysgrp.xml为例其MD5码就是463FE2657F9EA4A4545140C01D12DA95
大家可以随便找个Md5计算文件比对一下就知道了。
下载板块文件的HTTP请求是
http://114.80.214.51/FileServer/DataFile.aspx?cfg=etc&type=1&files=cntradedates.dat;currency.dat;indexsectors.dat;relatedsymbols.dat;secbasicdelt.dat;sectorelementdelt.dat;stocksplit.dat;sysgrp.xml
注意如果只需要下载部分文件,可以把files=后面的文件列表改一改就可以了。
服务器返回的数据结构如下。


简单分析下包结构,数据包的开头仍然是888888的包头,接下来一个DWORD是本次下载的文件数目。再接下来是第一个文件的文件名,注意是PASCAL格式的字符串,字符串前面一个DWORD是字符串长度。然后以"1"或者说0x31,再后面是一个DWORD的该文件ZIP压缩包长,以及压缩数据长度,接着是第二个、第三个文件直到结束。好像也不很复杂哟,不过可是花了我一晚上的时间。
以上这些格式都搞清楚了,剩下的就是写下载同步的程序代码了。哈哈,这个就不多说了。

posted on 2011-04-21 17:09 胡雨田 阅读(1496) 评论(0)  编辑 收藏 引用 所属分类: 金融股票

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理