电竞比分网-中国电竞赛事及体育赛事平台

分享

Excel vba 處理通達(dá)信歷史數(shù)據(jù)

 wzhsz 2019-09-13
股票期貨日線數(shù)據(jù)處理

直接上代碼
Public Const 通達(dá)信目錄 = "E:\new_tdxqh\"
Public Const 期貨日線目錄 = 通達(dá)信目錄 & "vipdoc\ds\lday\"
Public Const 期貨5分鐘目錄 = 通達(dá)信目錄 & "vipdoc\ds\fzline\"
Public Const 通達(dá)信期貨分類文件 = 通達(dá)信目錄 & "T0002\hq_cache\code2name.ini"
Public Const 上海股票日線目錄 = 通達(dá)信目錄 & "vipdoc\sh\lday\"
Public Const 上海股票5分鐘目錄 = 通達(dá)信目錄 & "vipdoc\sh\fzline\"
Public Const 深圳股票日線目錄 = 通達(dá)信目錄 & "vipdoc\sz\lday\"
Public Const 深圳股票5分鐘目錄 = 通達(dá)信目錄 & "vipdoc\sz\fzline\"
Function 期貨日線(hy As String)  '處理期貨日線歷史數(shù)據(jù)
    Dim f As Integer
    Dim lLen As Long, i As Long
    Dim a()
    Dim b()
    Dim 長(zhǎng)度
    Dim a1 As Long
    Dim 開(kāi)盤(pán) As Single
    Dim 最高 As Single
    Dim 最低 As Single
    Dim 收盤(pán) As Single
    Dim 成交 As Long
    Dim 持倉(cāng) As Long
    Dim 昨結(jié) 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, , 開(kāi)盤(pán)
   Get #f, , 最高
   Get #f, , 最低
   Get #f, , 收盤(pán)
   Get #f, , 持倉(cāng)
   Get #f, , 成交
   Get #f, , 昨結(jié)
   日期 = CDate(Left(a1, 4) & "/" & Left(Right(a1, 4), 2) & "/" & Right(a1, 2))
   a(i) = Array(日期, 開(kāi)盤(pán), 最高, 最低, 收盤(pán), 持倉(cāng), 成交, 昨結(jié))
   Next
      
    Close #f
    長(zhǎng)度 = UBound(a, 1)
ReDim Preserve b(1 To 長(zhǎng)度, 1 To 8)
For i = 1 To 長(zhǎng)度
     For j = 1 To 8
     b(i, j) = a(i)(j - 1)
     Next
Next
   
    期貨日線 = b
End Function

這里就是一個(gè)處理2進(jìn)制文件的OPEN 命令,open  " E:\new_tdxqh\vipdoc\ds\fzline\#47IFL8.day"
具體文件請(qǐng)看一下通達(dá)信存放日線數(shù)據(jù)的目錄。
函數(shù)返回的是一個(gè)數(shù)組
EXCEL 的SHEET表其實(shí)也是數(shù)組,不過(guò)功能更強(qiáng)大
SHEET表的CELLS(I,J)就可以看做是數(shù)組的ARR(I,J)
因?yàn)镵線數(shù)據(jù)我們只處理為一個(gè)2維數(shù)組,所以用EXCEL 很直觀,數(shù)組很容易在EXCEL里面打印出來(lái)。
只要明白CELLS(I,J) =====ARR(I,J)就行。
舉個(gè)例子
sub 列表()
dim hy as string
hy ="#47IFL8.day"  '滬深300主力連續(xù)
數(shù)據(jù) =期貨日線(hy)
行數(shù) = ubound(數(shù)據(jù),1)‘這里是數(shù)組的行數(shù)
列數(shù)=ubound(數(shù)據(jù),2)’這里是數(shù)組的列數(shù)
for i= 1 to 行數(shù)
foe j = 1 to 列數(shù)
cells(i,j)=數(shù)據(jù)(i,j)
next
next
end sub

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多