- 帖子
- 26
- 主題
- 4
- 精華
- 0
- 積分
- 30
- 點名
- 0
- 作業系統
- Win10
- 軟體版本
- Office2019
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2018-10-12
- 最後登錄
- 2022-7-25
|
6#
發表於 2018-10-14 17:22
| 只看該作者
回復 4# GBKEE
不好意思,再另做一個紀錄15分K開高低收的巨集上遇到了困難(由於這跟原標題不完全符合,若需另主題再麻煩告知)
希望在原本逐筆計算的過程中,將每15分鐘的開高低收價格紀錄起來,運用o,h,l,c 四個變數
請問要如何在每15分鐘紀錄那邊,要換行紀錄時才將o,h,l變數歸0並重新計算呢- Option Explicit
- Public uMode&, StartTime, EndTime
- Public MyBook As Workbook, Sht1 As Worksheet, Sht2 As Worksheet, Sht3 As Worksheet, xRow&
- Public o As Single, h As Single, l As Single c As Single
- Sub 共用參照()
- Set MyBook = ThisWorkbook
- Set Sht1 = MyBook.Sheets("多空藍圖")
- Set Sht2 = MyBook.Sheets("報價數據")
- Set Sht3 = MyBook.Sheets("多空數據")
- StartTime = "08:44:50" '開盤時間(提早十秒開始,才可記錄開盤量價)
- End Sub
- Sub 報價運算()
- Dim xTime As Date
- Dim i As Long
-
- Call 共用參照 '測試用
- If Sht2.Range("H2") <> 1 Then '開盤條件
- Sht2.Range("J2,J4,J5").ClearContents '清除紀錄資料
- Sht2.Range("K2") = Sht2.Range("I2") '判斷價改為開盤價
- End If
- i = 1
-
- Do
- i = i + 1
-
- If Sht2.Cells(2, "J") = "↑" And Sht2.Cells(i, "H") <> 1 Then '多方加總
- Sht2.Range("J4") = Sht2.Range("J4") + Sht2.Range("D" & i)
- End If
- If Sht2.Cells(2, "J") = "↓" And Sht2.Cells(i, "H") <> 1 Then '空方加總
- Sht2.Range("J5") = Sht2.Range("J5") + Sht2.Range("D" & i)
- End If
- If Sht2.Cells(i, "H") <> 1 Then
- Sht1.Cells(1, "C") = Sht2.Range("B" & i) '報價時間傳送到多空藍圖
- End If
- '***以下新增15分K紀錄
- c = Sht2.Range("C" & i)
- If c > h Then h = c '更新最高價
- If c < l Then l = c '更新最低價
- If o = 0 Then o = Sht2.Range("C" & i) Else o = o
- If l = 0 Then l = Sht2.Range("C" & i) Else l = l
- If h = 0 Then h = Sht2.Range("C" & i) Else h = h
- Sht2.Range("O2").Value = o '填開盤價
- Sht2.Range("P2").Value = h '填最高價
- Sht2.Range("Q2").Value = l '填最低價
- Sht2.Range("R2").Value = c '填收盤價
-
- If Sht1.Range("C1") > xTime Then '** 一秒運行一次 **
-
- Call 多空紀錄
- Call 分K開高低收
- End If
-
- Sht2.Cells(i, "H") = 1 '運算過的進行標記避免重複運算
- Loop Until Sht2.Range("C" & i + 1) = 0 '迴圈停止條件
- End Sub
- Sub 分K開高低收()
- Call 共用參照 '測試用
- Dim xMinute As Integer
-
-
- xMinute = Int(Application.Text(Sht1.Range("C1") - #8:45:00 AM#, "[M]") / 15)
- '*** xMinute 以 Time 距 8:45 的分鐘數 / 15 傳回的整數
- '*** Time 小於 8:45 得到負數
- If xMinute > -1 And Sht1.Range("C1") <= #1:45:00 PM# Then
- xMinute = xMinute + 3 '*** 從第2列開始
- Sht2.Cells(xMinute, "O") = Sht2.Cells(2, "O")
- Sht2.Cells(xMinute, "P") = Sht2.Cells(2, "P")
- Sht2.Cells(xMinute, "Q") = Sht2.Cells(2, "Q")
- Sht2.Cells(xMinute, "R") = Sht2.Cells(2, "R")
- End If
-
- End Sub
複製代碼 |
-
-
15分K紀錄.rar
(19.87 KB)
|