Page History
...
| Message Name | MsgType[35] | Action | Explanation |
|---|---|---|---|
| Logon | A | Drop session | Trader already logged on |
| ExecutionReport | 8 | Update | New order + fill update |
| ExecutionAcknowledgement | BN | Update | Fill update |
| DontKnowTrade | Q | Update | Revoke fill via ExecID[17] |
| OrderTimeOut | OT | Update | Revoke fills via ClOrdID[11] |
| Currenex OrderTimeOut | U3 | Update | Revoke fills via ClOrdID[11] |
| Reject | 3 | Update | Revoke fill via MsgSeqNum[34] |
| BusinessMessageReject | j | Update | Revoke fill via MsgSeqNum[34] |
...
ExecutionReport[8] & ExecutionAcknowledgement[BN]
Some venues use ExecutionReport[8] as new (FXall), those are skipped. Some venues use ExecutionReport[8] as ack, those are inspected. Some venues use ExecutionReport[8] as both new and ack (Hotspot), those are included inspected too. Additionally, if Reflector has previously blocked an execution identified by ExecID[17], then value of Text[58], if it exists, will be replaced by Reflector's ErrorCode.
| Flag | Presence in 8 | Presence in BN | Field | Type |
|---|---|---|---|---|
| POSS_DUPE | Optional | Optional | PossDupFlag[43], PossResend[97] | BOOL |
| TEXT | Optional | Optional | Text[58] | STRING |
| ACCOUNT | Optional | Optional | Account[1], PartyRole[452], etc | STRING |
| ALLOC_ACCT | BANNED | BANNED | AllocAccount[79] | STRING |
| EXEC_TYPE | Required | - | ExecType[190], HSFXTradeStatus[7226] | ENUM |
| EXEC_ACK_STATUS | - | Required | ExecAckStatus[1036] | ENUM |
| ORDER_ID | Required | Required | ClOrdID[11] | STRING |
| EXEC_ID | Required | Required | ExecID[17] | STRING |
| SYMBOL | Required | Required | Symbol[55], SecurityID[48] | STRING, INT |
| CURRENCY | Optional | Optional | Currency[15] | STRING |
| SIDE | Required | Required | Side[54] | ENUM |
| CONTRACT_MULTIPLIER | Optional | Optional | ContractMultiplier[231] | FLOAT |
| PRICE | Optional | Optional | Price[44] | FLOAT |
| PRICE_TWO | BANNED | BANNED | Price2[640] | FLOAT |
| QUANTITY | Optional | Optional | OrderQty[38] | FLOAT |
| QUANTITY_TWO | BANNED | BANNED | OrderQty2[192] | FLOAT |
| LAST_PRICE | Required | Required | LastPx[31] | FLOAT |
| LAST_PRICE_TWO | BANNED | BANNED | LastPx2[...] | FLOAT |
| LAST_QUANTITY | Required | Required | LastQty[32] | FLOAT |
| LAST_QUANTITY_TWO | BANNED | BANNED | LastQty2[...] | FLOAT |
| SETTLE_DATE | Required | Required | SettlDate[64] | DATE |
| SETTLE_DATE_TWO | BANNED | BANNED | SettlDate2[193] | DATE |
| NUM_LEGS | Optional | Optional | NoLegs[555] | INT |
The handling of an inbound maker execution update is both complex (because we are essentially rescinding historic actions) and trivial (because things never actually get modified). For the sake of completeness, Reflector handles the complexity, even though it can never happen. The risk instance, upon processing a maker execution update request, can emit the following warnings:
- Z_EXEC_TIME_OUT - The confirm referred to an order that has been timed out. The confirm is ignored.
- Z_EXEC_EXPIRATION - The confirm arrived after the associated maker exec has already been made permanent. The confirm is ignored.
- Z_EXEC_ID_DISLOCATION - The conrm ExecID[17] matches something other than what was on record. The confirm is ignored. This is the most serious and least likely of the errors.
- Z_EXEC_NOT_FOUND - Rogue confirmation. No record of associated maker exec existed; hence it was 'invented' by the exchange. The execution is accepted, and immediately made permanent.
- Z_EXEC_REVISION - The confirm matches everything (exec id, order id, product, side), but quantity is different. The associated maker exec is updated. Not really an 'error' per se.
DontKnowTrade[Q]
OrderTimeOut[OT] & Currenex OrderTimeOut[U3]
...