TWS API 具有reqContractDetails
获取合约详细信息的功能,但速度很慢。因为,正如 TWS API 文档所说,带有结果的事件流(期权合约列表)将受到限制。
它建议改用该reqSecDefOptParams
函数,该函数以选项链的列表expirations
和strikes
选项链响应。
问题是- 如何进一步使用这些expirations
并strikes
获得单独的期权合约?
reqContractDetails
可以调用 来获取 和 的每个组合的expiration
个人合同strike
。因此,不是reqContractDetails
用 N 个事件的限制列表响应的 1 个调用 - 相反 -reqContractDetails
将进行 N 个调用以获得 1 个事件。
但似乎即使在这样的个人调用中 - 它仍然受到限制,在说 50 个调用之后,下一个调用reqContractDetails
被限制(我在日志中看到首先像 20-50 个调用响应很快,然后它只是阻塞并等待了很多)。
有没有更好的方法来获取数据?我需要获得包含所有合约的完整期权链。
更新:
半年后 - 我制作了 TWS API 驱动程序ib_api - 我发现从 TWS API 获取价格的最佳方式是 - 1)首先获取单个期权合约 2)然后通过合约 ID 获取价格 3)小批量 4)重试,因为会有随机错误。该驱动程序提供 REST API 并支持所有语言,您可以查看该get_stock_option_chain_prices
功能ibm.nim
以查看这些步骤的详细信息 - 如何获取股票期权价格。