Trade
DLTF operates FIX Trading Gateways which allow users to manage orders on their DLTF Account using FIX 4.4 messages.
Connection validation
In order to activate the fix protocol, you need to provide us with the public key of your certificate, which you will use every time you connect to the FIX server. Example of certificate generation:
$ openssl genrsa -out example.key 2048
$ openssl req -new -x509 -sha256 -key example.key -out example.crt -days 3650
In result you will have 2 files: example.key and example.crt. example.key must be used for encrypt TLS connection to FIX server. example.crt must be provided to DLTF for connection validation.
Environments
DLTF operates both Production and Test environments which can be connected to using FIX using the following connection parameters.
| DLTF Digital Service | IP/DNS | Port | DLTF CompId | Client CompId |
|---|---|---|---|---|
| Test | fix.stage.dltm.quanttradingfactory.com | 5000 | STAGE_DLTF | <check details in client FIX settings> |
Messages sizes
Inbound message size limit
The DLTF FIX Trading Gateways have a maximum inbound message limit of 8192 bytes. If a message is received which exceeds this size, the client will be logged off.
Outbound message size
The DLTF FIX Trading Gateway will never publish messages greater than 8192 bytes.
Recovery
FIX Session Recovery
The DLTF FIX Trading Gateways allow a client to recover the most recent 512 messages for a session using standard FIX message resend behaviour.
In the event of the DLTF FIX Gateway requesting a message re-send, the resent messages will be ignored to avoid out of date orders being placed into the market.
In some scenarios FIX session recovery is insufficient. Some examples would be:
- More than 512 messages are queued for a particular session. In this case only the most recent 512 messages will be available for replay using FIX session recovery.
- The DLTF FIX Trading Gateway that the session was running on fails. DLTF FIX Gateways do not support session failover. On reconnecting after a gateway failure, a client will be connected to a different gateway which will not have messages available for resending.
- Access is required to historic data which is no longer available in the current FIX Sesssion due to a sequence number reset.
In these scenarios it will be necessary to use Application Recovery as described below. It may be simpler to ignore FIX session recovery entirely and always use Application Recovery as it will work in all failure scenarios. If this option is chosen then tag 141 (ResetSeqNumFlag) should always be set to "Y" on the client Logon message.
Application Recovery
DLTF FIX Trading Gateways accept two messages to enable a client to reliably recover after a disconnection. These are:
| Message Type | Description |
|---|---|
| Order Status Request | Allows a client to query the status of an Order. |
| Trade Capture Report Request | Allows a client to request historic trades. |
Using these messages it is possible for a client to determine what trades occured on their Account during a disconnection and the current status of orders that were working at the time of the disconnection.
These messages may also be used to request historic data.
The sections on these two messages provide a detailed description on their usage.
Session Resetting
To reset a FIX Session the client must login with the tag 141 (ResetSeqNumFlag) set to 'Y'.
Cancel on Disconnect
DLTF supports cancel on disconnect on it's FIX Trading Gateways. This is controllable on a per Order basis using the Tag 18 (ExecInst) on the New Order Single (MsgType="D"). By default, orders placed via the FIX Trading Gateways will be cancelled on an explicit logout or an unexpected disconnection from the FIX Trading Gateway. To allow an order to continue working on the DLTF Order Book after the session is disconnected, the client must set Tag 18 (ExecInst) to "H" (Reinstate on System Failure).
Note that cancel on disconnect cannot be specified when a user is configured to trade on multiple accounts. In this case the user must always set Tag 18 (ExecInst) to "H" (Reinstate on System Failure).
Orders placed via the web channel (either the DLTF web trading user interface) will not be cancelled when a FIX Trading session logs out or is disconnected.
Compatibility
DLTF aims to maximise compatibility by using standard FIX messages, tags and usage conventions wherever possible.
Periodically, DLTF updates it's FIX specifications in response to changes to the core trading application. Usually these changes are to support additional features and wherever possible this will be achieved through the use of additional messages, tags in existing messages or tag values in existing tags. In order to minimise the impact of these sort of changes, DLTF recommends that the client application accepts messages with unrecognised tags and ignores those tags which it cannot interpret.
DLTF will always endeavor to contact clients prior to changing the FIX API particularly in the case where a change is breaking (i.e. not additive in nature).
Messages
Supported Messages
DLTF supports the following FIX message types.
| Type | Name | Description |
|---|---|---|
| 0 | Heartbeat | Message sent during quite intervals on the connection to ensure that connection is still alive. |
| 1 | TestRequest | Message used to request a HeartBeat from the counterparty to allow round trip testing of the connection. |
| 2 | ResendRequest | Message used to request a replay of messages from the counter party. |
| 3 | Reject | Sent in response to a message which is structurally invalid (i.e. invalid or missing tag or ill-formed tag-value). |
| 4 | SequenceReset | SequenceReset. |
| 5 | Logout | Message used to terminate a FIX connection. Can be sent by the client or the DLTF FIX Gateway. |
| 8 | ExecutionReport | Messsage sent by the DLTF FIX Gateway which reports the change in status of a client's Order |
| 9 | OrderCancelReject | Message sent by the DLTF FIX Gateway when an OrderCancelRequest message cannot be successfully processed. |
| A | Logon | Message used to establish a connection between a client and the DLTF FIX Gateway. |
| D | NewOrderSingle | Message sent by the client to place a new order with DLTF. |
| F | OrderCancelRequest | Message sent by the client to cancel an existing order which is working on an DLTF order book. |
| H | OrderStatusRequest | Message sent by the client to request the state of an order. |
| AD | TradeCaptureReportRequest | Message sent by the client in order to request historic trades. |
| AE | TradeCaptureReport | Message sent by DLTF to report an historic trade. |
| AQ | TradeCaptureReportRequestAck | Message sent by DLTF in response to a Trade Capture Report Request message to confirm the success or failure of the request. |
Standard Message Components
StandardHeader
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 8 | BeginString | The FIX version number identifier. Always 'FIX.4.4' | Y | String |
| 9 | BodyLength | Length of the FIX Message. | Y | Length |
| 35 | MsgType | The type of the message. | Y | String |
| 49 | SenderCompID | Identifier for the sender of the message. | Y | String |
| 56 | TargetCompID | Identifier for the receiver of the message. | Y | String |
| 34 | MsgSeqNum | The unique sequence number for the message within current FIX session. | Y | SeqNum |
| 43 | PossDupFlag | Always required for retransmitted messages, whether prompted by the sending system or as the result of a resend request. Set to 'Y' if this is a resent message. | N | Boolean |
| 97 | PossResend | Never used by DLTF. | N | Boolean |
| 52 | SendingTime | Time message was sent. | Y | UTCTimestamp |
| 122 | OrigSendingTime | Timestamp when message was originally sent. Required for message resent as a result of a ResendRequest. | N | UTCTimestamp |
StandardTrailer
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 10 | CheckSum | Checksum for message contents. | Y | String |
Instrument
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 48 | SecurityID | Must contain the DLTF orderbook id. (temporary not supported) | N | String |
| 22 | SecurityIDSource | Must contain the value '8' (Exchange Symbol) (temporary not supported) | N | String |
| 55 | Symbol | Ticker symbol with / as delimeter (example: BTC/EUR) | Y | String |
OrderQtyData
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 38 | OrderQty | The number of contracts that an order is for. | Y | Qty |
MiscFeesGrp
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 136 | NoMiscFees | Number of Fee fields provided in fees range. Must be 1. | Y | NumInGroup |
| 137 | MiscFeeAmt | Trade fee value. | Y | Qty |
| 138 | MiscFeeCurr | Trade fee currency. | Y | String |
| 139 | MiscFeeType | Indicates type of fee. Must be 8 (MARKUP) | Y | char |
| 891 | MiscFeeBasis | Defines the unit for a fee. Must be 0 (ABSOLUTE) | Y | int |
TrdCapDtGrp
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 580 | NoDates | Number of Date fields provided in date range. Must be 2. | Y | NumInGroup |
| 60 | TransactTime | Start (First entry in repeating group)or end (Second entry in repeating group) timestamp of the period for which trades should be retrieved expressed in UTC. | Y | UTCTimestamp |
TrdCapRptSideGrp
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 552 | NoSides | Number of Side repeating group instances. Valid values: 1 Contains information about the client Order which traded. | Y | NumInGroup |
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| 37 | OrderID | Unique identifier for Order as assigned by DLTF. Unique over all time and orderbooks | Y | String |
| 11 | ClOrdID | The client supplied identifier for the order. | N | String |
| 1 | Account | The DLTF Account Id on which the trade occurred | N | String |
Message Descriptions
Heartbeat
Message sent during quite intervals on the connection to ensure that connection is still alive.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 0 | ||
| 112 | TestReqID | Required when the heartbeat is the result of a Test Request message. | N | String |
| StandardTrailer | Y |
TestRequest
Message used to request a HeartBeat from the counterparty to allow round testing trip of the connection.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 1 | ||
| 112 | TestReqID | Identifier included in Test Request message to be returned in resulting Heartbeat | Y | String |
| StandardTrailer | Y |
ResendRequest
Message used to request a replay of messages from the counter party.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 2 | ||
| 7 | BeginSeqNo | Message sequence number of first message in range to be resent | Y | SeqNum |
| 16 | EndSeqNo | Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo (7) = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = “0” (representing infinity). | Y | SeqNum |
| StandardTrailer | Y |
Reject
Sent in response to a message which is structurally invalid (i.e. invalid or missing tag or ill-formed tag-value).
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 3 | ||
| 45 | RefSeqNum | MsgSeqNum of rejected message | Y | SeqNum |
| 371 | RefTagID | The tag number of the FIX field being referenced. | N | int |
| 372 | RefMsgType | The MsgType of the FIX message being referenced. | N | String |
| 373 | SessionRejectReason | Code to identify reason for a session-level Reject message. | N | int |
| 58 | Text | Where possible, message to explain reason for rejection | N | String |
| StandardTrailer | Y |
SequenceReset
SequenceReset
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 4 | ||
| 123 | GapFillFlag | Indicates that the Sequence Reset message is replacing administrative or application messages which will not be resent. Valid values: Y = Gap Fill message, MsgSeqNum field valid N = Sequence Reset, ignore MsgSeqNum | N | Boolean |
| 36 | NewSeqNo | New sequence number | Y | SeqNum |
| StandardTrailer | Y |
Logout
Message used to terminate a FIX connection. Can be sent by the client or the DLTF FIX Gateway.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 5 | ||
| 58 | Text | If DLTF logs out a client this may contain a text description for the reason for the logout. | N | String |
| StandardTrailer | Y |
ExecutionReport
Messsage sent by the DLTF FIX Gateway which reports the change in status of a client's Order
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 8 | ||
| 37 | OrderID | The unique identifier allocated by DLTF for the order whose execution is being reported. | Y | String |
| 11 | ClOrdID | The client supplied identifier for the order whose execution is being reported. | N | String |
| 41 | OrigClOrdID | Conditionally required for response to an electronic Cancel or Cancel request (ExecType=PendingCancel or Canceled). ClOrdID of the previous accepted order (NOT the initial order of the day) when canceling or replacing an order. | N | String |
| 790 | OrdStatusReqID | Required if responding to and if provided on the Order Status Request message. Echo back the value provided by the requester. | N | String |
| 17 | ExecID | The unique identifier allocated by DLTF Broker to the ExecutionReport message. | Y | String |
| 150 | ExecType | Describes the type of execution being reported by this ExecutionReport message. | Y | char |
| 39 | OrdStatus | Describes the current state of a chain of orders. | Y | char |
| 103 | OrdRejReason | For use with ExecType = 8 (Rejected). Contains the reason for the rejection. | N | int |
| 1 | Account | Contains the DLTF Account Id for the account on which the order was placed. | N | String |
| Instrument | Y | |||
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| OrderQtyData | Y | |||
| 40 | OrdType | Order type. DLTF Supported values: 1 = Market 2 = Limit | N | char |
| 44 | Price | Present if specified on the order | N | Price |
| 59 | TimeInForce | Specifies how long the order remains in effect. Valid values: 1 = Good Till Cancel (GTC) | N | char |
| 32 | LastQty | Quantity of contracts bought/sold on this fill. Will be present if ExecType = Trade. | N | Qty |
| 31 | LastPx | Price of this (last) fill. | N | Price |
| 151 | LeavesQty | Quantity open for further execution. | Y | Qty |
| 14 | CumQty | Currently executed quantity for chain of orders. | Y | Qty |
| 6 | AvgPx | Average fill price for the chain of orders. Rounded down to the nearest price increment. | Y | Price |
| 60 | TransactTime | Time the transaction represented by this ExecutionReport occurred | N | UTCTimestamp |
| 58 | Text | Free format text string (Note: this field does not have a specified maximum length) | N | String |
| 1101 | CustomTag | Represent best bid price of orderbook on moment of trade execution (will be represented on ExecutionReport with ExecType = F (Trade) | N | String |
| 1102 | CustomTag | Represent best ask price of orderbook on moment of trade execution (will be represented on ExecutionReport with ExecType = F (Trade) | N | String |
| 1103 | CustomTag | Represent average value between best bid and best ask prices on moment of trade execution (will be represented on ExecutionReport with ExecType = F (Trade) | N | String |
| 1104 | CustomTag | Represent value of cumulative order fees on moment of trade execution (will be represented on ExecutionReport with ExecType = F (Trade) | N | String |
| MiscFeesGrp | Y | |||
| StandardTrailer | Y |
OrderCancelReject
Message sent by the DLTF FIX Gateway when an OrderCancelRequest message cannot be successfully processed.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 9 | ||
| 37 | OrderID | The OrderId of the Order which failed to be cancelled. If CxlRejReason=”Unknown order” this will be “NONE”. | Y | String |
| 11 | ClOrdID | The client supplied identifier for the cancel request. | Y | String |
| 41 | OrigClOrdID | ClOrdID which could not be canceled. ClOrdID of the previous accepted order (NOT the initial order of the day) when canceling or replacing an order. | Y | String |
| 39 | OrdStatus | OrdStatus value after this cancel reject is applied. If (102) = "Unknown Order", specify Rejected. | Y | char |
| 1 | Account | The DLTF Account Id on which the Cancel was attempted. | N | String |
| 434 | CxlRejResponseTo | Identifies the type of request that a Cancel Reject is in response to. DLTF Supported values: 1 = Order Cancel Request (F) | Y | char |
| 102 | CxlRejReason | Code to identify reason for cancel rejection. Valid values: 1 = Unknown order 2 = Broker / Exchange Option | N | int |
| 58 | Text | Free format text string (Note: this field does not have a specified maximum length) | N | String |
| StandardTrailer | Y |
Logon
The Logon message must be the first message Client sends after establishing a TCP connection on the port agreed upon with DLTF. Client must wait for a Logon from DLTF before sending other messages and beginning gap fill operations.
Password is represented as ed25519 signature of [payload].
Payload is composed of the following fields:
MsgSeqNum SENDERCOMPID TARGETCOMPID API_KEY NONCE
The nonce is integer (recommend to use nanoseconds timestamp), always increasing value.
Example:
payload := fmt.Sprintf("%d%s%s%s%d", seqNum, sender, target, pubKeyHex, time.Now().UnixNano()) signatureRaw := ed25519.Sign(privateKey, []byte(payload)) signatureHex := hex.EncodeToString(signatureRaw)
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= A | ||
| 98 | EncryptMethod | Always '0' - None | Y | int |
| 108 | HeartBtInt | The maximum time to wait before a Heartbeat message is sent in the absence of other activity on the connection. The same value is used by both parties. | Y | int |
| 141 | ResetSeqNumFlag | Indicates both sides of a FIX session should reset sequence numbers | N | Boolean |
| 553 | Username | API Token public key in HEX format. This is required on the login message sent by the client | Y | String |
| 554 | Password | Signature in HEX format. This is required on the login message sent by the client | Y | String |
| 5025 | Nonce | Time in ms since epoch as string. (This will be used in password generation and check) | Y | String |
| StandardTrailer | Y |
NewOrderSingle
Message sent by the client to place a new order with DLTF.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= D | ||
| 11 | ClOrdID | The client supplied identifier for the order. | Y | String |
| 100 | ExDestination | Execution destination as defined by DLTF when order is entered. | Y | Exchange |
| Instrument | Y | |||
| 1 | Account | The DLTF Account ID on which to place the new order. If not specified then the user's default account will be used. | N | String |
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| 18 | ExecInst | Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space. Valid values: H = Reinstate on System Failure (Do not cancel on disconnect) Q = Cancel on System Failure (Cancel on disconnect) | N | MultipleStringValue |
| 60 | TransactTime | Time this rder request was initiated/released by the trader, trading system, or intermediary. Ignored by DLTF. | Y | UTCTimestamp |
| OrderQtyData | Y | |||
| 40 | OrdType | Order type.DLTF Supported values: 1 = Market 2 = Limit | Y | char |
| 44 | Price | Required for Limit OrdTypes. | N | Price |
| StandardTrailer | Y |
OrderCancelRequest
Message sent by the client to cancel an existing order which is working on an DLTF order book.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= F | ||
| 41 | OrigClOrdID | ClOrdID of the previous non-rejected order (NOT the initial order of the day) when canceling or replacing an order. | Y | String |
| 1 | Account | The DLTF Account ID on which to attempt to cancel the order. If not specified then the user's default account will be used. | N | String |
| 11 | ClOrdID | The client supplied identifier for the order. | Y | String |
| Instrument | Y | |||
| 54 | Side | Side of the order.Valid values: 1 = Buy 2 = Sell | N | char |
| 60 | TransactTime | Time this order request was initiated/released by the trader or trading system. | Y | UTCTimestamp |
| OrderQtyData | Y | |||
| StandardTrailer | Y |
OrderStatusRequest
Message sent by the client to request the state of an order. Note that orders that were rejected for whatever reason will be reported as an unknown order.
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= H | ||
| 11 | ClOrdID | The ClOrdID of the order whose status is being requested. | Y | String |
| 1 | Account | The DLTF Account ID on which the order whose state is being requested was placed. If not specified then the user's default account will be used. | N | String |
| 790 | OrdStatusReqID | Optional, can be used to uniquely identify a specific Order Status Request message. Echoed back on Execution Report if provided. restricted to a maximum of 16 hexadecimal characters with no leading 0 characters (essentially this is a 64bit number). | N | String |
| Instrument | Y | |||
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| StandardTrailer | Y |
TradeCaptureReportRequest
The Trade Capture Report Request message is used by the client to request historic trades. In order to request historic trades the client provides the period of time for which trades are being requested. The period is specified using a start and end time. The gateway will response in one of the following ways: Scenario|Response An invalid request is made such as the start time is after the end time|The gateway sends a Trade Capture Report Request Ack message with the following tags set:
- Tag 749 (TradeRequestResult): 99 (Other)
- Tag 750 (TradeRequestStatus): 2 (Rejected)
- Tag 58 (Text): contains an error message.
There are no trades in the requested period.|The gateway sends a Trade Capture Report Request Ack message with the following tags set:
- Tag 748 (TotNumTradeReports): set to 0. Note that this is the only scenario in which this tag will be present in the Trade Capture Report Request Ack.
- Tag 749 (TradeRequestResult): 0 (Successful)
- Tag 750 (TradeRequestStatus): 0 (Accepted)
There are trades in the requested period.|The gateway sends a Trade Capture Report Request Ack message with the following tags set:
- Tag 749 (TradeRequestResult): 0 (Successful)
- Tag 750 (TradeRequestStatus): 0 (Accepted)
followed by a Trade Capture Report message for each Trade in the requested period. The last Trade Capture Report will have tag 912 (LastRptRequested) will be set to "Y".
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= AD | ||
| 568 | TradeRequestID | Trade Capture Report Request ID. Must be unique string while a request is active. | Y | String |
| 569 | TradeRequestType | Type of Trade Capture Report. DLTF supported values: 1 = Matched trades matching Criteria provided on request | Y | int |
| 263 | SubscriptionRequestType | Used to subscribe / unsubscribe for trade capture reports.DLTF supported values: 0 = Snapshot | N | char |
| 1 | Account | The DLTF Account Id whose trades to request. | N | String |
| TrdCapDtGrp | Y | |||
| StandardTrailer | Y |
TradeCaptureReport
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= AE | ||
| 568 | TradeRequestID | Trade Capture Report Request ID as provided in the Trade Capture Report Request. | N | String |
| 912 | LastRptRequested | Indicates if this is the last report in the response to a Trade Capture Report Request Y = Last message N = Not last message | N | Boolean |
| 17 | ExecID | Execution ID (Trade Identifier) as assigned by the DLTF Broker as reported on the original Execution Report (MsgType=8) message. | N | String |
| Instrument | Y | |||
| 32 | LastQty | Trade quantity. | Y | Qty |
| 31 | LastPx | Trade price. | Y | Price |
| 75 | TradeDate | Trade date on which the trade occurred. | Y | LocalMktDate |
| 60 | TransactTime | Time the transaction represented by this Trade Capture Report occurred to millisecond resolution | Y | UTCTimestamp |
| TrdCapRptSideGrp | Y | |||
| StandardTrailer | Y |
TradeCaptureReportRequestAck
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= AQ | ||
| 568 | TradeRequestID | Trade Capture Report Request ID as provided in the Trade Capture Report Request. | Y | String |
| 569 | TradeRequestType | Type of Trade Capture Report. DLTF supported values: 1 = Matched trades matching Criteria provided on request | Y | int |
| 263 | SubscriptionRequestType | Used to subscribe / unsubscribe for trade capture reports.DLTF supported values: 0 = Snapshot | N | char |
| 748 | TotNumTradeReports | Total number of trade reports returned. Will only be set when no trades were found for the requested criteria when it's value will be 0. | N | int |
| 749 | TradeRequestResult | Result of Trade Request. DLTF Supported values: 0 = Successful (Default) 99 = Other | Y | int |
| 750 | TradeRequestStatus | Status of Trade Request. DLTF Supported values: 0 = Accepted 2 = Rejected | Y | int |
| 58 | Text | Contains error message when Trade Capture Report Request is rejected. | N | String |
| StandardTrailer | Y |
Tags
| Tag | Tag Name | Type | Description |
|---|---|---|---|
| 1 | Account | String | The DLTF Account ID. If not specified then the user's default account will be used. |
| 6 | AvgPx | Price | Calculated average price of all fills on this order. |
| 7 | BeginSeqNo | SeqNum | Message sequence number of first message in range to be resent |
| 8 | BeginString | String | Identifies beginning of new message and protocol version. ALWAYS FIRST FIELD IN MESSAGE. (Always unencrypted). Valid values: FIX.4.4 |
| 9 | BodyLength | Length | Message length, in bytes, forward to the CheckSum field. ALWAYS SECOND FIELD IN MESSAGE. (Always unencrypted) |
| 10 | CheckSum | String | Three byte, simple checksum (see Volume 2: “Checksum Calculation” for description). ALWAYS LAST FIELD IN MESSAGE; i.e. serves, with the trailing <SOH>, as the end-of-message delimiter. Always defined as three characters. (Always unencrypted) |
| 11 | ClOrdID | String | The client supplied identifier for the order. Must be unique for all currently working order. If a new order is received with the same ClOrdId as a currently working order then the new order will be rejected. |
| 14 | CumQty | Qty | Total quantity (e.g. number of shares) filled. |
| 16 | EndSeqNo | SeqNum | Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo (7) = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = “0” (representing infinity). |
| 17 | ExecID | String | Unique identifier of execution message as assigned by DLTF. Unique over all time. |
| 18 | ExecInst | MultipleStringValue | Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space. Valid values: H = Reinstate on System Failure (Do not cancel on disconnect) Q = Cancel on System Failure (Cancel on disconnect) |
| 22 | SecurityIDSource | String | Identifies class or source of the SecurityID (48) value. Required if SecurityID is specified. DLTF Supported values are: 8 = Exchange Symbol |
| 31 | LastPx | Price | Price of this (last) fill. |
| 32 | LastQty | Qty | Quantity of contracts bought/sold on this fill. |
| 34 | MsgSeqNum | SeqNum | Integer message sequence number. |
| 35 | MsgType | String | Defines message type ALWAYS THIRD FIELD IN MESSAGE. (Always unencrypted) Valid values: *** Note the use of lower case letters *** 0 = Heartbeat 1 = Test Request 2 = Resend Request 3 = Reject 4 = Sequence Reset 5 = Logout 8 = Execution Report 9 = Order Cancel Reject A = Logon D = Order – Single F = Order Cancel Request |
| 36 | NewSeqNo | SeqNum | New sequence number |
| 37 | OrderID | String | Unique identifier for Order as assigned by DLTF. Unique over all time and orderbooks |
| 38 | OrderQty | Qty | Quantity of contracts ordered. |
| 39 | OrdStatus | char | Identifies current status of order. DLTF supported values: 0 = New 1 = Partially filled 2 = Filled 4 = Canceled 8 = Rejected |
| 40 | OrdType | char | Order type. DLTF Supported values: 1 = Market 2 = Limit |
| 41 | OrigClOrdID | String | ClOrdID of the previous order. Used to identify the previous order in cancel requests. |
| 43 | PossDupFlag | Boolean | Indicates possible retransmission of message with this sequence number. Valid values: Y = Possible duplicate N = Original transmission |
| 44 | Price | Price | Price per unit of quantity |
| 45 | RefSeqNum | SeqNum | Reference message sequence number |
| 48 | SecurityID | String | DLTF Security identifier. Requires SecurityIDSource=8. |
| 49 | SenderCompID | String | Assigned value used to identify firm sending message. |
| 52 | SendingTime | UTCTimestamp | Time of message transmission (always expressed in UTC (Universal Time Coordinated, also known as “GMT”) |
| 54 | Side | char | Side of the order. Valid values: 1 = Buy 2 = Sell |
| 55 | Symbol | String | Ticker symbol |
| 56 | TargetCompID | String | Assigned value used to identify receiving firm. |
| 58 | Text | String | Free format text string (Note: this field does not have a specified maximum length) |
| 59 | TimeInForce | char | Specifies how long the order remains in effect. Valid values: 1 = Good Till Cancel (GTC) |
| 60 | TransactTime | UTCTimestamp | Time of execution/order creation (expressed in UTC (Universal Time Coordinated, also known as “GMT”) |
| 64 | SettlDate | LocalMktDate | Specific date of trade settlement (SettlementDate) in YYYYMMDD format. |
| 75 | TradeDate | LocalMktDate | Indicates date of trade referenced in this message in YYYYMMDD format. Absence of this field indicates current day (expressed in local time at place of trade). |
| 89 | Signature | data | Electronic signature |
| 93 | SignatureLength | Length | Number of bytes in signature field. |
| 95 | RawDataLength | Length | Number of bytes in raw data field. |
| 96 | RawData | data | Unformatted raw data, can include bitmaps, word processor documents, etc. |
| 97 | PossResend | Boolean | Indicates that message may contain information that has been sent under another sequence number.Valid Values: Y=Possible resend N=Original transmission DLTF will never populate this tag with any value other than 'N' on messages sent by DLTF. DLTF will ignore this tag on any messages received by DLTF and the treat the message as having been sent with PossResend='N'. |
| 98 | EncryptMethod | int | Method of encryption. Valid values: 0 = None / other DLTF does not support encryption at the FIX layer. All messages are sent over an SSL encrypted connection. Supported values: |
| 100 | ExDestination | Exchange | Execution destination as defined by DLTF when order is entered. |
| 102 | CxlRejReason | int | Code to identify reason for cancel rejection. Valid values: 1 = Unknown order 2 = Broker / Exchange Option |
| 103 | OrdRejReason | int | Code to identify reason for order rejection. Valid values: 0 = Broker / Exchange option 1 = Unknown symbol 2 = Exchange closed 3 = Order exceeds limit 4 = Too late to enter 5 = Unknown Order 6 = Duplicate Order (e.g. duplicate ClOrdID ()) 7 = Duplicate of a verbally communicated order 8 = Stale Order 9 = Trade Along required 10 = Invalid nvestor ID 11 = Unsupported order characteristic 12 = Surveillence Option 13 = Incorrect quantity 14 = Incorrect allocated quantity 15 = Unknown account(s) 99 = Other Note: Values 3, 4, and 5 will be used when rejecting an order due to pre-allocation information errors. |
| 108 | HeartBtInt | int | Heartbeat interval (seconds) |
| 112 | TestReqID | String | Identifier included in Test Request message to be returned in resulting Heartbeat |
| 122 | OrigSendingTime | UTCTimestamp | Original time of message transmission (always expressed in UTC (Universal Time Coordinated, also known as “GMT”) when transmitting orders as the result of a resend request. |
| 123 | GapFillFlag | Boolean | Indicates that the Sequence Reset message is replacing administrative or application messages which will not be resent.Valid values: Y = Gap Fill message, MsgSeqNum field valid N = Sequence Reset, ignore MsgSeqNum |
| 141 | ResetSeqNumFlag | Boolean | Indicates that the both sides of the FIX session should reset sequence numbers.Valid values: Y = Yes, reset sequence numbers N = No |
| 146 | NoRelatedSym | NumInGroup | Specifies the number of repeating symbols specified. |
| 150 | ExecType | char | Describes the specific ExecutionRpt (i.e. Pending Cancel) while OrdStatus (39) will always identify the current order status (i.e. Partially Filled) Valid values: 0 = New 4 = Canceled 8 = Rejected F = Trade (partial fill or fill) I = Order Status |
| 151 | LeavesQty | Qty | Quantity open for further execution. If the OrdStatus (39) is Canceled or Rejected (in which case the order is no longer active) then LeavesQty could be 0, otherwise LeavesQty = OrderQty (38) – CumQty (4). |
| 263 | SubscriptionRequestType | char | Subscription Request Type DLTF supported values: 0 = Snapshot |
| 354 | EncodedTextLen | Length | Unused by DLTF. Byte length of encoded (non-ASCII characters) EncodedText (355) field. |
| 355 | EncodedText | data | Unused by DLTF. Encoded (non-ASCII characters) representation of the Text (58) field in the encoded format specified via the MessageEncoding (347) field. If used, the ASCII (English) representation should also be specified in the Text field. |
| 371 | RefTagID | int | The tag number of the FIX field being referenced. |
| 372 | RefMsgType | String | The MsgType (35) of the FIX message being referenced. |
| 373 | SessionRejectReason | int | Code to identify reason for a session-level Reject message. Valid values: 0 = Invalid tag number 1 = Required tag missing 2 = Tag not defined for this message type 3 = Undefined Tag 4 = Tag specified without a value 5 = Value is incorrect (out of range) for this tag 6 = Incorrect data format for value 7 = Decryption problem 8 = Signature problem 9 = CompID problem 10 = SendingTime accuracy problem 11 = Invalid MsgType 12 = XML Validation error 13 = Tag appears more than once 14 = Tag specified out of required order 15 = Repeating group fields out of order 16 = Incorrect NumInGroup count for repeating group 17 = Non “data” value includes field delimiter (SOH character) 99 = Other |
| 383 | MaxMessageSize | Length | Maximum number of bytes supported for a single message. |
| 384 | NoMsgTypes | NumInGroup | Number of MsgTypes (35) in repeating group. |
| 385 | MsgDirection | char | Specifies the direction of the messsage. Valid values: S = Send R = Receive |
| 434 | CxlRejResponseTo | char | Identifies the type of request that a Cancel Reject is in response to.DLTF Supported values: 1 = Order Cancel Request (F) |
| 464 | TestMessageIndicator | Boolean | Not supported by DLTF. |
| 552 | NoSides | NumInGroup | Number of Side repeating group instances. Valid values: 1 = one side 2 = both sides |
| 553 | Username | String | DLTF username. This is required on the login message sent by the client |
| 554 | Password | String | DLTF Password or passphrase. This is required on the login message sent by the client |
| 568 | TradeRequestID | String | Trade Capture Report Request ID. Must be unique string while a request is active |
| 569 | TradeRequestType | int | Type of Trade Capture Report. DLTF supported values: 1 = Matched trades matching Criteria provided on request |
| 580 | NoDates | NumInGroup | Number of Date fields provided in date range |
| 748 | TotNumTradeReports | int | Total number of trade reports returned. Will only be set when no trades were found for the requested criteria when it's value will be 0. |
| 749 | TradeRequestResult | int | Result of Trade Request DLTF Supported values: 0 = Successful (Default) 99 = Other |
| 750 | TradeRequestStatus | int | Status of Trade Request.DLTF Supported values: 0 = Accepted 2 = Rejected |
| 789 | NextExpectedMsgSeqNum | SeqNum | Not supported by DLTF. |
| 790 | OrdStatusReqID | String | Can be used to uniquely identify a specific Order Status Request message. |
| 912 | LastRptRequested | Boolean | Indicates whether this message is that last report message in response to a request, such as Order Mass Status Request. Y = Last message N = Not last message |
| 1101 | Custom tag: top of orderbook bid price | String | Represent best bid price of orderbook on moment of trade execution |
| 1102 | Custom tag: top of orderbook ask price | String | Represent best ask price of orderbook on moment of trade execution |
| 1103 | Custom tag: avg value between 1101 and 1102 | String | Represent average value between best bid and best ask prices on moment of trade execution |
| 1104 | Custom tag: total order fees | String | Represent value of cumulative order fees on moment of trade execution |
Data Types
| Data Type | Description |
|---|---|
| Boolean | char field containing one of two values: 'Y' = True/Yes 'N' = False/No |
| char | Char value, can include any alphanumeric character or punctuation except the delimiter. All char fields are case sensitive (i.e. l != L). |
| data | Binary (non-ASCII) data. |
| int | Sequence of digits without commas or decimals and optional sign character (ASCII characters - and 0 - 9). The sign character utilizes one byte (i.e. positive int is 99999 while negative int is -99999). Note that int values may contain leading zeros (e.g. 00023 = 23). |
| Length | Representing the length in bytes. Value must be positive. |
| NumInGroup | Value that represents the number of repeating values in a group. |
| Price | Value representing a price. Note the number of decimal places may vary. |
| Qty | Value capable of storing either a whole number (no decimal places) of shares (securities denominated in whole units) or a decimal value containing decimal places for non-share quantity asset classes (securities denominated in fractional units). |
| SeqNum | Representing a message sequence number. Value must be positive. |
| String | Alpha-numeric free format strings; can include any character or punctuation except the delimiter. All char fields are case sensitive (i.e. dltf != DLTF). |
| UTCTimestamp | Representing Time/date combination represented in UTC (Universal Time Coordinated, also known as GMT ) only accepted in this format : YYYYMMDD-HH:MM:SS (whole seconds). For example 20120321-17:15:03. |