Order Entry and Modification Messages


SUBMIT_NEW_SINGLE_ORDER [s_SubmitNewSingleOrder structure] Client >> Server

This message is used to submit a new single order into the market from the Client to the Server.

Field Name Field Description
[unsigned int16] Size

The standard message size field. Automatically set by constructor.

[unsigned int16] Type

The standard message type field. Automatically set by constructor.

[char] Symbol

The symbol for the order.

[char] Exchange

The optional exchange for the symbol.

[char] ClientOrderID

This is the Client supplied order identifier. The Server will maintain this order identifier throughout the life of the order and always provide it back through the ClientOrderID field in the ORDER_UPDATE messages for the order.

This identifier cannot be an identifier used for a currently open order and it cannot be an identifier previously used in the current trading session. The trading session typically will be a 24-hour period defined by the Server. The Server shall reject an order with a client order identifier that is for a currently open order or which has already been used during the current trading session.

[OrderTypeEnum] OrderType

The order type. For list of order types, refer to OrderTypeEnum.

[BuySellEnum] BuySell

The side of the order. Either Buy or Sell.

[double] Price1

This is the price of the order. This is the limit price for a Limit order, the stop price for a Stop order, or the trigger price for a Market if Touched order.

[double] Price2

For a Stop-Limit order, this is the limit price. This only applies to Stop-Limit orders.

[TimeInForceEnum] TimeInForce

The Time in Force for the order or orders (in the case of an OCO order).

For more information, refer to TimeInForceEnum.

[t_DateTime] GoodTillDateTime

In the case of when the TimeInForce is TIF_GOOD_TILL_DATE_TIME, this specifies the expiration Date-Time of the order.

[double] Quantity

The quantity of the order. The exact meaning of this will be specified by the Server implementation.

[char] TradeAccount

This is the trade account as a text string that the order belongs to.

[unsigned int8] IsAutomatedOrder

This is set 1 to signify the order has been submitted by an automated trading process.

[unsigned int8] IsParentOrder

The Client will set this to 1 when the order is part of a bracket order. This indicates that this is the parent order. A bracket order will consist of a SUBMIT_NEW_SINGLE_ORDER message followed by a SUBMIT_NEW_OCO_ORDER message. The Server will use IsParentOrder as a flag to know that this message is a parent order. The Server will hold onto this order until it receives the subsequent SUBMIT_NEW_OCO_ORDER message and then process all of the orders as one complete set.

[char] FreeFormText

Optional: This is an optional text string which can be set by the Client to associate text with the order. The Server is not under any obligation to use this text and it may place a limitation on the length of this text.

[OpenCloseTradeEnum] OpenOrClose

For the description for this field, refer to OpenCloseTradeEnum.

SUBMIT_NEW_SINGLE_ORDER_INT [s_SubmitNewSingleOrderInt structure] Client >> Server

The SUBMIT_NEW_SINGLE_ORDER_INT message is identical to SUBMIT_NEW_SINGLE_ORDER except that the order prices are as integers.

The Client will only send this message to the Server if UseIntegerPriceOrderMessages is set in the LOGON_RESPONSE message.

When setting the Price1 and Price2 fields, multiply the order price by the FloatToIntPriceMultiplier value provided in the SECURITY_DEFINITION_RESPONSE message for the Symbol being traded.

This message also contains the Divisor field. This is the FloatToIntPriceMultiplier value provided in the SECURITY_DEFINITION_RESPONSE message for the symbol being traded. The Server needs to divide the Price1 and Price2 fields by this Divisor to get the prices as float values.

Field Name Field Description
[unsigned int16] Size

The standard message size field. Automatically set by constructor.

[unsigned int16] Type

The standard message type field. Automatically set by constructor.

[char] Symbol

The symbol for the order.

[char] Exchange

The optional exchange for the symbol.

[char] ClientOrderID

This is the Client supplied order identifier. The Server will maintain this order identifier throughout the life of the order and always provide it back through the ClientOrderID field in the ORDER_UPDATE messages for the order.

This identifier cannot be an identifier used for a currently open order and it cannot be an identifier previously used in the current trading session. The trading session typically will be a 24-hour period defined by the Server. The Server shall reject an order with a client order identifier that is for a currently open order or which has already been used during the current trading session.

[OrderTypeEnum] OrderType

The order type. For list of order types, refer to OrderTypeEnum.

[BuySellEnum] BuySell

