QuickFIX Guides: Configuration, Errors and Logs
Written and maintained by ZagTrader. Last reviewed . How this page is sourced and checked
Practical guides for developers running QuickFIX/J, QuickFIX/n or QuickFIX C++: the settings file, FIX 5.0 SP2 sessions, custom dictionaries, schedules, the error messages people search for, and how to read QuickFIX logs. Setting names, defaults and message texts are checked against each project's source code.
QuickFIX is an open source project of quickfixengine.org. This guide is independent and not affiliated with the QuickFIX projects.
Quick answers
| You see | Read |
|---|---|
| MsgSeqNum too low, expecting X but received Y | MsgSeqNum too low and resets |
| Tag not defined for this message type | Tag not defined for this message type |
| Conditionally Required Field Missing | Conditionally Required Field Missing |
| Incorrect data format for value | Incorrect data format for value |
| Logon gets no answer, or Unknown session ID during logon | Logon rejected, session not found |
| SSL handshake fails, PKIX path building failed | SSL and TLS handshake |
| onMessage is never called, Unsupported Message Type | onMessage not called |
| FIXT.1.1 and FIX 5.0 SP2 session will not start | FIX 5.0 SP2 (FIXT.1.1) setup |
| Session will not log on on Sunday | Schedules and time zones |
| Where are the QuickFIX log files? | Analyze QuickFIX logs |
Getting started and configuration
Choosing an engine, the settings file, FIX 5.0 SP2, dictionaries, groups and schedules.
- QuickFIX/J vs QuickFIX/n vs QuickFIX C++: Which One to Use
How the three QuickFIX engines differ: language, packages, current versions, settings that only one engine has, and how each answers the same error.
- QuickFIX Session Settings Explained: Configuration Reference
The QuickFIX settings file key by key: BeginString, CompIDs, HeartBtInt, schedules, ResetOnLogon, dictionaries, validation, file store and SSL, per engine.
- QuickFIX with FIX 5.0 SP2: FIXT.1.1, Transport and Application Dictionaries
Set up a QuickFIX FIX 5.0 SP2 session: FIXT.1.1, DefaultApplVerID, TransportDataDictionary and AppDataDictionary, and the errors when one is wrong.
- Custom Fields and a Custom Data Dictionary in QuickFIX
Add a counterparty's custom tags to a QuickFIX data dictionary: fields, messages, enum values, the settings that relax checks, and how to test the file.
- Repeating Groups in QuickFIX: Reading, Writing and Validation Errors
How QuickFIX handles repeating groups: NumInGroup, the delimiter field, reading and adding groups in Java and C#, and out-of-order group rejects.
- QuickFIX Session Schedules: Daily vs Weekly Sessions, Time Zones and Sunday to Thursday Markets
StartTime, EndTime, StartDay, EndDay, Weekdays and TimeZone in QuickFIX: daily vs weekly sessions, sequence resets and Sunday to Thursday markets.
Errors and how to fix them
The QuickFIX messages people search for, with the engine-specific steps.
- QuickFIX "Tag not defined for this message type": Causes and Fixes
Why QuickFIX rejects a field with "Tag not defined for this message type", which dictionary decides it, and the setting or dictionary change that fixes it.
- QuickFIX "Conditionally Required Field Missing": Why Your Handler Caused It
QuickFIX sends a Business Message Reject with 380=5 when your code reads a field that is missing. Why, the risk to fills, and how to read optional fields.
- QuickFIX "Incorrect data format for value": Field Types and Fixes
Which values QuickFIX rejects with "Incorrect data format for value" (373=6): timestamps, prices, booleans and chars, and the formats it accepts.
- QuickFIX "MsgSeqNum too low": Reset Sequence Numbers Safely and Fix the File Store
Fix "MsgSeqNum too low, expecting X but received Y" in QuickFIX: set sequence numbers in code, use ResetOnLogon with care, fix stale store files.
- QuickFIX Logon Problems: Session Not Found, CompID Mismatch and Rejected Logons
Why a QuickFIX Logon gets no answer, a Logout or a disconnect: unknown session ID, CompID mismatch, schedule, credentials and duplicate connections.
- QuickFIX SSL and TLS: Setup per Engine and Handshake Failures
Set up TLS in QuickFIX/J, QuickFIX/n and QuickFIX C++ and fix handshake failures: trust stores, key store types, server names and revocation checks.
- QuickFIX onMessage Not Called: Message Cracking Problems
Why QuickFIX never calls your onMessage handler: crack not called, wrong version classes, non-public handlers, missing packages, Unsupported Message Type.
Logs and analysis
Reading QuickFIX logs and opening them in the parser and analyzer.
- Reading and Analyzing QuickFIX Logs: messages.log and event.log
Where QuickFIX/J, QuickFIX/n and QuickFIX C++ write their logs, what the lines mean, and how to open .messages.log and .event.log in the parser.
Settings people look up most
Questions
- What is QuickFIX?
- An open source FIX engine. It comes as QuickFIX C++, QuickFIX/J for Java and QuickFIX/n for .NET, all maintained by their own projects and released under the QuickFIX Software License.
- Which QuickFIX engine should I use?
- The one for your language: QuickFIX/J for the JVM, QuickFIX/n for .NET, QuickFIX C++ for C++. They share the settings file style, the dictionaries and the session behaviour. See QuickFIX/J vs QuickFIX/n vs QuickFIX C++.
- Can I open QuickFIX log files in the parser?
- Yes. The parser reads QuickFIX/J, QuickFIX/n and QuickFIX C++ messages and event logs, screen logs and QuickFIX/J lines in SLF4J or log4j output, in your browser. See reading and analyzing QuickFIX logs.
The protocol side
These guides cover what is specific to QuickFIX. For what an error means on any FIX engine, see FIX troubleshooting; for how sessions and orders work, see the FIX guides.