FIX Dictionary
It is a common feature of the FIX protocol to support customizations of application-level FIX messages. This primarily consists of the ability to add user-defined fields. However, many venues make significant changes to messaging specifications. To satisfy these requirements, the FIX Engine supports the concept of FIX Dictionaries.
A FIX Dictionary describes the structures of FIX messages.
The MessageInfoDictionary class represents a customized dictionary of a single FIX messaging specification (a FIX dialect).
The Engine supports XML-based dictionary descriptions as a part of its configuration settings. The Dictionary property is used to specify the location of the FIX Dictionary description file.
For example:
var settings = new EngineSettings
{
Dictionary = "IceTradeCaptureFixDialect.xml"
};
Engine.Init(settings);
MessageInfoDictionary instances could also be created programmatically.
Dictionaries for Standard FIX Protocol Versions
To find the MessageInfoDictionary for standard FIX Protocol versions use the ToDictionary(ProtocolVersion) extension method.
For example:
IMessageInfoDictionary fix42dictionary = ProtocolVersion.Fix42.ToDictionary();
Dictionary Customization
The definition of a single FIX dictionary is implemented by describing changes to the standard FIX version(s). Dictionary customization consists of the ability to expand the set of messages with new messages, to enlarge messages and repeating groups with new fields and subgroups. It is also possible to replace regular fields with repeating groups and vice versa.
The Engine supports dictionaries for the local use of a specific FIX session (Session-level Dictionaries), as well as the capability to replace the standard FIX dictionaries used everywhere in the Engine by default.
Tip
Ready to use FIX dictionary description files, as well as venue specific trading and market data client samples are available from OnixS for many FIX destinations (CME, ICE, Trading Technologies (TT), etc. ) are available upon request.
Also, you can find the base dictionary XML files of all FIX protocol versions in the FIX Engine distributions package; these files can help to create your dictionary files.
A basic dictionary description file looks like the following example:
<?xml version="1.0" encoding="utf-8"?>
<!--The root of the Dictionary descriptions. May contain engine-wise as well as per-session dictionary descriptions. -->
<Dialect xmlns="https://ref.onixs.biz/fix/dialects"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://ref.onixs.biz/fix/dialects https://ref.onixs.biz/fix/dialects/dialects-2.18.xsd">
<!-- The FIX node defines a Dictionary description. The 'version' attribute specifies the FIX Protocol version. -->
<FIX version="4.0">
<Message type="D">
<Field tag="526" name="SecondaryClOrdID"/>
</Message>
</FIX>
</Dialect>
Note
QuickFIX XML data dictionary file format is supported too; please see the Using QuickFIX Data Dictionary page for details.