Tuesday, January 24, 2017

Things to note down while writing your own FIX Engine on FIX protocol

This is in continuation of my FIX protocol tutorial, i am just sharing some of thoughts which are important to remember while writing FIX engine for FIX protocol , though there are couple of professional third party FIX engines are available you may need to write your own if your firm requires.
While writing your own FIX engine I would suggest paying attention to certain points which could save lots of time during maintenance phase

1) Decide up to which FIX version you are going to support e.g. FIX 4.0, 4.2, 4.4. As most of clients still use FIX 4.2 but supporting up to 4.4 would be good choice.

2) Think about support tools required to check status of various FIX sessions, changing sequence no etc. JMX would have been good choice if you were using Java but similar solution can be possible with other language.

3) Often you will be required to create new FIX session without bouncing your FIX engine to accommodate new clients; FIX engine must be capable to do that.

4) Different clients connect from different time zones, they have different requirement in terms of connection timing, EOD timing etc. these settings should be easy to configure and maintain.

5) Custom tags support; you may be required to support custom tag for your internal application or any other purpose. Program these things in a way that you need not have to make any code change or release to add another tag.

While these are just some of highlighter I would suggest looking some of the commercial FIX engine available in market e.g. Cameron FIX engine, NYFIX Appia to how they work.

Once again Flexibility, maintainability, easy to support are some of the feature which is essential for any FIX engine.
Further Learning
The Fix Guide: Implementing the FIX Protocol 2nd Edition
Building Winning Algorithmic Trading Systems
Trading Systems and Methods by Perry J. Kaufman
Linux Command Line Interface (CLI) Fundamentals
TCP/IP Networking for Developers

Related post:

FIX Protocol Tutorial 4: Repeating groups in FIX
FIX Protocol Tutorial 5: Replaying messages in FIX protocol
FIX Protocol tutorial 6: Difference between Session Level and Business message Reject
FIX Protocol Tutorial 7: Difference between FIX 4.2 vs FIX 4.4 
FIX Protocol Tutorial 8: Writing your own FIX Engine
FIX Protocol Tutorial 9: Common issues on financial information exchange (FIX) Connectivity


Anonymous said...

Thanks a lot dude. your article pointed some really important thing before I plan for writing my own FIX Engine. though is there any way that my FIX engine can support all FIX protocol version e.g FIX4.0 , FIX4.2, FIX4.4, FIX5.0 etc.

Raja Valiveti said...

Very useful information. Thanks for taking time for posting. Can you help clarifying few doubts I have -
(1) Why someone would like to write a new FIX engine when there are so many ready offerings (including opensource) available in the market? Is it cost?
(2) How much effort it can take for a good (I understand 'good' is subjective) developer to build a full featured FIX engine.


Anonymous said...


For the same reason why people open new pizza shops, when already so many exist.

some reasons
1) you want a faster fix engine, that can handle 25,000+ msgs/sec
2) you want scriptable transforms on tags
3) you want a FE that can be properly monitored
4) you want a FE that can be easily configured and maintained.
5) etc

Pi said...

I am very interesting your project ( writing my own fix engine).Do you find any info about "support all FIX protocol version e.g FIX4.0 , FIX4.2, FIX4.4, FIX5.0" ? if you do, Can you share
this ?

Anonymous said...

QuickFix or QuickFixJ is a very good open source Java based FIX Engine, which supports FIX Protocol 4.2, 4.2 and even 5.0. Rather than inventing your own, you can take QuickFix and improve upon that. It also got a good acceptance testing framework, which is must for testing a FIX engine. If you really want to write an ultra latency super fast FIX Engine, then use Apache MINA and Java NIO or go for C++

Anonymous said...

i was looking around for FIX engines etc and found your blog.
Pretty cool blog man. Thanks for the very useful posts on FIX here...

Post a Comment