2017年9月19日 星期二

IDC 二台主機比速度

IDC 慢的問題, 需要一個工具去看
其實我寫的 IDCTool 已經可以看出此現象
在這先釋出這個資訊, 加速回報給 IDC

------------------------------------------------------------

工具: IDCTool
說明: 實作 IDC Wire Protocol 包裝
      方便您測試 IDC 連線, 以及查詢訂閱等工作
參數: IP:Port ID Password    
位置: /ap/vipquoterd/mdc/bin (測試機)
      /ap/vipquote/mdc/bin   (正式機)

------------------------------------------------------------

以下示範在 "測試機" 連 IDC 主機, 並訂閱時間戳
(我們使用 SINOPFC9 這個帳號, 因為沒登入什麼都不能做)
./IDCTool 172.16.145.131:7023 SINOPFC9 SINOPFC9
然後你會看到連到,並登入成功

現在我們訂閱 IDC 公佈的時間戳交易所和商品
5026=999|5022=Subscribe|4=922|5=.UTC.TIME.DATE

接下來, 你應該可以看到,每秒刷來一筆,源頭打上的時間戳
CTF 437 欄位

------------------------------------------------------------

以下為 "正式機" 的連線登入資訊
./IDCTool 172.16.146.131:7023 SINOPFC9 SINOPFC9

也請訂閱相同商品, 這時你會發現如上在測試機一樣的資料送來

------------------------------------------------------------

關於時間差
從 437 欄位不難看出, 時間戳的內容是一樣的
而前面打上的本地時間(到 us), 是有時間差的
但如果截取了這二份去找 IDC, 一定會被吐嘈!!!
因為不同主機時間校時和累積差等等等根來不能比

所以我們要做一件事, 就是讓二個行為在同一個主機, 用相同機器時間
來證明, 測試機用了較遠的路由, 還可以勝過正式來源, 來問 IDC 你可知罪!

方法如下:

1. 我們要在 "正式機" 利用 ssh 連至測試, 並建一個 forward port 到測試的 CSP
ssh -L 17023:172.16.145.131:7023 vipquoterd@211.76.149.95
(要求連到測試, 並將外連到 145.131:7023 , 對應到本地的 17023 的意思)
※這個 console 在工作完成時, 指令同時轉至測試, 所以我們不使用
※千萬別關掉, 他就像 daemon, 關了 forward 就中止了

2. 分別開出二個 console 連到正式, 使用 IDCTool 連到二個主機, 訂閱時間戳
./IDCTool 172.16.146.131:7023 SINOPFC9 SINOPFC9   (我就是連到正式 CSP)
./IDCTool 127.0.0.1:17023 SINOPFC9 SINOPFC9       (我就是連到測試 CSP)

3. 你可以用畫面 Log 的本地時間, 比對 437 欄位相對紀錄, 算出時間差
   或是用 > 將 Console 寫到檔案再來比對

2017年9月17日 星期日

統一代碼規則

MDC 統一代碼說明

【選擇權代碼說明】

CommodityRoot 以下簡稱 [CR]
StrikePrice 以下簡稱 [PRIC]
ContractYYMM 以下簡稱 [YYMM]
Call / Put 以下簡稱 [C/P]

選擇權統一代碼格式如下
[CR].[PRIC].[YYMM].[C/P]

以 TAIFEX 為例,代碼為 "TXO.09800.1707.C"
您可以用 "." 來分割字串,取得4個欄位,即 [CR][PRIC][YYMM][C/P]

BUT! 有一種例外,可能會割出5個欄位
以 CME 為例,代碼為 "AD.0.915.1707.C"
當您用 "." 來分割字串,將會把 [PRIC] 割開,您必須小心,以例外處理

※ [PRIC] 因為有上手 "定小數" 或 "無小數" 以及 "實數" 的各種可能
   所以建議,統一於商品資訊 Commodity.StrikePrice 取得履約價,比較標準。

合約品種來源

我已知某 "交易所" 及 "合約品種" , 想在管理界面找到相關行情, 但不知是在 IDC or PATS

我們可以用 SourceDetail 來確認, 方法如下:

1. 開啟管理界面

2. 選 mdcmd 的 about

3. 切至 tables

4. 選 SourceDeail Table

5. 在 Exch 過濾欄, 輸入已知 "交易所"

6. 於列表中, 您就可以取得 Source 欄位來確認

IDC 登入紀錄

若您要查詢 mdcsd 某個 IDC 外掛行情源的登入資訊
您可以到 log 中尋找相關字眼, 方法如下:

1.移至 mdc/log 目錄下

2.依日期 grep -C 2 'Login' yyyymmdd/mdcsd-xxxx.log , 取得有 Login 字眼的上下2行
 Ex. grep -C 2 'Login' 20170917/mdcsd-sgx.log

tspubtm 壓測工具

tspubtm 壓測工具的測試模型, 如下: tspubtm(send)  ---tcp-->  MDC ---tcp-->  tspubtm(recv)  ※ tspubtm(send) /  tspubtm(recv) 須為同設備       為了更精確的計算時差...