The side of the order. Either Buy or Sell.

[int64] Price1

This is the price of the order. This is the limit price for a Limit order, the stop price for a Stop order, or the trigger price for a Market if Touched order.

[int64] Price2

For a Stop-Limit order, this is the limit price. This only applies to Stop-Limit orders.

[TimeInForceEnum] TimeInForce

The Time in Force for the order or orders (in the case of an OCO order).

For more information, refer to TimeInForceEnum.

[t_DateTime] GoodTillDateTime

In the case of when the TimeInForce is TIF_GOOD_TILL_DATE_TIME, this specifies the expiration Date-Time of the order.

[float] Divisor

This is the FloatToIntPriceMultiplier value provided in the SECURITY_DEFINITION_RESPONSE message for the symbol being traded. The Server needs to divide the Price1 and Price2 fields by this Divisor to get the prices as float values.

[int64] Quantity

The quantity of the order. The exact meaning of this will be specified by the Server implementation.

[char] TradeAccount

This is the trade account as a text string that the order belongs to.

[unsigned int8] IsAutomatedOrder

This is set 1 to signify the order has been submitted by an automated trading process.

[unsigned int8] IsParentOrder

The Client will set this to 1 when the order is part of a bracket order. This indicates that this is the parent order. A bracket order will consist of a SUBMIT_NEW_SINGLE_ORDER message followed by a SUBMIT_NEW_OCO_ORDER message. The Server will use IsParentOrder as a flag to know that this message is a parent order. The Server will hold onto this order until it receives the subsequent SUBMIT_NEW_OCO_ORDER message and then process all of the orders as one complete set.

[char] FreeFormText

Optional: This is an optional text string which can be set by the Client to associate text with the order. The Server is not under any obligation to use this text and it may place a limitation on the length of this text.

[OpenCloseTradeEnum] OpenOrClose

For the description for this field, refer to OpenCloseTradeEnum.

SUBMIT_NEW_OCO_ORDER [s_SubmitNewOCOOrder structure] Client >> Server

This is a message from the Client to the Server for submitting an order cancels order (OCO) pair into the market. What this means is when one of the orders is filled or canceled, the other order will be canceled. If one order partially fills, the other order will be reduced in quantity by the fill amount of the order that partially filled.

A service provider must implement OCO orders on the server so that they can independently be modified (Cancel/Replace) and canceled independently using each order's distinct ServerOrderID. Although, if one of the orders is canceled by the Client, the other order will be canceled as well unless they have a parent order, as specified through the ParentTriggerClientOrderID field, in which case the other order should remain open.

If the OCO order pair is rejected, this must be communicated through two separate ORDER_UPDATE messages, 1 for each order, with the OrderUpdateReason set to NEW_ORDER_REJECTED.

Field Name Field Description
[unsigned int16] Size

The standard message size field. Automatically set by constructor.

[unsigned int16] Type

The standard message type field. Automatically set by constructor.

[char] Symbol

The symbol for the order.

[char] Exchange

The optional exchange for the symbol.

[char] ClientOrderID_1

The Client supplied order identifier for the first order. The Server will remember this for the life of the order.

[OrderTypeEnum] OrderType_1

The order type for the first order. For list of order types, refer to OrderTypeEnum.

[BuySellEnum] BuySell_1

The side for the first order. Either Buy or Sell.

[double] Price1_1

This is the price of the first order. This is the limit price for a Limit order, the stop price for a Stop order, or the trigger price for a Market if Touched order.

[double] Price2_1

This is the second price for the first order. For a Stop-Limit order, this is the limit price. Price2_1 only applies to Stop-Limit orders.

[double] Quantity_1

The quantity for the first order.

[char] ClientOrderID_2

The Client supplied order identifier for the second order. The Server will remember this for the life of the order.

[OrderTypeEnum] OrderType_2

The order type for the second order. For list of order types, refer to OrderTypeEnum.

[BuySellEnum] BuySell_2

The side for the second order. Either Buy or Sell.

[double] Price1_2

This is the price of the second order. This is the limit price for a Limit order, the stop price for a Stop order, or the trigger price for a Market if Touched order.

[double] Price2_2

This is the second price for the second order. For a Stop-Limit order, this is the limit price. Price2_2 only applies to Stop-Limit orders.

[double] Quantity_2

The quantity for the second order.

[TimeInForceEnum] TimeInForce

The Time in Force for the order or orders (in the case of an OCO order).

