Skip to main content

No project description provided

Project description

easyfix

Easy to use, boilerplate reducing FIX wrapper for QuickFIX (initiator only for now).

Motivation

Setting up a FIX application with QuickFIX is a lot of boilerplate. This is your easy fix.

This is mainly intended to experiment and explore with a FIX counterparty. There is no effort made to make this suitable in a high performance setting.

Features

  • Minimalistic API for quick and no fuss FIX API exploration
  • Humanized output: converts enum fields to descriptions -- no more spending hours digging through FIX references
  • Automatically set your sequence number to the needed value if your counterparty tells you "MsgSeqNum too low"

Usage

More examples at example.py

Initiator

import quickfix as fix
import quickfix44 as fix44
import easyfix

# Finally, no need to create a whole class just to connect to a FIX server!
app = easyfix.InitiatorApp.create('example.cfg')
app.start()

while not app.logged_on:
    time.sleep(0.1)

print("Logged in!")

# Send message using normal QuickFIX messages
m = fix44.SecurityListRequest()
m.setField(fix.SecurityReqID(str(uuid.uuid4())))
m.setField(fix.SecurityListRequestType(fix.SecurityListRequestType_ALL_SECURITIES))
fix.Session.sendToTarget(m, app.session_id)

while m := app.incoming_messages.get():
    # Get field(s) by name
    #
    # Note that this does not consider repeating group hierarchies and dump
    # all fields matching the tag of the name
    #
    # Example output:
    #
    #   ["SecurityList"]
    #   ["BTC/USD", "ETH/BTC"]
    print(app.get_fields_by_name(m, 'MsgType'))
    print(app.get_fields_by_name(m, 'Symbol'))

    # Get "nicely" formatted FIX message dump. Enums are automatically converted to descriptions
    #
    # Example output:
    #
    #   BeginString=FIX.4.4|BodyLength=736|MsgType=SECURITY_LIST|MsgSeqNum=1039|...
    print(app.humanize(m))

Verbsoe logging

You can get dump of FIX messages by enabling logging:

easyfix.enable_logging()

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

easyfix-0.1.2.tar.gz (5.7 kB view hashes)

Uploaded Source

Built Distribution

easyfix-0.1.2-py3-none-any.whl (5.1 kB view hashes)

Uploaded Python 3

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