Не найдено определение безопасности для запроса, Future Option Python - PullRequest
1 голос
/ 29 июня 2019

Я использую Python и ib_insync для использования API Interactive brokers, я пытаюсь получить рыночные данные в виде Bid, Ask, AskSize и т. Д. Будущего опционного контракта, но при конвертации этого контракта на тикере я получил "Нет для запроса найдено определение безопасности ", даже если я назначил этот атрибут раньше.

# using Future from ib_insync has the same problem
# contract = Future('ES',"20190315",'GLOBEX')

contract = Contract()
contract.symbol = "ES"
contract.secType = "FOP"
contract.exchange = "GLOBEX"
contract.currency = "USD"
contract.lastTradeDateOrContractMonth = "20190315"
contract.strike = 2900
contract.right = "C"
contract.multiplier = "50"

result =[]
result.append(contract)


ib.reqMarketDataType(3)
ib.qualifyContracts(*result)
ticker = ib.reqMktData(contract,"",False,False)
ib.sleep(3)
ticker

Выход:

Error 200, reqId 26: No security definition has been found for the request, contract: Contract(secType='FOP', symbol='ES', lastTradeDateOrContractMonth='20190315', strike=2900, right='C', multiplier='50', exchange='GLOBEX', currency='USD')
Unknown contract: Contract(secType='FOP', symbol='ES', lastTradeDateOrContractMonth='20190315', strike=2900, right='C', multiplier='50', exchange='GLOBEX', currency='USD')

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

По истечении срока действия будущего опциона (или опциона на акции) его исторические данные удаляются из базы данных Interactive Brokers и больше не доступны.Таким образом, вам придется запрашивать данные для фьючерсного опциона, срок действия которого еще не истек. Ограничения исторических данных API TWS (Это также верно для диаграмм TWS, а не только для API TWS).

Логическое значение «IncludeExpired» предназначено только для фьючерсных контрактов, а не для фьючерсных опционов.

0 голосов
/ 30 июня 2019

Без тестирования вашего кода, я предполагаю, что эта цитата из документов применима.

bool IncludeExpired [get, set] Если установлено значение true, детали контракта запросы и запросы исторических данных могут быть выполнены, относящиеся к фьючерсные контракты с истекшим сроком годности. Опции с истекшим сроком действия или другие типы инструментов недоступны.

ссылка на документы

Так что, если бы это был просто фьючерсный контракт, вы могли бы заключить contract.includeExpired = True Если вам нужны исторические данные.

Для reqMarketData, очевидно, вам нужно использовать текущий контракт, для ES, который будет 201909 в качестве начального месяца. Обратите внимание, что вам не нужно ставить дату (15-е), если она не является двусмысленной или для вариантов.

На github доступна программа для проверки контрактов на листинг. https://github.com/tradewright/ibapi-tools/blob/master/ContractInspector/readme.md

...