|
本帖最後由 zaqimon 於 15-11-26 00:30 編輯
握個手
我現在也正在用Excel+AutoIt弄一套自己的東西
其實也沒什麼
就是依照我想要的功能寫個fancy一點的下單機而已
我做的東西簡單說就是
RTD或DDE即時報價接到Excel
條件判斷成立後用Mailslot下指令到AutoIt下單介面
AutoIt連接到IB TWS/IB Gateway提供的ActiveX API下單
API就是各家券商提供的下單介面
通常是ActiveX或dll介面
有些券商還會提供報價API
不過我覺得RTD/DDE就很夠用了
網路上也有人寫下單機可以支援多家不同券商的下單API
不過我覺得下單機還是自己寫比較保險
反正我要的功能很簡單就是下單改單刪單而已
例如AutoIt可以透過以下的程式連接IB API- $g_oTws = ObjCreate('Tws.TwsCtrl.1')
- ObjEvent($g_oTws, "_TWSEvent_")
- $g_oTws.connect("", $port, $clientId, False)
複製代碼 下單部分也很簡單- $oContract = $g_oTws.createContract()
- $oOrder = $g_oTws.createOrder()
- ; 正確設定好所需的$oContract, $oOrder內容之後...
- $g_oTws.placeOrderEx($g_nOrderId, $oContract, $oOrder)
- $g_nOrderId += 1
複製代碼 然後透過_TWSEvent_orderStatus()的event callback就可以得知剛才下的單是否成交
其他券商大概也是類似的方式就可以透過API下單
當然也可以在Excel裡面直接呼叫下單API
但我覺得把下單的部分拆開到AutoIt比較有彈性
之後就算轉換成其他軟體(例如Multicharts)也可以繼續沿用下單機的部分
只要該軟體有支援呼叫"Scripting.FileSystemObject"就可以送出Mailslot下單指令到我的下單機
或是任何可以呼叫CreateFile的程式都可以送出Mailslot下單
我選擇使用Mailslot因為我覺得Mailslot比讀寫檔案的方式來的好
Mailslot完全是在記憶體內運作而不需要實體的檔案存取動作
因此理論上應該會更快速速也更不消耗硬體資源 |
評分
-
查看全部評分
|