Skip to main content

Simple FIX Protocol implementation for Python

Project description

Build status Docs Coverage PyPI Python

Introduction

FIX (Financial Information eXchange) Protocol is a widely-used, text-based protocol for interaction between parties in financial trading. Banks, brokers, clearing firms, exchanges, and other general market participants use FIX protocol for all phases of electronic trading.

Typically, a FIX implementation exists as a FIX Engine: a standalone service that acts as a gateway for other applications (matching engines, trading algos, etc) and implements the FIX protocol. The most popular Open Source FIX engine is probably one of the versions of QuickFIX.

This package provides a simple implementation of the FIX application-layer protocol. It does no socket handling, and does not implement FIX recovery or any message persistence. It supports the creation, encoding, and decoding of FIX messages.

Licence

The module is licensed under the MIT license. While this is not legal advice, in short this means you’re free to do whatever you like with this code, with the exception of claiming you wrote it.

Basic Usage

See the Programmer’s Guide for more information.

Creating Messages

To create a FIX message, first create an instance of the FixMessage class.

msg = simplefix.FixMessage()

You can then add fields to the message as required. You should add the standard header tags 8, 34, 35, 49, 52, and 56 to all messages. For most tags, using append_pair() is the easiest way to add a field to the message. When adding a UTCTimestamp value (ie, for tag 52) using append_utc_timestamp() will take care of the formatting for you.

append_string() will decompose a “tag=value” string and add it as a proper field; append_strings() will do the same for a sequence of “tag=value” strings. append_data() will correctly append a data field, setting the length tag’s value, and putting the value tag after the length in the formatted message.

Once all fields are set, calling encode() will return a byte buffer containing the correctly formatted FIX message, with fields in the required order, and automatically added and set values for the BodyLength (9) and Checksum (10) fields.

Note that if you want to manually control the ordering of all fields, the value of the BodyLength or Checksum fields, there’s a ‘raw’ flag to the encode() method that disables this functionality. This is useful for creating known-bad messages for testing purposes.

Parsing Messages

To extract FIX messages from a byte buffer, such as that received from a socket, you should first create an instance of the FixParser class. For each byte string received, append it to the internal reassembly buffer using append_buffer() . At any time, you can call get_message() : if there’s no complete message in the parser’s internal buffer, it’ll return None, otherwise, it’ll return a FixMessage instance.

Once you’ve received a FixMessage from get_message() , you can: check the number of fields with count() , retrieve the value of a field using get() or the built-in “[ ]” syntax, or iterate over all the fields using “for … in …”.

Members of repeating groups can be accessed using get(tag, nth), where the “nth” value is an integer indicating which occurrence of the tag to return (note that the first occurrence is number one, not zero).

Contributing

Comments, suggestions, bug reports, bug fixes – all contributions to this project are welcomed. See the project’s GitHub page for access to the latest source code, and please open an issue for comments, suggestions, and bugs.

See the CONTRIBUTING.rst file for more detailed instructions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simplefix-1.0.15.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

simplefix-1.0.15-py2.py3-none-any.whl (29.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file simplefix-1.0.15.tar.gz.

File metadata

  • Download URL: simplefix-1.0.15.tar.gz
  • Upload date:
  • Size: 33.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.8.0 urllib3/1.26.8 tqdm/4.19.4 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.13

File hashes

Hashes for simplefix-1.0.15.tar.gz
Algorithm Hash digest
SHA256 abad1cd5255e68c23fabc65b61da53b3b758b6355f1cb1dad39c1a45022d772b
MD5 5ebe4416a6373c1e7b1231383c799445
BLAKE2b-256 d7f8e1968a58eacc2da610158521318723e13fef9903475b770e33ac2c0ac29e

See more details on using hashes here.

File details

Details for the file simplefix-1.0.15-py2.py3-none-any.whl.

File metadata

  • Download URL: simplefix-1.0.15-py2.py3-none-any.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.8.0 urllib3/1.26.8 tqdm/4.19.4 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.13

File hashes

Hashes for simplefix-1.0.15-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 87c690ac04cd5e17cf9f0366f9c243cf560c3d9d07b478cb99678f37ad6f9ff5
MD5 262a729fa215545011fbe6df96751494
BLAKE2b-256 44993db51c5b820b40d6c1d5710562db1e0da8e87f340f72827486126edf24f6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page