I have been reading this thread with much interest for a while now. I have created an app that collects data and calc's the FPI, as many of us have done. However, in doing so I think I have stumbled on a problem with MBT data. Here is a brief email exchange I had with their SDK support team:
Level I (qsfLevelOne) quotes are, and always will be, updated on a very small frequency of somewhere around 20-30 ms, and not with every tick. Otherwise, all other quote levels are, and always will be, updated with every tick.
My question is pretty straight forward.
1) I create an MbtQuotes, MbtComMgr, MbtOrderClient and MbtAccount
object in order to connect and receive price quotes to trade forex
2) I use the IMbtQuotesNotify_OnQuoteData update event in order to do
my per tick calculations and then decide if I want to execute a trade.
3) Your previous post that "Level I (qsfLevelOne) quotes are, and
always will be, updated on a very small frequency of somewhere around
20-30 ms, and not with every tick. Otherwise, all other quote levels
are, and always will be,updated with every tick," is a bit confusing
in this context.
So my questions are:
1) Are the currency pairs that I subscribe to creating OnQuteData
update events whenever they are traded or there is a new bid or ask?
And if so, which event actually triggers the OnQuoteData event?
2) Or, are synthetic OnQuoteData events created for the currency
pairs I am subscribed to every 20-30 ms and sent as if they were tick
events to the onQuoteData update event?
2. QUOTERECORDs are sent every 20ms, with real-time data.
I'm staying away from agreeing that "Synthetic" and "as if they were..." are appropriate.
The MBT data that get's passed on an OnQuoteData event is in reality a timer event that get's passed as tick event. I am not sure that this has a huge impact as they say it is every 20-30 ms, but it is interesting to know and to keep it in mind to see if it impacts anything.
I'm not using the MBT SDK directly, so I can't comment on that first hand. Anyway, in order to calculate the FPI value, you should look for all new quotes
, i.e. changes in either the bid or ask.
I would not use the term "tick" in any communication as it's very confusing. It's not clear whether it refers to the snapshot of a quote or to a new trade.
In NeoTicker, the code recalculation can either get triggered by:
- a "tick" (new trade), or
- by a preset time interval (like 100 ms) or new trade
Obviously, it's more precise to trigger the recalculation by a preset time interval/new trade (such an indicator is called a "timer"). This way, you're not missing on the quote changes that happen between
the individual trades.