返回列表 上一主題 發帖

[發問] 有關於自動交易系統怎樣觸發發單的問題

[發問] 有關於自動交易系統怎樣觸發發單的問題

本帖最後由 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)

http://itgroup.blueshop.com.tw/kenming/blog?n=convew&i=7699
看到这个帖子的内容,是利用setlinkondata写DDE變化event,正好符合我的要求,
但怎樣使用沒有看懂,請求大大們講解。。

TOP

diabo 發表於 2014-4-24 21:35

請教什麽意思?用calculate事件是否需要用迴圈?

TOP

回復 3# diabo
请参考:
“這可是相當相當的麻煩了! 因為透過第一個程序內的參數 (Range Object),可以很方便地得知是哪一個 CELL 的資料變動,但第二個程式則否。 所以若要知道在某一個工作表是哪一個 CELL 的資料變動,就必須寫 FOR LOOP 迴圈,一個一個來判斷是哪一個 CELL 欄位的資料變動。 我幾乎看到許多寫判斷 Tick 資料變動的程式,都是以該事件程序 (Worksheet_Calculate) 來處理。 當然,欄位不多還 OK,但是若是像我這樣,一個工作表是撈約 100 檔的權值成份股、約有 500 ~ 800 個 DDE 欄位的話,那肯定效能會大出問題,連動當然會影響到 Tick 資料的正確性了。 整整爬文了一整個早上,總算才找到真正正確處理 DDE CELL 型態的事件程序了。 不應該使用 "WorkSheet_Calculate()"、而是採用 "SetLinkOnData()" 程序才是。”
不知道您的解决方案是否是这样呢?

TOP

回復 6# bobomi
請問好方法是什麽樣的呢?:'( :'( :'(

TOP

有沒有大神指點小弟一下啊?
等著用好著急啊。。。。

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題