我有一个正在打印的类"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])
但是我收到一个错误"类型错误:'合同详细信息'对象不可下标">
例如,我可以单独使用"contractDetails.underSymbol"打印其他的。但是浏览列表(https://interactivebrokers.github.io/tws-api/classIBApi_1_1ContractDetails.html(并尝试所有列表都没有给我想要的那个。
据我了解,这是一个使用"contract.strike"传递给合约的值,当没有提供任何值时,它会打印出所有可用行使价的列表。
编辑:从评论...."合同详细信息.合同.罢工"工作。
如果合约详情不是列表,可以尝试使用list()
将合约详情转换为列表或者尝试以下 apporch,
j=0
for i in range contractDetails:
if j==4:
print(i)
j+=1