Need help with quickfix?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

quickfixgo
506 Stars 193 Forks Other 736 Commits 58 Opened issues

Description

:rocket: The Go FIX protocol library

Services available

!
?

Need anything else?

Contributors list

QuickFIX/Go

Build Status GoDoc Go Report Card

Open Source FIX Protocol library implemented in Go

Getting Started and Documentation

Installation

To install QuickFIX/Go, use

go get
:
$ go get github.com/quickfixgo/quickfix

Staying up to date

To update QuickFIX/Go to the latest version, use

go get -u github.com/quickfixgo/quickfix
.

Example Apps

See examples for some simple examples of using QuickFIX/Go.

FIX Message Generation

QuickFIX/Go includes separate packages for tags, fields, enums, messages, and message components generated from the FIX 4.0 - FIX5.0SP2 specs. See:

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.

Developing QuickFIX/Go

If you wish to work on QuickFIX/Go itself, you will first need Go installed and configured on your machine (version 1.13+ is preferred, but the minimum required version is 1.6).

Next, using Git, clone the repository via

git clone [email protected]:quickfixgo/quickfix.git

Installing Dependencies

As of Go version 1.13, QuickFIX/Go uses modules to manage dependencies. You may require

GO111MODULE=on
. To install dependencies, run
go mod download

Note: No vendored dependencies are included in the QuickFIX/Go source.

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-dist

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.

To run acceptance tests,

    # generate code locally
    make generate

# build acceptance test rig
make build_accept

# run acceptance tests
make accept

Dependencies

If you are developing QuickFIX/Go, there are a few tasks you might need to perform related to dependencies.

Adding/updating a dependency

If you are adding or updating a dependency, you will need to update the

go.mod
and
go.sum
in the same Pull Request as the code that depends on it. You should do this in a separate commit from your code, as this makes PR review easier and Git history simpler to read in the future.
  1. Add or update the dependency like usual:
    sh
    go get -u github.com/foo/bar
    
  2. Update the module-related files:
    sh
    go mod tidy
    
  3. Review the changes in git and commit them.

Note that to specify a specific revision, you can manually edit the

go.mod
file and run
go mod tidy

Licensing

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.