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_;

};