Office中国论坛/Access中国论坛

标题: excel vba 处理股票期货数据 [打印本页]

作者: myhcow    时间: 2016-8-3 15:44
标题: excel vba 处理股票期货数据
股票期货日线数据处理

直接上代码
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
作者: tmtony    时间: 2016-8-4 09:50
不错
作者: roych    时间: 2016-8-4 16:10
tmtony 发表于 2016-8-4 09:50
不错


1、hy指的是否文本文件?还是其它二进制文件?如果是其他二进制文件,是否需要转码或者编译?
2、这里应该是对已有数据进行处理的一个小程序吧。也就是说,程序运行的前提是:“期货日线目录”存在这些文件,否则不能处理。用VB的Open方法是一种,用opentextfile也是一种。

当然,站长说“不错”,肯定是“不错”的。只是我比较愚钝,没看出来。
作者: tmtony    时间: 2016-8-5 12:12
roych 发表于 2016-8-4 16:10
1、hy指的是否文本文件?还是其它二进制文件?如果是其他二进制文件,是否需要转码或者编译?
2、这里 ...






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3