Create New Order <D>

As known as New Order Single in FIX

The New Order Single message is used to submit a new order to the exchange for execution.

Order Types Supported

  • Limit Order Day - OrdType = Limit (40=2), TimeInForce = Day (59=0)
  • Limit Order (GTC) - OrdType = Limit (40=2), TimeInForce = Good Till Cancel (GTC) (59=1)
  • Limit Order (GTD) - OrdType = Limit (40=2), TimeInForce = Good Till Date (GTD), (59=6), ExpireDate = a specific date (e.g. 432=20220927)
  • Market Order - OrdType = Market (40=1)
  • Immediate or Cancel (IOC) - OrdType = Limit (40=2), TimeInForce = Immediate or Cancel (IOC) (59=3)
  • Fill or Kill (FOK) - OrdType = Limit (40=2), TimeInForce = Fill or Kill(FOK) (59=4)
TagField NameData TypeReq’dComments
Standard headerYMsgType 35=D
1AccountstringYThe exchange user uuid.
For standard account, this should match the one specified in the Logon <A> message Username <553> field.
For advanced account, OSL would assign a different value. Please check with your technical onboarding team for details.
21HandlInstintNInstructions for order handling on the exchange. Valid value:

1 - Automated execution order, private, no intervention.
11ClOrdIDstringYUnique identifier of the order as assigned by client.
38OrderQtyfloatYQuantity to trade.
44PricefloatCPrice per unit of quantity (e.g. per 1 BTC coin). Not required for Market (40=1) orders.
423PriceTypeintNCode to represent the price type. Valid value:

2 - Per unit
40OrdTypeintYOrder type. Valid values:

1 - Market
2 - Limit
54SideintYSide of order. Valid values:

1 - Buy
2 - Sell
59TimeInForceintNSpecifies how long the order remains in effect before its expiry . Valid values:
0 - Day
1 - Good Till Cancel (GTC)
3 - Immediate or Cancel (IOC)
4 - Fill or Kill (FOK)
6 - Good Till Date (GTD)

- Exchange will convert to Day automatically if invalid value detected. For market orders, TimeInForce will be ignored.
- A Day order will expire after 23:59:59 UTC of the same day it was posted on.
60TransactTimetimestampYTime of execution/order creation in UTC i.e. yyyyMMdd-hh:mm:ss:xxx
126ExpireTimetimestampNThe time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate <432> is not present in the message. The order will expire on ExpireTime of the same day the order is entered.
432ExpireDatedateCThe date of order expiration (UTC) in YYYYMMDD format. Required if TimeInForce is GTD (59=6) and ExpireTime <126> is not present in the message. When specified, the order will expire after 23:59:59 UTC on ExpireDate .
110MinQtyfloatNMinimum quantity of the order to be executed.
111MaxFloorfloatNMaximum quantity within the order to be shown on the exchange at any given time.
453NoPartyIDsintNA repeating group (↺) which should contain unique combinations of below tags: PartyID <448> PartyIDSource <447> PartyRole <452>

By default, when no PartyID group is specified in the order entry message, OSL will include two groups of PartyID data in the execution report. These groups consist of PartyRole <452> with the following values:
1 - Executing Firm
12 - Executing Trader

In addition to these default groups, users have the option to include additional PartyID group(s) in the order entry. The value provided in the additional group(s) will be echoed in the Execution Report without any alteration.
↺ 448PartyIDstringCParty identifier/code. It can be an Exchange firm name or user unique identifier that is the same as Tag <1>. e.g. XXXX_GROUP.
↺ 447PartyIDSourcestringNIdentifies class or source of PartyID <448> Valid value:

D - Proprietary/Custom code
↺ 452PartyRoleintNIdentifies the type of PartyID <448>.
Default values:

1 - Executing Firm
12 - Executing Trader
Standard trailerY