Does Zero Hash Support CancelOnDisconnect ?
Zero Hash has 3 CancelOnDisconnect settings available :
- CancelOnDisconnect:
When the config option for a FIX session is CancelOnDisconnect=Y, then when the FIX counterparty connected to such a session disconnects in an unclean fashion, all of the DAY orders submitted under that session shall be canceled by our FIX Order Gateway. However, if the session is disconnected in a clean fashion (using the standard FIX Logout flow) then the orders submitted by that session will be kept on the books. - CancelOnLogout (default):
Whenever our FIX counterparty disconnects for any reason whether clean or unclean, the DAY orders submitted on that session will be canceled. - NoCancels:
Whenever our FIX counterparty disconnects for any reason whether clean or unclean, the orders submitted on that session will remain open and can be executed while the session is disconnected.
Note: GTD & GTC orders will not cancel on disconnect.
To change your default CancelOnDisconnect settings, please contact Zero Hash support to request an update.
What is the FIX Sequence Number Reset Schedule ?
Zero Hash will reset their sequence numbers every Monday at 16:00 EST and new sessions will begin at 16:30 EST. (Including public holidays that fall on Monday's)
FIX initiators can force reset their sequence numbers at anytime by sending 141=Y on the their login messages.
What data schema does the CLOB use in the Market Data feed?
In the Zero Hash CLOB, we use a Market By Order (MBO) order book which allows traders and systems to see the open orders at different price levels in the market. The MBO message is used to send incremental updates to the order book. It provides information about new orders, order modifications, and order cancellations.
- Market By Order - MBO (Standard FIX 5.0 functionality supported by Zero Hash)
- MBO offers more visibility of the order book and position in queue for orders.
- Example FIX Message:
-
8=FIXT.1.1 | 9=250 | 35=X | 34=5 | 49=ZERO | 52=20230828-16:55:15.397282298 | 56=TRADER-1 | 262=BCH/USD_1_1 | 268=1 | 279=1 | 269=1 | 278=1F0XXHJA5S6BP | 55=BCH/USD | 48=BCH/USD | 22=8 | 167=FXSPOT | 1151=BCH | 270=190.84 | 271=100.00000000 | 272=20230828 | 273=16:55:15.391588252 | 59=0 | 37=1F0XXHJA5S6BP | 40=2 | 10=192 |
-
For more information on the CLOB Market Data Schema, read out article here.
What are the FIX API rate limits ?
The default FIX Order Entry API rate limit is 50 requests per session per second. There are no rate limits applied on the FIX Market Data API.
The rate limit for market makers is 100 is 100 requests per session per second.
What message type will I receive if I reach the rate limits of the FIX API ?
When a client has reached their rate limits on the FIX API, they will received a business level reject message. Field 58 will contain an error message, "Message rate limit throttled for session FIXT.1.1:ZERO-> {YOURSENDERCOMPID}"
Example message :
8=FIXT.1.1 | 9=155 | 35=j | 34=135 | 49=ZERO | 52=20230605-08:51:07.364433362 | 56={YOURSENDERCOMPID} | 57=2H7ABC | 45=62 | 58=Message rate limit throttled for session FIXT.1.1:ZERO->{YOURSENDERCOMPID} | 372=D | 380=0 | 10=249 |
What values do I pass in FIX field 1 and 50 ?
Zero Hash will provide you with your Account ID for FIX field 1 and your Trader ID for FIX field 50 when your connection details and Sender and Target Comp IDs are shared.
What options are supported in ExecInst (FIX Field 18) ?
- "J": [REINSTATE_ON_TRADING_HALT]
If trading on an instrument is halted, reinstate order when trading resumes. - "G": [ALL_OR_NONE]
Order must be executed in its entirety or not at all. To be used like FOK (fill or kill) orders, with adding TIF as 3 (Immediate or cancel). - "6": [PARTICIPATE_DONT_INITIATE]
Order that participants in a transaction initiated by another party, may not initiate a transaction. - "b": [STRICT_LIMIT]
Limit order that must be traded at exactly the price set with no price enhancement. Requires OrdType = 2 (Limit). - "R": [BEST_LIMIT]
If you define a best limit execution instruction and do not provide a price for a limit order, it will place the order with the same price as the top of the book on the same side as your order. - "T": [IMMEDIATELY_EXECUTABLE_LIMIT]
Limit orders with this instruction will set its limit price to the top of the book on the opposing side of the market so that it can execute immediately. Like a market to limit order that only fills at the top of book price.
This field can also be left blank and is not mandatory. Zero Hash does not support passing multiple values in FIX field 18.
Is TransactTime <Field 60> always in nanosecond precision?
Zero Hash will always send TransactTime <Field 60> with nanosecond precision as our default behavior. However, the client is free to submit with millisecond precision.
Would the client be free to send TransactTime with any precision?
Yes, Zero Hash supports both nanoseconds and millisecond precision in the TransactTime field (Tag 60).
Can the client use the canonical textual representation of UUIDs for ClOrdId and OrigClOrdId?
Yes, The client can use the canonical UUID textual representations of the fields and no issue with them being 36 characters.
What is the maximum length in char is for ClOrdId and OrigClOrdId?
ClOrdID and OrigClOrdID <Fields 11 & 41> are both string fields so no "limit" on size, but Zero Hash has tested up to 64 characters, so it is not advisable to cross this size.
OrigClOrdID <Field 41> should be filled with the ClOrdID of the order in question that would be canceled by the order cancellation request.
Does Zero Hash’s FIX API scale on either price or order quantity?
No, Zero Hash does not scale any values that have been submitted over our FIX API.
How to identify orders in market data feed?
Once an order is sent to Zero Hash, ZH acknowledges the order and an OrderID <Field 37> is provided in the execution report.
You can identify the orders via this OrderID. This OrderID is the same value that will be in field 37 on the FIX market data on new orders or updates.