- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
19#
發表於 2018-10-22 07:43
| 只看該作者
回復 18# dreamsway
試試看- Option Explicit
- Const K = #12:15:00 AM#
- Const 開盤 = #8:45:00 AM#
- Sub k_15()
- Dim i As Long, Ti(1 To 3) As Long, 成交價 As Double
- Dim xTime As Date, AR(1 To 6)
- AR(1) = "時間": AR(2) = "開盤": AR(3) = "最高": AR(4) = "最低": AR(5) = "收盤": AR(6) = "成交量"
- With Sheets("多空數據")
- .UsedRange.Clear '清盤
- .[A1].Resize(, UBound(AR)) = AR '給標頭
- End With
- xTime = 開盤 + IIf(K = #12:01:00 AM#, 0, K) '第一個K時間點
- Ti(1) = Application.Text(xTime, "[S]") 'K時間點的秒數
- Ti(3) = 0 'K數次
- i = 0 '指定報價的列號 '
- AR(1) = Format(xTime, "hh:mm"): AR(2) = 0: AR(3) = 0: AR(4) = 0: AR(5) = 0: AR(6) = 0 '陣列重新給值
- Do
- With Sheets("報價數據").Range("b2").Offset(i)
- 成交價 = .Range("B1")
- Ti(2) = Application.Text(.Cells.Offset(1), "[S]") '.Cells.Offset(1) -> 下一個報價時間秒數
- AR(2) = IIf(AR(2) = 0, 成交價, AR(2)) '開盤
- AR(3) = IIf(成交價 >= AR(3), 成交價, AR(3)) '最高
- AR(4) = IIf(AR(4) = 0, 成交價, IIf(成交價 <= AR(4), 成交價, AR(4))) '最低
- AR(5) = 成交價 '收盤
- AR(6) = AR(6) + .Range("C1") '成交量
- If Ti(2) > Ti(1) Then '下一個報價時間秒數 > K點時間的秒數
- Sheets("多空數據").Range("A2").Offset(Ti(3)).Resize(, UBound(AR)) = AR 'k時間點導入陣列
- xTime = xTime + K '下一個K時間點
- Ti(1) = Application.Text(xTime, "[S]") '下一個 K 點時間的秒數
- Ti(3) = Ti(3) + 1 'K數次+1
- AR(1) = Format(xTime, "hh:mm"): AR(2) = 0: AR(3) = 0: AR(4) = 0: AR(5) = 0: AR(6) = 0 '陣列重新給值
- Else
- If .Cells.Offset(1) = "" And CDate(.Cells.Value) = CDate(#1:45:00 PM#) Then
- '下一個報價時間="" 且 報價時間=收盤時間
- Sheets("多空數據").Range("A2").Offset(Ti(3)).Resize(, UBound(AR)) = AR 'k時間點導入陣列
- Exit Do '離開迴圈
- ElseIf .Cells.Offset(1) = "" Then '這條件不成立 (下一個報價時間="" 且 報價時間=收盤時間 )
- 匯入API報價文字檔
- End If
- End If
- End With
- DoEvents '暫停執行,以便讓作業系統可以處理其它的事件
- i = i + 1 '報價的列號 +1
- Loop
- End Sub
複製代碼 |
|