API手册只提供冲突信息:
要修改订单,只需使用与放置原始订单相同的参数再次调用IBApi.EClient.placeOrder函数,但更改的参数除外。这包括IBApi.Order.OrderId,它必须与原始的IBApi.Order.OrderId匹配。
如果您查看IBApi.EClient.placeOrder功能,您会发现以下有关订单ID的信息:
订单的唯一标识符。使用以nextValidId方法接收的id开头的顺序id。如果新订单的订单ID小于或等于先前订单的订单ID,则会发生错误。
这是我的问题。当我尝试按照上面的说明修改订单时,我收到错误"重复订单ID"这正如上面关于订单ID所述。
那么如何修改未结订单的价格或数量呢?
答案 0 :(得分:0)
这在我的应用程序中也很常见,并不总是清楚为什么。我想你在其他地方使用了OrderId,这比这个更高。这不应该使先前使用的订单ID无效,但有时会这样做。
我用这种方式解决了这个问题:
取消订单
通过请求nextValidId获取新的订单ID。致电要求(1);
使用相同的数据创建新订单(并进行修改)
使用新ID发送新订单
当然,这并不是按字面意思修改未结订单,但结果是相同的。