IB API - get all expirys and strikes of a stock symbol

Given a stock symbol, how to get all expirys and strikes of its option chain on IB API? I can't find such an API function yet.
 
Quote from sungtaeyoo:

I don't think ib has that kind of apis.

I don't either. How did IB TWS do that? Is there a good algorithm to find all expiries and strikes without too much server communication?
 
the function is available in TWS, but for the IB API, I suspect you need to build your own functions, shouldn't be that difficult to build

you could create the different instrument in a loop and test if a "close" attribute is present.
 
This is what I did in Python to receive all the contract details. Don't forget the currency attributes, it's always something we tend to forget.

Code:
# INSERT code for IB Connect etc...

order_ticker = Contract()
order_ticker.m_symbol = 'MSFT'
order_ticker.m_secType = 'OPT'
order_ticker.m_currency = 'USD'

# You need to enter a dedicated RequestID, can be arbitrary or automatically incremented. 
# Here we use ReqID = 1

ibgw_conTradeChannel.reqContractDetails(1,order_ticker)

This will give the following raw output, a number of contract details objects for you to catch and assign properly. A lot of work would need to be done to filter out what you need and don't need. I haven't experienced this yet as I just found out about it like you did.

IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
...repeat 100 times...
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
IB: Server Response = contractDetails contractDetails reqId=1, contractDetails=ib.ext.ContractDetails.ContractDetails object at 0x011DB7B0
...
IB: Server Response = contractDetailsEnd contractDetailsEnd reqId=1
 
Back
Top