FIX and FIXML Dictionaries Customization Guide
- 1 How to customize a FIX dictionary
- 2 Examples of different customizations
- 2.1 How to add a custom value to the existing FIX tag
- 2.1.1 fixdic50sp2.xml
- 2.2 How to change ‘required’ attribute of a tag in FIX message
- 2.3 How to change ‘required’ attribute of a tag in component block
- 2.4 How to add a custom tag to the existing FIX message
- 2.4.1 fixdic50sp2.xml
- 2.4.2 fixdic50sp2.xml
- 2.5 How to add a custom tag to the existing FIX component block
- 2.6 How to add custom repeating group to the existing FIX message
- 2.7 How to add a custom FIX message
- 2.1 How to add a custom value to the existing FIX tag
- 3 How to customize a FIXML dictionary
- 3.1 How to add a custom value to existing FIX tag
- 3.2 How to change the ‘required’ attribute of a tag in the FIX message
- 3.3 How to change the ‘required’ attribute of a tag in component block
- 3.4 How to change the ‘required’ attribute of a component block in the FIX message
- 3.5 How to add a custom tag to the existing FIX message
- 3.6 How to add a custom tag to the existing FIX component block
- 3.7 How to add custom repeating group to the existing FIX message
- 3.8 How to add custom FIX message
- 3.9 How to Generate and Customize FIXML Dictionaries with jFIXML Converter
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.
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
In order to apply any customizations for a standard FIX Dictionary it is necessary to do the following:
Refer to fixdic.xml
Apply changes
Store changes to the file
Fixdic.xml structure
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).
Definition: AllocRejCode (88) tag is defined in the following way:
According to this definition, it is necessary to refer to FIX tags values blocks named “AllocRejCode” and specify the following (refer to text marked bold dark blue)
Example 2: Valid values for MDEntryType (269) tag should be extended with custom value “R” (Rolling average).
Definition: Find MDEntryType (269) tag definition in the file and add the value as illustrated in the example below:
fixdic50sp2.xml
<fielddic>
<!-- ... -->
<fielddef tag="269" name="MDEntryType" type="char">
<!-- ... -->
<item val="R">Rolling average</item>
</fielddef>
<!-- ... -->
</fielddic>How to change ‘required’ attribute of a tag in FIX message
Example: It is necessary to change the „required‟ attribute for Password (554) tag from „not required‟ to „required‟ in FIX message User Request (MsgType = „BE‟)
Definition: Refer to <msgdic> section and find User Request (MsgType = „BE‟) message definition. Find Password (554) tag definition in message definition and add the following attribute (if absent) req = “Y” (refer to marked bold dark blue).
If the tag was defined as „not required‟ via req = “N” attribute, its value should be changed to “Y”.
How to change ‘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 from „not required‟ to „required‟ in Commission Data component block.
Definition: Refer to <msgdic> section and find Commission Data component block definition. Define the following attribute (if absent) req = “Y” in component block Commission (12) and Commission Type (13) tags (refer to marked bold dark blue).
If the tag was defined as „not required‟ via req = “N” attribute, its value should be changed to “Y”.
How to change ‘required’ attribute of a component block in FIX message
Example: It is necessary to change „required‟ attribute in Settlement Instruction Request (MsgType = „AV‟) message for “Parties” component block from „not required‟ to „required‟.
Definition: Refer to <msgdic> section and find Settlement Instruction Request (MsgType = „AV‟) message definition. Find “Parties” component block definition in message definition and add the following attribute (if absent) req = “Y” (refer to marked bold dark blue).
If the tag was defined as „not required‟ via req = “N” attribute, its value should be changed to “Y”.
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.
Definition:
1. Declare a custom FIX tag in the fields dictionary (<fielddic> section). Define the new field parameters within <fielddef> declaration as below: