拖稿拖很久了阿...
這大概是2月就學問過菜籃的玩意了。
然後拖到現在,越來越懶了~
想搞這個主要是想看有沒有辦法可以讓人工下單更快。
有機會的話也許可以抓到一點套利機會。
不過套利大概只是作白日夢~
讓下單更快倒是可能作到。
日盛在HTS寫了一個HTSAPITradeClient.dll
每個HTS都有。
只要用 Excel VBA 把這個 dll 叫醒
就可以在 Excel 作下單動作
不過個人VBA不是很熟,用的方法都有點蠢。
所以有需要的就湊合著用吧。
首先:
先建立一個資料夾,把 HTSAPITradeClient.dll 丟進去
然後在建立一個Excel
如圖。
然後,打開建立的Excel
去 工具 -> 巨集 -> VB編輯器
然後選,插入 -> 模組
如圖。
再來把下列文字貼到新插入的模組中,如圖
喔,圖太小了,用放大鏡吧。
Declare Function HTSOrder Lib "C:\Documents and Settings\Administrator\桌面\Excel日盛下單\HTSAPITradeClient.dll" (ByVal X As String) As String
上列字串中,紅色部份是剛剛提到資料夾的位置,我自己是在桌面上。
若是位置不同,記得要改。
好了以後儲存關閉就好。
這樣以後啟動這Excel,啟用巨集後就會自動把 dll 叫醒。
然後就可以把DDE抓到Excel中
在表格中作判斷,然後丟下單字串。
看是要追價什麼的,都蠻方便的。
EX:
B2那一欄是DDE市價
就如同圖中,D2,D3是自行輸入的價位
當B2 大於D2 或是 小於D3 時
會市價丟多單或是空單
來個示範,現在是盤後所以可以亂搞,盤中請小心!!!
D2如圖中示,是5000,表示當DDE報價超過5000時
就會丟市價多單的字串。
現在手動把改成4920,看看丟單情況。如下圖。
糟糕!!! 這個圖也是要用放大鏡看。
就如上圖,把D2改成4920,API Trade Manager 就丟出下單字串了。
丟空單就不示範了。
而丟下單字串的方式一樣在VB編輯器中
上圖中的 大於多作 小於放空 的判斷如下
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B2") > Range("D2") Then
Call HTSOrder("Market=F,Account=帳號,ContractName=商品,ContractDate=月份,OpenCloseAuto=A,BuySell=B,Lots=1,OrderType=M,Price=0,FokIocRod=F,DayTrade=N")
End If
If Range("B2") <>
Call HTSOrder("Market=F,Account=帳號,ContractName=商品,ContractDate=月份,OpenCloseAuto=A,BuySell=S,Lots=1,OrderType=M,Price=0,FokIocRod=F,DayTrade=N")
End If
End Sub
上列程式碼,紅色的部份就是丟下單字串給日盛API
藍色的部份就是Excel中欄位的判斷
應該不會很難懂 ~
以上 ~
我還是覺得 手癢下單機比較厲害XD