Versions Compared

Key

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

Table of Contents

This article describes how to customize FIX and FIXML dictionaries

The articles describe:

  • how FIX and FIXML dictionaries are built,
  • how to customize dictionaries:
    • how to define a custom tag;
    • how to extend existing message with a custom tag;
    • how to extend the list of custom tag values;
    • how to define a custom message etc. 
Warning

When you are applying customizations for FIX and FIXML dictionaries to build a custom FIX FIXML converter make sure that both dictionaries fully correspond to each other.

How to customize a FIX dictionary

...

FIX dictionary consists of the following blocks:

Block name

Description
<fixdic>
FIX dictionary main node
<typelist>
Data types list definition
-><typedef >Data type definition
<fielddic>
FIX tags and values identifier
-><valblockdef>FIX tag values block definition
-><fielddef>FIX tag definition
<msgdic>
Messages and component blocks definition
-><blockdef> Definition of the Component Block used in FIX message
-><msgdef>FIX message definition

An example of FIXdic.xml structure is given below.

...

Examples of different customizations

How to add a custom value to the existing FIX tag

Example 1: Valid values for AllocRejCode (88) tag should be extended with custom value "14” (unknown clearing account).  

...

Note

The same can be done if it is necessary to change the „required‟ attribute for tag inside a repeating group.

How to add a custom tag to the existing FIX message

Example 1: It is necessary to add a custom tag PolicyCode (8060) as the "not required" field in New Order Single (MsgType = "D") message. The tag has no predefined valid values; the data type for values is String.   

...

1. Declare a custom FIX tag in the fields dictionary (<fielddic> section). Define the new field parameters within <fielddef> declaration as below:

...

2. Refer to <msgdic> and find Mass Quote Acknowledgement (MsgType = „b‟) message description and add VTRejectReasonBid (8100) as described below in bold dark blue:

How to add a custom tag to the existing FIX component block

Example: It is necessary to add a custom tag ShareTier (8800) as not a required field in the „Commission‟ component block. The tag has the following predefined valid values: „A‟, „B‟, „C‟; the data type for values is char.  

...

1. Declare a custom FIX tag in the fields dictionary. Refer to <fielddic> section and define the following

...

2. Refer to <msgdic>, find „Commission‟ component block description, and add ShareTier (8800) as described below in bold dark blue: 

How to add custom repeating group to the existing FIX message

Example: It is necessary to add a custom repeating group in List Execute (MsgType = „L‟) message. The repeating group consists of the following fields: 

...

The repeating group is not required in the message.

Definition: Refer to <msgdic>, find List Execute (MsgType = „L‟) message description, and add a repeating group as described below in bold dark blue:

...

Note

The custom repeating group can be added to the component block or into another repeating group in the same way.

How to add a custom FIX message

Example: It is necessary to add a custom Start One Side Only Period Confirmation (MsgType = „U0505‟) message. The message consists of the following fields:  

...

Note

All examples below are provided based on FIX 4.4.

How to add a custom value to existing FIX tag

Example: Valid values for AllocRejCode (88) tag should be extended with custom value “14” (unknown clearing account). 

Definition:  Refer to fixml-fields-base-4-4.xsd and apply a custom value for AllocRejCode (88) in the following way (refer to bold dark blue):

How to change the ‘required’ attribute of a tag in the FIX message

Example:  It is necessary to change the „required‟ attribute for the Password (554) tag in FIX message User Request (MsgType = „BE‟) from „not required‟ to „required‟ 

Definition: Refer to fixml-components-base-4-4.xsd and find User Request (MsgType = „BE‟) message definition. Find “Password” tag definition in message definition and change the attribute „use‟ (if not absent) to required as use = “required” (refer to marked bold dark blue). 

 

How to change the ‘required’ attribute of a tag in component block

Example: It is necessary to change the „required‟ attribute for Commission (12) and Commission Type (13) tags in the Commission Data component block from „not required‟ to „required‟.  

Definition: Refer to fixml-components-base-4-4.xsd section and find Commission Data component block definition.  Refer to Commission (12) and Commission Type (13) tags definition and change attribute „use‟ (if not absent) to required as use = “required” (refer to marked bold dark blue).

How to change the ‘required’ attribute of a component block in the FIX message

Example: It is necessary to change the „required‟ attribute of the “Parties” component block in FIX message Settlement Instruction Request (MsgType = „AV‟) from „not required‟ to „required‟.

Definition: Refer to fixml-settlement-base-4-4.xsd and find Settlement Instruction Request (MsgType = „AV‟) message definition. Find “Parties” component block definition in message definition and change the „minOccurs‟ attribute to minOccurs="1" (refer to marked bold dark blue).

How to add a custom tag to the existing FIX message

Example 1: It is necessary to add custom tag PolicyCode (8060) as not required field in New Order Single (MsgType = „D‟) message. The tag has no predefined valid values; data type for values is String.

...

1. Declare a custom FIX tag in the fields dictionary. Refer to fixml-fields-base-4-4.xsd section and define the following

...

Example 2: It is necessary to add a custom tag VTRejectReasonBid (8100) as a required field in Mass Quote Acknowledgement (MsgType = „b‟) message. The tag has the following predefined valid values:  

...

1. Declare a custom FIX tag in the fields dictionary. Refer to fixml-fields-base-4-4.xsd section and define the following

...

3. Refer to fixml-quotation-base-4-4.xsd , find Mass Quote Acknowledgement (MsgType = „b‟) message description and add VTRejectReasonBid (8100) as described below in bold dark blue: 

How to add a custom tag to the existing FIX component block

Example: It is necessary to add a custom tag ShareTier (8800) as not a required field in the „Commission‟ component block. The tag has the following predefined valid values: „A‟, „B‟, „C‟; data type for values is char.  

...

1. Declare a custom FIX tag in the fields dictionary. Refer to fixml-fields-base-4-4.xsd section and define the following
 

...

3. Refer to fixml-components-base-4-4.xsd, find „Commission‟ component block description and add ShareTier (8800) as described below in bold dark blue: 

Image Modified
How to add custom repeating group to the existing FIX message

Example: It is necessary to add a custom repeating group in List Execute (MsgType = „L‟) message. The repeating group consists of the following fields: 

...

The repeating group is not required in the message.

Definition

1. Make sure that a repeating group is defined in the schema. „Trading Sessions‟ is a standard FIX repeating group which is defined in fixml-components-base-4-4.xsd as illustrated in the example below:

...

Note

 The custom repeating group сan be added to the component block or into another repeating group in the same way.

How to add custom FIX message

Example: It is necessary to add a custom Start One Side Only Period Confirmation (MsgType = „U0505‟) message. The message consists of the following fields:  

...

Message description: A Start One Side Only Period Confirmation message is sent by the Euronext to confirm the reception of the Start One Side Only Period. This message is only available for Euronext markets.

The repeating group is not required in the message. 

Warning
When customizations for FIX and FIXML dictionaries are provided to build a custom FIX  FIXML convertor be aware of the following: While you are declaring a custom FIX message in FIXML dictionary make sure that FIX message alias (in FIX dictionary) is equal to FIXML  message name defined as: ‘ <xs:element name="StrtOneSideOnlyPrdCnfrm" …‟   

Definition

1. Add a user-defined message to the list of FIXML categories.  Refer to fixml-main-4-4.xsd and specify the following (marked bold dark blue):

...