Order Cancel-Replace Request
Amending Working Orders
The Order Cancel-Replace Request message (MsgType=G) is used by the T4 FIX API to electronically amend (revise) the replaceable fields of working orders. This message is used for all CTS strategy types including outright futures, futures options, spreads, and multileg strategies.
The instrument for which the replace applies is identified with the following tags:
* Tag 48 = SecurityID * Tag 55 = Symbol * Tag 207 = SecurityExchange * Tag 167 = SecurityType
Options orders must also include:
* Tag 202 = Strike Price * Tag 201 = PutOrCall
All cancel-replaces must be uniquely identified with a verbose Client Order Id (Tag 11) between 12 and 20 characters. The subscribed account must also be provided.
Replaceable Fields
The fields that can be replaced:
Field Name | Tag Number | Comments |
---|---|---|
Order Quantity | 38 | For all Orders |
Price | 44 | For Limits, Stop Limits, and Market-If-Touched |
Stop Price | 99 | For Stops and Stop Limits |
MaxShow | 210 | For Icebergs (if supported by Exchange) |
Trailing Delta | 10100 | For Trailing Stops |
Activation Value | 10103 | For Activation Orders |
Identifying the Order to be Replaced
Working orders can be identified by:
* OrigClOrdId (Tag 41) – Client-side identifier of the target working order * OrderId (Tag 37) – T4 FIX API-generated unique identifier
Note: Orders with previous rejections can be replaced using either OrderId or the ClOrdId of the rejection.
Orders submitted outside the T4 FIX API (e.g., CTS T4 Front-End) must use OrderId (Tag 37), and OrigClOrdId should be set to the same value.
It is recommended to specify both OrigClOrdId and OrderId for all cancel-replaces.
Activating Queued Orders
For Queue Orders, the cancel-replace message is also used to activate held or suspended orders.
* Activation Value (Tag 10102) must be set to -1
Important Considerations
* Malformed replace orders will be rejected with a FIX Session Reject. * Application-level rejections are manifested with Cancel Reject messages. * All order routing must be preceded by a successful subscription to the account. See Collateral Inquiry for subscription instructions. * Contingent orders like OCO and AutoOCO can only be replaced one component at a time, identified by OrigClOrdID (Tag 41) and/or OrderID (Tag 37).
Message Dictionary
Tag | Field Name | Req'd | Comments |
---|---|---|---|
Standard Header | Y | MsgType = G | |
1 | Account | Y | Account (code) for which the order is submitted |
11 | ClOrdID | Y | Client-Side identifier for this replace order. Max characters: 20 |
41 | OrigClOrdID | Y | Client-Side ClOrdID of the target working order. Max characters: 20 |
37 | OrderId | Y | T4 API-generated unique identifier for the target working order |
48 | SecurityID | Y | T4 Market ID |
55 | Symbol | Y | T4 Contract ID |
207 | SecurityExchange | Y | T4 Exchange ID |
167 | SecurityType | Y | Instrument type (FUT, OPT, STK, SYN, BIN) |
201 | PutOrCall | N | For Options: 0=Put, 1=Call |
202 | StrikePrice | N | For Options: Strike Price |
54 | Side | Y | 0=None, 1=Buy, 2=Sell |
38 | OrderQty | Y | Number of contracts to replace. For partially filled orders, reflects original Quantity |
210 | MaxShow | N | Max visible quantity for Icebergs |
40 | OrdType | Y | Order Type. Some types cannot be replaced (Flatten, Hit, Market). Valid values: 1=Market, 2=Limit, 3=Stop, 4=Stop-Limit, J=Market If Touched, F=Flatten, N=Join, H=Hit |
44 | Price | N | Required for Limit, Stop-Limit, and Market-if-Touched. Auto OCO: relative to Trigger Price (Tag 10101). Negative allowed |
99 | StopPx | N | Required for Stops and Stop-Limit. Auto OCO: relative to Trigger Price (Tag 10101). Negative allowed |
59 | TimeInForce | Y | 0=Day, 1=GTC, 3=IOC, 4=FOK |
200 | MaturityMonthYear | N | Format YYYYMM |
60 | TransactTime | Y | Time order was requested (UTC) |
21 | HandlInst | N | 1=Automated private, 2=Automated public, 3=Manual |
77 | OpenClose | N | O=Open, C=Close |
58 | Text | N | Free form text |
107 | SecurityDesc | N | Description of SecurityID (Tag 48) |
1028 | ManualOrderIndicator | N | Y=Manual, N=Automated |
10100 | TrailingDelta | N | Trailing Stop amount |
10103 | ActivationValue | N | Conditions for ActivationType; multiple values delimited by “:” |
Standard Trailer | Y |
Sample Messages
Replacing a Working Order entered through the T4 FIX API
[FIXCANCELREPLACE] 34=121|49=T4Example|56=T4|50=TraderName|52=20121212-16:43:37.426|1=Account1|11=fr-634909058174264921|41=fn-634909058088464770|37=C8D64D65-7FCD-472B-9A55-3E77F404F1BE|48=CME_20121200_ESZ2|55=ES|207=CME_Eq|54=1|38=1|40=2|44=143025|59=0|167=FUT|21=1|60=20121212-16:43:37.426|204=0| [MsgSeqNum] 34 = 121 [SenderCompID] 49 = T4Example [TargetCompID] 56 = T4 [SenderSubID] 50 = TraderName [SendingTime] 52 = 20121212-16:43:37.426 [Account] 1 = Account1 [ClOrdID] 11 = fr-634909058174264921 [OrigClOrdID] 41 = fn-634909058088464770 [OrderID] 37 = C8D64D65-7FCD-472B-9A55-3E77F404F1BE [SecurityID] 48 = CME_20121200_ESZ2 [Symbol] 55 = ES [SecurityExchange] 207 = CME_Eq [Side] 54 = 1 (BUY) [OrderQty] 38 = 1 [OrdType] 40 = 2 (LIMIT) [Price] 44 = 143025 [TimeInForce] 59 = 0 (DAY) [SecurityType] 167 = FUT (FUTURE) [HandlInst] 21 = 1 (AUTOMATED_EXECUTION_ORDER_PRIVATE_NO_BROKER_INTERVENTION) [TransactTime] 60 = 20121212-16:43:37.426 [CustomerOrFirm] 204 = 0 (CUSTOMER) [fixexecutionreport] 34=5702|49=T4|56=T4Example|50=T4FIX|52=20121212-16:43:37.457|143=US,IL|1=Account1|11=fr-634909058174264921|41=fn-634909058088464770|17=48187.71332576498_ESZ2.63490905838440000012.1.C8D64D65|150=5|37=C8D64D65-7FCD-472B-9A55-3E77F404F1BE|39=5|48=CME_20121200_ESZ2|55=ES|207=CME_Eq|200=201212|59=0|107=E-mini S&P 500 Dec12|54=1|167=FUT|38=1|40=2|44=143025|60=20121212-16:43:58.440| [MsgSeqNum] 34 = 5702 [SenderCompID] 49 = T4 [TargetCompID] 56 = T4Example [SenderSubID] 50 = T4FIX [SendingTime] 52 = 20121212-16:43:37.457 [TargetLocationID] 143 = US,IL [Account] 1 = Account1 [ClOrdID] 11 = fr-634909058174264921 [OrigClOrdID] 41 = fn-634909058088464770 [ExecID] 17 = 48187.71332576498_ESZ2.63490905838440000012.1.C8D64D65 [ExecType] 150 = 5 (REPLACE) [OrderID] 37 = C8D64D65-7FCD-472B-9A55-3E77F404F1BE [OrdStatus] 39 = 5 (REPLACED) [SecurityID] 48 = CME_20121200_ESZ2 [Symbol] 55 = ES [SecurityExchange] 207 = CME_Eq [MaturityMonthYear] 200 = 201212 [TimeInForce] 59 = 0 (DAY) [SecurityDesc] 107 = E-mini S&P 500 Dec12 [Side] 54 = 1 (BUY) [SecurityType] 167 = FUT (FUTURE) [OrderQty] 38 = 1 [OrdType] 40 = 2 (LIMIT) [Price] 44 = 143025 [TransactTime] 60 = 20121212-16:43:58.440
Replacing a Working Order entered through the CTS Front-end
[FIXCANCELREPLACE] 34=6|49=T4Example|56=T4|50=TraderName|52=20121212-18:05:57.929|1=Account1|11=fr-634909107579297721|41=FA657BC9-A1D2-4644-B558-A1155C731DA4|37=FA657BC9-A1D2-4644-B558-A1155C731DA4|48=CME_20121200_ESZ2|55=ES|207=CME_Eq|54=1|38=1|40=2|44=143075|59=0|167=FUT|21=1|60=20121212-18:05:57.929|204=0| [MsgSeqNum] 34 = 6 [SenderCompID] 49 = T4Example [TargetCompID] 56 = T4 [SenderSubID] 50 = TraderName [SendingTime] 52 = 20121212-18:05:57.929 [Account] 1 = Account1 [ClOrdID] 11 = fr-634909107579297721 [OrigClOrdID] 41 = FA657BC9-A1D2-4644-B558-A1155C731DA4 [OrderID] 37 = FA657BC9-A1D2-4644-B558-A1155C731DA4 [SecurityID] 48 = CME_20121200_ESZ2 [Symbol] 55 = ES [SecurityExchange] 207 = CME_Eq [Side] 54 = 1 (BUY) [OrderQty] 38 = 1 [OrdType] 40 = 2 (LIMIT) [Price] 44 = 143075 [TimeInForce] 59 = 0 (DAY) [SecurityType] 167 = FUT (FUTURE) [HandlInst] 21 = 1 (AUTOMATED_EXECUTION_ORDER_PRIVATE_NO_BROKER_INTERVENTION) [TransactTime] 60 = 20121212-18:05:57.929 [CustomerOrFirm] 204 = 0 (CUSTOMER) [fixexecutionreport] 34=236|49=T4|56=T4Example|50=T4FIX|52=20121212-18:05:58.023|143=US,IL|1=Account1|11=fr-634909107579297721|17=48199.71332626389_ESZ2.63490910779020000012.1.FA657BC9|150=5|37=FA657BC9-A1D2-4644-B558-A1155C731DA4|39=5|48=CME_20121200_ESZ2|55=ES|207=CME_Eq|200=201212|59=0|107=E-mini S&P 500 Dec12|54=1|167=FUT|38=1|40=2|44=143075|60=20121212-18:06:19.020| [MsgSeqNum] 34 = 236 [SenderCompID] 49 = T4 [TargetCompID] 56 = T4Example [SenderSubID] 50 = T4FIX [SendingTime] 52 = 20121212-18:05:58.023 [TargetLocationID] 143 = US,IL [Account] 1 = Account1 [ClOrdID] 11 = fr-634909107579297721 [ExecID] 17 = 48199.71332626389_ESZ2.63490910779020000012.1.FA657BC9 [ExecType] 150 = 5 (REPLACE) [OrderID] 37 = FA657BC9-A1D2-4644-B558-A1155C731DA4 [OrdStatus] 39 = 5 (REPLACED) [SecurityID] 48 = CME_20121200_ESZ2 [Symbol] 55 = ES [SecurityExchange] 207 = CME_Eq [MaturityMonthYear] 200 = 201212 [TimeInForce] 59 = 0 (DAY) [SecurityDesc] 107 = E-mini S&P 500 Dec12 [Side] 54 = 1 (BUY) [SecurityType] 167 = FUT (FUTURE) [OrderQty] 38 = 1 [OrdType] 40 = 2 (LIMIT) [Price] 44 = 143075 [TransactTime] 60 = 20121212-18:06:19.020