订单ID placeorder Java交互式经纪人

时间:2017-04-13 16:01:11

标签: java interactive-brokers ibrokers

目前我每次下订单

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的任何想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

您的订单不应该是随机数。他们必须不断增加数量。 import Vapor import VaporMongo import Fluent import Foundation let drop = Droplet() //drop.preparations.append(Friend.self) drop.preparations = [Friend.self, FriendAddress.self, Pivot<Friend, FriendAddress>.self] do { try drop.addProvider(VaporMongo.Provider.self) } catch { assertionFailure("Error adding provider: \(error)") } let friendController = FriendController() friendController.addRoutes(drop: drop) drop.resource("posts", PostController()) drop.run() 是最好的算法。 last id used +1实际上可以表示&#34;而不是增加订单ID&#34;。

请注意,当套接字连接启动时,IB会返回nextValidId回调中的下一个有效ID,因此您始终知道要从哪个号码开始。

某些人(包括我)对某些请求使用数字范围,以便具有id的错误可以与请求类型相关联。例如。我使用数字&lt; 1000个Duplicate order id类型请求。使用数字&gt;拨打reqMktData时1000,IB永远不会让你使用较低的订单号码。

您实际上可以重置placeOrder序列,但我从未这样做过,直到我用尽orderId为止。