This is a set of tools to look up / visualize FIX protocol data.
Project description
FIXations!
A set of tools to handle FIX protocol data
- fix_tags - explore FIX tags and their associated values either as CLI output or a GUI-like textual interface
- fix_parse_log - extract FIX lines from a (log) file and present them in a nicely formatted grid
- webfix - present copy-n-paste'd FIX lines into a nicely formatted grid
Installation
pip3 install fixations
Examples of running these applications
fix_tags
Click on the link below since it was too small to asciicast in this page
fix_parse_log
webfix
Webfix needs to be used with either Flask (for dev purposes)
$ python -m flask --app fixations.webfix run
* Serving Flask app 'fixations.webfix'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
or something like gunicorn (or other WSGI servers) for production uses:
$ gunicorn fixations.wsgi:app
[2023-01-16 19:55:31 -0500] [3380019] [INFO] Starting gunicorn 20.1.0
[2023-01-16 19:55:31 -0500] [3380019] [INFO] Listening at: http://127.0.0.1:8000 (3380019)
[2023-01-16 19:55:31 -0500] [3380019] [INFO] Using worker: sync
[2023-01-16 19:55:31 -0500] [3380028] [INFO] Booting worker with pid: 3380028
FIX reference data source
The data is extracted from the FIX specs available here:
https://www.fixtrading.org/packages/fix-repository-2010/ (see fix_repository_2010_edition_20200402.zip).
NOTE: it requires the creation of a login/password to access it.
Updating the FIX references
Every so often the https://www.fixtrading.org website will issue an extension pack, i.e. an update to their FIX reference for FIX 5.0SP2
The list of extension packs can be found here
That's where one can find a pointer to an EP download button that points to something like:
Within it, one needs to download the matching ZIP file:
FIXBasicRepository_FIX.Latest_EP287.zip
Which can be unzip to reveal a directory called Basic which contains the same XML file Fixations requires:
unzip -v FIXBasicRepository_FIX.Latest_EP287.zip | grep Basic |grep xml
78310 Defl:N 8753 89% 02-06-2024 10:32 579086ea Basic/Abbreviations.xml
12902 Defl:N 1432 89% 02-06-2024 10:32 719a08e3 Basic/Categories.xml
395051 Defl:N 36228 91% 02-06-2024 10:32 1936d9af Basic/Components.xml
33163 Defl:N 5675 83% 02-06-2024 10:32 7efbdd59 Basic/Datatypes.xml
1554894 Defl:N 194377 88% 02-06-2024 10:34 4def9e3d Basic/Enums.xml
2269559 Defl:N 266814 88% 02-06-2024 10:32 7fe17774 Basic/Fields.xml
8187931 Defl:N 745380 91% 02-06-2024 10:34 75dc5b17 Basic/IntermediateRepository.xml
105161 Defl:N 17924 83% 02-06-2024 10:32 348735e8 Basic/Messages.xml
3144399 Defl:N 213711 93% 02-06-2024 10:32 8c5d516a Basic/MsgContents.xml
2230 Defl:N 739 67% 02-06-2024 10:32 e6dc9b4e Basic/Sections.xml
You need to cp
those files into fixations/fix_repository_2010_edition_20200402/FIX.5.0SP2/Base
. Note the Base
vs Basic
directory.
Note: I will try to keep an eye on new extension packs and update this repo accordingly
TODO:
- create a hyperlink to FIX specs for each tag based on FIX version :white_check_mark:
- add more info to README.md. Use rule80A and 47 as example for fix_args :white_check_mark:
- add more example(s)
- add some pytest to detect the FIX version for example :white_check_mark:
- add "direction" to columns to show whether it's a request or a response
- catch exceptions and display them on the webpage
- deploy to https://vercel.com/
- allow creating an ASCII table equivalent suitable to be cut-n-paste into a document for example
- add a short link ala tinyurl and save it into a sqlite3 db store :white_check_mark:
- black theme?
- allow to have no leading timestamp and use the timestamp FIX tags instead :white_check_mark:
- add proper Logger
- add DB stats
- pypi.org can't display the ASCII screencast images. Need to reference GitHub's full path?
- Give the option to remove or hide/obfuscate some sensitive fields such as tag55 or senderCompId/targetComPid :white_check_mark:
- Show the delta between each timestamp (below each timestamp) :white_check_mark:
- Transpose the grid/matrix :white_check_mark:
- Shift-Enter = pressing on [Parse FIX] button :white_check_mark:
- Support FIX Repeating Groups :white_check_mark:
- When using fix_parse_log.py, also upload the same data to the webfix app to generate a tiny URL :white_check_mark:
- Add an option to sort the entries by log timestamp. Useful when grep over multiple files
- Add smart comments when comments aren't provided, based on simple rules on tags: 35=D and 8002=1 then comment="blah"
- Add top tags to the ASCII version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fixations-0.2.38-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66dec219e0621c5853275a9dcb01aff9ecec37cd1d4f30ddd95ad5861839cdf4 |
|
MD5 | 2de009fea0b11525da532fb76ef83efd |
|
BLAKE2b-256 | 6b9df364f6c9fab2f072fe9bbb2a351bd9670de886e9f22635c83a88e2afa3f8 |