Is anyone aware of a good tutorial/book which describes the FIX protocol? I need to connect to a FIX server. It supports a limited number of messages and I'd like to write my own FIX engine.
There are a number of vendors of FIX engines, APIs and similar products (Order Management Systems, Execution Management Systems; which is probably what you are connecting to) whose websites have FIX protocol dictionaries:
TransactTools has a good one. Also consider: ONiXS and B2Bits.
In terms of a tutorial, I'm not sure there is a product-agnostic protocol out there. But some of the aforementioned vendors may well have their programmer's guides online and that MIGHT give you bit of a headstart.
You might also want to take a look at the source code for Marketcetera. It is an open-source Order Management System that is intended to be deployed in buy-side firms (institutional investors, hedge funds, prop shops) that connects to brokers & exchanges via the FIX protocol so you may get a further understanding of how the protocol works from spelunking through its code. Marketcetera uses Quickfix as its underlying FIX engine.
The Essvale Corporation's series of books 'Business Knowledge for IT in ...' (various aspects of the investment and trading world) might have some information, but probably very high-level but may be useful for colour depending on how new you are to the business. They are all available on O'Reilly Safari Books Online if you have a subscription.
Finally there are always the forums on the FIX Protocol Group website to be considered.
The data dictionary are a real pain to use. I used to get mad at looking at a fix message and then pair by pair check out the values on the data dictionary. They are just popular because it takes 10 minutes to write a little program to create html pages out of the xml files in the spec.
Once you get the idea of sequence number, session, connectivity, then the rest is just accepting that all you have is a sequence of name value pairs. (okay okay there are also repeating groups)
I use http://www.validfix.com/ to decode a fix message into something more readable.
Deepak