RMB zst数据 zst数据10进制 1¥对应的16进制间隔 人民币间隔 1¥对应的10进制间隔
A B C D E F
0 3F800000 1065353216 400000 1¥ 4194304
4 40800000 1082130432 200000 1¥ 2097152
8 41000000 1090519040 100000 1¥ 1048576
16 41800000 1098907648 80000 1¥ 524288
32 42240000 1109655552 40000 1¥ 262144
1118830592
按比例算法求。设取到的数为X(化为十进制的了),那么(X-C)/real(x)=F/(1¥*1000) 扩大一千倍,其实以上的C和F就是你可以通过判断逻辑求出取哪个对应的哪个C只有real(x)未知
移动方程两边可求出准确的价格(均价可达到0.001精度),求出后的十进制价格是放大了1000倍的
程序代码链接:http://www.cnblogs.com/same/archive/2007/04/13/711466.html作者: 翔子 时间: 2009-3-5 08:42 标题: VB2005代码与通达信数据格式 基本声明
Public NumBase(5) As Long '通达信格式基数
Public NumUnit(4) As Long '每单位对应的16进制数
Public NumUnitPrice(4) As Long '每单位对于的10进制数,已被从元为单位扩大1000倍
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作者: 翔子 时间: 2009-3-5 08:43 标题: 通达信日线数据格式 通达信日线数据格式,每32个字节为一日
1-4字节 DateongInt; //日期
5-8字节 OPenongInt; //开盘*100(元)
9-12字节 CloseongInt; //收盘*100(元)
13-16字节 High:LongInt; //最高价*100(元)
17-20字节 Low:LongInt; //最低价*100(元)
21-24字节 Money:single; //成交额(元)
25-28字节 Volume:LongInt; //成交量(股)
29-32字节 保留