- 帖子
- 7
- 主題
- 1
- 精華
- 0
- 積分
- 9
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office 2007
- 閱讀權限
- 10
- 註冊時間
- 2014-4-24
- 最後登錄
- 2014-4-26
|
本帖最後由 GBKEE 於 2014-4-24 16:56 編輯
小弟最近開始研究EXCEL的自動交易系統,使用touchance的DDE數據。
數據記錄方式:
,每一分鐘記錄依次計入一分鐘數據到一行單元格,下一分鐘記錄下一分鐘的數據,以此類推。
發單觸發方式:
參考了姜林杰祐老師的“離線交易EXCEL檔”,使用一個定時器每過一分鐘掃描執行一次計算,
hTimer = SetTimer(0, 0, 60000, AddressOf Main) '每過一分鐘進行一次計算,滿足條件則發單。
現在問題來了:
比如我想使用一個簡單的20高低點突破策略,我必須每過一分鐘掃描計算一次,這樣如果遇到網絡延時或者斷線后重連將沒有可靠保障。
我現在想的是能否利用“每一分鐘新數據進入觸發進行計算”,也就是說,只要有一分鐘的新數據收到(自動填入下一行),即觸發下一次計算,不知應該如何實現?
在其他論他請教過,得到如下回覆幫助:
1.“改用event driven,不要用迴圈”
2.“用一個vba工具就可以簡單處理_有變動才更新.快慢盤演算不會漏tick.”
3.“用迴圈的話整個excel 的events都會被凍住, 等到迴圈停止, 你如果試過應該就不會這樣問”
小弟還是不明白用什麽方式可以最優?請先輩們賜教。
PS:看到一種解決方案:
Worksheet_Change event, worksheet上有變化才執行動作, 像API tick 的cell 位置:
Private Sub Worksheet_Change(ByVal Target As Range)
'如果A1 cell資料有變動
If Target.Address = "$A$1" Then
'執行想做的事情
end if
但是小弟沒看懂。。。。是否能请大大们提示?
最后,先進們是如何實現這樣的觸發的?小弟VBA不熟練,能否請先進門在我上傳的資料上幫忙修改。
感恩~
auto trading.rar (678.64 KB)
|
|