Order id placeorder Java интерактивные брокеры
В настоящее время каждый раз, когда я размещаю заказ с
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
Есть идеи по созданию нового идентификатора для новых заказов?
Благодарю.
1 ответ
Ваш код заказа не должен быть случайным числом. Они должны все время увеличиваться. last id used +1
это лучший алгоритм. Duplicate order id
на самом деле может означать "не возрастающий идентификатор Id".
Обратите внимание, что при запуске соединения через сокет IB возвращает следующий действительный идентификатор в обратном вызове nextValidId, поэтому вы всегда знаете, с какого номера начать.
Некоторые люди (включая меня) используют диапазоны номеров для определенных запросов, чтобы ошибки с идентификатором могли быть связаны с типом запроса. например. Я использую числа < 1000 для reqMktData
введите запросы. Как только вы позвоните placeOrder
с номером> 1000 IB никогда не позволит вам использовать меньшее число для заказов.
Вы можете сбросить orderId
последовательность, но я никогда не делал этого и не буду, пока у меня не кончатся ints
,