Ibpy无法取消手动下订单

  • 本文关键字:取消 Ibpy ibpy
  • 更新时间 :
  • 英文 :


使用ibpy试图关闭TWS上的某些位置时,我们无法做到这一点。具体而言,执行时:

    self._tws.reqAllOpenOrders()
    sleep(0.2)

我们获得具有ID 0的订单(可能是因为我在TWS上手动放置它)

<openOrder orderId=0, contract=<ib.ext.Contract.Contract object at 0x103b78ad0>, order=<ib.ext.Order.Order object at 0x103b78a50>, orderState=<ib.ext.OrderState.OrderState object at 0x103b78b10>>
<orderStatus orderId=0, status=Submitted, filled=0, remaining=100, avgFillPrice=0.0, permId=134994568, parentId=0, lastFillPrice=0.0, clientId=0, whyHeld=None>
<openOrder orderId=0, contract=<ib.ext.Contract.Contract object at 0x103b78c90>, order=<ib.ext.Order.Order object at 0x103b78c50>, orderState=<ib.ext.OrderState.OrderState object at 0x103b78cd0>>
<orderStatus orderId=0, status=Submitted, filled=0, remaining=1, avgFillPrice=0.0, permId=134994562, parentId=0, lastFillPrice=0.0, clientId=0, whyHeld=None>
<openOrderEnd>

试图通过以下方式关闭它时:

    self._tws.cancelOrder(0)

    self._tws.cancelOrder(134994568)

我得到错误:

<error id=0, errorCode=135, errorMsg=Can't find order with id =0>
<error id=134994562, errorCode=135, errorMsg=Can't find order with id =134994562>

我们如何关闭它们?谢谢。

您必须将订单'绑定到新客户端。使用此方法tws.reqAutoOpenOrders(True)。从文档中,

最后,ibapi.eclient.reqautoopenorders将允许获得这些 使用TWS本身手动放置订单。此方法还允许 客户应用程序接管这些订单并通过 将AutobInd参数设置为true。如果成功绑定, 订单将被分配(即绑定到)API订单ID,因此 有资格进行修改。

client.reqautoopEnorders(true);重要:只有那些与客户ID 0连接的应用程序能够接管 手动提交的订单

通过TWS的API设置,可以配置此 方法的行为在某种程度上。如下图所示, 手动下订单可以给出一个负订单ID,可以 用来轻松从API提交的订单中告诉手册。TWS 工具提示进一步详细说明:

回调看起来像<openOrder orderId=-3,...,然后您只需致电tws.cancelOrder(-3)

请注意,您以前没有在TWS中下达订单,只有在致电reqAutoOpenOrders之后放置的订单。

相关内容

  • 没有找到相关文章

最新更新