Preface
B2BITS' FIX ICE Private Order Feed Solution is pre-configured to work with ICE POF FIX interface. ICE Private Order Feed Solution is based on B2BITS' generic server FIXEdge, therefore it leverages all FIXEdge features including easy configuration, administration, and monitoring.
Workflow Overview
1. Supported FIX Messages
ICE Private Order Feed Solution data is captured by FIXEdge via FIX 4.2 session. The ICE Private Order Feed Solution supports the following FIX messages:
- From ICE Private Order Feed Solution to ICE POF:
- Custom Logon (MsgType = 'A');
- Custom History Request (MsgType = 'UHR')
- From ICE POF to ICE Private Order Feed Solution:
- Custom Logon (MsgType = 'A');
- Execution Report (MsgType = '8');
- News (MsgType = 'B');
- Business Message Reject (MsgType = 'j');
2. ICE Private Order Feed Solution Workflow
Image Removed
See also step-by-step description below:
Main flow:
- ICE Private Order Feed Solution starts and establishes FIX Session to ICE POF using data from FIXEdge.properties file
- Once the session is established, ICEPofHistoryReq.js is called and the Custom History Request (MsgType = "UHR") is sent to ICE POF (request asks for order events starting from today's midnight)
- ICE POF determines that the request parameters are valid and replies with snapshot of Execution Report (MsgType = '8') messages
- ICE Private Order Feed Solution processes snapshot of Execution Report (MsgType = '8') messages.
To inform about completed snapshot of drop copy messages, ICE POF sends FIX News (MsgType = "B") message.
- ICE POF starts sending live updates (new orders or changes to existing ones - Execution Report (MsgType = '8') messages)
- ICE Private Order Feed Solution processes Execution Report (MsgType = '8') messages
Exceptional cases:
2a. Session with ICE POF is not established
2a1. Notice about a failed attempt to create the session is logged into FIXEdge.log
2a2. ICE Private Order Feed Solution performs an attempt to recreate the session based on the session configuration parameters
3a. ICE POF determines that the Historic Request contains invalid data
3a1. ICE POF sends the Business Message Reject (MsgType = 'j') to inform about failed request
3a2. ICE Private Order Feed Solution writes the following warning in the FIXEdge.log file
Note |
---|
WARN: History Request failed with the following reason '" + *** Reject reason received from ICE *** + ""
|
4a. ICE POF does not have data available to be sent as a Snapshot
4a1. The FIX News (MsgType = "B") message is sent to Business Layer
"History Request was successfully accomplished. ICE POF status: '" + text + "'";
4a2. Main flow continues from the step 7.
3. Processing Incoming ICE POF Data
- All incoming traffic (Execution Report Messages) is stored into the database by means of java script (ICEPofExecRpt.js).
- Alternatively, data can be published to any other middleware supported by FIXEdge.
ICE Private Order Feed Solution Configuration
Please see the table below that represents the components included into the FIXEdge package intended for ICE Private Order Feed Solution:
...
Is used to specify the following:
rules for processing incoming FIX messages (including those which call java scripts storing data to database)
Code Block |
---|
|
..........
<Rule Description="Rule to notify java script creating Historic Request about established ICE POF FIX session">
<Source>
<FixSession SenderCompID=".*" TargetCompID=".*" />
</Source>
<Condition>
<EqualField Field="35" Value="C" />
<!-- PLACE YOUR SENDER COMP ID HERE -->
<MatchMessage Value=".*147=\[NOTE\] SENDER_COMP_ID:ICE Established.*"/>
</Condition>
<Action>
<Script Language="JavaScript" FileName="FIXEdge1/conf/ICEPofHistoryReq.js"/>
</Action>
</Rule>
<Rule Description="Save ICE POF Execution Reports">
<Source Name="ICEPOF.*" />
<Condition>
<EqualField Field="35" Value="8" />
</Condition>
<Action>
<Script Language="JavaScript" FileName="FIXEdge1/conf/ICEPofExecRpt.js" />
</Action>
</Rule>
.......... |
description of DB tables to store data to (if applicable)
...
...
Preface
B2BITS' FIX ICE Private Order Feed Solution is pre-configured to work with ICE POF FIX interface. ICE Private Order Feed Solution is based on B2BITS' generic server FIXEdge, therefore it leverages all FIXEdge features including easy configuration, administration, and monitoring.
Workflow Overview
1. Supported FIX Messages
ICE Private Order Feed Solution data is captured by FIXEdge via FIX 4.2 session. The ICE Private Order Feed Solution supports the following FIX messages:
- From ICE Private Order Feed Solution to ICE POF:
- Custom Logon (MsgType = 'A');
- Custom History Request (MsgType = 'UHR')
- From ICE POF to ICE Private Order Feed Solution:
- Custom Logon (MsgType = 'A');
- Execution Report (MsgType = '8');
- News (MsgType = 'B');
- Business Message Reject (MsgType = 'j');
- Allocation Message (MsgType = 'J');
2. ICE Private Order Feed Solution Workflow
Image Added
See also step-by-step description below:
Main flow:
- ICE Private Order Feed Solution starts and establishes FIX Session to ICE POF using data from FIXEdge.properties file
- Once the session is established, ICEPofHistoryReq.js is called and the Custom History Request (MsgType = "UHR") is sent to ICE POF (request asks for order events starting from today's midnight)
- ICE POF determines that the request parameters are valid and replies with snapshot of Execution Report (MsgType = '8') messages
- ICE Private Order Feed Solution processes snapshot of Execution Report (MsgType = '8') messages.
To inform about completed snapshot of drop copy messages, ICE POF sends FIX News (MsgType = "B") message.
- ICE POF starts sending live updates (new orders or changes to existing ones - Execution Report (MsgType = '8') messages)
- ICE Private Order Feed Solution processes Execution Report (MsgType = '8') messages
- ICE POF starts sending Allocation (MsgType = 'J') messages
- ICE Private Order Feed Solution processesAllocation (MsgType = 'J') messages
Exceptional cases:
2a. Session with ICE POF is not established
2a1. Notice about a failed attempt to create the session is logged into FIXEdge.log
2a2. ICE Private Order Feed Solution performs an attempt to recreate the session based on the session configuration parameters
3a. ICE POF determines that the Historic Request contains invalid data
3a1. ICE POF sends the Business Message Reject (MsgType = 'j') to inform about failed request
3a2. ICE Private Order Feed Solution writes the following warning in the FIXEdge.log file
Note |
---|
WARN: History Request failed with the following reason '" + *** Reject reason received from ICE *** + ""
|
4a. ICE POF does not have data available to be sent as a Snapshot
4a1. The FIX News (MsgType = "B") message is sent to Business Layer
"History Request was successfully accomplished. ICE POF status: '" + text + "'";
4a2. Main flow continues from the step 7.
3. Processing Incoming ICE POF Data
- All incoming traffic (Execution Report Messages, Allocation messages) is stored into the database by means of java script (ICEPofExecRpt.js, ICEPofAllocRpt.js).
- Alternatively, data can be published to any other middleware supported by FIXEdge.
ICE Private Order Feed Solution Configuration
Please see the table below that represents the components included into the FIXEdge package intended for ICE Private Order Feed Solution:
Configuration File | Description |
---|
BL_Config.xml | Is used to specify the following: |
TableNameSent_Messages_ICE_POFColumnSize256ConnectionStringDSN=;UID=ice_pof_admin;Pwd=temp_pass;"><KeyFieldColumnName="ExecID"128>17</KeyField> <KeyField ColumnName="Symbol"ColumnSize="128">55</KeyField><KeyField ColumnName="Side" ColumnSize="128">54</KeyField>ConnectionString="DSN=ICE_POF;UID=pof_admin;Pwd=temp_pass;">
<KeyField ColumnName=" |
|
SourceFeed128>9009<<FieldSendingTimeTransactTime" ColumnSize="128" |
|
>52<Field>KeyField>
</History>
..........
|
|
additional_icepof.xml | Defines custom tags for ICE POF API messages |
FIXEdge.properties | Is usedto specify FIX Session details - Host = **** as supplied by ICE ****
- Port = **** as supplied by ICE ****
- Username = **** as supplied by ICE ****
|
Port - Password = **** as supplied by ICE ****
- Encryption required : No
- FIX Version: 4.2
- Role: Initiator
- SenderCompID = **** as supplied by ICE ****
- SenderSubID = 1
|
TargetCompID = **** as supplied by ICE **** - Heartbeat Interval = 60 (recommended; value of '0' will lead to connection drops)
- Reconnect Interval = 15000 (recommended)
Logon = custom logon message, see example below:
Custom ICE POF Logon |
___Sender_______9001=1_ | 9001=1 | 9006=0 | 9007=1 |
|
_553=username_96=password__Note, value of SenderSubID (50) is not supplied by ICE. User can choose any value as long as it complies with datatype of this tag. Values for the following tags are expected to be supplied by ICE and to be specified in custom Logon |
:UserType (9001) - either '1' (Trading Firm) or '2' (Clearing Firm Company)Username (553) Password (96):
- UserType (9001) - either '1' (Trading Firm) or '2' (Clearing Firm Company)
The following tags and their values must be specified in Custom ICE POF Logon to support the Allocation message: - StrategyPreference (9006) - StrategyPreference (Tag 9006) must be set to ‘1’ if PublishClearingAllocations (Tag 9008) = ‘1’. Set the value to 1.
- PublishClearingAllocations (9008) - indicates whether or not the allocations from clearing should be published over the session. Supported value(s): 0 = Do not send clearing allocation messages (Default if not sent). 1 = Send clearing allocation messages. Set the value to 1.
|
ICEPofHistoryReq.js | Java script for generation of Historic Request (MsgType = 'UHR'). By default, request asks for order events starting from today's midnight. |
ICEPofExecRpt.js | Java script used to push ICE Execution report (MsgType = '8') messages to database. Is a part of business rules for messages processing which are defined in BL_Сonfig.xml |
ICEPofAllocRpt.js | Java script used to push ICE Allocation message (MsgType = 'J') messages to database. Is a part of business rules for messages processing which are defined in BL_Сonfig.xml |
SQL script | Used to create database tables |