For more information, refer to TimeInForceEnum.

[t_DateTime] GoodTillDateTime

In the case of when the TimeInForce is TIF_GOOD_TILL_DATE_TIME, this specifies the expiration Date-Time of the order. This applies to both of the orders in the OCO pair.

[unsigned int8] IsAutomatedOrder

Set to 1 for an order submitted by an automated trading system.

[char] TradeAccount

This is the trade account as a text string that the orders belong to.

[char] ParentTriggerClientOrderID

Optional: This field supports the submission of an OCO order pair which has a parent. This is known as a Bracket order.

For complete documentation for bracket orders, refer to Bracket Order Procedures.

[char] FreeFormText

Optional: This is an optional text string which can be set by the Client to associate text with each of the OCO orders. The Server is not under any obligation to use this text and it may place a limitation on the length of this text.

[OpenCloseTradeEnum] OpenOrClose

For the description for this field, refer to OpenCloseTradeEnum.

[PartialFillHandlingEnum] PartialFillHandling

Specifies how partial fills should be handled when when one of the orders in the OCO order set partially fills.

For the possible values, refer to PartialFillHandlingEnum.

SUBMIT_NEW_OCO_ORDER_INT [s_SubmitNewOCOOrderInt structure] Client >> Server

The SUBMIT_NEW_OCO_ORDER_INT message is identical to SUBMIT_NEW_OCO_ORDER except that the order prices are as integers.

The Client will only send this message to the Server if UseIntegerPriceOrderMessages is set in the LOGON_RESPONSE message.

When setting the Price1 and Price2 fields, multiply the order price by the FloatToIntPriceMultiplier value provided in the SECURITY_DEFINITION_RESPONSE message for the Symbol being traded.

This message also contains the Divisor field. This is the FloatToIntPriceMultiplier value provided in the SECURITY_DEFINITION_RESPONSE message for the symbol being traded. The Server needs to divide the Price1 and Price2 fields by this Divisor to get the prices as float values.

Field Name Field Description
[unsigned int16] Size

The standard message size field. Automatically set by constructor.

[unsigned int16] Type

The standard message type field. Automatically set by constructor.

[char] Symbol

The symbol for the order.

[char] Exchange

The optional exchange for the symbol.

[char] ClientOrderID_1

The Client supplied order identifier for the first order. The Server will remember this for the life of the order.

[OrderTypeEnum] OrderType_1

The order type for the first order. For list of order types, refer to OrderTypeEnum.

[BuySellEnum] BuySell_1

The side for the first order. Either Buy or Sell.

[int64] Price1_1

This is the price of the first order. This is the limit price for a Limit order, the stop price for a Stop order, or the trigger price for a Market if Touched order.

[int64] Price2_1

This is the second price for the first order. For a Stop-Limit order, this is the limit price. This only applies to Stop-Limit orders.

[int64] Quantity_1

The quantity of the first order. The exact meaning of this will be specified by the Server implementation.

[char] ClientOrderID_2

The Client supplied order identifier for the second order. The Server will remember this for the life of the order.

[OrderTypeEnum] OrderType_2

The order type of the second order. For list of order types, refer to OrderTypeEnum.

[BuySellEnum] BuySell_2

The side of the second order. Either Buy or Sell.

[int64] Price1_2

This is the price of the second order. This is the limit price for a Limit order, the stop price for a Stop order, or the trigger price for a Market if Touched order.

[int64] Price2_2

This is the second price for the second order. For a Stop-Limit order, this is the limit price. This only applies to Stop-Limit orders.

[int64] Quantity_2

The quantity of the second order. The exact meaning of this will be specified by the Server implementation.

[TimeInForceEnum] TimeInForce

The Time in Force for the order or orders (in the case of an OCO order).

For more information, refer to TimeInForceEnum.

[t_DateTime] GoodTillDateTime

In the case of when the TimeInForce is TIF_GOOD_TILL_DATE_TIME, this specifies the expiration Date-Time of the order. This applies to both of the orders in the OCO pair.

[char] TradeAccount

This is the trade account as a text string that the orders belong to.

[unsigned int8] IsAutomatedOrder

Set to 1 for an order submitted by an automated trading system.

[char] ParentTriggerClientOrderID

Optional: This field supports the submission of an OCO order pair which has a parent. This is known as a Bracket order.

For complete documentation for bracket orders, refer to Bracket Order Procedures.

[char] FreeFormText

