交互式代理API Python如何捕获“未找到请求的安全定义”并继续下一个问题?

2024-04-29 18:29:51 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行以下代码时,它返回错误:“error.Id:1 Code:200 Msg:No security definition for the request”

我知道股票“ASRL”没有期权链。因此,API返回上述错误并在那里停止。然而,我想捕获这个错误,并继续检索下一张票据的选项链。在本例中,我希望程序继续运行,以获得“TSLA”的选项链。你能帮忙吗

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
#
class MyWrapper(EWrapper):               
    def contractDetails(self, reqId, contractDetails):
        print(reqId, contractDetails.contract)

    def contractDetailsEnd(self, reqId):
        print("ContractDetailsEnd. ", reqId)
        app.disconnect()
        
    def error(self, reqId, errorCode, errorString):
        print("Error. Id: " , reqId, " Code: " , errorCode , " Msg: " , errorString)

z = 1
while z < 3:
    wrapper = MyWrapper()
    app = EClient(wrapper)
    app.connect("127.0.0.1", 7497, clientId=123)
    print("z = ", z)
    if z == 1: 
        wsStock = "ASRL"
    else: 
        wsStock = "TSLA" 
    contract = Contract()
    contract.symbol = wsStock
    contract.lastTradeDateOrContractMonth = 20210416
    contract.secType = "OPT"
    contract.exchange = "SMART"
    contract.currency = "USD"
    contract.right = "P"
    app.reqContractDetails(z, contract)
    try: 
        app.run()
    except:
        continue
    z += 1

Tags: fromimportselfidappdef错误error