|
| 1 | +local Consts = require("fix.consts") |
| 2 | + |
1 | 3 | local M = {} |
| 4 | +local FixTag = Consts.FixTag |
2 | 5 |
|
3 | 6 | --- @param message Message |
4 | 7 | function M.default(message) |
5 | | - local msg_type_name = message:field(35).value_text or "Unknown" |
| 8 | + local msg_type_name = message:field(FixTag.MsgType).value_text or "Unknown" |
6 | 9 |
|
7 | 10 | local text = string.format( |
8 | 11 | "%s: %s: %s=>%s | %s", |
9 | | - message:field(52).value or "???", |
10 | | - message:field(34).value or "???", |
11 | | - message:field(49).value or "???", |
12 | | - message:field(56).value or "???", |
13 | | - message:field(35).value_text or "???" |
| 12 | + message:field(FixTag.SendingTime).value or "???", |
| 13 | + message:field(FixTag.MsgSeqNum).value or "???", |
| 14 | + message:field(FixTag.SenderCompID).value or "???", |
| 15 | + message:field(FixTag.TargetCompID).value or "???", |
| 16 | + message:field(FixTag.MsgType).value_text or "???" |
14 | 17 | ) |
15 | 18 |
|
16 | | - if message:field(43).value == "Y" then |
| 19 | + if message:field(FixTag.PossDupFlag).value == "Y" then |
17 | 20 | text = text .. " [POSS DUP]" |
18 | 21 | end |
19 | 22 |
|
20 | 23 | local details = "" |
21 | 24 | if msg_type_name == "ExecutionReport" then |
22 | | - local exec_type = message:field(150).value_text or "???" |
| 25 | + local exec_type = message:field(FixTag.ExecType).value_text or "???" |
23 | 26 | if exec_type == "Trade" or exec_type == "TradeCorrect" then |
24 | | - local client_order_id = message:field(11).value |
25 | | - local exec_id = message:field(17).value or "MISSING" |
26 | | - local price = message:field(44).value or "MKT" |
27 | | - local amount = message:field(38).value or "???" |
| 27 | + local client_order_id = message:field(FixTag.ClOrdID).value |
| 28 | + local exec_id = message:field(FixTag.ExecID).value or "MISSING" |
| 29 | + local price = message:field(FixTag.Price).value or "MKT" |
| 30 | + local amount = message:field(FixTag.OrderQty).value or "???" |
28 | 31 | details = string.format("%s %s@%s ClOrdId=%s ExecId=%s", exec_type, amount, price, client_order_id, exec_id) |
29 | 32 | else |
30 | 33 | details = exec_type |
31 | 34 | end |
32 | 35 | elseif msg_type_name == "NewOrderSingle" then |
33 | | - local ord_type = message:field(40).value_text |
34 | | - local time_in_force = message:field(59).value_text |
35 | | - local side = message:field(54).value_text |
36 | | - local amount = message:field(38).value or "???" |
37 | | - local price = message:field(44).value or "MKT" |
38 | | - local symbol = message:field(55).value or "???" |
| 36 | + local ord_type = message:field(FixTag.OrdType).value_text |
| 37 | + local time_in_force = message:field(FixTag.TimeInForce).value_text |
| 38 | + local side = message:field(FixTag.Side).value_text |
| 39 | + local amount = message:field(FixTag.OrderQty).value or "???" |
| 40 | + local price = message:field(FixTag.Price).value or "MKT" |
| 41 | + local symbol = message:field(FixTag.Symbol).value or "???" |
39 | 42 | details = string.format("%s %s %s %s %s @ %s", side, time_in_force, ord_type, amount, symbol, price) |
40 | 43 | elseif msg_type_name == "Logout" then |
41 | | - details = message:field(58).value or "" |
| 44 | + details = message:field(FixTag.Text).value or "" |
42 | 45 | elseif msg_type_name == "ResendRequest" then |
43 | | - local begin_seq_no = message:field(7).value or "MISSING" |
44 | | - local end_seq_no = message:field(16).value or "MISSING" |
| 46 | + local begin_seq_no = message:field(FixTag.BeginSeqNo).value or "MISSING" |
| 47 | + local end_seq_no = message:field(FixTag.EndSeqNo).value or "MISSING" |
45 | 48 | details = string.format("%s - %s", begin_seq_no, end_seq_no) |
46 | 49 | elseif msg_type_name == "SequenceReset" then |
47 | | - local is_fill_gap = message:field(123).value == "Y" |
48 | | - local new_seq_num = message:field(36).value or "MISSING" |
| 50 | + local is_fill_gap = message:field(FixTag.GapFillFlag).value == "Y" |
| 51 | + local new_seq_num = message:field(FixTag.NewSeqNo).value or "MISSING" |
49 | 52 | if is_fill_gap then |
50 | 53 | details = string.format("Gap Fill to %s", new_seq_num) |
51 | 54 | else |
|
0 commit comments