同花顺是很多传统软件中比较成熟的先进的,至少他目前用以开发程序的平台跟上了软件开发的前沿,尽管它存在着一些不稳定,但同花顺绝对是最具有生命力的,所以大家了解他的格式以后运用也有个稳定的数据来源,同花顺的各类数据整理的很工整也全面开放,这里先介绍它的日数据,大家可以先启动同花顺的工具>数据下载,选中打勾日数据,可以设置历史起始和终结点,目前无限制,只是不能在开市下载,可能是避免别人看行情的速度影响,唉这前几年作这类软件的人都快饿死了,目前虽然行情大好,连服务器都不给买多几台,呵呵,大家同病相怜,日数据为48个字节一天,文件头为64个字节n = (fs.Length - 64) / 48 '可得天数,详细代码如下
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
'.......
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
'.......
其它格式请到博客的金融文章板块阅读