NEW FIX 4.4 電文說明
台灣證券交易所規範了FIX通訊協定作業平台,簡稱FIX
證交所TCP/IP資訊網路透過MPLS架構,讓證交所與每個券商主機之間都設定了點對點固定IP VC(Virtual Circuit)連線
通常發起端為證券商,建立連線之後傳送登入訊息讓證交所驗證,
FIX協定為非同步傳輸方式,可連續傳送委託單
基本介紹如下:
FIX 組成
FIX tag 組成包括:
- Header 表頭
- Body 訊息內容
- Trailer 表尾
Header 固定開頭為:
8=FIX.4.4<SOH>
Body 是要傳送的內容,基本格式為:
Key=Value<SOH>....
Trailer 結束使用的格式為: 其中 nnn 是透過 CheckSum 計算出的數值
10=nnn<SOH>
建立FIX連線
- 建立連線
- 驗證連線
- 發起端傳送登入訊息(Logon)
FIX Session 流程
FIX Session 主要用於登入、交換訊息、登出:
- Logon : 登入
- Message exchange : 訊息交換
- Logout : 登出
連線驗證
-
發起端無傳送登入訊息 當發起端原本應該傳送登入訊息給接收端,超過60秒未傳送登入訊息,連線就會主動中斷 這時發起端就要再重新連線
-
接收端驗證 接收端會驗證登入訊息,若驗證成功會立即回覆 Logon 登入訊息,若驗證失敗會回覆 Logout 登出信息
-
開始同步 發起端接收到 Logon 登入訊息後,就能開始傳送其他訊息
委託回報
當證券商連線到交易所下單,交易所會產生唯一的委託書號,隨著委託回報返回給券商
Checksum 機制
將 Checksum 之前的欄位二進位位元值總和,再除以 256 ,其餘值即 Checksum 檢核值
心跳訊息 (Heartbeat) 與 測試請求訊息(Test Request)
當證券商與證交所建立連線,證券商會傳送登入訊息,交易所會驗證身分,確認通過即提供回覆登入訊息給證券商
登入流程完畢之後,就會開始做訊息溝通
其中心跳訊息扮演的是偵測連線是否正常的腳色
在下方情況時,即啟動心跳訊息:
- 任一連線方於10秒內沒有傳送任何資料,就要主動傳輸一筆心跳訊息
HeartBeat每10秒傳送一次 RowData
RowData 組成為:
- Append-No : 隨機產生001-999 之間的一個三位數字
- Key-Value : Append-No * Password 取千與百二位數字
- Password : 證券商申請Fix Session 時候所輸入的密碼
任一連線方在心跳訊息(HeartBtInt) + 合理傳輸時間(20% HeartBtInt) 都沒有接到訊息時,
會在傳送測試請求(Test Request),並且預期要得到一筆帶有 TestReqID 的心跳訊息 如果再在心跳訊息(HeartBtInt) + 合理傳輸時間(20% HeartBtInt) 還是沒有接到訊息時,就確定連線失敗,並主動中斷,並重新在建立連線。
重送訊息 (Resend Request)
雙發若在通訊過程察覺訊息有遺漏,就能立即發送重送請求
- 重送單筆訊息
- 重送指定範圍內的訊息
- 重送指定訊息後的所有訊息
例如:
從第七筆資料到資料結束為止,可以這樣描述: BeginSDeqNo=7, EndSeqNo=0
從第七筆資料到第九筆資料為止,可以這樣描述: BeginSDeqNo=7, EndSeqNo=9
重送每一段訊息後的所有訊息,可以這樣描述: BeginSDeqNo=起始訊息, EndSeqNo=0
SESSION 拒絕訊息(Reject - Session Level)
當接收端發現有未合法的 FIX tag 時,就要發送 Session 拒絕訊息,且包含錯誤訊息說明、Tag欄位、序號
填補模式(Gap Fill) 與 重設模式(Reset)
填補模式是請求重送指定範圍的資料
重設模式是在災難發生,無法復原情況下,需使用重設模式來更新序號
登出
登出時,由一方發起登出訊息給接收方
接收方必須回覆登出訊息,以利於發起方確認連線正常且結束連線
若超過5秒 Timeout 時間沒有接收到接收方的 Logout 資訊,連線就會主動中斷
其他詳細說明,可直接參考 FIX4.4電文規範作業手冊 - 台灣證券交易所