[This message was posted by Mahesh Kumaraguru of  <[email protected]> to the 
"General Q/A" discussion forum at http://fixprotocol.org/discuss/22. You can 
reply to it on-line at http://fixprotocol.org/discuss/read/992b3bb6 - PLEASE DO 
NOT REPLY BY MAIL.]

You are right - there is a "callback" between the trading application and FIX 
engine. How this callback is implemented in code would differ between different 
technologies / implementors.

Some FIX messages may have no response, some messages may have multiple 
responses. Some examples :-

1. A buy side application has received an execution report which passes all 
application level validations. Upto FIX.4.4 there was no message type to 
acknowledge an Execution report, so there would be no response. From FIX.5.0 
onwards, there is an optional ExecutionAcknowledgement ^35=BN^.

2. A Sell side application has received a limit order O1 which passes all 
application level validations. First an Acknowledgement Exec report is sent. 
Then the O1 limit order will rest in the order book till a counter order O2 
(opposite side Buy-Sell) which matches O1 order is received. If the quantity of 
the counter order O2 is less than the order O1 which it counters, the a partial 
fill is sent in response to O1 and full fill is sent in response to O2. Then 
the remaining unexecuted quantity of O1 will rest in order book till another 
counter order O3 is received.

So the FIX Engine and Trading application cannot wait for each other, they run 
"independentely" like two Java threads.

> thats perfect. so basically the buy/sell side app have some sort of
> callback with the engine so when its done, fix engine gets it back
> thanks again for your quick reply..
> 
> > Trading application means
> >
> > For Buy side - its portfolio management system - the source of orders
> > and destination of executions.
> >
> > For Sell side / ECNs - its Trade execution engine - destination of
> > orders and source of executions.
> >
> > > No, after handing the business message to the trading application,
> > > the FIX engine will be free to accept the next inbound message. When
> > > the trading application produces a response to the application
> > > message which it received, trading application will hand over the
> > > response to the FIX engine and the FIX engine will send it over the
> > > wire to the counterparty.
> > >
> > > > so my question still remains..if engine identifies it as an
> > > > application bound message and it hands it over to the trading
> > > > app,then will the FIX engine be blocked i.e. it won't accept any
> > > > more messages till the trading app finishes its processing of the
> > > > message? wouldn't this be a serious performance issue.
> > > >
> > > > > FIX messages are accepted and processed sequentially (Ordered
> > > > > Message Processing), but keep in mind that "processing" can mean
> > > > > different things for different messages.
> > > > >
> > > > > I see the architecture of FIX applications logically as two tier
> > > > >
> > > > > Tier 1 - FIX Engine - transports business data without
> > > > > understanding the meaning of data.
> > > > >
> > > > > Tier 2 - Trading Application - produces and consumes business
> > > > > data without understanding how the data is moved.
> > > > >
> > > > > FIX Engine will accept messages and apply Session level
> > > > > validation. If the message received is a Session message, the
> > > > > FIX Engine itself will perform the appropriate action. Else if
> > > > > the message received is a application / business message, the
> > > > > FIX Engine will hand it over to the Trading Application and the
> > > > > trading application will apply application level validations and
> > > > > perform appropriate action.
> > > > >
> > > > > > You will process the messages based on incrementing sequence
> > > > > > numbers (tag 34). Each FIX message will have unique sequence
> > > > > > number and it will keep incrementing throuhgout the day. Try
> > > > > > to read more about FIX message format, key FIX fields and FIX
> > > > > > session handling, that will help you understand more.
> > > > > >
> > > > > > > does FIX engines act like JMS servers e..g quickFix/j. in
> > > > > > > other words, does the messages accepted sequentially?
> > > > > > >
> > > > > > > if so, how do you manage your incoming messages. for .e.g if
> > > > > > > you get a 1000 incoming messages say 5 seonds, you really
> > > > > > > can't process those messages when you receive them. i
> > > > > > > usually would spawn out a new thread to process that so i
> > > > > > > can keep accepting the messages [also increase the
> > > > > > > threadpool a little].


[You can unsubscribe from this discussion group by sending a message to 
mailto:[email protected]]

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Financial Information eXchange" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/FIX-Protocol?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to