Optional: This is an optional text string which can be set by the Client to associate text with each of the OCO orders. The Server is not under any obligation to use this text and it may place a limitation on the length of this text.

[float] Divisor

This is the FloatToIntPriceMultiplier value provided in the SECURITY_DEFINITION_RESPONSE message for the Symbol being traded. The Server needs to divide the Price1_* and Price2_* fields by this Divisor to get the prices as float values.

[OpenCloseTradeEnum] OpenOrClose

For the description for this field, refer to OpenCloseTradeEnum.

[PartialFillHandlingEnum] PartialFillHandling

Specifies how partial fills should be handled when when one of the orders in the OCO order set partially fills.

For the possible values, refer to PartialFillHandlingEnum.

CANCEL_REPLACE_ORDER [s_CancelReplaceOrder structure] Client >> Server

This message is sent by the Client to the Server to cancel and replace an existing order. This is also known as an order modification.

Field Name Field Description
[unsigned int16] Size

The standard message size field. Automatically set by constructor.

[unsigned int16] Type

The standard message type field. Automatically set by constructor.

[char] ServerOrderID

This is the order identifier for the order to modify. The Client needs to set this to the ServerOrderID field received back in the most recent ORDER_UPDATE message for the order.

The Server will rely upon this ServerOrderID and only this order identifier to identify the order to be canceled and replaced. Although the given ClientOrderID by the Client must not change.

[char] ClientOrderID

This is the Client's own order identifier for the order.

This must be the same throughout the life of the order. If the Server sees that this order identifier has changed in relation to the ServerOrderID, then it should reject this message with a ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED

In the case where the order modification cannot be performed because the ServerOrderID does not exist, the Server will send a ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED and ClientOrderID set to the given ClientOrderID in this message. ServerOrderID will be unset because an invalid server order identifier was given.

[double] Price1

For orders that require a price, this is the new order price.

This value can be left unset indicating to the Server that Price1 must not change and only the Quantity. In this case it is necessary to set Price1IsSet to a 0 value.

[double] Price2

For Stop-Limit orders this is the new Limit price. For other order types it is not used.

This value can be left unset indicating to the Server that Price2 must not change and only the Quantity. In this case it is necessary to set Price2IsSet to a 0 value.

[double] Quantity

This is the new order quantity. It this is 0, then this means the order quantity must not be changed by the Server.

If the order has partially filled, then this is going to be the order quantity which also includes the amount which has partially filled.

For example, if the original quantity was 10 and there has been a partial fill of 3, the Client wants a fill of 2 more making a total of 5, then the Client will set this to 5.

[unsigned int8] Price1IsSet

When this field is set to a nonzero value, it indicates that Price1 is set and the server should use the value, if it applies to the order type.

The default value is 1.

[unsigned int8] Price2IsSet

When this field is set to a nonzero value, it indicates that Price2 is set and the server should use the value, if it applies to the order type.

The default value is 1.

[OrderTypeEnum] OrderType

The Order Type for the order. For list of Order Types, refer to OrderTypeEnum.

The default value is ORDER_TYPE_UNSET.

When this field is set to a value other than ORDER_TYPE_UNSET, it indicates that the OrderType is being changed.

If the server does not support changing the Order Type, it needs to reject this ORDER_CANCEL_REPLACE message and send an ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED.

[TimeInForceEnum] TimeInForce

The Time in Force for the order. For a list of Time in Force values, refer to TimeInForceEnum.

The default value is TIF_UNSET.

When this field is set to a value other than TIF_UNSET, it indicates that the TimeInForce is being changed.

If the server does not support changing the Time in Force of the order, it needs to reject this ORDER_CANCEL_REPLACE message and send an ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED.

[t_DateTime] GoodTillDateTime

In the case of when the TimeInForce field is TIF_GOOD_TILL_DATE_TIME, this specifies the expiration Date-Time of the order.

CANCEL_REPLACE_ORDER_INT [s_CancelReplaceOrderInt structure] Client >> Server

The CANCEL_REPLACE_ORDER_INT is a message from the Client to Server to cancel and replace (modify) an order.

It is identical to CANCEL_REPLACE_ORDER except the prices are as integers.

Field Name Field Description
[unsigned int16] Size

The standard message size field. Automatically set by constructor.

[unsigned int16] Type

The standard message type field. Automatically set by constructor.

[char] ServerOrderID

