Skip to content

FIX 4.4 Trading: Opening a Trade (New Order -- Single)

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.


New Order -- Single (MsgType = D)

Example

8=FIX.4.4|9=178|35=D|34=2|49=CLIENT1|56=BROKER1|52=20250912-15:50:00.000|
11=ORDER12345|21=1|55=EUR/USD|54=1|38=100000|40=2|44=1.2350|59=0|
60=20250912-15:50:00.000|10=129|

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)
55 Symbol Instrument identifier (e.g., EURUSD)
54 Side 1 = Buy, 2 = Sell
38 OrderQty Order quantity (e.g., 100000 units = 1 standard lot, depends on contract_size)
40 OrdType Order type (1 = Market, 2 = Limit, 3 = Stop, etc.)
44 Price Price (required for limit orders, optional for market orders)
59 TimeInForce Duration (0 = Day, 1 = GTC, 3 = IOC, etc.)
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: acknowledges with an Execution Report (35=8):
    • Pending New (OrdStatus = A) -- order accepted for processing.\
    • New (OrdStatus = 0) -- order successfully opened.\
    • Rejected (OrdStatus = 8) -- order rejected (with reason in 58=Text or 103=OrdRejReason).

Execution Report (Order Confirmation)

Example (Order Accepted)

8=FIX.4.4|9=200|35=8|34=3|49=BROKER1|56=CLIENT1|52=20250912-15:50:00.500|
37=ORD98765|11=ORDER12345|17=1|150=0|39=0|55=EUR/USD|54=1|38=100000|
40=2|44=1.2350|32=0|31=0|151=100000|14=0|6=0|10=130|

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
32 LastShares Last filled quantity
31 LastPx Last executed price
6 AvgPx Average execution price

Order Lifecycle States

flowchart LR
  A["Pending New (A) - Order received but not yet accepted"] --> B["New (0) - Order accepted and active"]
  B --> C["Partially Filled (1) - Order partially executed"]
  C --> D["Filled (2) - Order fully executed"]
  B --> D
  A --> E["Rejected (8) - Order rejected"]
  B --> E
  C --> E

If Mermaid is not enabled in your build, keep this as reference diagram only.


Best Practices

  • Use unique ClOrdID for every new order to avoid duplication.\
  • Handle Execution Reports carefully -- they are the only source of truth for order status.\
  • 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.