Description Usage Arguments Details Value Note Author(s) References See Also Examples
View source: R/reqTBBOhistory.R
This will make several requests for historical data from IBrokers repecting the historical data request limitations.
1 2 3 | reqTBBOhistory(Symbols, base_dir = "/mnt/W", ndays = 95, endDateTime, tws,
barSize = "1 min", useRTH = "1", env = .GlobalEnv, save = FALSE,
chronological = FALSE)
|
Symbols |
names of instruments for which to request data |
base_dir |
base_dir that contains sub-directories ‘BID’, ‘ASK’, ‘TRADES’, and ‘BAT’ |
ndays |
total number of days to retrieve. Default is 95. Max is 365 |
endDateTime |
‘YYYYMMDD H:M:S’ |
tws |
twsConnection object (Not yet implemented) |
barSize |
barSize to retrieve. see |
useRTH |
Use regular trading hours? 1 for TRUE, 0 for FALSE |
env |
where to put the final BATVM or BAM xts object |
save |
logical. Save to disk the BATVM or BAM object? |
chronological |
should the requests be made in chronological order.
Default is FALSE because, at least for futures and options, requests for old data are more
likely to fail than requests for recent data. For stocks, it might make sense
to use TRUE so that if a request is interrupted, you will not have gaps in your data.
|
Experimental code – see Note section
Important: You should have a base directory that contains these sub-directories: ‘BID’, ‘ASK’, ‘TRADES’, and ‘BAT’.
The default base_dir
is “/mnt/W”. If you do not have a
directory there, you should either create
it, or not use the default value for base_dir
.
reqTBBOhistory
will make requests for 5 days of bid, ask, and trade
data and then pause for 30 seconds. In between requests, all BID, ASK, and
TRADES data are saved into the respective subdirectories. Data are saved in
rda files named with the format YYYY.MM.DD.Symbol.rda. After all requests
have been made (approx. 37 minutes), the data are re-read and merged together
into BATMV format and (if save=TRUE
) stored in the BAT directory
IBrokers does not disseminate TRADES data for FX (CASH). Therefore,
reqTBBOhistory
will make 2 requests every 20 seconds
(BID and ASK data) instead of 3 requests every 30 seconds.
For best results, you should define your instruments before calling this function.
This has only been tested on a debian-based linux system.
IB limits historical data requests to 6 every 60 seconds
called for side-effect. Returns the names of Symbols.
Warning: Interactive Brokers *back adjusts* their data for stock splits (but not for dividends). If you are storing stock data, you should probably unadjust the last year's worth of data, then, make sure you download the most recent data each day, being careful not to overwrite any data already stored on disk. This way you could have all unadjusted data that you could adjust (with qmao:::adjustIntraday.yahoo, for example). Otherwise, you'll have some data that is split-adjusted (or partially split-adjusted) and some that isn't.
Garrett See
InteractiveBrokers www.interactivebrokers.com
IB API http://interactivebrokers.com/php/apiUsersGuide/apiguide.htm
IB Historic Data Limitations http://individuals.interactivebrokers.com/php/apiUsersGuide/apiguide/api/historical_data_limitations.htm#XREF_93621_Historical_Data
twsInstrument:::update.data
(unexported due to possibility of name change, and current lack of documentation),
getBAT
, makeBATs
, reqHistoricalData
, reqHistory
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ## Not run:
library(twsInstrument)
dir.create("tmpdata/BID", recursive=TRUE)
dir.create("tmpdata/ASK")
dir.create("tmpdata/TRADES")
dir.create("tmpdata/BAT")
define_stocks("SPY")
# get the last 20 days of minutely data
# (this will take ~2 minutes)
reqTBBOhistory("SPY",
base_dir="tmpdata",
ndays=20,
save=TRUE,
chronological=TRUE)
# Now to prove it's on disk, delete from workspace
# and load it.
rm("SPY")
getSymbols("SPY", src='FI', dir='tmpdata/BAT',
from=Sys.Date() - 20, verbose=TRUE)
# If you had called reqTBBOhistory with save=FALSE (the default)
# or if your "BAT" directory were wiped out, you can use
# the unexported makeBATs function to get the BID, ASK, TRADES
# data from disk and rebuild the BAT data.
unlink("tmpdata/BAT")
twsInstrument:::makeBATs("SPY", base_dir='tmpdata', ndays=20)
rm("SPY")
getSymbols("SPY", src='FI', dir='tmpdata/BAT',
from=Sys.Date() - 20, verbose=TRUE)
# Clean up -- Delete everything
unlink("tmpdata", recursive=TRUE)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.