Development Considerations include:
FIX Version
This specification is based upon FIX 4.4 but includes some elements of FIX 5.0SP2 which has a richer set of tags to support FX Trading. A ready customised FIX Data Dictionary is available to download.
Where fields contain custom fields or elements of later versions of the FIX protocol these have been highlighted.
EBS Client API Version
In EBS Direct 1.0 clients provided an DefaultCstmApplVerID field on the Logon message to indicate the version of the EBS Client API Specification which is in effect for this session. This can still be sent but is no longer required in EBS Direct 2.0 and will be ignored if provided.
General Considerations
It is best practice to observe the following:
- Wait for a response to your Logout message before closing a connection.
- Wait for a response to your Market Data Subscriptions before sending any Order flow.
Client Settings
For each client, the following settings will be configured. All settings are customizable per client Floor Code, please discuss with your Client Integration Manager if you have specific requirements.
Request and Order IDs
Request/Order IDs are provided by the Client on the following requests:
- Market Data Request (MDReqID)
- New Order Single (ClOrdID)
- Order Cancel Request (ClOrdID)
- Order Mass Cancel Request (ClOrdID)
- Order Status Request (ClOrdID)
- Test Request (TestReqID)
All Request IDs are a maximum length of 40 characters (except TestReqId) and the character set exclusions are as follows:
- ! Exclamation Mark decimal 33
- " Double Quote decimal 34
- # Hash decimal 35
- $ Dollar decimal 36
- % Percentage decimal 37
- & Ampersand decimal 38
- ' Single Quote decimal 39
- ( Open Bracket decimal 40
- ) Close Bracket decimal 41
- * Asterisk decimal 42
- , Comma decimal 44
- : Colon decimal 58
- = Equals Sign decimal 61
- [ Left Square Bracket decimal 91
- \ Backslash decimal 92
- ] Right Square Bracket decimal 93
- ^ Caret decimal 94
- ` Accent decimal 95
- ' Single Quote decimal 96
- ( Open Curly Bracket decimal 123
- | Pipe decimal 124
- } Close Curly Bracket decimal 125
- ~ Tilda decimal 126
Timestamps
Timestamps will be provided to millisecond granularity.
SendingTime [52] is a standard field in the FIX header and should be populated by the FIX engine at the time the FIX message is transmitted.
Application level timestamp on select messages indicate when the business transaction represented by the message occurred. Application level timestamps will appear in TransactTime [60] in the following EBS Client API messages:
FIX Message | Description |
---|---|
NewOrderSingle | Client's order timestamp. |
ExecutionReport | Timestamp of the transaction represented in this ExecutionReport. |
OrderCancelRequest | Client's cancel order timestamp. |
OrderCancelReject | Timestamp of the OrderCancelReject creation in the EBS systems. |
OrderMassCancelRequest | Client's mass cancel order timestamp. |
OrderMassCancelReport | Timestamp of the OrderMassCancelReport creation in the EBS systems. |
Message Rejection
There are three types of message rejections – rejections specific to the request, business level rejections and session level rejections.
A session level reject message can be sent by either side to indicate that it has received an invalid message. For example, a message missing required field will be responded to with a session level reject.
Whenever a business level rejection message is available, it will be used instead of a generic session level Reject message. Examples of requests to be rejected with a business level rejection:
- OrderQty is less than the configured EBS minimum order size
- Price of NOS is too far from quoted price
- User is not authorized to transact for this Instrument type
- Market Data subscription for an instrument which is not currently available.
Invalid Message | Rejection Message |
---|---|
Logon | Logout |
NewOrderSingle | ExecutionReport (ExecType = Rejected) |
Market Data Subscription Request | Market Data Request Reject |