关于通达信数据格式的发布

本月将发布有关通达信日线和分时图数据格式的文章将放在个人的金融学文章板块,请有关关注这方面的朋友届时注意 
目前进度:已分布分时图数据格式在 http://www.cnblogs.com/same/articles/722400.html ,这里公布两种代码VB6 和VB2005 作用一样
①VB6   
Public tempdata()  As  Long
Public NumBase(5)  As  Long  ' 基数
Public NumUnit(4)  As  Long  ' 每单位对应的16进制数
Public NumUnitPrice(4)  As  Long  ' 每单位对于的10进制数,已被从元为单位扩大1000倍

Public Type tempFSTrecord  ' 每一条记录的长度为26字节:
    FSTtime  As  Integer
    price  As  Long
    avgPrice  As  Long
    changor  As  Integer
    unUse0  As  Integer
    unUse1  As  Long
    unUse2  As  Long
    unUse3  As  Long
End Type
Function LoadFSTdata(ByVal filename  As  String, fst()  As FSTrecord)  ' 240个分记录,26个字节一个记录,6508字节一天
     Dim ifile  As  Integer, i  As  Integer, j  As  Integer
     Dim TFR  As tempFSTrecord
     Dim fileP  As  Long
     Dim lenDayFST  As  Long: longDayFST = 6508
     Dim lenminuteFST  As  Long: lenminuteFST = 26
    ifile = FreeFile
    Open filename  For Binary  As ifile
     ' LoadFSTdata = (LOF(ifile) - 8) / 26 - 10
    LoadFSTdata = LOF(ifile) / 6508

     ReDim fst(1  To LoadFSTdata, 239)
     ReDim tempdata(1  To LoadFSTdata)
     ReDim tempMidprice(1  To LoadFSTdata)
     ReDim fstMaxPrice(1  To LoadFSTdata)
     For j = 1  To LoadFSTdata
         Get ifile, 1 + (j - 1) * longDayFST, tempdata(j)
         Get ifile, 5 + (j - 1) * longDayFST, tempMidprice(j)
        fstMaxPrice(j) = 0
         For i = 0  To 239
            fileP = (j - 1) * longDayFST + i * lenminuteFST + 8 + 1
             Get ifile, fileP, TFR
            fst(j, i).FSTtime = TFR.FSTtime + 1  ' fst(i).FSTtime = TimeSerial(0, TFR.FSTtime + 1, 0)
            fst(j, i).price = TFR.price
            fst(j, i).avgPrice = TFR.avgPrice
            fst(j, i).changor = TFR.changor
             If  Abs(TFR.price - tempMidprice(j)) > fstMaxPrice(j)  Then
                   fstMaxPrice(j) =  Abs(TFR.price - tempMidprice(j))
             End  If
         Next i
     Next j
    Close ifile
End Function
Function getRealPrice(formerPrice  As  LongAs  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

Public  Sub main()
    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
    readZST.Show ' 由这个窗体去调用以上的函数,自己写
End Sub

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值