如何將台指期的每一分鐘資料都紀錄在sheet 1裡..請教版上高手前輩~~
- 帖子
- 93
- 主題
- 18
- 精華
- 0
- 積分
- 111
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- OFFICE
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣‧高雄
- 註冊時間
- 2010-10-22
- 最後登錄
- 2023-3-3

|
如何將台指期的每一分鐘資料都紀錄在sheet 1裡..請教版上高手前輩~~
各位高手前輩:中秋佳節快樂
我曾套用,版上大分享的程式碼,連上[看盤軟體DDE]卻不會動。想請問版大,我該怎麼改才可以使用。
現在我想重新建立新的檔,請先讓我簡單說明我的需求:
1.sheet 4 是看盤軟體DDE輸出到Excel的資料。
2.我希望能將台指期的每一分鐘資料都紀錄在sheet 1裡,不是直接紀錄DDE回傳的資料,
而是紀錄sheet 4每一分鐘的[成交價][最高][最低][成交量]
以上用Excel不知是否可行?請教版上高手前輩~~
附上:我的[看盤軟體DDE]轉出到Excel沒程式碼的(如圖) |
-
-
TX00a.zip
(4.99 KB)
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
2#
發表於 2012-9-29 12:42
| 只看該作者
|
|
|
|
|
|
- 帖子
- 93
- 主題
- 18
- 精華
- 0
- 積分
- 111
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- OFFICE
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣‧高雄
- 註冊時間
- 2010-10-22
- 最後登錄
- 2023-3-3

|
3#
發表於 2012-9-29 13:21
| 只看該作者
回復 2# c_c_lai
最佳的中秋節禮物...擁滿懷的『感謝』給你[c_c_lai]~~
剛剛測試很滿意,接著等星期一再實測了~~謝謝~~ |
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
4#
發表於 2012-9-29 21:04
| 只看該作者
為了讓更多人進一步明瞭整體的作業過程,未來也可以自己在實務上實際演練
及摩擬,故將作業畫面與程式一併貼附上來分享。
希望每個人都能從中學習領悟、寫出更佳的程式,再將成果分享提供給大家!- Option Explicit
- Dim Ov As Single, Hv As Single, Lv As Single, Cv As Single
- Dim timerEnabled As Boolean ' 判定開啟本工作表單的時段是否為開盤前啟動。
- Public turnKey As Integer
- Private Sub Workbook_Open()
- timerEnabled = False
- Sheets("Sheet4").[I2] = Sheets("Sheet4").[H2] ' 設定前成交量
- Call timerStart ' 程式一啟始,便去自動執行 timerStart
- End Sub
- Private Sub Workbook_BeforeClose(Cancel As Boolean)
- On Error Resume Next
- Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.RTimer", , False
-
- Me.Save
- End Sub
- Public Sub RTimer(tm As Date)
- Dim TimeRange As Range, Rng As Range
- Dim pos As Integer
-
- On Error Resume Next
- If (TimeValue(Now) > TimeValue("13:45:00")) Then Exit Sub
-
- If (TimeValue(Now) >= TimeValue("08:45:00")) Then ' 開盤、收盤時段設定
- ' 盤中處理,將資料匯入寫入工作表單內儲存。
- With Sheets("Sheet1")
- If Not IsError(.[B2]) Then
- .[B1] = "成交價"
- .[C1] = "最高價"
- .[D1] = "最低價"
- .[E1] = "成交量"
-
- Set TimeRange = .[A:A].Find(TimeSerial(Hour(tm), Minute(tm), 0)) ' 檢查 "A" 欄位對應之時間資料
- Set Rng = TimeRange.Offset(, 1).Resize(1, 4)
-
- Rng(1) = Cv ' 成交價
- Rng(2) = Hv ' 最高價
- Rng(3) = Lv ' 最低價
- Rng(4) = Sheets("Sheet4").[H2] - Sheets("Sheet4").[I2] ' 成交量
- Sheets("Sheet4").[I2] = Sheets("Sheet4").[H2] ' 重新設定前成交量
- End If
- End With
- End If
- End Sub
- Sub timerStart()
- turnKey = 0 ' 計數器重新歸零
- Sheets("Sheet4").[A3] = "( " & turnKey & " 秒 )"
-
- If timerEnabled Then
- ' 第二次(含)以後均以設定之 "間隔時段" 來處理執行序的作業。
- Application.OnTime (Now + TimeValue("00:00:01")), "ThisWorkbook.inProcess"
- Else
- timerEnabled = True
-
- ' 將第一次啟動時間更改為設定 "開盤時間"前,如果開啟 Excel 時,已經過了設定 "開盤時間",則一進入系統即直接去執行紀錄作業。
- If (TimeValue(Now) <= TimeValue("08:45:00")) Then
- Sheets("Sheet1").[B2:E301].ClearContents ' 清除前一日之資料
- Application.OnTime (TimeValue("08:45:00")), "ThisWorkbook.inProcess"
- Else
- ' 系統剛連上 DDE 至資料匯入Excel工作表單,須有一個緩衝時段,
- ' 這時如果馬上去抓取DDE資料,會有型態不符的錯誤訊息產生,並中斷執行序的作業。
- Application.OnTime (Now + TimeValue("00:00:05")), "ThisWorkbook.inProcess"
- End If
- End If
- End Sub
- Private Sub inProcess()
- Static Msg As Boolean ' 用以判定是否為每日第一次執行
- Static timeCalc As Date ' 記錄每分鐘的時間
-
- On Error Resume Next
- If (TimeValue(Now) < TimeValue("08:45:00") Or TimeValue(Now) > TimeValue("13:46:01")) Then Exit Sub
-
- If Msg = False Then
- timeCalc = TimeSerial(Hour(Time), Minute(Time), 0) ' 設定目前起始的時間
- Msg = True
- End If
-
- If IsError(Sheets("Sheet4").Range("B2").Value) Then
- Cv = 0
- Else
- Cv = Sheets("Sheet4").Range("B2").Value ' 成交價
- End If
-
- If (turnKey = 0 Or Ov = 0) Then
- Ov = Cv ' 開盤價
- Hv = Cv ' 最高價
- Lv = Cv ' 最低價
- End If
-
- If (Cv > Hv) Then Hv = Cv ' 最高價
- If (Cv < Lv) Then Lv = Cv ' 最低價
-
- turnKey = turnKey + 1
- Sheets("Sheet4").[A3] = "( " & turnKey & " 秒 )"
- If Time >= timeCalc + #12:01:00 AM# Then
- If (Cv > 0) Then Call RTimer(Time)
- timeCalc = TimeSerial(Hour(Time), Minute(Time), 0) ' 重新設定下一分鐘比對的時間
- If timerEnabled Then Call timerStart
- Else
- Application.OnTime (Now + TimeValue("00:00:01")), "ThisWorkbook.inProcess"
- End If
- End Sub
複製代碼
|
|
|
|
|
|
|
- 帖子
- 93
- 主題
- 18
- 精華
- 0
- 積分
- 111
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- OFFICE
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣‧高雄
- 註冊時間
- 2010-10-22
- 最後登錄
- 2023-3-3

