FIX Trading Community

 

 Remember me

Register  |   Lost password?

Foreign Exchange

Discussions > Foreign Exchange > FIX 4.2 Currenex "top of book" and "full book" Market Data Request - Incremental update

FIX 4.2 Currenex "top of book" and "full book" Market Data Request - Incremental update

Complete message thread from old site

Alexander Lewis
10 May 2011 4:56am

Hi everyone,

I am writing my own trading platform based on QuickFix Engine C++ for Linux, connecting to Currenex using FIX 4.2.

I have some specific questions regarding the MarketDataIncrementalRefresh response to MarketDataRequest using incremental updates, full-book market depth, and non-aggregated book.

I understand I can specify Market Depth tag 264 to be "0" full-book or "1" top of book, however I would like to use both in my application.

The first problem is that when I try to make two separate MarketDataRequests for the same instrument, say "EUR/USD," both full-book and top of book, I get a duplicate subscription error even though I use a separate MDReqID for each.

Instead, I figure I should just use "0" full-book non-aggregated for complete market depth and then calculate "top of book" myself in my client. The problem here is when I use the full-book to calculate "highest bid" and "lowest offer" the orders that I find do not match the orders returned when using 264=1 "top of book".

If anyone could provide any help in explaining what I am doing wrong or provide another way of obtaining both full-book and top of book at the same time I would greatly appreciate it.

Regards,
Alex Lewis

Alexander Lewis
11 May 2011 4:38am

> Hi everyone,
>
> I am writing my own trading platform based on QuickFix Engine C++ for Linux, connecting to Currenex using FIX 4.2.
>
> I have some specific questions regarding the MarketDataIncrementalRefresh response to MarketDataRequest using incremental updates, full-book market depth, and non-aggregated book.
>
> I understand I can specify Market Depth tag 264 to be "0" full-book or "1" top of book, however I would like to use both in my application.
>
> The first problem is that when I try to make two separate MarketDataRequests for the same instrument, say "EUR/USD," both full-book and top of book, I get a duplicate subscription error even though I use a separate MDReqID for each.
>
> Instead, I figure I should just use "0" full-book non-aggregated for complete market depth and then calculate "top of book" myself in my client. The problem here is when I use the full-book to calculate "highest bid" and "lowest offer" the orders that I find do not match the orders returned when using 264=1 "top of book".
>
> If anyone could provide any help in explaining what I am doing wrong or provide another way of obtaining both full-book and top of book at the same time I would greatly appreciate it.
>
> Regards,
> Alex Lewis

I was able to receive some help regarding this issue, so far my solution has been to setup two separate sessions and use one for querying the top of book and another for querying the full book.

I now understand that I should be able to find the top of book by sorting the order entries according to their position tag, 290=MDEntryPositionNo. The problem is that none of the Market Data Incremental Refresh messages contain the tag 290. Can anyone answer how I am supposed to determine the order of the book if I do not receive tag 290?

Alexander Lewis
12 May 2011 9:28am

OK. I believe I found my answers here:
http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http%3A%2F%2Fftp.rts.ru%2Fpub%2Fsupport%2FFAST%2Foldest%2FMessage%2520Types%2520and%2520Interpretation.pdf&rct=j&q=how%20to%20sort%20orders%20in%20book%20market%20data%20incremental%20refresh&ei=VpjLTYOMD-zRiALiufGdBQ&usg=AFQjCNEB8bXIVMWnFS1cqhPOCIHzqF6B-g&sig2=g503Kz0WaD9Re09bvoTWVA&cad=rja

thanks!

> > Hi everyone,
> >
> > I am writing my own trading platform based on QuickFix Engine C++ for Linux, connecting to Currenex using FIX 4.2.
> >
> > I have some specific questions regarding the MarketDataIncrementalRefresh response to MarketDataRequest using incremental updates, full-book market depth, and non-aggregated book.
> >
> > I understand I can specify Market Depth tag 264 to be "0" full-book or "1" top of book, however I would like to use both in my application.
> >
> > The first problem is that when I try to make two separate MarketDataRequests for the same instrument, say "EUR/USD," both full-book and top of book, I get a duplicate subscription error even though I use a separate MDReqID for each.
> >
> > Instead, I figure I should just use "0" full-book non-aggregated for complete market depth and then calculate "top of book" myself in my client. The problem here is when I use the full-book to calculate "highest bid" and "lowest offer" the orders that I find do not match the orders returned when using 264=1 "top of book".
> >
> > If anyone could provide any help in explaining what I am doing wrong or provide another way of obtaining both full-book and top of book at the same time I would greatly appreciate it.
> >
> > Regards,
> > Alex Lewis
>
> I was able to receive some help regarding this issue, so far my solution has been to setup two separate sessions and use one for querying the top of book and another for querying the full book.
>
> I now understand that I should be able to find the top of book by sorting the order entries according to their position tag, 290=MDEntryPositionNo. The problem is that none of the Market Data Incremental Refresh messages contain the tag 290. Can anyone answer how I am supposed to determine the order of the book if I do not receive tag 290?

