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 : 登出

連線驗證

  1. 發起端無傳送登入訊息 當發起端原本應該傳送登入訊息給接收端,超過60秒未傳送登入訊息,連線就會主動中斷 這時發起端就要再重新連線

  2. 接收端驗證 接收端會驗證登入訊息,若驗證成功會立即回覆 Logon 登入訊息,若驗證失敗會回覆 Logout 登出信息

  3. 開始同步 發起端接收到 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電文規範作業手冊 - 台灣證券交易所