2016-04-27 2 views
2

В попытке загрузить данные из IB в R я выполнил следующие шаги: IBrokers request Historical Futures Contract Data?. Что примерно такое же, как здесь: https://cran.r-project.org/web/packages/IBrokers/vignettes/IBrokers.pdf.API R IBrokers не может быть реквизированным для последних месяцев.

Все работает. За одним исключением: reqHistoricalData не работает с просроченными месяцами. Запуск следующего кода выдает сообщение об ошибке: "сообщение Предупреждения: В ErrorHandler (CON, многословном, OK = с (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") 

В этом FAQ сообщается следующее: «Почему я получаю сообщение об ошибке 200 - Не найдено определения безопасности для запроса при вызове reqContractDetails, reqMktData или addOrder() для контракта на акции? эти методы для контракта на акции, оставить глобальный символ и торговый класс пустым. »(найдено по адресу https://www.interactivebrokers.com/en/software/api/apiguide/tables/frequentlyaskedquestions.htm)

Был бы очень признателен за понимание в это. Спасибо.

ответ

2

Вам необходимо установить include_expired в true. Я предполагаю, что код будет:

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') 
+0

Спасибо очень много. Все еще не работает. Сейчас проблема. 'mydata <- reqHistoricalData (tws, twsFuture (" ES "," GLOBEX "," 201603 ", include_expired = '1'), barSize = '1 hour', duration = '5 D', useRTH = '0', whatToShow = 'TRADES') 'возвращает", ожидающий ответа TWS на ES .... Предупреждающее сообщение: По ошибкеHandler (con, verbose, OK = c (165, 300, 366, 2104, 2106,: Исторический рынок Сообщение об ошибке службы данных: запрос HMDS не возвратил данные: ESH6 @ GLOBEX Trades ". Он отлично работает с 201606 (текущий месяц). – Krug

+1

Если данных нет, вы используете неправильную дату. срок действия которого больше не торгуется. Используйте более раннюю дату до середины месяца истечения срока действия (для ES). Таким образом, для H = Мар, используйте март 15/2016 как о последней дате. – brian

Смежные вопросы