[R-SIG-Finance] how to get quotes with IBrokers
R P Herrold
herrold at owlriver.com
Wed Aug 18 06:57:06 CEST 2010
On Tue, 17 Aug 2010, zerdna wrote:
> Hi, i need to get a quotes for a large set of stocks at 5 min after the open.
> I am trying to use IBrokers, but frankly not making much progress. I
> understand that i need to use reqMktData.
> i get a dataframe back after waiting for a while -- about 12 sec per ticker,
> which comes out to more than 1.5 hours for my list of 500 tickers. Also,
> most of the data is NA. Maybe it has to do with stocks on the list being
> relatively illiquid or maybe i am doing something wrong. Could someone
> comment, please?
That 12 sec has me suspicious, as that is hte data rate limit
for history, and not market data detail. that said, lets work
the numbers
one would use a history query, perhaps if you have a
constraint that all of the data should cover the same time
interval. You could query for just market open + 5 min.
There is a rate limitation there of 60 such queries over a ten
minute measurement interval (and so 500 symbols will take a
bit under 90 minutes -- viz., the hour and a half mentioned
above)
http://www.trading-shim.org/pipermail/ts-general/2010-June/000755.html
We have demonstrated such from time to time, and include the
needed scripts for doing such in our releases
http://www.trading-shim.org/pipermail/ts-general/2008-March/000168.html
If all you seek is a simple tick snapshot over a short time
interval, you should be able to parallelize the queries in
batches somewhat more quickly, at the cost of having differing
time frames for the compiled data. A person is permitted a
hundred active market detail lines At any time (absent having
higher caps as a higher commission customer -- see IB's
documentation). Another constrant you must observe the '50
requests per second' rate limitation. So I would design a set
up and cancel of 25 symbols per second, probably in four ranks
of 25 (perhaps five ranks of 20 to avoid pushing limits) and
letting a request stay active at least 3 (or 4) seconds to get
data.
Every 5 seconds you'll get 100 done, and so in about 25
seconds, you should have market data for all in your universe.
As you say the detail is sparce on thinly traded instruments,
this simply may not be long enough for an actual trade to
cross and to be reported, and so my first mention of using
history sampling may well provide a better solution
I've not published an example harvesting 'tick' (Market Data)
information for a while, nor rolling through ranks of symbol
sets, but these are straightforward and as I recall we ship an
example script on this
It is not clear that 'driving' R and IBrokers at these rates
is doable -- perhaps Jeff Ryan can comment from experience.
Certainly we are able to get these rates from our tool, the
details of which are out of scope here. We mention the matter
some time ago here
http://www.trading-shim.org/pipermail/ts-general/2007-May/000066.html
raising our concern about the mismatch between a sync
'request' control under R with limited error interception and
threading models, and async responsive 'messages' flows from
the TWS
-- Russ herrold
More information about the R-SIG-Finance
mailing list