peterlin3348 發表於 16-2-16 11:42

請問有接IB下單api的大大可以協助嗎?

目前自己用MC+自己的下單機+IB下單
有時會出現 max rate of message
當出現這個訊息的時侯
我的下單機就和IB斷線
問了IB的客服
他們說是因為我每秒丟超過50筆message給IB才造成斷線
但明明我就只有丟一個市價的指令
怎麼可能超過50筆?
目前這問題一直沒有解決方案
不知道有沒有神人可以幫忙我?
謝謝

blj0511 發表於 16-2-16 12:22

本帖最後由 blj0511 於 16-2-16 12:26 編輯

有可能是你下單機只要接受mc來的指令就下一次指令給API,因為MC昰每個tick就會有動作(即使掛單的點位都一樣),所以你的下單機可能要判別一下,當MC來的動作相同時,不要call IB的API,一直到指令跟上次不同再下到API內
我猜啦

peterlin3348 發表於 16-2-16 12:33

blj0511 發表於 16-2-16 12:22
有可能是你下單機只要接受mc來的指令就下一次指令給API,因為MC昰每個tick就會有動作(即使掛單的點位都一樣) ...

謝謝您的回覆
IB的客服也有問我說
如果頻繁下單也會造成這問題
但我的策略是30分
當出現訊號則是下市價單
所以應該不是個問題才對
不知道您是否還有其他的建議呢?
感謝

blj0511 發表於 16-2-16 12:56

本帖最後由 blj0511 於 16-2-16 13:00 編輯

跟分K無關,MC輸出訊號給你下單機時,不是每30分才動一次,昰每個tick就動一次(一秒內會有好幾次),你可以試試看,你下單機call IB API前面加一個counter=counter+1,然後把counter print出來,你可能會發現counter增加的速度就跟tick一樣
也可以不用counter,直接再call IB API前,把下單指令print出來,看看是否有很多重覆的指令出現,這個要盤中才能測試


peterlin3348 發表於 16-2-16 13:30

blj0511 發表於 16-2-16 12:56
跟分K無關,MC輸出訊號給你下單機時,不是每30分才動一次,昰每個tick就動一次(一秒內會有好幾次),你可以試試 ...

您好
我目前的方法是MC出訊號時會寫一個文字檔
文字檔裡只有+-0代表多空和無部位
下單機會去偵測這個文字檔的部位
才下單到IB去
所以並不會把所有MC丟出來的東西都照單全收
您覺得還有可能是什麼原因呢?

blj0511 發表於 16-2-16 14:15

本帖最後由 blj0511 於 16-2-16 14:28 編輯

你下單機去偵測文字檔的部位條件是啥? 可以的話 把偵測文字到下單的程式po上來看

"下單機會去偵測這個文字檔的部位
才下單到IB去"


問題可能出現在這句話,你偵測文字檔產生怎樣的變化,就會去call iB API?
如果你是偵測檔案有變動過(經過修改)就觸動後面的動作去call iB API,就會發生大量call api的動作
但如果你是寫檔案內的部位有變動才去call api,就可能解決此問題了








peterlin3348 發表於 16-2-16 16:33

blj0511 發表於 16-2-16 14:15
你下單機去偵測文字檔的部位條件是啥? 可以的話 把偵測文字到下單的程式po上來看

"下單機會去偵測這個文字 ...

您好
下單機是當文字檔有變化才會去抓裡面的值
比如原本是+
當他變0就是多單出場
所以不會一直去讀寫值

howard2c 發表於 16-2-17 10:24

下單機不開會有同樣的問題嗎?下單機有向IB API要市場價格嗎?

peterlin3348 發表於 16-2-18 10:36

howard2c 發表於 16-2-17 10:24
下單機不開會有同樣的問題嗎?下單機有向IB API要市場價格嗎?

您好
都是丟市價單
所以不會和IB要價格喔

howard2c 發表於 16-2-26 13:54

可能要看下單機的"下單"原始碼, 可能有迴圈沒處理好.我有個程式每分鐘看行情一次.所以在 while (startloop == true) 的後面有個迴圈 Thread.Sleep(57000);

這叫電腦去睡57秒, 睡醒之後再查新的價格, 做判斷, 然後下單.以上是C#, 但JAVA也類同.

希望有幫助!
頁: [1]
查看完整版本: 請問有接IB下單api的大大可以協助嗎?