Page tree
Skip to end of metadata
Go to start of metadata

A new format of Version property is available since FIXEdge 5.9.

Prepare custom dictionary

Examples of dictionary modifications can be found in the FIX and FIXML Dictionaries Customization Guide.

Protocol customizations in FIX Antenna based products can be done as:

  1. Basic standalone dictionaries - the dictionaries describing a full list of the tags, messages, and message structure
  2. Additional dictionaries - the dictionary containing only incremental changes and updates for the basic dictionaries. An additional dictionary requires a basic one with a full message structure description. Using additional dictionaries is a convenient way to support FIX protocol customizations which slightly differ from the FIX standard.

Examples of the basic and additional dictionaries can be found in FIX Antenna or FIXEdge packages.

Create a standalone dictionary

  1. Pick required FIX version (FIX.4.4, FIXT.1.1, FIX.5.0.SP2, etc)
  2. Get corresponded common dictionary file (fixdic44.xml, fixdict11.xml, fixdic50sp2.xml) and save with new name e.g. fixdic44Custom.xml
  3. Change dictionary id, E.g. to FIX44Custom :

    before:

    fixdict44Custom.xml
    <fixdic xmlns="http://www.b2bits.com/FIXProtocol" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.b2bits.com/FIXProtocol fixdic.xsd"
            id="FIX44" 
            fixversion="4.4" 
            title="FIX 4.4 (with errata 20030618)" 
            version="1.5.19" 
            date="2013-03-14">

    after:

    fixdict44Custom.xml
    <fixdic xmlns="http://www.b2bits.com/FIXProtocol" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.b2bits.com/FIXProtocol fixdic.xsd"
            id="FIX44Custom" 
            fixversion="4.4" 
            title="FIX 4.4 (with errata 20030618)" 
            version="1.5.19" 
            date="2013-03-14">
  4. add other modifications if they are needed.

Create an additional dictionary modifying all sessions using a specified version

Modifications from the additional dictionaries can be applied to all sessions with the certain FIX Protocol version

The example below shows how to apply a dictionary to all sessions using version FIX44

additional.xml
<fixdics>
    <update>
        <fixdic 
            id="FIX44" 
            fixversion="4.4" 
            title="Custom fields FIX 4.4" 
            date="2015/01/25">
            <fielddic>
                <fielddef tag="1003" name="TradeID" type="String"/>
            </fielddic>
              <msgdic>
                <msgdef msgtype="AE" name="Trade Capture Report">
                    <field tag="1003" name="TradeID" req="Y"/>
                </msgdef>
            </msgdic>
        </fixdic>
    </update>
</fixdics>

Here are attributes id="FIX44" fixversion="4.4" determine basic version of FIX protocol for modification

Create an additional dictionary modifying only to specified sessions

Modifications from the additional dictionaries can be applied only for specific sessions and the FIX Protocol for the basic dictionary remains unchanged so the rest sessions wouldn't be affected by dictionaries customization.

The example below shows how to define a custom version of protocol FIX44 - FIX44Custom and do not affect sessions which use version FIX44:

additional.xml
<fixdics>
    <update>
        <fixdic 
            id="FIX44Custom" 
            parent_id="FIX44"
            fixversion="4.4" 
            title="Custom FIX 4.4" 
            date="2015/01/25">
            <fielddic>
                <fielddef tag="1003" name="TradeID" type="String"/>
            </fielddic>
              <msgdic>
                <msgdef msgtype="AE" name="Trade Capture Report">
                    <field tag="1003" name="TradeID" req="Y"/>
                </msgdef>
            </msgdic>
        </fixdic>
    </update>
</fixdics>

Here are the attributes:

  • id="FIX44Custom" - Version name defined by the user that should be used as Version parameter for the session.
  • parent_id="FIX44"  fixversion="4.4" - reference to basic FIX protocol version

Register the custom dictionaries in the configuration.

Add paths to custom dictionaries files to DictionariesFilesList property in the engine.properties file

for a standalone version of dictionaries

engine.properties
# This parameter contains semicolon separated list of names of the XML files with definitions and extensions of the FIX protocols.
DictionariesFilesList = fixdic42.xml;fixdic44Custom.xml

or for a variant with additional dictionaries

engine.properties
# This parameter contains semicolon separated list of names of the XML files with definitions and extensions of the FIX protocols.
DictionariesFilesList = fixdic42.xml;fixdic44.xml;additional.xml
By default in FIXEdge, the dictionaries are located in FIXEdge1/conf directory.

Define custom parsers for sessions

Custom parsers are used in case if the customization for certain sessions should be applied to the basic dictionary.

Add definitions of parsers to AdditionalParsersList property in engine.properties file

e.g.

# List of additional protocols id's that require to register parsers
# Format of each value divided by semicolon: [UNIQUE_PARSER_NAME@][FIXT_PROTOCOL1:]APP_PROTCOL1[,APP_PROTCOL2...]
# Example if you have FIX44Custom dictionary:
AdditionalParsersList = FIX44Custom

In the case of modification FIX50+ protocols, a transport-level protocol can be also specified in the parser name. 

The format is the following: [UNIQUE_PARSER_NAME@][FIXT_PROTOCOL1:]APP_PROTCOL1[,APP_PROTCOL2...]

AdditionalParsersList = CustomParserName1@FIXT11:FIX50Custom

5. Configure FIX session to use a custom dictionary

Modify Version property of session in the configuration.

in FIXEdge.properties for FIXEdge

FixEdge.properties
# # Format of each value divided by semicolon: [UNIQUE_PARSER_NAME@][FIXT_PROTOCOL1:]APP_PROTCOL1[,APP_PROTCOL2...]
# FixLayer.FixEngine.Session.<SessionName>.Version = [<TransportDictionaryID>:]<ApplicationDictionaryID>
FixLayer.FixEngine.Session.TestFIXAcceptor1.Version = FIX44Custom
FixLayer.FixEngine.Session.TestFIXAcceptor2.Version = FIXT11Custom:FIX50Custom

in engine.properties for FIX Antenna C++

FixEdge.properties
Session.Sender/Target.ParserVersion = FIX44Custom
Session.Default.ParserVersion = CustomParserName1@FIXT11:FIX50Custom

Please be aware that if you change the dictionary on-fly, FIXEdge must be restarted in order to apply the changes.

  • No labels