Skip to content

FIX 4.4: NewOrderSingle

The process of opening a trading position in FIX 4.4 is performed using the New Order -- Single message (MsgType = D).\ This message is sent by the client (initiator) to the broker (acceptor) to request a new trade execution.

In the current ScaleTrade implementation this message is mapped to the internal trade routing path:

  • NewOrderSingle
  • Router::ExecFIXAction("OpenTrade", ...)
  • response through ExecutionReport

New Order -- Single (MsgType = D)

Example

8=FIX.4.4|9=134|35=D|34=4|49=CLIENT_1|52=20260408-20:34:22|56=SERVER|
11=ORD-1775680462350-830df5|21=1|38=100|40=1|54=1|55=EURUSD|
60=20260408-20:34:22|10=212|

Key Fields

Tag Name Description
35=D MsgType New Order – Single
11 ClOrdID Unique order ID assigned by the client
21 HandlInst Handling instructions (1 = Automated execution order, private, no broker intervention)
49 SenderCompID FIX slot code, for example CLIENT_1
56 TargetCompID Server CompID, usually SERVER
55 Symbol Instrument identifier (e.g., EURUSD)
54 Side 1 = Buy, 2 = Sell
38 OrderQty Order quantity used by current FIX transport
40 OrdType Order type (1 = Market, 2 = Limit, 3 = Stop, etc.)
44 Price Price (required for limit orders, optional for market orders)
60 TransactTime Order creation timestamp
10 CheckSum Message checksum

Workflow: Opening a Trade

  1. Client → Server: sends New Order – Single (35=D) with order details.\
  2. Server → Client: replies with Execution Report (35=8):
    • New (OrdStatus = 0, ExecType = 0) -- routing accepted\
    • Rejected (OrdStatus = 8, ExecType = 8) -- routing or business validation failed

Execution Report (Order Confirmation)

Example (Order Rejected)

8=FIX.4.4|9=191|35=8|34=2|49=SERVER|52=20260408-20:34:22.499|56=CLIENT_1|
6=0|11=ORD-1775680462350-830df5|14=0|17=EXEC-1775680462|
37=ORD-1775680462350-830df5|39=8|54=1|55=EURUSD|58=Trade disabled|
150=8|151=0|10=064|

Key Fields in Execution Report

Tag Name Description
35=8 MsgType Execution Report
37 OrderID Unique order ID assigned by the broker
11 ClOrdID Client order ID (matches the one from New Order – Single)
17 ExecID Execution identifier
150 ExecType Execution type (0 = New, 4 = Canceled, 8 = Rejected, F = Trade, …)
39 OrdStatus Order status (0 = New, 2 = Filled, 8 = Rejected)
151 LeavesQty Remaining quantity
14 CumQty Cumulative filled quantity
6 AvgPx Average execution price
58 Text Human-readable status or rejection reason

Current Server Scope

  • currently implemented:
  • open request through 35=D
  • immediate 35=8 response
  • not yet implemented in this FIX scope:
  • cancel through 35=F
  • order status through 35=H
  • mass status through 35=AF
  • full order lifecycle replay

Best Practices

  • Use unique ClOrdID for every new order to avoid duplication.\
  • Handle Execution Reports carefully -- they are the authoritative result of the current FIX order submission path.\
  • Monitor OrdStatus and ExecType fields to track the order lifecycle.\
  • Use proper TimeInForce to control order expiration.\
  • Ensure correct symbol format (depends on broker/exchange).

Summary

Opening a position in FIX 4.4 is done with the New Order -- Single (35=D) message.\ The broker confirms via Execution Report (35=8), which defines whether the order is accepted, filled, partially filled, or rejected.