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

PatsEmu-OBG之應用

張貼者:2012年8月30日 上午5:18Wei-Xiuang Wang   [ 已更新 2012年9月2日 上午7:25 ]

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




註解