QuickFIX is a free, open-source implementation of the FIX protocol (Financial Information eXchange). It is a full-featured messaging engine that supports FIX versions 4.0 through 5.0 SP2, including FIXT 1.1.
- FIX Protocol Support: FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 SP1, 5.0 SP2, and FIXT 1.1
- Multiple Language Bindings: C++ and Python (via SWIG)
- Database Support: MySQL, PostgreSQL, ODBC
- SSL/TLS Support: Native OpenSSL integration
- Flexible Architecture: Pluggable message stores and logging
- Cross-Platform: Windows, Linux, macOS
- Production Ready: Used by banks, brokers, and trading firms worldwide
QuickFIX is built and tested in CI on:
- Library (
build_test_cmake.yml, Debug/Release x SSL on/off):windows-2022,ubuntu-latest,macos-latest - Wheels (
wheels.yml, native runners only -- no emulation): manylinux x86_64/aarch64, win_amd64/arm64, macOS x86_64/arm64
- C++17 compatible compiler (GCC, Clang, MSVC)
- CMake 3.12+ (the Windows commands below use
cmake -B, which needs 3.13+;ctest --no-tests=errorneeds 3.19+) - Optional: OpenSSL (for SSL/TLS support)
- Optional: MySQL, PostgreSQL, or ODBC (for database message stores)
Building on Windows? See BUILD.md first. Smart App Control blocks locally built binaries from running, and the OpenSSL DLLs must be on
PATHat launch.
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local .
make -j$(nproc)
sudo make installcmake -DCMAKE_BUILD_TYPE=Release -DHAVE_SSL=ON -DCMAKE_INSTALL_PREFIX=/usr/local .
make -j$(nproc)
sudo make installcmake -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_INSTALL_PREFIX=C:\quickfix
cmake --build build --config Release
cmake --install build --config Releasecmake -B build -G "Visual Studio 17 2022" -A x64 -DHAVE_SSL=ON -DOPENSSL_ROOT_DIR="C:\path\to\openssl" -DCMAKE_INSTALL_PREFIX=C:\quickfix
cmake --build build --config Release
cmake --install build --config Release
cmake -B buildcreates the build directory if it is missing and reuses it if it already exists, so these commands are safe to re-run. The generator and platform (-G/-A) are fixed the first time a build directory is configured; to change them, deletebuild\and configure again.
-DHAVE_SSL=ON- Enable SSL/TLS support (requires OpenSSL)-DHAVE_MYSQL=ON- Enable MySQL support-DHAVE_POSTGRESQL=ON- Enable PostgreSQL support-DHAVE_ODBC=ON- Enable ODBC support-DHAVE_PYTHON3=ON- Build Python 3 bindings-DQUICKFIX_SHARED_LIBS=ON- Build shared libraries (default: ON)-DQUICKFIX_EXAMPLES=ON- Build example applications (default: ON)-DQUICKFIX_TESTS=ON- Build tests (default: ON)
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh # or bootstrap-vcpkg.bat on Windows
./vcpkg integrate install
./vcpkg install quickfix- Building: See doc/html/building.html
- Configuration: See doc/html/configuration.html
- SSL Setup: See README.SSL
- API Documentation: Generate with Doxygen in the
doc/directory - Examples: See the
examples/directory for sample applications
QuickFIX includes several example applications:
- executor: A simple order execution simulator
- ordermatch: A matching engine example
- tradeclient: An interactive trading client
These examples demonstrate how to build FIX applications using QuickFIX.
# Build with Python 3 support
cmake -DHAVE_PYTHON3=ON .
makePrebuilt wheels for this fork, compiled with TLS enabled, are published as
quickfix-tls:
pip install quickfix-tlsThe import name stays quickfix, so it is a drop-in replacement for the official
quickfix distribution - which means the two
install the same module and must not both be installed. See README-PyPI.md
for the full package page.
This fork fills two gaps in the official quickfix distribution:
- Prebuilt wheels. The official distribution ships as a source archive only, so installing it means compiling the full C++ engine locally - which on Windows needs MSVC and, for TLS, an OpenSSL development installation.
- TLS transports, ready to use. These wheels are compiled with
HAVE_SSLenabled and ship the OpenSSL runtime, soSSLSocketInitiator/SSLSocketAcceptorand the threaded variants work out of the box.
It also exposes ThreadedSSLSocketInitiator and ThreadedSSLSocketAcceptor, which the
QuickFIX C++ library implements but has never exposed through its Python bindings -
these are the transports QuickFIX's own C++ examples use for TLS by default.
Both changes are being offered upstream. If they are accepted and the project starts publishing wheels, this package becomes unnecessary.
To build a wheel yourself, pyproject.toml drives the CMake build above via
scikit-build-core:
pip wheel . -C cmake.define.OPENSSL_ROOT_DIR=<openssl-root>See Building a Python wheel in AGENTS.md for prerequisites, the
Windows delvewheel step, and testing against another Python version.
Run the test suite:
# Everything is registered with CTest; run it from the build directory
ctest --output-on-failure
ctest -L unit # labels: unit, perf, acceptance, python
ctest -LE network # skip anything that binds a socket
# Or drive the suites directly from test/
cd test
./runut.sh # unit
./runpt.sh # performance
./runat.sh 6666 # acceptance (needs the port free, and Ruby)We welcome contributions! Please see CONTRIBUTING.md for guidelines on:
- Reporting bugs
- Suggesting features
- Submitting pull requests
- Code style guidelines
For security-related issues, please see our Security Policy.
QuickFIX is licensed under the QuickFIX Software License. See the LICENSE file for details.
- Issues: Report bugs and request features on GitHub Issues
- Discussions: Ask questions on GitHub Discussions
- Mailing List: quickfixengine-users
QuickFIX is maintained by the open-source community. Special thanks to all contributors who have helped make this project possible.