在ibinsync中捕获异常

2024-06-01 02:16:07 发布

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

我有一堆从不同来源收集的股票符号,我想使用python 3.7中的ib insync与交互式经纪人进行交易。 我编写了以下代码来测试,哪些符号在交互式代理中有效,哪些符号无效

from ib_insync import *
ib = IB()
ib.connect('127.0.0.1', 4001, clientId=2)

symbol = 'nonsense'
try:
    contract = Stock(symbol, 'SMART')
except Exception as e:
    print(f"{symbol} causes exception {e}")
else:
    cds = ib.reqContractDetails(contract)
    contracts = [cd.contract for cd in cds]
    tmp_df = util.df(contracts)
    res = tmp_df[["localSymbol","primaryExchange","currency"]]
print(res)

如果给出了有效的符号,例如symbol='TSLA',则执行else:子句,结果看起来正常

对于上面代码中的无效符号,异常不会被捕获,else子句仍会执行,我会收到消息“Error 200,reqId 1:未找到请求的安全定义,contract:”

谢谢你的提示


Tags: 代码df符号cdressymbolelsetmp