读取大智慧实时数据
(2011-10-01 04:56:05)
					
											标签:
																				
                            杂谈 | 
					分类: 股票 | 
			读取大智慧实时数据
  
       
照着前辈的文档,写的一塌糊涂。基址不对,数据结构对了,可是读出来的时间是好几年前的,用数据一比较,果然是前几年的数据。上网一查,原来大智慧已经强制更新了,不再使用STKINFO60.DAT,而是用STKINFO70.DAT来保存实时数据。先找到了文件的基址,计算出一个数据块大小320字节。由于数据结构和旧版的不一样了,需要重新分析。暂时就分析出这么多了,有些数据试不出来是干什么的,以unkonwn命名之。已推导出来的这部分结构体应该满足大部分需求了,剩余的部分可以用byte
unknown2[剩下的字节数] 覆盖。       
       
至于块和偏移地址的计算,在白天发的帖子《大智慧数据读取器》里已经写出方法了。       
       
运行结果和大智慧显示的一样。数据位数不同是因为浮点数的关系,可以格式化后输出。       
							
		
						
		
		
		
		
		
		
							
		
				
		
				
	读取大智慧实时数据
rt = io.open("D:\dzh2\data\sh\STKINFO70.DAT","rb")
rt.seek("set",0x44a6)
rt.seek("set",0x5b666)
rtdata= {
    byte code[10];
    BYTE name[50];
    INT datatime;
    int unknown1;
    float refclose;
    float open;
    float high;
    float low;
    float new;
    float volume;
    float amount;
    float lotnow;
    float buy1;
    float buy2;
    float buy3;
    float buy4;
    float buy5;
    float buy1v;
    float buy2v;
    float buy3v;
    float buy4v;
    float buy5v;
    float sell1;
    float sell2;
    float sell3;
    float sell4;
    float sell5;
    float sell1v;
    float sell2v;
    float sell3v;
    float sell4v;
    float sell5v;
}
data= rt.read(rtdata)
io.open()
io.print(data.code,rt.seek())
io.print(data.name,time(data.datatime- 28800),data.refclose)
io.print(data.open,data.high,data.low,data.new)
io.print(data.volume,data.amount,data.lotnow)
io.print(                                                                                                                                                                      "")
io.print(data.buy1,data.buy2,data.buy3,data.buy4,data.buy5)
io.print(data.buy1v,data.buy2v,data.buy3v,data.buy4v,data.buy5v)
io.print(data.sell1,data.sell2,data.sell3,data.sell4,data.sell5)
io.print(data.sell1v,data.sell2v,data.sell3v,data.sell4v,data.sell5v)
execute("pause")
io.close()
rt.close()  
rt.seek("set",0x44a6)
rt.seek("set",0x5b666)
rtdata
}
data
io.open()
io.print(data.code,rt.seek())
io.print(data.name,time(data.datatime
io.print(data.open,data.high,data.low,data.new)
io.print(data.volume,data.amount,data.lotnow)
io.print(
io.print(data.buy1,data.buy2,data.buy3,data.buy4,data.buy5)
io.print(data.buy1v,data.buy2v,data.buy3v,data.buy4v,data.buy5v)
io.print(data.sell1,data.sell2,data.sell3,data.sell4,data.sell5)
io.print(data.sell1v,data.sell2v,data.sell3v,data.sell4v,data.sell5v)
execute("pause")
io.close()
rt.close()

加载中…