目前每次我下订单时
order.m_action = "BUY";
order.m_totalQuantity = 1;
order.m_lmtPrice = 4.00;
order.m_orderType = "LMT";
order.m_account = "U123123";
int randomNum = ThreadLocalRandom.current().nextInt(1, 5564 + 1)
m_s.placeOrder(randomNum, c, order);
我收到错误:
1041 103 Duplicate order id
关于为新挂单生成新ID的任何想法?
谢谢。
您的 orderId 不应该是随机数。 他们必须一直在增加数字。last id used +1
是最好的算法。Duplicate order id
实际上可以表示"不是递增的订单 Id"。
请注意,当套接字连接启动时,IB 会在 nextValidId 回调中返回下一个有效 id,因此您始终知道从哪个数字开始。
有些人(包括我)对某些请求使用数字范围,以便 id 错误可以与请求类型相关联。 例如。我对reqMktData
类型的请求使用数字<1000。一旦您拨打placeOrder
号码>1000,IB将永远不会允许您使用较低的号码下单。
您实际上可以重置orderId
序列,但我从未这样做过,直到我用完ints
才会这样做。