IB API报错:'App'对象无'nextValidOderId'属性及订单ID疑问
解决IB API中nextValidOrderId的AttributeError问题
核心原因是拼写错误:你在nextOrderId方法里把属性名nextValidOrderId误写成了nextValidOderId(缺少字母r)。
具体分析
从运行结果能看到,order_id = self.nextValidOrderId能正常打印出1,说明self.nextValidOrderId已经被nextValidId回调正确初始化了。但调用nextOrderId()时,代码执行到self.nextValidOderId += 1时,这个拼写错误的属性名不存在,直接触发了AttributeError。
修正后的代码
把nextOrderId方法里的拼写错误修正即可:
def nextOrderId(self): oid = self.nextValidOrderId self.nextValidOrderId += 1 # 修正:将Oder改为Order return oid
额外提醒
- 确保
nextValidId回调被IB API正确触发,这是初始化订单ID的核心步骤(你的代码里这部分逻辑是正常的)。 - 每次调用
nextOrderId()后,正确自增订单ID可以避免因重复ID导致的下单失败问题。
内容的提问来源于stack exchange,提问作者alex-mon888
相关产品推荐
相关产品推荐

