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,

Другие вопросы по тегам