What is FIX protocol and FIX Engine?
FIX protocol is Industry standard protocol for electronic trading , with evolution with computer technology Trading also getting Electronic and now most of the exchanges in the world are fully electronic and concept of trading floor is taken over by computers.
When I was new to FIX protocol I have searched net to find a good FIX protocol tutorial but not much is available so I am trying to write my own experience in form of short FIX protocol tutorial.
In this blog post I would like to share my thoughts, experience and knowledge about FIX protocol which I had acquired by working on different areas of FIX.
FIX protocol is a tag value protocol where every field has a unique tag name and signify something e.g. Price (tag 44) denotes the price of a particular shares , OrderQty denotes quantity of order.
FIX protocol specify different types of messages for different trading purposes e.g. for Sending an Order to exchange they used NewOrderSingle message (MsgType=35) or for Sending a Cancel to exchange they used CancelOrder message (MsgType=F). MsgType (tag 35) and they message for all purpose of trade life cycle e..g they have pre trade message ( e.g. News , Indication of Interest ) , trade message (NewOrderSingle, OrderCancelReplaceRequest , OrderCancelRequest) and post trade message (e.g. Allocation messages).
To understand these FIX message client and broker, the two party involved in trading has a piece of software called FIX Engine. There are many commercial FIX engine available which is used in Industry e.g. Cameron FIX Engine, NYFIX's Appia etc.
Messages on FIX protocol can be broadly classified into two type’s first Session level message also called Admin messages and Second Application level messages. Session level messages is uesd to establish FIX session between two FIX engine and Application messages are messages which is meant for some purpose e..g NewOrderSingle message which is used to send order via FIX.
MsgType (tag 35) is an important tag in FIX protocol which is used to uniquely identify a FIX message. Every single message in FIX protocol must have corresponding MsgType otherwise FIX engine will reject those messages saying it’s not a valid FIX message.
As per FIX protocol connection between two FIX engine is called FIX session and every FIX session has pre agreed host/port and comp id. Since a single FIX engine can be used to server multiple clients on broker side every client is uniquely identified by combination of IP , port and there Comp IDs , Comp IDs are combination of SenderCompID and TargetCompID which are two separate tag in FIX protocol.
Once FIX Session established now client can send Orders via FIX and broker then send it exchange for execution.
I will try to keep it updated with relevant information, please ask if you have any questions, doubt etc.
Happy learning and welcome to FIX protocol world :)