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