Title: Development of a FIX engine
Tags: trading;fix-protocol
Question: I am new in the FIX and have requirement to develop a small FIX engine to communicate trading system. As I know there are plenty of FIX engine available but here requirement is to develop it.
Could anyone provide me the reference on any open source or any good article to start it?


Here is the accepted answer: For C++ use quickfix 

Java use QuickfixJ

For .NET use VersaFix

To refer to Fix message constructions.

Both the libraries(Quickfix) have the same nomenclature as mentioned in the FIX protocol standards. But they are little buggy here and there, but you can rectify them in your source code. I have used both of the libraries in a commercial project and say so after seeing the libraries work. But the code is quite simple and they have an online reference manual to work with.

But developing your own library will be a big task for only one developer, if you have a team it can be much easier. Remember other than parsing you have to incorporate network communications, configuration on how to run it and threading structures also.

Comment for this answer: Not a very big task though, depending on the requirements level can take anywhere from two weeks to half a year.
Comment for this answer: @Saurabh01 - Quickfix uses one thread per session, you can try that.
Comment for this answer: thanks DumbCoder. One more question, what architect would be use in the server to handle many client?

Here is another answer: You certainly want to andrew05@example.org.


Here is another answer: Developing your own FIX engine is not easy, specially if you will be dealing with FIX session level details yourself. Synchronizing sequences through ResendRequest, GapFill and SequenceReset is not easy and it would be nice if you can just use a FIX engine that is already doing that for you.

Another problem with the FIX protocol is REPEATING GROUPS. It is not easy to parse them quickly as it requires recursion or alternatively a complex iterative implementation.

Moreover, most Java FIX engines produce a lot of garbage when they are parsing the message, which increases variance and latency due to GC overhead.

Lastly, an intuitive API design is crucial to accelerate FIX development. If you want a good example of a clean API, you can check CoralFIX.

Disclaimer: I am one of the developers of CoralFIX.


{'source': 'StackExchangeDataset', 'subset': 'stackoverflow.com', 'metadata': {'AnswerCount': 3, 'CommentCount': 0, 'ContentLicense': 'CC BY-SA 2.5', 'CreationDate': '2010:00:12/27/10', 'FavoriteCount': 2.0, 'PostTypeId': 1, 'Tags': '<trading><fix-protocol>', 'Title': 'Development of a FIX engine', 'ViewCount': 2684, 'id': 4538800, 'user_AboutMe': '', 'user_AccountId': 118068.0, 'user_DisplayName': 'CrazyC', 'user_Reputation': 1790.0, 'user_Views': 290.0, 'user_id': 308826.0}}