This is the order identifier for the order to modify. The Client needs to set this to the ServerOrderID field received back in the most recent ORDER_UPDATE message for the order.

The Server will rely upon this ServerOrderID and only this order identifier to identify the order to be canceled and replaced. Although the given ClientOrderID by the Client must not change.

[char] ClientOrderID

This is the Client's own order identifier for the order.

This must be the same throughout the life of the order. If the Server sees that this order identifier has changed in relation to the ServerOrderID, then it should reject this message with a ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED

In the case where the order modification cannot be performed because the ServerOrderID does not exist, the Server will send a ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED and ClientOrderID set to the given ClientOrderID in this message. ServerOrderID will be unset because an invalid server order identifier was given.

[int64] Price1

For orders that require a price, this is the new order price.

This is an integer value. This is calculated by multiplying the actual order price by the FloatToIntPriceMultiplier field from the SECURITY_DEFINITION_RESPONSE message for the Symbol of the order.

This value can be left unset indicating to the Server that Price1 must not change and only the Quantity. In this case it is necessary to set Price1IsSet to a 0 value.

[int64] Price2

For Stop-Limit orders this is the new Limit price. For other order types it is not used.

This is an integer value. This is calculated by multiplying the actual order price by the FloatToIntPriceMultiplier field from the SECURITY_DEFINITION_RESPONSE message for the Symbol of the order.

This value can be left unset indicating to the Server that Price2 must not change and only the Quantity. In this case it is necessary to set Price2IsSet to a 0 value.

[float] Divisor

This is the FloatToIntPriceMultiplier field received from the SECURITY_DEFINITION_RESPONSE message for the Symbol of the order.

The Server needs to divide the Price1 or Price2 fields by this Divisor to arrive at the original floating-point value.

[int64] Quantity

This is the new order quantity. It this is 0, then this means the order quantity must not be changed by the Server.

If the order has partially filled, then this is going to be the order quantity which also includes the amount which has partially filled.

For example, if the original quantity was 10 and there has been a partial fill of 3, the Client wants a fill of 2 more making a total of 5, then the Client will set this to 5.

[unsigned int8] Price1IsSet

When this field is set to a nonzero value, it indicates that Price1 is set and the server should use the value, if it applies to the order type.

The default value is 1.

[unsigned int8] Price2IsSet

When this field is set to a nonzero value, it indicates that Price2 is set and the server should use the value, if it applies to the order type.

The default value is 1.

[OrderTypeEnum] OrderType

The Order Type for the order. For list of Order Types, refer to OrderTypeEnum.

The default value is ORDER_TYPE_UNSET.

When this field is set to a value other than ORDER_TYPE_UNSET, it indicates that the OrderType is being changed.

If the server does not support changing the Order Type, it needs to reject this ORDER_CANCEL_REPLACE message and send an ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED.

[TimeInForceEnum] TimeInForce

The Time in Force for the order. For a list of Time in Force values, refer to TimeInForceEnum.

The default value is TIF_UNSET.

When this field is set to a value other than TIF_UNSET, it indicates that the TimeInForce is being changed.

If the server does not support changing the Time in Force of the order, it needs to reject this ORDER_CANCEL_REPLACE message and send an ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REPLACE_REJECTED.

[t_DateTime] GoodTillDateTime

In the case of when the TimeInForce field is TIF_GOOD_TILL_DATE_TIME, this specifies the expiration Date-Time of the order.

CANCEL_ORDER [s_CancelOrder structure] Client >> Server

This is a message from the Client to the Server requesting a previously sent order to be canceled.

Field Name Field Description
[unsigned int16] Size

The standard message size field. Automatically set by constructor.

[unsigned int16] Type

The standard message type field. Automatically set by constructor.

[char] ServerOrderID

This is the order identifier for the order to cancel. The Client needs to set this to the ServerOrderID field received back in the most recent ORDER_UPDATE message for the order. The only case in which a ServerOrderID would change is in the case of a successful order Cancel and Replace operation.

The Server will rely upon this ServerOrderID and only this order identifier to identify the order to be canceled. Although the given ClientOrderID from the Client must not change.

[char] ClientOrderID

This is the Client's own order identifier for the order.

This must be the same throughout the life of the order. If the Server sees that this order identifier has changed in relation to the ServerOrderID , then it should reject this message with a ORDER_UPDATE message with the OrderUpdateReason set to ORDER_CANCEL_REJECTED.


*Last modified Friday, 12th August, 2016.