FIX 4.2 / 4.4 · log & dòng thời gian

🏷️ Giải mã FIX

Dán log FIX vào: lệnh đi từng bậc từ NewOrderSingle qua Chờ, Mới, khớp một phần tới Khớp hết hay Huỷ kèm độ trễ mỗi bước; phiên 49→56 được soát hở seq, PossDup, nhịp heartbeat.

Mẫu:
Vòng đời lệnh

Sức khoẻ phiên
Vị thế
Lệnh đang mở
Dòng thời gian
Chi tiết

Tự nhận dấu phân cách, hoặc dựng lại trường khi thiếu SOH. Một lệnh là mọi message nối nhau qua ClOrdID (11), OrigClOrdID (41) và OrderID (37), kể cả Reject tầng phiên (35=3, RefSeqNum 45) và tầng ứng dụng (35=j, 45 hay 379) trỏ về chúng. Mỗi Execution Report đọc theo ExecType (150; FIX 4.2 thêm ExecTransType 20) trước rồi mới tới OrdStatus (39): chỉ F/G (4.2: 1/2 với 20=0/2) là khớp, nên 150=F với 39=6 là khớp trong lúc chờ huỷ còn 150=5 với 39=1 là sở nhận sửa. Độ trễ đo từ SendingTime (52, bản gửi lại lấy OrigSendingTime 122). Bản gửi lại (43=Y) trùng ExecID không tính bước mới; Sở đã nhận tới sau Mới, mọi trạng thái tới sau trạng thái kết thúc (Khớp hết, Đã huỷ, Bị từ chối, Hết hạn) hay Bị từ chối sau khi đã khớp thì tô đỏ, còn trạng thái chuyển tiếp (Chờ huỷ, Chờ sửa, Đã sửa, Dừng, Tạm ngưng) không bị cờ khi lệnh còn sống. Log của công ty chứng khoán thường có hai chân (khách ⇄ CTCK và CTCK ⇄ sở), mỗi khớp hiện ở mỗi chân một lần với ExecID riêng, nên sổ vị thế, lệnh mở và vòng đời dựng theo từng chân (chip để đổi, mặc định chân nối sở có lệnh; nhiều đường nối sở thì có thêm chip gộp): mỗi ExecID tính một lần theo cặp 49→56, đảo khớp bị huỷ (150=H qua ExecRefID 19), giữ giá bình quân mua, bán riêng theo tài khoản và mã, so LastPx từng khớp với giá đặt lúc khớp, và soát Σ LastQty với CumQty, OrderQty. Sức khoẻ phiên soát từng cặp 49→56: hở và trùng MsgSeqNum (GapFill phủ tới NewSeqNo), PossDup, và khoảng lặng dài nhất giữa hai message liên tiếp so với HeartBtInt (108). Mọi thứ dựng lại theo SendingTime nên dán log chiều nào cũng được. HOSE, HNX kết nối thành viên bằng FIX 4.4 theo đặc tả kết nối của từng sở nên đọc mặc định theo 4.4; 4.2 khi tag 8 nói vậy.