quickfix

The Go FIX Protocol Library

OTHER License

Stars
713
Committers
71

QuickFIX/Go

Open Source FIX Protocol library implemented in Go

Looking for help with MessageStore syntax changes?

See v0.9.0 release notes here

About

Installation

With Go module support, simply add the following import

import "github.com/quickfixgo/quickfix"

to your code, and then go [build|run|test] will automatically fetch the necessary dependencies.

Otherwise, run the following Go command to install the quickfix package:

go get -u github.com/quickfixgo/quickfix

Getting Started

FIX Messaging Model

To send and receive messages, your application will need a few additional packages.

QuickFIX/Go maintains separate packages for tags, fields, enums, messages, and message components auto-generated from the FIX 4.0 - FIX5.0SP2 XML specifications-

For most FIX applications, these generated resources are sufficient. Custom FIX applications may generate source specific to the FIX spec of that application using the generate-fix tool included with QuickFIX/Go.

Following installation, generate-fix is installed to $GOPATH/bin/generate-fix. Run $GOPATH/bin/generate-fix --help for usage instructions.

General Support

Commercial Support

Contributing

If you wish to work on QuickFIX/Go itself, you will need Docker and VSCode on your machine.

  • Clone the repo and open it with VSCode with Docker running
  • This repo comes with vscode devcontainer configs in ./.devcontainer/
  • Click the pop-up to re-open the project in the Dev Container
  • This opens the project in a docker container pre-configured with everything you need

Build and Test

The default make target runs go vet and unit tests.

make

If this exits with exit status 0, then everything is working!

Generated Code

Generated code from the FIX40-FIX50SP2 specs are available as separate repos under the QuickFIX/Go organization. The source specifications for this generated code is located in spec/. Generated code can be identified by the .generated.go suffix. Any changes to generated code must be captured by changes to source in cmd/generate-fix. After making changes to the code generator source, run the following to re-generate the source

make generate

If you are making changes to the generated code, please create Pull Requests for these changes for the affected repos.

Acceptance Tests

QuickFIX/Go has a comprehensive acceptance test suite covering the FIX protocol. These are the same tests used across all QuickFIX implementations.

QuickFIX/Go acceptance tests depend on ruby in path, if you are using the dev container, it is already installed

To run acceptance tests,

# generate code locally
make generate

# build acceptance test rig
make build-test-srv

# run acceptance tests
make accept

Licensing

This software is available under the QuickFIX Software License. Please see the LICENSE.txt for the terms specified by the QuickFIX Software License.