R IBrokers API не запрашивает исторические данные за истекшие месяцы
Чтобы загрузить данные из IB в R I, выполните следующие шаги: IBrokers запрашивают данные исторических фьючерсных контрактов?, Примерно так же, как здесь: https://cran.r-project.org/web/packages/IBrokers/vignettes/IBrokers.pdf.
Все работает За одним исключением: reqHistoricalData
не работает с истекшим месяцем. Выполнение следующего кода выдает сообщение об ошибке: "Предупреждение: В errorHandler(con, verbose, OK = c(165, 300, 366, 2104, 2106,: не найдено определение безопасности для запроса")
#DOES NOT WORK (using expired month)
tws <- twsConnect()
mydata <- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201603"), barSize='1 min', duration='5 D', useRTH='0', whatToShow='TRADES')
#YET THE FOLLOWING DO WORK (using unexpired months)
mydata <- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201606"), barSize='1 min', duration='5 D', useRTH='0', whatToShow='TRADES')
mydata <- reqHistoricalData(tws, twsFuture("ES","GLOBEX","201609"), barSize='1 min', duration='5 D', useRTH='0', whatToShow='TRADES')
getContract("ES_M6")
Часто задаваемые вопросы IB говорят об этом сообщении: "Почему я получаю ошибку 200 - Не найдено определение безопасности для запроса, когда я вызываю reqContractDetails, reqMktData или addOrder() для контракта на акции? При использовании этих методов для контракт на акции, оставьте Global Symbol и Trading Class незаполненными." (находится по адресу https://www.interactivebrokers.com/en/software/api/apiguide/tables/frequentlyaskedquestions.htm)
Был бы очень признателен за понимание этого. Спасибо.
1 ответ
Вам нужно установить include_expired
к истине. Я предполагаю, что код будет:
twsFuture("ES","GLOBEX","201603",include_expired='1')
Полный список аргументов из документов:
twsEquity(symbol,
exch="SMART",
primary,
strike='0.0',
currency='USD',
right='',
local='',
multiplier='',
include_expired='0',
conId=0)
И процитировать страницу помощи:
Аргумент endDateTime должен иметь форму "CCYYMMDD HH:MM:SS TZ". Если не указан, будет использовано текущее время, возвращаемое с сервера TWS. Это предпочтительный метод обратной засыпки данных. Часть строки "TZ" является необязательной.
Таким образом, вы также можете попробовать использовать
reqHistoricalData(..., endDateTime='20160315 16:00:00')