Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

  1. Install FIXEdge using these instructions: https://kb.b2bits.com/display/B2BITS/FIXEdge+Installation+Guide

  2. Create a database for ICE trades storing:
    1. Create a database itself. ‘ICE_Trades’ is suggested as the default name.

      Note

      Make sure that the parameter Server authentication of the SQL Server Database Engine is set to SQL Server and Windows Authentication mode.
      Change it, if necessary. For more information please refer to SQL Server technical manual.

    2. Create user login, database user and database tables using the ‘ICE_database.sql’ script – adjust it if necessary (database name, user, etc)
    3. Execute 'MSSQL_ICETrdCapt.sql', and 'MSSQL_ICESecDef.sql' scripts against the database to create stored procedures (adjust change the database name if necessary
    4. Add ODBC data source for the database on the server with installed FIXEdge

  3. Adjust FIXEdge configuration (typically located here ‘C:/B2BITS/FIXEdge/FIXEdge1/conf/’)
    1. ICE Handler property file (ICEProperties.properties)
      1.  Specify SenderCompID for:
        1.  The ICESession property so that its final format is: SenderCompID[SOH]TargetCompID
        2. The ICESession.SenderCompID property
      2. Add security definitions subscriptions to the necessary markets using provided examples in the "Security Definition Subscriptions" section: 
        1. Add a security definition subscription name to the list in the ICESession.SecurityDefinitionSubscriptions property
        2. Specify SecurityID and CFICode for added security definition subscription as described in the property file comments or in the instruction below
        Codes of ICE markets can be found at: https://www.theice.com/publicdocs/technology/Supported_Market_Types_on_ICE_API.pdf
      3. Specify an appropriate value of the ICESession.SecurityDefinitionSubscriptions.RequestMode property 
        1. If you wish to receive SecurityDefinitions from p.ii only once a day, set ICESession.SecurityDefinitionSubscriptions.RequestMode = OnceADay
        2. If you wish to receive SecurityDefinitions from p.ii at each logon, set ICESession.SecurityDefinitionSubscriptions.RequestMode = EachLogon
      4. Specify a correct path in the ICESession.StorageFileName property.
    2. Make changes to the ‘FIXEdge.properties’ configuration file:
      1. For ‘ICESession’ specify SenderCompID, your ICE Username and Password. By default the parameters are filled with dummy values / not filled
    3. ‘BL_Config.xml’
      1. Make sure that all <History> entities point to the correct DSN, also adjust username and password if they are different from default ones
      2. Specify correct SenderCompID in the rule "Launch ICE Handler" at the line: <MatchMessage Value=".*PLACE YOUR SENDER COMP ID HERE.*" />
        E.g., if your SenderCompID is 1234, the rule will look like: <MatchMessage Value=".*1234.*" />

  4. Start FIXEdge via FIX Integrated Control Center (FIXICC)

...

How to make a new field from ICE Trade Capture FIX interface stored in the database

Download process is free from any FIXEdge specifics. Any changes can be done by modifying the proper stored procedure and data model.

In order to process new fields so that they can appear in the database, the following needs to be done:

  1. Check where the FIX tag you are interested in is located in the FIX message. Note that tags from repeating groups are allocated in the separate tables. Check ICE Trade Capture to Database for details.
    1. If the FIX tag is located in the root of the message (either Trade Capture Report or Security Definition), then add the coincident column to the ICEReports / ICESecurityDefinitions table
    2. If the FIX tag is located in one of the repeating groups which are already stored in the database, then add column to the corresponding table
    3. If the FIX tag is located in one of the repeating groups which are not stored in the database, then add a new table for the group and specify the required field there

  2. Add support for new fields in stored procedure (either SaveReports or SaveDefinitions depending on which fields you are going to add).

FIXEdge server restart is not required.

Example (for MS SQL Server):

...

Assume that tag 9707 (MiFIDID) from the Trade Capture Report message (MsgType = "AE") should be now stored in the database. Following the step-by-step instruction presented above:

  1. According to the ICE Trade Capture specification (see https://community.theice.com/docs/DOC-19796), MiFIDID is located in the root of the Trade Capture Report message (MsgType = "AE"). Add the new MiFIDID column with varchar (256) type to the ICEReports table.

    Code Block
    languagesql
    titleICEReports
    ALTER TABLE [ICEReports] ADD [MiFIDID] [varchar](256) NULL
  2. Then the SaveReports stored procedure should be adjusted:

    Code Block
    languagesql
    titleSaveReports
     INSERT INTO [ICEReports]
     (
      TradeReportID,
      SendingTime,
      .....  
      ClientIDCode,
      MiFIDID,                               -- new MiFIDID tag 
      ClientAppType
     )
     SELECT
      @ReportID,
      @SendingTime,
      .....
      C.value('f9706[1]', 'nvarchar(256)'),
      C.value('f9707[1]', 'nvarchar(256)'), -- new MiFIDID tag 
      @ClientAppType
     FROM @xmlData.nodes('/FIXMessage') as T(C)
     OPTION (OPTIMIZE FOR ( @xmlData = NULL ));


...