PatsEmu-OBG之應用

張貼日期:Aug 30, 2012 12:18:26 PM

1. 將OBG資訊(01:五檔/十檔)來源轉換為PatsEmu服務系統, 透過GMDS的架構功能與應用方式衍生各種服務需求

2. PatsEmu-OBG之資訊來源服務程式可為 TSHS-TfsRaw 或 TSHS-UniDbf-OBG

3. 任何OBG資訊源(如OBGateway), 透過 TcpRDS 與 TSHS-TfsRaw 之介接後即可導入 PatsEmu-OBG

4. PatsRaw或PatsEmu系列(RMDS,CME,OBG)之資訊源, 透過 TSHS-UniDbf-OBG 轉碼後即可導入 PatsEmu-OBG

5. PatsRaw與PatsEmu非OBG來源之OBG轉碼後, 以 PatsEmu-OBG 再行服務的方式 可建置符合OBG服務需求而流量最精簡的通訊傳輸

6. 透過PatsEmu的介面, PatsEmu-OBG可作為OBG格式資訊源的最佳檢查工具

7. 介接範例

CME DMA(Multicast) , URDS <--- TSHS-TfsRaw <--- PatsEmu-CME <--- TSHS-UniDbf-PATS-OBG <--- PatsEmu-OBG

PatsEmu(any) <--- UniDbf-SB <--- TSHS-UniDbf-PATS-OBG <--- PatsEmu-OBG

PATS(API) , PatsRaw <--- UniDbf-SB <--- TSHS-UniDbf-PATS-OBG <--- PatsEmu-OBG

OBGateway <--- TcpRDS <--- TSHS-TfsRaw <--- PatsEmu-OBG

SGX DMA , OBG Output <--- TcpRDS <--- TSHS-TfsRaw <--- PatsEmu-OBG

ComStock , OBG Output <--- TcpRDS <--- TSHS-TfsRaw <--- PatsEmu-OBG

PS: 上面 PatsEmu-OBG 的位置, 也是 INSKW 的位置

8. 圖例 PatsEmu-CME <--- TSHS-UniDbf-PATS-OBG <--- PatsEmu-OBG

a. 由 Symbol (#93,#94) 可知經OBG轉碼後, PatsEmu-OBG上看到的是跟INSKW接收相同的資訊內容

b. 由於OBG格式的限制 以及路透資訊源的提供方式, CME十檔與隱含買賣價量須經過合併處理

模擬成符合OBG接收規格與路透的提供方式讓資訊對照可以相同

c. 圖中CME的買賣價為十檔中的第一檔, 而OBG的買賣價則是隱含買賣價的內容

OBG十檔的第一檔也以隱含買賣價取代,同時將原1~9檔遞換取代2~10檔

也就是PatsEmu-OBG上不會再有隱含買賣價量的欄位資訊, 隱含買賣價量的數據已轉成為買賣價量與十檔之第一檔數據

d. 由c.之說明可知, PatsEmu-OBG 提供之數據傳輸會比 PatsEmu-CME 還少,,

也就是第 5. 所說, 符合OBG服務需求而流量最精簡的通訊傳輸

10. 附錄: OBG格式結構

OBG格式5檔/10檔

//---------------------------------------------------------------------------買賣價量結構

struct SPriDetail

{

Kstl::char_ary<char,13, 0 > Pri_;

Kstl::char_ary<char, 1, 0 > Sign_;

Kstl::char_ary<char,10, 0 > Qty_;

};

//---------------------------------------------------------------------------五檔

struct SRtDataRecBase

{

Kstl::char_ary<char, 2, 0 > FunctionCode_;

Kstl::char_ary<char, 3, 0 > SecurityType_;

Kstl::char_ary<char,20, 0 > Exchange_;

Kstl::char_ary<char,20, 0 > Symbol_;

Kstl::char_ary<char,20, 0 > SettleMth_;

Kstl::char_ary<char, 1, 0 > CallPutType_;

Kstl::char_ary<char,13, 0 > StrikePri_;

Kstl::char_ary<char,13, 0 > OpenPri_;

Kstl::char_ary<char, 1, 0 > OpenSign_;

Kstl::char_ary<char,13, 0 > HighPri_;

Kstl::char_ary<char, 1, 0 > HighSign_;

Kstl::char_ary<char,13, 0 > LowPri_;

Kstl::char_ary<char, 1, 0 > LowSign_;

Kstl::char_ary<char,13, 0 > ClosePri_;

Kstl::char_ary<char, 1, 0 > CloseSign_;

Kstl::char_ary<char,13, 0 > TradePri_;

Kstl::char_ary<char, 1, 0 > TradeSign_;

Kstl::char_ary<char,10, 0 > UnitQty_;

Kstl::char_ary<char,10, 0 > TotalQty_;

SPriDetail BidDOM[5];

SPriDetail OfferDOM[5];

Kstl::char_ary<char, 6, 0 > UpdateTime_;

Kstl::char_ary<char,10, 0 > TickSize_;

Kstl::char_ary<char,12, 0 > ChAlias_;

Kstl::char_ary<char, 4, 0 > UpdID_;

Kstl::char_ary<char,30, 0 > ChExchange_;

Kstl::char_ary<char,10, 0 > TandemSymbol_;

};

//---------------------------------------------------------------------------十檔

struct SRtDataRec10

{

Kstl::char_ary<char, 2, 0 > FunctionCode_;

Kstl::char_ary<char, 3, 0 > SecurityType_;

Kstl::char_ary<char,20, 0 > Exchange_;

Kstl::char_ary<char,20, 0 > Symbol_;

Kstl::char_ary<char,20, 0 > SettleMth_;

Kstl::char_ary<char, 1, 0 > CallPutType_;

Kstl::char_ary<char,13, 0 > StrikePri_;

Kstl::char_ary<char,13, 0 > OpenPri_;

Kstl::char_ary<char, 1, 0 > OpenSign_;

Kstl::char_ary<char,13, 0 > HighPri_;

Kstl::char_ary<char, 1, 0 > HighSign_;

Kstl::char_ary<char,13, 0 > LowPri_;

Kstl::char_ary<char, 1, 0 > LowSign_;

Kstl::char_ary<char,13, 0 > ClosePri_;

Kstl::char_ary<char, 1, 0 > CloseSign_;

Kstl::char_ary<char,13, 0 > TradePri_;

Kstl::char_ary<char, 1, 0 > TradeSign_;

Kstl::char_ary<char,10, 0 > UnitQty_;

Kstl::char_ary<char,10, 0 > TotalQty_;

SPriDetail BidDOM[10];

SPriDetail OfferDOM[10];

Kstl::char_ary<char, 6, 0 > UpdateTime_;

Kstl::char_ary<char,10, 0 > TickSize_;

Kstl::char_ary<char,12, 0 > ChAlias_;

Kstl::char_ary<char, 4, 0 > UpdID_;

Kstl::char_ary<char,30, 0 > ChExchange_;

Kstl::char_ary<char,10, 0 > TandemSymbol_;

Kstl::char_ary<char, 2, 0 > NewLine_;

};