订单 id placeorder Java interactive brokers

Order id placeorder Java interactive brokers

目前我每次用

下单
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 实际上可以表示 "not an increasing order Id".

注意当套接字连接开始时,IB returns nextValidId 回调中的下一个有效id,所以你总是知道从哪个数字开始。

有些人(包括我在内)对某些请求使用数字范围,这样带有 id 的错误可以与请求类型相关联。例如。对于 reqMktData 类型的请求,我使用小于 1000 的数字。一旦您使用大于 1000 的号码致电 placeOrder,IB 将永远不会让您使用更小的号码下单。

您实际上可以重置 orderId 序列,但我从来没有这样做过,直到我从 ints 中 运行 时才会这样做。