本帖最後由 萬年船 於 22-3-17 19:08 編輯
IB(Interactive Brokers)每天都會Reset,請參考如下網頁
https://www.interactivebrokers.com/en/?f=%2Fen%2Fsoftware%2FsystemStatus.php
美國、瑞士、香港伺服器的Reset時間各自不同
(香港伺服器以前也只有一個時段,但這幾年突然變成兩個時段了,似乎IB對亞洲市場比較不重視)
這些時段在當地都屬於盤後的時段,所以對當沖交易者,沒差
但對留倉交易者就有影響了
官方的Reset允許期間雖然長達半小時或一小時,但真正Reset大概只會花2~3分鐘
但在這2~3分鐘內,是無法與IB伺服器連線的
委託單與成交回報有如下的影響
(1)直接掛在交易所的(native)委託單始終不受影響
(2)掛在IB伺服器的(simulated)委託單,如觸價時巧遇Reset那2~3分鐘,會延遲直到那2~3分鐘結束
(3)成交回報如巧遇Reset時,也會延遲直到那2~3分鐘結束
以上是上面的IB官方網頁上的描述,但真正對MC會有何影響呢?
簡單的答案是:有機會會產生延後送單、委託失敗、部位不受保護等的不良影響
(A)狀況一:
K棒完成時間巧遇Reset那2~3分鐘,而這2~3分鐘又可根據下圖所示的時間點,切割成兩種情況
上圖重新連線畫面會伴隨以下紀錄文字出現
"Connection between IB and Trader Workstation has been lost."
(A.1)如果K棒完成時間發生在重新連線畫面出現之前
所有新單、刪單、改單會全部暫時停在你的電腦,直到那2~3分鐘結束才真的送出去
此種情況比較輕微,只是延後送單而已
(A.2)如果K棒完成時間發生在重新連線畫面出現之後
所有新單、刪單、改單會直接委託失敗
(伴隨出現如上圖所示的The action cannot be performed, since the profile is disconnected)
此種情況稍微嚴重一點點,會導致[AA]策略變成圖部位與真實部位處在不同步狀態,如下所示
(B)狀況二:
當進場委託單成交後,如果策略有含如SetStopLoss等的Set開頭IOG指令
此時保護部位的出場委託單會試著立刻送出去,但此時如果巧遇Reset那2~3分鐘
則保護部位的出場委託單一樣會根據時間點,切割成兩種情況
如同(A.1)與(A.2)的情況,也會有(B.1)與(B.2)的情況
(B.1)的情況會導致延後送單的那段時間部位不受保護
(B.2)的情況則會導致在整個K棒的時間內,部位不受保護
如果是60分鐘K棒,那就是60分鐘內完全不會有停損出場的機會
所以狀況二是比較嚴重的
以上是IB Reset對MC的影響,那該如何處理以避免上述狀況呢?
應對IB Reset時的處理原則如下:
1.在官方規定的Reset時期,不要產生新單、刪單、改單等的訊號
2.在此時期只留保護部位的出場委託單
也就是此時期,不允許進場交易,允許保有當下既有的部位,且允許存在保護部位的出場委託單
根據此原則,我寫了一分MC的程式片段來處理IB Reset情況
只要把此程式片段加在你的原始訊號程式的前面即可
除此之外,你的原始訊號程式不用任何修改
就連商品的交易時段的設定也可維持原本的全時段
此程式的輸入參數
【IBResetStart1】第一段IB Reset開始時間,格式HHmm
【IBResetEnd1】第一段IB Reset結束時間,格式HHmm
【IBResetStart2】第二段IB Reset開始時間,格式HHmm
【IBResetEnd2】第二段IB Reset結束時間,格式HHmm
【IBResetRetracementStopRate】多頭部位(空頭部位)由高點(低點)拉回的多少百分點時出場,
0.01表示1個百分點
此出場委託單一旦下出去後,在整個IB Reset時期都不會變更出場價位
【IBResetUseStopLimit】出場委託單要使用停止限價單或停止單,建議使用交易所可預掛的類型
以上的IB Reset時段設定要依據你連接那個IB伺服器而決定(不清楚,可打電話給香港的IB客服詢問)
且IB Reset的時區如果與交易所不同,還要進一步轉換成交易所時區的時間
(如果你觀察IB真正Reset的時間總是落在某個區間,甚至也可以投機的縮小只設定那個區間
但萬一哪天落在那個區間外,就賭賭運氣了)
程式下載如下
IB Reset Handling Template (Open Release Version 1.1).zip
(5.04 KB, 下載次數: 20, 售價: 1 金錢)
原始程式畫面如下
|