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 ?
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.
You donít trade the markets; you only trade your beliefs about the markets.
- Van K Tharp
The following user says Thank You to DarkPoolTrading for this post:
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.