資訊系統/架構/產品‎ > ‎KGQ‎ > ‎GMDS相關文章‎ > ‎GMDS‎ > ‎

IB-API可直接應用於GMDS

如果使用過fakePATS API, 就會知道雖然架構和PATS一模一樣 但是完全和PATS無關,
而且行情速度與完整性確是截然不同, 並須完全拋開PATS的牛速/漏價/不穩定的感覺,
現在也可以有全新的體驗發生在IB(Interactive Brokers)的應用架構上了!

IB與PATS於GMDS上的設計差異:

於PATS的部分是設計於用戶端替換PATS原本的dll來運行

GMDS <----> fakePATS-API : PATS's API applications

於IB則是設計於Server端開Socket介面走TWS協議運作

GMDS : IB-API-Server  <----> IB-API programs

未免有人踩雷浪費時間看下去, 特別再提醒一下:
網路上的討論與應用都是使用IB API去收IB的data或透過IB下單, 如果有Server的字眼是指將IB提供的data重新發行,
這裡所提的是直接換掉雲架構 使所有以IB API開發的任何應用移轉到GMDS架構下運行,
因此透過GMDS能接收任何其他來源的data或配合下單到任意券商

其實IB提供的API與TWS/IBG間的通訊規格很簡單, 就像是FAST使用End-Bit作資料欄切格,
IB則是 ZE-String 以 ZE 作為token, 所以取得msg id後
要解開FAST需要有對應的template來依序解釋, IB也是一樣,
可直接看它對應的程式碼作了哪些DECODE_FIELD,就好像是template的說明
(可參考IB所提供的程式碼, 舊版可以看 EClientSocketBaseImpl.h 這檔案, 新版則要看 EDecoder.cpp 與 EDecoder.h)

圖中第2欄id為3 代表是對應商品 GBP/USD 的資料

這個API說好用是好用,說不好用是真的好難用,其實就是版本與環境問題,
如果不想受限於開發平台也不想裝一堆轉散發套件,那就是自己用Socket寫起來就好了~

而會寫Client,當然Server也是一樣的道理,就不多說了!

IB-API-test.exe為單一隻程式,不用dll不用ocx
只要裝好Windows(Win95/98/XP/2000~Win10)就可以直接用了~程式下載
使用方式(僅供測試,可以改變連線主機,註冊固定的三個免費外匯商品而已)

由以上的測試, 任何能用 IB API 接收行情資料的應用程式,
只要透過GMDS架構都能輕鬆建立對應的服務器提供服務!

<TSHS-UniDbf-TWS> : 適合有自建GMDS行情源 - 券商內部,法人,自營
TSHS-UniDbf-TWS為接收UniDbf/PatsEmu的來源,除提供原本的TSHS服務外,
不但可用於轉譯IB用戶端的的資料接收與行情推播,
同時提供以PES服務方式作為 TSHS-GW-TWS 的資訊源,
可以用為控管用戶權限,商品訂閱等機制...

<TSHS-GW-TWS> : 適合以GMDS為行情源建置客戶端服務所需之雲端架構
TSHS-GW-TWS為透過PES/PEC的通訊規格連接用戶端和雲端
作為 TSHS-UniDbf-TWS 對應於用戶端的 Gateway 服務程式,
用於轉譯並傳遞用戶端要求,同時進行資料接收與推播,
就像是TWS/IBG提供的API服務器供Socket Clients應用

依據用戶端的測試結果,正確模擬TWS運作,
可讓測試用的Client IB-API-test正確上線要求註冊商品

當然也能用官方的Client測試通過

然後觀察註冊行情資料的情形,如果使用GMDS架構大概只需在意其中3個欄而已
ps:兩組#1#2#3只是在數數,並無匹對關係,因為由內容就很容易看出是什麼

之後參考一下官方的程式碼,很容易就能feed行情了 (tickerId 就是前面的 id 789)

首先是msg id

行情的msg id

// incoming msg id's
const int TICK_PRICE                = 1;
const int TICK_SIZE                 = 2;

TICK_PRICE所需要的內容
TICK_SIZE所需要的內容
觀察TICK_SIZETICK_PRICE之後,可以瞭解使用TICK_PRICE ver 2 以上的版本其實就能取代TICK_SIZE,
因此設計上可以只用TICK_PRICE,除非如果有價位沒異動想節省通訊量的狀況才須設計TICK_SIZE,
最後模擬一下, 果然測試成功!

本來IB推出API的用意應該是想讓用戶們可以和TWS互動更密切,讓用戶對IB更依賴更死忠,
而IB在支持API的方面也一直都非常下工夫, 現在使用GMDS正好反其道而行,
原本透過IB API設計的各種應用或架構全都可以搬到GMDS上直接使用了!
資訊來源更廣更快更穩定, 下單配合券商可以設計更多樣化,
銜接IB API後可以自主開發各種平台利用各種資源...
IB-API programming




Comments