由于有朋友在博客上提出同花顺day数据格式的需求,我这星期天(2005年5月20日)特地也整理出来
同花顺是很多传统软件中比较成熟的先进的,至少他目前用以开发程序的平台跟上了软件开发的前沿,尽管它存在着一些不稳定,但同花顺绝对是最具有生命力的,所以大家了解他的格式以后运用也有个稳定的数据来源,同花顺的各类数据整理的很工整也全面开放,这里先介绍它的日数据,大家可以先启动同花顺的工具>数据下载,选中打勾日数据,可以设置历史起始和终结点,目前无限制,只是不能在开市下载,可能是避免别人看行情的速度影响,唉这前几年作这类软件的人都快饿死了,目前虽然行情大好,连服务器都不给买多几台,呵呵,大家同病相怜,日数据为48个字节一天,文件头为64个字节n = (fs.Length - 64) / 48 '可得天数,详细代码如下
同花顺软件从开发技术上是走在最前头的,他的数据格式也用到无符号整型32位为主,
日数据格式为
64个字节的文件头,另外每48个字节为一天纪录
日期 32位 4个字节
开盘 32位无符号整型 4个字节
最高 32位无符号整型 4个字节
最低 32位无符号整型 4个字节
收盘 32位无符号整型 4个字节
跳过 32位 4个字节
成交量 32位 4个字节
跳过 20个字节
以上跳过部分只有最后4个字节未使用
跳过部分包含数值,涨幅,振幅,总成交金额,换手率。
详细编程:http://www.cnblogs.com/same/archive/2007/05/18/752062.html
VB.net 2005
Case 3 '同花顺
n = (fs.Length - 64) / 48 '文件头占64个字节
LoadDayData = n
ReDim dr(n)
For i = 1 To 8
br.ReadInt64() '读8次64位内存块以越过文件头
Next
For i = 1 To n
Dim d As Integer = br.ReadInt32()
j = j + 1
dr(j).stockdate = DateSerial(d / 10000, (d Mod 10000) / 100, d Mod 100) '日期占4个字节
dr(j).openor = (br.ReadUInt32 And &HFFFFFFF) / 1000 '用无符号32位整型,目前只发现B0开头,所以只需除以1000,不判断,但最好做个异常分支
dr(j).hightor = (br.ReadUInt32 And &HFFFFFFF) / 1000
dr(j).lowor = (br.ReadUInt32 And &HFFFFFFF) / 1000
dr(j).endor = (br.ReadUInt32 And &HFFFFFFF) / 1000
br.ReadInt32() '越过数据,不影响对数据基本数据的获取
dr(j).changor = br.ReadInt32 '(单位手数),成交量,也是32位,可以用无符号整型去读
If dr(j).changor < 0 Then '以B0 开头
dr(j).changor = (dr(j).changor And &HFFFFFFF) / 1000
ElseIf dr(j).changor > 0 Then '这里需要改进 目前发现 90开头
dr(j).changor = dr(j).changor / 100
Else
' ......
End If
br.ReadInt32() '把纪录尾端读完,共20个字节
br.ReadInt64()
br.ReadInt64()
'其实以上越过的数据包含信息为数值,涨幅,振幅,总金额,换手,其实一个日纪录48个字节就只要4个字节未用到的了
Next
case 4 '大智慧level2
'.......