ZagTrader

QuickFIX with FIX 5.0 SP2: FIXT.1.1, Transport and Application Dictionaries

Written and maintained by ZagTrader. Last reviewed . How this page is sourced and checked

A FIX 5.0 SP2 session is really two protocols: FIXT.1.1 for the session layer (Logon, Heartbeat, resends) and FIX 5.0 SP2 for the business messages. QuickFIX mirrors that split in its settings: one BeginString, a default application version and two dictionaries. Most setup errors come from treating it like a FIX 4.4 session.

The settings

A FIX 5.0 SP2 initiator session
[SESSION]
BeginString=FIXT.1.1
DefaultApplVerID=FIX.5.0SP2
SenderCompID=BUYSIDE
TargetCompID=SELLSIDE
SocketConnectHost=fix.example.com
SocketConnectPort=9876
HeartBtInt=30
UseDataDictionary=Y
TransportDataDictionary=FIXT11.xml
AppDataDictionary=FIX50SP2.xml
  • BeginString=FIXT.1.1. There is no FIX.5.0SP2 BeginString.
  • DefaultApplVerID is required on FIXT.1.1 sessions in all three engines; without it the session does not start. Write it as a name (FIX.5.0SP2) or as the ApplVerID (1128) code (9). It goes out in DefaultApplVerID (1137) on the Logon.
  • TransportDataDictionary checks the header, trailer and session messages. AppDataDictionary checks the business messages. Leave DataDictionary out; it is for FIX 4.x sessions.
  • If the counterparty uses a customised FIX 5.0 SP2 dictionary, point AppDataDictionary at their file and keep the standard FIXT11.xml for transport.

More than one application version on a session

A FIXT.1.1 session can carry messages of several application versions; each message that differs from the default says so in ApplVerID (1128) in its header. Give QuickFIX a dictionary for each version with a qualified setting name:

DefaultApplVerID=FIX.5.0SP2
AppDataDictionary=FIX50SP2.xml
AppDataDictionary.FIX.4.4=FIX44.xml

The part after the dot is a BeginString-style version name. QuickFIX/J, QuickFIX/n and QuickFIX C++ all read this form.

Message classes

  • QuickFIX/J 3.x: add quickfixj-messages-fixt11 and quickfixj-messages-fix50sp2. Without the FIXT artefact the session messages cannot be built.
  • QuickFIX/n: add the QuickFIXn.FIXT11 and QuickFIXn.FIX50SP2 packages (names without the inner dot since 1.14). From 1.14.1 a missing package shows up in the log as a message factory error, and QuickFIX/n answers the counterparty with a Logout.
  • Handlers for FIX 5.0 SP2 messages use the fix50sp2 classes (QuickFIX/J quickfix.fix50sp2, QuickFIX/n QuickFix.FIX50SP2, QuickFIX C++ FIX50SP2). A handler written for the FIX 4.4 class is never called. See onMessage not called.

Errors and what they mean

What you seeLikely cause
The engine stops at start asking for DefaultApplVerIDThe FIXT.1.1 session has no DefaultApplVerID.
Logout with "Incorrect BeginString"One side sends FIXT.1.1 and the other expects a FIX 4.x BeginString, or the other way round.
Logon rejected or ignoredThe Logon has no DefaultApplVerID (1137) or names a version the counterparty does not support. See FIXT.1.1 and ApplVerID errors.
Reject 373=18A message carries an ApplVerID (1128) the receiver does not support.
Rejects for valid business fieldsThe application dictionary is FIX 4.4 or the standard FIX 5.0 SP2 file while the counterparty uses a customised one.

Questions

What BeginString does QuickFIX use for FIX 5.0 SP2?
FIXT.1.1. The application version is set with DefaultApplVerID, for example FIX.5.0SP2 or the code 9.
Can I use DataDictionary on a FIXT.1.1 session?
Use TransportDataDictionary and AppDataDictionary instead. DataDictionary is the FIX 4.x setting.
Which ApplVerID codes do FIX 5.0 versions use?
7 for FIX 5.0, 8 for FIX 5.0 SP1 and 9 for FIX 5.0 SP2.

The FIX side of the problem

What the error means on any FIX engine, with example messages you can open in the parser:

Reference

Sources

  1. QuickFIX/J user manual: Configuration
  2. QuickFIX/J source: DefaultSessionFactory.java (required settings and defaults)
  3. QuickFIX/J README: runtime artefacts per FIX version
  4. QuickFIX/n documentation: Configuration
  5. QuickFIX/n source: SessionFactory.cs (required settings, dictionaries)
  6. QuickFIX/n release notes
  7. QuickFIX/n source: Session.cs (reject handling, sequence texts)
  8. QuickFIX C++ documentation: Configuration
  9. QuickFIX C++ source: SessionSettings.h (setting names)

Setting names, defaults and message texts were checked against the projects' source code and documentation on the review date shown at the top of the page. Behaviour can change between releases; check the version you run. This guide is independent and not affiliated with the QuickFIX projects.

See also

More QuickFIX guides