http://www.docin.com/p-734977735.html
大智慧除权数据
股票数据格式文档 2009.11.09 增加大智慧权息数据格式
权息数据文件为 full.PWR 基本数据结构如下
struct pwr_Data
{
__time32_t t1;
float f1;
float f2;
float f3;
float f4;
};
导出数据格式为:
时间 送股 配股 配股价 分红
2008-10-31 0.300 0.000 0.000 0.034
2007-06-20 0.100 0.000 0.000 0.009
2003-09-29 0.000 0.000 0.000 0.150
2002-07-23 0.000 0.000 0.000 0.150
2000-11-06 0.000 0.300 8.000 0.000
1999-10-18 0.000 0.000 0.000 0.600
1997-08-25 0.500 0.000 0.000 0.200
1996-05-27 1.000 0.000 0.000 0.000
1995-09-25 0.200 0.000 0.000 0.300
1994-07-11 0.500 0.000 0.000 0.500
1994-07-09 0.000 0.100 5.000 0.000
1993-05-24 0.850 0.100 16.000 0.300
1992-03-23 0.500 0.000 0.000 0.200
full.pwr数据结构
数据结构
大智慧level2的除权数据文件为\Download\PWR\full.PWR,数据以二进制格式存储,其格式如下
00000000h: 32 C8 43 FF DD 83 CC FF FF FF FF FF 53 5A 30 30 ; 2庵?輧?????SZ00
00000010h: 30 30 30 31 00 00 00 00 00 00 00 00 80 1F CD 29 ; 0001……..?.?
00000020h: 00 00 00 3F 00 00 00 00 00 00 00 00 CD CC 4C 3E ; …?……..吞L>
00000030h: 00 10 00 2C 9A 99 59 3F 00 00 00 00 00 00 00 00 ; …,僵Y?……..
00000040h: 9A 99 99 3E 00 10 00 2C 00 00 00 00 CD CC CC 3D ; 僵?…,….吞?
00000050h: 00 00 80 41 00 00 00 00 80 8B 20 2E 00 00 00 3F ; ..?A….??….?
00000060h: 00 00 00 00 00 00 00 00 00 00 00 3F 80 E8 1D 2E ; ………..???.
00000070h: 00 00 00 00 CD CC CC 3D 00 00 A0 40 00 00 00 00 ; ….吞?..燖….
00000080h: 00 F1 65 30 CD CC 4C 3E 00 00 00 00 00 00 00 00 ; .馿0吞L>……..
00000090h: 9A 99 99 3E 80 F0 A8 31 00 00 80 3F 00 00 00 00 ; 僵??皎1..??….
000000a0h: 00 00 00 00 00 00 00 00 00 CB 00 34 00 00 00 3F ; ………?4…?
000000b0h: 00 00 00 00 00 00 00 00 CD CC 4C 3E 00 63 0A 38 ; ……..吞L>.c.8
000000c0h: 00 00 00 00 00 00 00 00 00 00 00 00 9A 99 19 3F ; …………僵.?
000000d0h: 80 F4 05 3A 00 00 00 00 9A 99 99 3E 00 00 00 ; ??:….僵?…
从第13个字节开始就是分红数据,股票代码为8个字节,其后8个字节留空,后面是历次的分红日期及分红方式,最后以”FF FF FF FF”结束,如该股票没有分红记录则其记录长度为最小的20字节。一条分红记录占20个字节,依次是
日期 4Byte,32位整数,距1970-01-01的秒数
送股+转增股 4Byte,Single,每股送股数加每股转增股数,具体的方式此文件中没有记录
配股 4Byte,Single,每股配股数
配股价 4Byte,Single,每股配股价
分红 4Byte,Single,每股分红
以下是提取数据的原代码:
BinaryReader sReader = new BinaryReader(File.Open(@”D:\Program Files\dzh2\Download\PWR\full.PWR”, FileMode.Open));
sReader.BaseStream.Position = 12;
int k;
while(sReader.BaseStream.Length>sReader.BaseStream.Position)
{
Console.WriteLine(System.Text.Encoding.Default.GetString(sReader.ReadBytes(8)));
sReader.BaseStream.Position += 8;
k = sReader.ReadInt32();
while (k > 0)
{
Console.WriteLine(DateTime.Parse(“1970-01-01”).AddSeconds(k));
Console.WriteLine(sReader.ReadSingle());
Console.WriteLine(sReader.ReadSingle());
Console.WriteLine(sReader.ReadSingle());
Console.WriteLine(sReader.ReadSingle());
if (sReader.BaseStream.Length > sReader.BaseStream.Position)
k = sReader.ReadInt32();
else
break;
}
}
sReader.Close();
大智慧:
日线数据文件day.dat
case DataTypes.hq:
fileName = “DAY.DAT”;
startAddress = 0x41000;
blockSize = 8192;
recordSize = 32;
codeIsLong = false;
fieldString =
“dm,代码,code,10,0,0,;” +
“rq,日期,date,4,1,0,;” +
“kp,开盘,single,4,2,4,B;” +
“zg,最高,single,4,3,8,B;” +
“zd,最低,single,4,4,12,B;” +
“sp,收盘,single,4,5,16,B;” +
“sl,成交数量,single,4,6,20,A;”+
“je,成交金额,single,4,7,24,”;
数据格式几乎与分析家相同
起止地址 数据内容 数据含义 数据类型
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
注:
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日的天数。
有关块号计算方法,请参见分笔成交数据格式
日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);
即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数
1分钟数据文件min1.dat
case DataTypes.hq1:
fileName = “MIN1.DAT”;
startAddress = 0x41000;
blockSize = 12288;//8192
recordSize = 32;
codeIsLong = false;
fieldString =
“dm,代码,code,10,0,0,;” +
“rq,日期,datetime,4,1,0,;” +
“kp,开盘,single,4,2,4,B;” +
“zg,最高,single,4,3,8,B;” +
“zd,最低,single,4,4,12,B;” +
“sp,收盘,single,4,5,16,B;” +
“sl,成交数量,single,4,6,20,A;”+
“je,成交金额,single,4,7,24,”;
5分钟数据文件min.dat
case DataTypes.hq5:
fileName = “MIN.DAT”;
startAddress = 0x41000;
blockSize = 8192;
recordSize = 32;
codeIsLong = false;
fieldString =
“dm,代码,code,10,0,0,;” +
“rq,日期,datetime,4,1,0,;” +
“kp,开盘,single,4,2,4,B;” +
“zg,最高,single,4,3,8,B;” +
“zd,最低,single,4,4,12,B;” +
“sp,收盘,single,4,5,16,B;” +
“sl,成交数量,single,4,6,20,A;” +
“je,成交金额,single,4,7,24,”;
最新行情STKINFO60.dat
case DataTypes.hq0:
fileName = “STKINFO60.DAT”;
startAddress = 0x68A8A6;
blockSize = 0;
recordSize = 273;
codeIsLong = false;
isIndexDataStruct = false;
fieldString =
“dm,代码,code,10,0,0,;” +
“jc,简称,string,32,1,10,;” +
“rq,更新时间,datetime,4,5,60,;” +
“zs,昨收,single,4,7,68,;” +
“kp,今开,single,4,8,72,;” +
“zg,最高,single,4,9,76,;” +
“zd,最低,single,4,10,80,;” +
“sp,最新,single,4,11,84,;” +
“sl,总手数,single,4,12,88,;” +
“je,金额,single,4,13,92,;” +
“xss,现手数,single,4,14,96,;” +
“ztj,涨停价,single,4,27,184,;” +
“dtj,跌停价,single,4,28,188,;” +
“np,内盘,single,4,27,192,;” +
“wp,外盘,single,4,28,196,;” +
“mrjg1,买一价,single,4,15,100,;” +
“mrsl1,买一量,single,4,18,120,;” +
“mrjg2,买二价,single,4,16,104,;” +
“mrsl2,买二量,single,4,19,124,;” +
“mrjg3,买三价,single,4,17,108,;” +
“mrsl3,买三量,single,4,20,128,;” +
“mrjg4,买四价,single,4,32,112,;” +
“mrsl4,买四量,single,4,34,132,;” +
“mrjg5,买五价,single,4,33,116,;” +
“mrsl5,买五量,single,4,35,136,;” +
“mcjg1,卖一价,single,4,21,140,;” +
“mcsl1,卖一量,single,4,24,160,;” +
“mcjg2,卖二价,single,4,22,144,;” +
“mcsl2,卖二量,single,4,25,164,;” +
“mcjg3,卖三价,single,4,23,148,;” +
“mcsl3,卖三量,single,4,26,168,;” +
“mcjg4,卖四价,single,4,36,152,;” +
“mcsl4,卖四量,single,4,38,172,;” +
“mcjg5,卖五价,single,4,37,156,;” +
“mcsl5,卖五量,single,4,39,176,”;
//”jd,精度,int,4,3,52,;” +
//”scbz,删除标志,int,4,4,56,”;
//”unknown,(未知),int,4,31,164,;” +
//”,(未知),,48,40,200,;”
分笔成交数据文件report.dat(结构同day.dat,但其中一些数据不是直接保存)
case DataTypes.hqmb:
fileName = “REPORT.DAT”;
startAddress = 0x41000;
blockSize = 12272;
recordSize = 52;
codeIsLong = false;
isIndexDataStruct = false;//不完全等同于day.dat结构,因此单独处理
fieldString =
“dm,代码,code,10,0,0,;” +
“rq,日期,datetime,4,0,0,;” +
“zjcj,最近成交价,single,4,1,4,;” +
“zss,总手数,single,4,2,8,calc;” +
“je,金额,single,4,3,12,;” +
“xss,现手数,single,4,2,8,;” +
“mm,内外盘,string,2,16,21,;” +
“mr1jg,买一价,single,1,10,42,;” +
“mr1sl,买一量,single,2,4,22,;” +
“mr2jg,买二价,single,1,11,43,;” +
“mr2sl,买二量,single,2,5,24,;” +
“mr3jg,买三价,single,1,12,44,;” +
“mr3sl,买三量,single,2,6,26,;” +
“mr4jg,买四价,single,1,12,45,;” +
“mr4sl,买四量,single,2,6,28,;” +
“mr5jg,买五价,single,1,12,46,;” +
“mr5sl,买五量,single,2,6,30,;” +
“mc1jg,卖一价,single,1,13,47,;” +
“mc1sl,卖一量,single,2,7,32,;” +
“mc2jg,卖二价,single,1,14,48,;” +
“mc2sl,卖二量,single,2,8,34,;” +
“mc3jg,卖三价,single,1,15,49,;” +
“mc3sl,卖三量,single,2,9,36,;”+
“mc4jg,卖四价,single,1,14,50,;” +
“mc4sl,卖四量,single,2,8,38,;” +
“mc5jg,卖五价,single,1,14,51,;” +
“mc5sl,卖五量,single,2,8,40,;” +
“bs,总笔数,int,2,0,16,”
;
//以上数据类型不是存储类型,程序中不直接用实际数据类型:买/卖X量为short,买/卖X价为byte
//现手数通过当总手数计算而得,应该放在总手数后面
大智慧新一代Level-2 分笔成交数据格式
起止地址 数据内容 数据含义 数据类型
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、如有疑问请与 QQ 8588711 联系,愿与您共同挖掘股票成交数据。
2、数据类型为JAVA数据类型定义,实际读数据时应该将数据十六进制取反,如:41000 – 41003的数据为 35 FA DF 46,实际应该读成:
0x46DFFA35 = 1189083701, 这个1189083701值就是距1970.01.01 00:00:00 始的实际秒数。其他int,float,char都是这样取反的。
3、委买卖与成交价的差,是小数点后的整数差,如果买卖标识为80或C0,成交价小数点后是两位(股票),如果买卖标识为E0或A0,
成交价小数点后是三位(权证等)
4、累计成交笔数如果溢出,则41014位上的值不为00,而是10或者20,30等,成交笔数计算方法应为:41014位上的值反转,
10转为01,20转为02。。。 再与41010 – 41011位上的值合并成一个16进制串。
5、记录块号计算方法:char[0] = 0x00 第一个记录块起始地址为:41000h + 0x0000 * 0x2FF0 = 41000h,char[1] = 0x03BA
则第二个记录块起始地址为:41000h + 0x03BA * 0x2FF0 = 0x00077F78
标签: 财经
近日发现Level-2的逐笔成交数据是缓存在dzh2/data/sh/TEMP目录下,文件名以证券代码为名,后辍是.L2D,如果重启大智慧,
L2D文件会全部被删除,而且临时文件只有在浏览过该证券的逐笔成交后才会生成,不过花的时间也不算太多。也许以后会要研究
逐笔成交数据了,这样的数据更有意义,读数据不是问题,最主要的是分析方法,当得到盘口异动数据后,还需要结合信息面来操作,
这样的成功几率非常大,我已经初尝胜果。后面,还要通过数据来分析大盘走势,还有通过行业数据异动,发现基金等大资金的中短期
目标,这点也非常之重要。这个十一假期,过得不会很闲,还有很多东西要做、、、 现在也不想接受QQ加好友请求,真正做数据盘口
分析的,发现数据格式,马上就已经投入战斗了,而且一看就会明了。在这个市场,每个人都有自己的方式生存,没有拿手绝活,那
是不要随便来玩的。逐笔成交数据格式,大概也会在不久后弄个明白。
财务数据(简单)STKINFO60.dat
case DataTypes.cw0:
fileName = “STKINFO60.DAT”;
startAddress = 0x4c2a;
blockSize = 2227;
recordSize = 273;//196
codeIsLong = false;
isIndexDataStruct = false;
fieldString =
“dm,代码,code,10,0,0,;” +
“rq,报告期,date,4,0,4,;” +
“gxrq,更新日期,date,4,0,0,;” +
“ssrq,上市日期,date,4,0,8,;” +
“col1,每股收益,single,4,0,12,;” +
“col2,每股净资产,single,4,0,16,;” +
“col3,净资产收益率,single,4,0,20,;” +
“col4,每股经营现金,single,4,0,24,;” +
“col5,每股公积金,single,4,0,28,;” +
“col6,每股未分配,single,4,0,32,;” +
“col7,股东权益比,single,4,0,36,;” +
“col8,净利润同比,single,4,0,40,;” +
“col9,主营收入同比,single,4,0,44,;” +
“col10,销售毛利率,single,4,0,48,;” +
“col11,调整每股净资产,single,4,0,52,;” +
“col12,总资产,single,4,0,56,;” +
“col13,流动资产,single,4,0,60,;” +
“col14,固定资产,single,4,0,64,;” +
“col15,无形资产,single,4,0,68,;” +
“col16,流动负债,single,4,0,72,;” +
“col17,长期负债,single,4,0,76,;” +
“col18,总负债,single,4,0,80,;” +
“col19,股东权益,single,4,0,84,;” +
“col20,资本公积金,single,4,0,88,;” +
“col21,经营现金流量,single,4,0,92,;” +
“col22,投资现金流量,single,4,0,96,;” +
“col23,筹资现金流量,single,4,0,100,;” +
“col24,现金增加额,single,4,0,104,;” +
“col25,主营收入,single,4,0,108,;” +
“col26,主营利润,single,4,0,112,;” +
“col27,营业利润,single,4,0,116,;” +
“col28,投资收益,single,4,0,120,;” +
“col29,营业外收支,single,4,0,124,;” +
“col30,利润总额,single,4,0,128,;” +
“col31,净利润,single,4,0,132,;” +
“col32,未分配利润,single,4,0,136,;” +
“col33,总股本,single,4,0,140,;” +
“col34,无限售股合计,single,4,0,144,;” +
“col35,A股,single,4,0,148,;” +
“col36,B股,single,4,0,152,;” +
“col37,境外上市股,single,4,0,156,;” +
“col38,其他流通股,single,4,0,160,;” +
“col39,限售股合计,single,4,0,164,;” +
“col40,国家持股,single,4,0,168,;” +
“col41,国有法人股,single,4,0,172,;” +
“col42,境内法人股,single,4,0,176,;” +
“col43,境内自然人股,single,4,0,180,;” +
“col44,其他发起人股,single,4,0,184,;” +
“col45,募集法人股,single,4,0,188,;” +
“col46,境外法人股,single,4,0,192,;” +
“col47,境外自然人股,single,4,0,196,;” +
“col48,优先股或其他,single,4,0,200,”;
分红送配STKINFO60.dat
case DataTypes.cq:
fileName = “STKINFO60.DAT”;
startAddress = 0x44aa;
blockSize = 2227;
recordSize = 20;
codeIsLong = false;
isIndexDataStruct = false;
fieldString =
“dm,代码,code,10,0,0,;” +
“rq,日期,date,4,0,0,;” +
“sgbl,送股比例,single,4,1,4,;” +
“pgbl,配股比例,single,4,2,8,;” +
“pgjg,配股价格,single,4,3,12,;” +
“fh,分红,single,4,4,16,”;
代码表STKINFO60.dat
case DataTypes.dm:
fileName = “STKINFO60.DAT”;
startAddress = 0x68A8A6;
blockSize = 0;
recordSize = 273;//fxj248
codeIsLong = false;
isIndexDataStruct = false;
fieldString =
“dm,代码,code,10,0,0,;” +
“jc,简称,string,32,1,10,”;
通达信行业、板块与自定义指数 (2015-09-01 17:58:00)
来源:醉眠春晓的博客 http://blog.sina.com.cn/s/blog_623d2d280102vt8y.html
本文综合了从网络上搜集资料,描述了通达信股票软件中行业、板块、自定义板块、通达信指数相关的数据存储的文件及文件的格式。
相关文件:
incon.dat
T0002\hq_cache\block.dat
T0002\hq_cache\block_gn.dat
T0002\hq_cache\block_fg.dat
T0002\hq_cache\block_zs.dat
T0002\hq_cache\tdxhy.cfg
T0002\hq_cache\tdxzs.cfg
T0002\blocknew\blocknew.cfg
1 行业
行业包括三个类别:证监会行业;申万行业;通达信新行业
行业在文件“incon.dat”中定义。文件格式:
1) 文件包含多个行业分类:
2) 每个分类中,每一行包含一个细分行业的代码和名称,以“|”分隔
示例如下:
incon.dat
代码|名称
#ZJHHY
A|农业
A01|农业
A0101|种植业
A0199|其他农业
A03|林业
A0301|林业
……
######
#TDXNHY
T01|能源
T0101|煤炭
T010101|煤炭开采
T010102|焦炭加工
T0102|电力
T010201|水力发电
T010202|火力发电
T010203|新型电力
……
######
#SWHY
110000|农业
110100|种植业
110101|种子生产
110102|粮食种植
110103|其他种植业
110200|渔业
……
######
每个股票对应的申万行业和通达信行业记录在文件T0002\hq_cache\tdxhy.cfg中。
T0002\hq_cache\tdxhy.cfg
市场|股票代码|通达信新行业代码|申万行业代码
0|000001|T1001|440101
0|000002|T110201|430101
0|000004|T040502|370301
0|000005|T110202|430101
0|000006|T110202|430101
0|000007|T0604|460201
0|000008|T1301|510101
0|000009|T110201|430101
0|000010|T110101|250202
0|000011|T110202|430101
0|000012|T020603|250101
0|000014|T110201|430101
2 通达信自定义板块
通达信定义的板块通过如下四个板块文件描述:
T0002\hq_cache\block.dat
T0002\hq_cache\block_gn.dat
T0002\hq_cache\block_fg.dat
T0002\hq_cache\block_zs.dat
数据格式的C语言描述如下:
//股票板块信息文件头格式,T0002/hq_cache/block.dat block_fg.dat block_gn.datblock_zs.dat
struct TTDXBlockHeader
{
};
struct TTDXBlockIndex
{
};
struct TTDXBlockRecord
{
;
;
};
3 用户自定义板块
基本目录:T0002\blocknew
配置文件:blocknew.cfg
配置文件存储格式:
1) 每个板块120字节
2) 板块名称50字节
3) 板块文件名头70字节
//自定义板块概述文件格式,T0002\blocknew\blocknew.cfg
structTTDXUserBlockRecord
{
};
板块列表文件: *.blk
1) 每行一条记录:每个记录7个数字:
T0002\blocknew\ZXG.blk
市场 股票代码
1999999
0399001
0399005
0399006
1000016
1000300
0399330
4 通达信自定义指数
通达信自定义指数记录在文件T0002\hq_cache\tdxzs.cfg中,每行一条记录,每个记录包含6个字段,字段之间用“|”分隔。字段依次为:
1) 指数名称
2) 指数代码
3) 对应板块/行业类别:2-通达信行业板块 3-地区板块 4-概念板块 5-风格板块 8-申万行业
4) 未知字段:都为1
5) 未知字段:为0或1
6) 行业代码或板块名称:
T0002\hq_cache\tdxzs.cfg
指数名称|指数代码|类别|未知字段|未知字段|行业代码或板块代码
黑龙江|880201|3|1|0|1
新疆板块|880202|3|1|0|2
吉林板块|880203|3|1|0|3
甘肃板块|880204|3|1|0|4
……
煤炭|880301|2|1|0|T0101
煤炭开采|880302|2|1|1|T010101
焦炭加工|880303|2|1|1|T010102
电力|880305|2|1|0|T0102
水力发电|880306|2|1|1|T010201
股票软件数据格式详解之–通达信数据格式
通达信数据不是钱龙格式的。但很容易转化成钱龙格式,稍微懂点数据格式的朋友都容易转化。钱龙是长整型的数据,通达信是单精度型数据。钱龙一天数据占40个字节,通达信占32个字节。大智慧和钱龙的格式是一样的。
通达信数据格式:
1-4字节 Date:LongInt; //日期
5-8字节 OPen:LongInt; //开盘*100(元)
9-12字节 High:LongInt; //最高价*100(元)
13-16字节 Low:LongInt; //最低价*100(元)
17-20字节 Close:LongInt; //收盘*100(元)
21-24字节 single; //Amount
25-28字节 Volume:LongInt; //Volume 成交量(股)
29-32字节 // Reserved
其数据结构定义如下:
typedef struct mystructtag
{
int date;
int open;
int high;
int low;
int close;
int amount;
int vol;
int reservation;
} StockData;
基本声明
Public NumBase(5) As Long ‘通达信格式基数
Public NumUnit(4) As Long ‘每单位对应的16进制数
Public NumUnitPrice(4) As Long ‘每单位对于的10进制数,已被从元为单位扩大1000倍
基本模块
Public Sub intTDXelg()Sub intTDXelg()
NumBase(0) = 1065353216 : NumBase(1) = 1082130432 : NumBase(2) = 1090519040 : NumBase(3) = 1098907648 : NumBase(4) = 1109655552 ‘: NumBase(5) = 1118830592
NumUnit(0) = 4194304 : NumUnit(1) = 2097152 : NumUnit(2) = 1048576 : NumUnit(3) = 524288 ‘: NumUnit(4) = 262144
NumUnitPrice(0) = 0 : NumUnitPrice(1) = 4000 : NumUnitPrice(2) = 8000 : NumUnitPrice(3) = 16000 ‘: NumUnitPrice(4) = 32000
End Sub
在form load 事件中调用intTDXelg
Public Structure stockDayRecordStructure stockDayRecord ‘保存一门股票的日数据信息
Dim stockdate As Date
Dim openor As Single
Dim hightor As Single
Dim lowor As Single
Dim endor As Single
Dim changor As Integer
Dim id As Integer
Dim VbP As Integer
End Structure
Public Function getRealPrice()Function getRealPrice(ByVal formerPrice As Long) As Long ‘注意移植此函数是要把公共变量NumBase预NumUnit移动移植
Dim i As Integer
For i = 1 To 4 ‘该函数可返回32元人民币以下对于的准确价格
If formerPrice < NumBase(i) Then
getRealPrice = (Val((formerPrice – NumBase(i – 1)) & “000”) / NumUnit(i – 1)) + NumUnitPrice(i – 1)
Exit For ‘ & 000 相当于 * 1000,以‰为单位
End If
Next i
End Function
读取模块
Function LoadDayData()Function LoadDayData(ByVal filename As String, ByRef dr() As stockDayRecord, ByVal t As Short) As Long
‘股票读取接口,第一个参数为装载股票数据的结构体
Dim fs As FileStream = File.OpenRead(filename)
Dim br As New BinaryReader(fs)
Dim n As Integer
Dim i As Integer, j As Integer
Select Case t
Case 1 ‘中天
Case 2 ‘通达信 暂时不用
n = (fs.Length – 4) / 32
LoadDayData = n
ReDim dr(n)
br.ReadInt32() ‘文件头到底是什么,另外是头天顺序颠放到了某个地方
For i = 1 To n
Dim d As Integer = br.ReadInt32()
dr(i).stockdate = DateSerial(d / 10000, (d Mod 10000) / 100, d Mod 100)
dr(i).openor = getRealPrice(br.ReadInt32) / 1000
dr(i).hightor = getRealPrice(br.ReadInt32) / 1000
dr(i).lowor = getRealPrice(br.ReadInt32) / 1000
dr(i).endor = getRealPrice(br.ReadInt32) / 1000
br.ReadInt32()
dr(i).changor = br.ReadInt32
dr(i).id = i
If (dr(i).hightor <> dr(i).lowor) Then dr(i).VbP = dr(i).changor / ((dr(i).hightor – dr(i).lowor) * 1000)
br.ReadInt32()
Next
End Select
fs.Dispose()
LoadDayData = j
End Function
1.
3.
4.
AfxReloadStock(
5.
6.
void
//
{
}
★★1.编译注意事项
★★2.工程profuisdll介绍
★★3.工程GuiLib介绍
★★4.工程XPFace介绍
★★5.工程StkLib介绍
★★6.工程StkNet介绍
★★7.工程StkUI介绍
★★8.工程Tools介绍