OnixS C++ FIX Engine  3.25.0
API Documentation
FIX Dictionary

Inner Contents

 Editing Dictionaries Descriptions
 
 Session-level Dictionaries
 
 Dialect Exploration
 
 Using QuickFIX Dictionaries
 

Detailed Description

It is a common feature of the FIX protocol to support customizations of FIX messages. This primarily consists of the ability to add user-defined fields. However, in real-life, a lot of firms, venues or vendors prefer to make much more significant changes to the messaging specifications. To satisfy these requirements, C++ FIX Engine exposes the concept of FIX Dictionary.

A FIX Dictionary represents a customized dictionary of a FIX messaging specification (or put simply, a FIX variant version). The FIX Engine supports XML-based dictionaries descriptions as a part of its configuration settings via the OnixS::FIX::EngineSettings::dictionaryFile configuration parameter.

For example:

EngineSettings settings;
settings.dictionaryFile("dictionary/CmeTradingFixDictionary.xml");
Engine::init(settings);

More than one XML FIX Dictionary file could be specified using the '|' symbol as the file name delimiter.

For example:

EngineSettings settings;
settings.dictionaryFile("dictionary/CmeTradingFixDictionary.xml|dictionary/IceTradingFixDictionary.xml");
Engine::init(settings);

Support of FIX Dictionaries by the Engine

The definition of a single FIX dictionary is implemented by describing changes to the standard FIX version(s).

The OnixS C++ FIX Engine supports dictionaries for the local use of a single specific FIX Session, as well as the capability to replace the standard FIX dictionaries with dictionaries implementations, that are used everywhere in the Engine.

Note
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, ICAP, ICE, Hotspot, Currenex, EFX, Barclays Capital, FIMAT, FXall, GAIN, Goldman, ICAP, Montreal Exchange (MX), Trading Technologies (TT) and more...) upon request. Also you can find the base dialect xml files of all FIX protocol versions in the FIX Engine distributions package, these files can help to create your own dialect xml files when you need the knowledge of standard FIX message structures.

Example

A basic dictionary description file looks like the following example:

<?xml version="1.0" encoding="utf-8"?>
<!--
Root of dictionaries descriptions.
May contain engine-wise, as well as per-session dictionaries descriptions.
-->
<Dialect
xmlns="http://ref.onixs.biz/fix/dialects"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ref.onixs.biz/fix/dialects http://ref.onixs.biz/fix/dialects/dialects-2_14.xsd">
<!--
FIX field defines single dictionary description.
Attribute 'version' defines the version of FIX messaging specification, which is being customized.
-->
<FIX version="4.0">
<!-- Changes into single message structure go here (as well as new messages definitions). -->
<Message type="D">
<!-- Tags and groups which enlarge or modify message. -->
<Field tag="526" name="SecondaryClOrdID"/>
</Message>
</FIX>
</Dialect>
Note
QuickFIX XML data dictionary file format is supported too, please see the Using QuickFIX Dictionaries page for details.
See also
Editing Dictionaries Descriptions | Session-level Dictionaries