Двойной вызов TRANS2QUIK_ORDER_STATUS_CALLBACK

Страницы: 1
RSS
Двойной вызов TRANS2QUIK_ORDER_STATUS_CALLBACK
 
При создании новой заявки функция TRANS2QUIK_ORDER_STATUS_CALLBACK вызывается два раза -- в первый раз с номером транзакции 0, а второй раз с номером, который был указан в заявке

Это ожидаемое поведение?
 
deisik, добрый день.

Описанное поведение является нормальным.

TRANS_ID на заявках проставляет сервер QUIK, связывая номер заявки с тем, что получен в ответе на транзакцию.
В  некоторых случаях тело заявки бывает получено раньше ответа на  транзакцию. Тогда сервер просто не знает, какой TRANS_ID ей указать, и  отправляет пользователю как есть (с TRANS_ID=0).
Позже, когда ответ на транзакцию получен, сервер проставляет на заявке верный TRANS_ID.
 
Я описываю ситуацию, когда TRANS_ID задается пользователем, и отправляется вместе с "телом" заявки. Другими словами, сервер не может не знать TRANS_ID
 
deisik,

Комментарий справедлив и для описываемой Вами ситуации.
Вопрос уже ранее обсуждался на форуме: https://forum.quik.ru/forum10/topic870/. Вы можете ознакомиться с информацией в этой теме.
 
Цитата
deisik написал:
Другими словами, сервер не может не знать TRANS_ID
Ты не читаешь что-ли что тебе пишут?
Терминал подаёт транзакцию. А в ответ получает раздельно саму заявку, и ответ на транзакцию.

Биржа сначала присылает заявку. В это время сервер не знает откуда она взялась и присылает ее в терминал как есть.
А затем, биржа присылает ответ на твою транзакцию, в котором есть номер заявки (которую ты уже получил) и твой transid. Сервер связывает первое со вторым и присылает обновление заявки в терминал с transid.
 
Цитата
Anton Belonogov написал:
deisik, добрый день.

Описанное поведение является нормальным.

TRANS_ID на заявках проставляет сервер QUIK, связывая номер заявки с тем, что получен в ответе на транзакцию.
В  некоторых случаях тело заявки бывает получено раньше ответа на  транзакцию. Тогда сервер просто не знает, какой TRANS_ID ей указать, и  отправляет пользователю как есть (с TRANS_ID=0)
При перестановке заявки сперва вызывается колбек TRANS2QUIK_TRANSACTION_REPLY_CALLBACK, а потом колбек TRANS2QUIK_ORDER_STATUS_CALLBACK

А теперь вопрос, как в TRANS2QUIK_ORDER_STATUS_CALLBACK может прийти ордер с TRANS_ID=0 (что и происходит на практике), если ранее в TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK уже пришла транзакция с сопоставленным ей номером заявки?
 
Ну и теперь более конкретно

Тестовый сервер:

Сначала идет вызов колбека TRANS2QUIK_TRANSACTION_REPLY_CALLBACK с транзакцией 443606 и заявкой 1892957001206697733, т.е. ответ на транзакцию уже получен и номер заявки сопоставлен номеру транзакции

Потом вызывается TRANS2QUIK_ORDER_STATUS_CALLBACK с транзакцией 0 и заявкой с тем же номером 1892957001206697733

Каким образом сервер не знает, что заявка 1892957001206697733 создана транзакцией 443606, если ранее вызывался TRANS2QUIK_TRANSACTION_REPLY_CALLBACK с этой транзакцией и этой заявкой?
 
deisik, добрый день.

В предыдущем ответе мы описали одну из возможных причин, почему может быть получена заявка с TRANS_ID=0.

В общем случае транзакционный и информационный каналы несинхронны,  сервер не обязательно сразу определяет параметры полученной из торговой  системы заявки и может передать эту информацию пользователю с некоторыми  незаполненными параметрами (в том числе TRANS_ID).
Получение в информации о заявке нулевого TRANS_ID не является аномалией,  после определения параметра сервером запись будет отправлена повторно  уже с корректным идентификатором.
 
Цитата
deisik написал:
Ну и теперь более конкретно

Тестовый сервер:

Сначала идет вызов колбека TRANS2QUIK_TRANSACTION_REPLY_CALLBACK с транзакцией 443606 и заявкой 1892957001206697733, т.е. ответ на транзакцию уже получен и номер заявки сопоставлен номеру транзакции

Потом вызывается TRANS2QUIK_ORDER_STATUS_CALLBACK с транзакцией 0 и заявкой с тем же номером 1892957001206697733

Каким образом сервер не знает, что заявка 1892957001206697733 создана транзакцией 443606, если ранее вызывался TRANS2QUIK_TRANSACTION_REPLY_CALLBACK с этой транзакцией и этой заявкой?
А что мешает проверить свой ли номер тразакции?
Страницы: 1
Читают тему
Наверх