TWS API修改订单不起作用,收到错误103"重复订单ID"

时间:2017-08-04 08:25:01

标签: c++ interactive-brokers tws

API手册只提供冲突信息:

  

要修改订单,只需使用与放置原始订单相同的参数再次调用IBApi.EClient.placeOrder函数,但更改的参数除外。这包括IBApi.Order.OrderId,它必须与原始的IBApi.Order.OrderId匹配。

如果您查看IBApi.EClient.placeOrder功能,您会发现以下有关订单ID的信息:

  

订单的唯一标识符。使用以nextValidId方法接收的id开头的顺序id。如果新订单的订单ID小于或等于先前订单的订单ID,则会发生错误。

这是我的问题。当我尝试按照上面的说明修改订单时,我收到错误"重复订单ID"这正如上面关于订单ID所述。

那么如何修改未结订单的价格或数量呢?

1 个答案:

答案 0 :(得分:0)

这在我的应用程序中也很常见,并不总是清楚为什么。我想你在其他地方使用了OrderId,这比这个更高。这不应该使先前使用的订单ID无效,但有时会这样做。

我用这种方式解决了这个问题:

  • 取消订单

  • 通过请求nextValidId获取新的订单ID。致电要求(1);

  • 使用相同的数据创建新订单(并进行修改)

  • 使用新ID发送新订单

当然,这并不是按字面意思修改未结订单,但结果是相同的。