John Cameron
7 May 2012 12:25am

Hi Alexander

That is a very nicely written description you have found. It appears to originate from the Russian RTS Stock Exchange - http://www.rts.ru/en/ - but I could not find the original on their site.

You should also take a look at FPL's "Recommended Practices For Book Management" at http://www.fixprotocol.org/specifications/TechDoc-MktData

I have updated the FIXwiki pages to refer to this FPL document (see http://fixwiki.org/fixwiki/MarketDataSnapshotFullRefresh and http://fixwiki.org/fixwiki/MarketDataIncrementalRefresh).

If you do find the original source of that RTS document, it would be good to add it to FIXwiki as well. One of the uses of FIXwiki can be to link to documentation on real-life implementations of the FIX standard - which are often particular subsets of the full standard.

> OK. I believe I found my answers here:
> http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http%3A%2F%2Fftp.rts.ru%2Fpub%2Fsupport%2FFAST%2Foldest%2FMessage%2520Types%2520and%2520Interpretation.pdf&rct=j&q=how%20to%20sort%20orders%20in%20book%20market%20data%20incremental%20refresh&ei=VpjLTYOMD-zRiALiufGdBQ&usg=AFQjCNEB8bXIVMWnFS1cqhPOCIHzqF6B-g&sig2=g503Kz0WaD9Re09bvoTWVA&cad=rja
>
> thanks!
>
> > > Hi everyone,
> > >
> > > I am writing my own trading platform based on QuickFix Engine C++ for Linux, connecting to Currenex using FIX 4.2.
> > >
> > > I have some specific questions regarding the MarketDataIncrementalRefresh response to MarketDataRequest using incremental updates, full-book market depth, and non-aggregated book.
> > >
> > > I understand I can specify Market Depth tag 264 to be "0" full-book or "1" top of book, however I would like to use both in my application.
> > >
> > > The first problem is that when I try to make two separate MarketDataRequests for the same instrument, say "EUR/USD," both full-book and top of book, I get a duplicate subscription error even though I use a separate MDReqID for each.
> > >
> > > Instead, I figure I should just use "0" full-book non-aggregated for complete market depth and then calculate "top of book" myself in my client. The problem here is when I use the full-book to calculate "highest bid" and "lowest offer" the orders that I find do not match the orders returned when using 264=1 "top of book".
> > >
> > > If anyone could provide any help in explaining what I am doing wrong or provide another way of obtaining both full-book and top of book at the same time I would greatly appreciate it.
> > >
> > > Regards,
> > > Alex Lewis
> >
> > I was able to receive some help regarding this issue, so far my solution has been to setup two separate sessions and use one for querying the top of book and another for querying the full book.
> >
> > I now understand that I should be able to find the top of book by sorting the order entries according to their position tag, 290=MDEntryPositionNo. The problem is that none of the Market Data Incremental Refresh messages contain the tag 290. Can anyone answer how I am supposed to determine the order of the book if I do not receive tag 290?

John Cameron
7 May 2012 1:31am

It looks like I should have been responding to John Tess of trendick but his posting has disappeared.

> Hi Alexander
>
> That is a very nicely written description you have found. It appears to originate from the Russian RTS Stock Exchange - http://www.rts.ru/en/ - but I could not find the original on their site.
>
> You should also take a look at FPL's "Recommended Practices For Book Management" at http://www.fixprotocol.org/specifications/TechDoc-MktData
>
> I have updated the FIXwiki pages to refer to this FPL document (see http://fixwiki.org/fixwiki/MarketDataSnapshotFullRefresh and http://fixwiki.org/fixwiki/MarketDataIncrementalRefresh).
>
> If you do find the original source of that RTS document, it would be good to add it to FIXwiki as well. One of the uses of FIXwiki can be to link to documentation on real-life implementations of the FIX standard - which are often particular subsets of the full standard.
>
> > OK. I believe I found my answers here:
> > http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http%3A%2F%2Fftp.rts.ru%2Fpub%2Fsupport%2FFAST%2Foldest%2FMessage%2520Types%2520and%2520Interpretation.pdf&rct=j&q=how%20to%20sort%20orders%20in%20book%20market%20data%20incremental%20refresh&ei=VpjLTYOMD-zRiALiufGdBQ&usg=AFQjCNEB8bXIVMWnFS1cqhPOCIHzqF6B-g&sig2=g503Kz0WaD9Re09bvoTWVA&cad=rja
> >
> > thanks!
> >
> > > > Hi everyone,
> > > >
> > > > I am writing my own trading platform based on QuickFix Engine C++ for Linux, connecting to Currenex using FIX 4.2.
> > > >
> > > > I have some specific questions regarding the MarketDataIncrementalRefresh response to MarketDataRequest using incremental updates, full-book market depth, and non-aggregated book.
> > > >
> > > > I understand I can specify Market Depth tag 264 to be "0" full-book or "1" top of book, however I would like to use both in my application.
> > > >
> > > > The first problem is that when I try to make two separate MarketDataRequests for the same instrument, say "EUR/USD," both full-book and top of book, I get a duplicate subscription error even though I use a separate MDReqID for each.
> > > >
> > > > Instead, I figure I should just use "0" full-book non-aggregated for complete market depth and then calculate "top of book" myself in my client. The problem here is when I use the full-book to calculate "highest bid" and "lowest offer" the orders that I find do not match the orders returned when using 264=1 "top of book".
> > > >
> > > > If anyone could provide any help in explaining what I am doing wrong or provide another way of obtaining both full-book and top of book at the same time I would greatly appreciate it.
> > > >
> > > > Regards,
> > > > Alex Lewis
> > >
> > > I was able to receive some help regarding this issue, so far my solution has been to setup two separate sessions and use one for querying the top of book and another for querying the full book.
> > >
> > > I now understand that I should be able to find the top of book by sorting the order entries according to their position tag, 290=MDEntryPositionNo. The problem is that none of the Market Data Incremental Refresh messages contain the tag 290. Can anyone answer how I am supposed to determine the order of the book if I do not receive tag 290?

John Cameron
7 May 2012 1:36am

The link on the RTS site is ftp://ftp.rts.ru/pub/support/FAST/oldest/Message%20Types%20and%20Interpretation.pdf

> It looks like I should have been responding to John Tess of trendick but his posting has disappeared.
>
> > Hi Alexander
> >
> > That is a very nicely written description you have found. It appears to originate from the Russian RTS Stock Exchange - http://www.rts.ru/en/ - but I could not find the original on their site.
> >
> > You should also take a look at FPL's "Recommended Practices For Book Management" at http://www.fixprotocol.org/specifications/TechDoc-MktData
> >
> > I have updated the FIXwiki pages to refer to this FPL document (see http://fixwiki.org/fixwiki/MarketDataSnapshotFullRefresh and http://fixwiki.org/fixwiki/MarketDataIncrementalRefresh).
> >
> > If you do find the original source of that RTS document, it would be good to add it to FIXwiki as well. One of the uses of FIXwiki can be to link to documentation on real-life implementations of the FIX standard - which are often particular subsets of the full standard.
> >
> > > OK. I believe I found my answers here:
> > > http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http%3A%2F%2Fftp.rts.ru%2Fpub%2Fsupport%2FFAST%2Foldest%2FMessage%2520Types%2520and%2520Interpretation.pdf&rct=j&q=how%20to%20sort%20orders%20in%20book%20market%20data%20incremental%20refresh&ei=VpjLTYOMD-zRiALiufGdBQ&usg=AFQjCNEB8bXIVMWnFS1cqhPOCIHzqF6B-g&sig2=g503Kz0WaD9Re09bvoTWVA&cad=rja
> > >
> > > thanks!
> > >
> > > > > Hi everyone,
> > > > >
> > > > > I am writing my own trading platform based on QuickFix Engine C++ for Linux, connecting to Currenex using FIX 4.2.
> > > > >
> > > > > I have some specific questions regarding the MarketDataIncrementalRefresh response to MarketDataRequest using incremental updates, full-book market depth, and non-aggregated book.
> > > > >
> > > > > I understand I can specify Market Depth tag 264 to be "0" full-book or "1" top of book, however I would like to use both in my application.
> > > > >
> > > > > The first problem is that when I try to make two separate MarketDataRequests for the same instrument, say "EUR/USD," both full-book and top of book, I get a duplicate subscription error even though I use a separate MDReqID for each.
> > > > >
> > > > > Instead, I figure I should just use "0" full-book non-aggregated for complete market depth and then calculate "top of book" myself in my client. The problem here is when I use the full-book to calculate "highest bid" and "lowest offer" the orders that I find do not match the orders returned when using 264=1 "top of book".
> > > > >
> > > > > If anyone could provide any help in explaining what I am doing wrong or provide another way of obtaining both full-book and top of book at the same time I would greatly appreciate it.
> > > > >
> > > > > Regards,
> > > > > Alex Lewis
> > > >
> > > > I was able to receive some help regarding this issue, so far my solution has been to setup two separate sessions and use one for querying the top of book and another for querying the full book.
> > > >
> > > > I now understand that I should be able to find the top of book by sorting the order entries according to their position tag, 290=MDEntryPositionNo. The problem is that none of the Market Data Incremental Refresh messages contain the tag 290. Can anyone answer how I am supposed to determine the order of the book if I do not receive tag 290?