分享

Excel vba 处理通达信历史数据

 wzhsz 2019-09-13
股票期货日线数据处理

直接上代码
Public Const 通达信目录 = "E:\new_tdxqh\"
Public Const 期货日线目录 = 通达信目录 & "vipdoc\ds\lday\"
Public Const 期货5分钟目录 = 通达信目录 & "vipdoc\ds\fzline\"
Public Const 通达信期货分类文件 = 通达信目录 & "T0002\hq_cache\code2name.ini"
Public Const 上海股票日线目录 = 通达信目录 & "vipdoc\sh\lday\"
Public Const 上海股票5分钟目录 = 通达信目录 & "vipdoc\sh\fzline\"
Public Const 深圳股票日线目录 = 通达信目录 & "vipdoc\sz\lday\"
Public Const 深圳股票5分钟目录 = 通达信目录 & "vipdoc\sz\fzline\"
Function 期货日线(hy As String)  '处理期货日线历史数据
    Dim f As Integer
    Dim lLen As Long, i As Long
    Dim a()
    Dim b()
    Dim 长度
    Dim a1 As Long
    Dim 开盘 As Single
    Dim 最高 As Single
    Dim 最低 As Single
    Dim 收盘 As Single
    Dim 成交 As Long
    Dim 持仓 As Long
    Dim 昨结 As Single
    f = FreeFile
    Open 期货日线目录 & hy For Binary As #f
    lLen = LOF(f)
      ReDim Preserve a(1 To LOF(f) / 32)
   For i = 1 To LOF(f) / 32
      Get #f, , a1
   Get #f, , 开盘
   Get #f, , 最高
   Get #f, , 最低
   Get #f, , 收盘
   Get #f, , 持仓
   Get #f, , 成交
   Get #f, , 昨结
   日期 = CDate(Left(a1, 4) & "/" & Left(Right(a1, 4), 2) & "/" & Right(a1, 2))
   a(i) = Array(日期, 开盘, 最高, 最低, 收盘, 持仓, 成交, 昨结)
   Next
      
    Close #f
    长度 = UBound(a, 1)
ReDim Preserve b(1 To 长度, 1 To 8)
For i = 1 To 长度
     For j = 1 To 8
     b(i, j) = a(i)(j - 1)
     Next
Next
   
    期货日线 = b
End Function

这里就是一个处理2进制文件的OPEN 命令,open  " E:\new_tdxqh\vipdoc\ds\fzline\#47IFL8.day"
具体文件请看一下通达信存放日线数据的目录。
函数返回的是一个数组
EXCEL 的SHEET表其实也是数组,不过功能更强大
SHEET表的CELLS(I,J)就可以看做是数组的ARR(I,J)
因为K线数据我们只处理为一个2维数组,所以用EXCEL 很直观,数组很容易在EXCEL里面打印出来。
只要明白CELLS(I,J) =====ARR(I,J)就行。
举个例子
sub 列表()
dim hy as string
hy ="#47IFL8.day"  '沪深300主力连续
数据 =期货日线(hy)
行数 = ubound(数据,1)‘这里是数组的行数
列数=ubound(数据,2)’这里是数组的列数
for i= 1 to 行数
foe j = 1 to 列数
cells(i,j)=数据(i,j)
next
next
end sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多