|
5#
發表於 2012-10-3 17:56
| 只看該作者
回復 4# c_c_lai
c_c_lai版大你好;經過三天的實測,有時會當機(資料沒進來)待多觀測幾日再請教了,
整體上非常滿意~~...謝謝!! |
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
6#
發表於 2012-10-3 20:22
| 只看該作者
回復 5# cfuxiong
在跑這支程式執行中,切記勿開啟另一隻Excel 程式,請回憶看看是否有這種情形?
如果只是單純跑這隻的話,除非是電腦本身有狀況,你說的情況是不可能會發生的! |
|
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
7#
發表於 2012-10-3 20:28
| 只看該作者
回復 5# cfuxiong
還有如果券商的軟體掛了重新開啟, EXCEL 亦要一併先予關閉後再開 (重新連結DDE)。 |
|
|
|
|
|
|
- 帖子
- 93
- 主題
- 18
- 精華
- 0
- 積分
- 111
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- OFFICE
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣‧高雄
- 註冊時間
- 2010-10-22
- 最後登錄
- 2023-3-3

|
8#
發表於 2012-10-4 19:10
| 只看該作者
回復 7# c_c_lai
c_c_lai版大你好;昨天實測是有與[量態]同時使用....
今天就沒問題了...那要與[量態]併用是否就無解?
因看盤軟體dde有[委買賣量]沒有[委買賣筆數]不能計算[量態]~
謝謝回應與指導~~
能否給與指導 cfuxiong@gmail.com |
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
9#
發表於 2012-10-4 21:14
| 只看該作者
回復 c_c_lai
c_c_lai版大你好;昨天實測是有與[量態]同時使用....
今天就沒問題了...那要與[量態]併用 ...
cfuxiong 發表於 2012-10-4 19:10 
能不能將它們合併在一個 EXCEL 內應用?
這也是我一直的困擾,不知是 EXCEL 的 VBA 相互間處理所導致,還是其它因素? |
|
|
|
|
|
|
- 帖子
- 93
- 主題
- 18
- 精華
- 0
- 積分
- 111
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- OFFICE
- 閱讀權限
- 20
- 性別
- 男
- 來自
- 台灣‧高雄
- 註冊時間
- 2010-10-22
- 最後登錄
- 2023-3-3

|
10#
發表於 2012-10-18 16:15
| 只看該作者
回復 9# c_c_lai
c_c_lai版大你好;今天換倉DDE又要重新建立,那我們所編輯的VBA要如何移轉。
請給予指導...謝謝!! |
|
50 字節以內
不支持自定義 Discuz! 代碼
|
|
|
|
|