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