目前我每次下订单
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的任何想法吗?
感谢。
答案 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
为止。