OrdStatus[39] identifies current status of order.
Valid values:
0 = New
1 = Partially filled
2 = Filled
3 = Done for day
4 = Canceled
<5 has been removed~!>
6 = Pending Cancel (e.g. result of Order Cancel Request <F>)
7 = Stopped
8 = Rejected
9 = Suspended
A = Pending New
B = Calculated
C = Expired
D = Accepted for bidding
E = Pending Replace (e.g. result of Order Cancel/Replace Request <G>)
ExecType[150] describes the specific ExecutionRpt. (I guess it implies the action just executed on sell side ... Rather than the current status of that order, separated terms with different "nature")
Valid values:
0 = New
3 = Done for day
4 = Canceled
5 = Replace
6 = Pending Cancel (e.g. result of Order Cancel Request <F>)
7 = Stopped
8 = Rejected
9 = Suspended
A = Pending New
B = Calculated
C = Expired
D = Restated (ExecutionRpt sent unsolicited by sellside, with ExecRestatementReason <378> (378) set)
E = Pending Replace (e.g. result of Order Cancel/Replace Request <G>)
F = Trade (partial fill or fill)
G = Trade Correct (formerly an ExecTransType <20> (20))
H = Trade Cancel (formerly an ExecTransType <20>)
I = Order Status (formerly an ExecTransType <20>)
Oh, my supervisor gave me this one to read then ... And I have read for around an hour to figure out more on the difference between ExecType & OrdStatus ... together with the behaviour of amending orders:
http://www.fixdeveloper.com/2014/05/fix-44-order-state-change-matrices.htmlAn example captured:
C.3 - Replace to decrease quantity
C.3.a - Cancel/replace request sent whilst execution is being reported, the requested order qty exceeds the cum qty. Order is replaced then filled
Time | Message Received (ClOrdID, OrigClOrdID) | Message Sent (ClOrdID, OrigClOrdID) | Exec Type | OrdStatus | Order Qty | Cum Qty | Leaves Qty | Last Qty | Comment |
---|---|---|---|---|---|---|---|---|---|
1 | New Order(X) | 10000 | |||||||
2 | Execution(X) | Rejected | Rejected | 10000 | 0 | 0 | 0 | If order is rejected | |
2 | Execution(X) | New | New | 10000 | 0 | 10000 | 0 | ||
3 | Execution(X) | Trade | Partially Filled | 10000 | 1000 | 9000 | 1000 | Execution for 1000 | |
4 | Replace Request(Y,X) | 8000 | Request a decrease order quantity to 8000 (leaving 7000 open) | ||||||
4 | Execution(X) | Trade | Partially Filled | 10000 | 1500 | 8500 | 500 | Execution for 500 sent. Replace request and this execution report pass each other on the connection | |
5 | Cancel Reject (Y,X) | Partially Filled | If request is rejected by salesperson | ||||||
5 | Execution (Y,X) | Pending Replace | Pending Replace | 10000 | 1500 | 8500 | 0 | "Pending replace" order status takes precedence over "partially filled" order status | |
6 | Execution(X) | Trade | Pending Replace | 10000 | 1600 | 8400 | 100 | Execution for 100 occurs before cancel/replace request is accepted | |
7 | Cancel Reject (Y,X) | Partially Filled | If request is rejected by trader/exchange | ||||||
7 | Execution (Y,X) | Replace | Partially Filled | 8000 | 1600 | 6400 | 0 | Replace is accepted as requested order qty exceeds cum qty | |
8 | Execution (Y) | Trade | Filled | 8000 | 8000 | 0 | 6400 | Execution for 6400. |
沒有留言:
張貼留言