使用C# IB TWS API,API_Version=10.19.04
根据 IB TWS API 文档,EClient.reqSecDefOptParams() 方法返回到期日和执行价格的列表。
如果我将 futFopExchange 参数设置为空字符串(根据文档),我可以获得ALL 交易所的到期和罢工列表。 但是,每当我指定交换名称(例如“BATS”)或任何其他有效的交换名称时,该方法都不会返回任何数据 - 为什么?
例如 - 此调用将起作用:
client.reqSecDefOptParams( request_id, underlying_symbol, "", underlying_security_type, underlying_contract_id );
..并将返回以下交易所的到期日和罢工:
SMART,AMEX,CBOE,PHLX,PSE,ISE,BOX,BATS,NASDAQOM,CBOE2,NASDAQBX,MIAX,GEMINI,EDGX,MERCURY,PEARL,EMERALD,MEMX,IBUSOPT,SAPPHIRE
但是,这个调用不会返回任何数据:
client.reqSecDefOptParams( request_id, underlying_symbol, "BATS", underlying_security_type, underlying_contract_id );
...这两个调用的唯一区别是上面显示的调用中使用了显式交换名称(所有其他参数都相同)。此外,当该方法确实返回所有交易所的到期和行权时,所有交易所的到期和行权数量都相同 - 这是正常的,还是每个交易所的到期和行权数量可能不同?
任何见解将不胜感激。
提前致谢。
option_chain = ib.reqSecDefOptParams(
1, underlying_symbol, '', underlying_security_type, conId)
但我收到错误TypeError: IB.reqSecDefOptParams() takes 5 positional arguments but 6 were given
。为什么它能识别 6 个参数?