我有一个正在打印的类“contractDetails”。我想从中得到一个特定的结果(第 5 个元素)。
这是代码:
from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.common import *
from ibapi.contract import *
class TestApp(EWrapper, EClient):
def __init__(self):
EWrapper.__init__(self)
EClient.__init__(self, self)
def contractDetails(self, reqId, contractDetails):
print(contractDetails)
def start(self):
contract = Contract()
contract.symbol = 'AAPL'
contract.secType = 'OPT'
contract.currency = 'USD'
contract.exchange = 'SMART'
contract.lastTradeDateOrContractMonth = '202011'
self.reqContractDetails(1, contract)
def stop(self):
self.done=True
self.disconnect()
def main():
app = TestApp()
app.nextOrderId = 0
app.connect('127.0.0.1',7497,101)
app.run()
if __name__ == "__main__":
main()
我得到这样的东西:
423554420,AAPL,OPT,20201120,450.0,P,100,SMART...
我只想在那里打印第 5 个元素,即“450.0”。(行使价)
我试过了
print(contractDetails[5])
但我收到一个错误“TypeError:‘ContractDetails’对象不可下标”
例如,我可以使用“contractDetails.underSymbol”单独打印其他的。但是查看列表(https://interactivebrokers.github.io/tws-api/classIBApi_1_1ContractDetails.html)并尝试所有这些都没有给我我想要的。
据我了解,这是一个使用“contract.strike”传递给合同的值,当没有提供任何值时,它会打印出所有可用罢工的列表。
编辑:从评论中......“contractDetails.contract.strike”有效。