Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
I'd like to download to a flat file basic OHLCV data from IB, for specific tickers/contracts, time frames, and time periods.
I use a TWS on a Mac and would prefer not to also use a Windows machine.
Does anyone have views on:
1) Off-the-shelf (open-source?) programs that do this ?
2) Preferable APIs if I were to write the program myself ? (I lean to Java)
3) Reliability of real-time and historical IB data ? -- I've seen inconsistencies in chart data for different time frames on the same stock, and occasionally see complaints about IB data. Is it reliable for basic real-time data, e.g. for MIN05 bars on one stock, from which I intend to derive some simple indicators to use for real-time, discretionary trading decisions ?
Can you help answer these questions from other members on NexusFi?
It sucks, use something else. If you want daily you can get the free kinetic data.
If you want anything smaller you would have to pay for it.
IB also has this thing where it will throw errors when you try to pull too much data; it will annoy you to the point where you would quit within the hour.
Thanks PeakGrowth. Yes, it seems that IB does not have the best reputation for this. This will be for intra-day, and relatively small queries, so perhaps it wouldn't overstress IB. I think I'll give it a go at least -- if it works reasonably well, IB may be preferable to managing an additional interface.
Make sure you only use time bars and nothing fancy (no range bars, tick bars, etc), their data is filtered which means you get order flow data in bundles a few times per second rather than per tick as it happens.
Their data is also dirty sometimes, I remember when I use to trade SPI, they always had this one 100 point spike in the data every morning at 9:30am that doesn't seem to fix itself until the market opened - it was very odd...
Yes, my main concern is handling bad data. Does IB follow bad data w/ 'corrected' data for the same time-frame/timestamp ? Or is it a case of needing to write code that filters out unusual moves unless the subsequent data is consistent with them ?
By definition of how IB send you intraday data, it is not bad or in need of correcting provided you understand what you are receiving. In other words, they bundle data together and send it to you in 'bursts/intervals'. This means the lower your timeframe, the less you can trust the accuracy of the data. There is nothing you can 'fix', it is simply how it is.
If you are using longer timeframes, eg: hourly, daily etc then there's no problem. But if you need accurate minute/sub-minute data then you need to look elsewhere (eg: iqfeed). Once again, there is nothing you can 'fix' or 'filter' to sort out IB's data, it is simply how they send it to you. It's a take it or leave it scenario.
It really just depends on how short your timeframe is, and also if your trading is ok with 'burst' (for lack of a better word) data.
Thanks DarkPoolTrading. I will be trading timeframes not shorter than MIN03, with real-time update every 30-60 seconds while a bar is open. Planning on putting the shortest-term bars into Postgres, then assembling them into larger bars w/ several columns of derived data.
Thanks rleplae, I think what I'll do is start w/ my local IB interface just to reduce the number of vendors in my env, if I find IB data is not satisfactory, then I'll look at another data provider.