股票期货日线数据处理 直接上代码 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 |
|