trans2quik.dll 1.2 в QUIK 7. лишние вызовы TRADE_STATUS_CALLBACK

Страницы: 1
RSS
trans2quik.dll 1.2 в QUIK 7. лишние вызовы TRADE_STATUS_CALLBACK, trans2quik.dll 1.2 в QUIK 7. лишние вызовы TRADE_STATUS_CALLBACK
 
Уважаемые разработчики, в 7 версии QUIK появилась такая проблема при использовании trans2quik.dll версии 1.2:
На каждый trade происходит по 3 вызова TRADE_STATUS_CALLBACK с одинаковыми параметрами.
Может здесь какая то ошибка, зачем по три вызова на каждый trade ?
С 6 версией  QUIK таких проблем не было.

Пробовал подключить обработку ORDER_STATUS_CALLBACK (раньше его не использовал), но там тоже все очень странно: после создания заявки приходит два вызова ORDER_STATUS_CALLBACK, у первого dwTransID=0.
QUIK 7.12.1.10, trans2quik.dll версии 1.2.0.3
 
Здравствуйте,

Данный вопрос не однократно обсуждался на форуме.
Можете ознакомиться.

https://forum.quik.ru/messages/forum10/message24910/topic2839/#message24910
https://forum.quik.ru/messages/forum10/message11805/topic1302/#message11805
https://forum.quik.ru/messages/forum9/message23359/topic2668/#message23359
https://forum.quik.ru/messages/forum10/message11781/topic1301/#message11781
https://forum.quik.ru/messages/forum10/message21968/topic2488/#message21968
 
Спасибо,ознакомился.
А как же совместимость версий...
А есть гарантия что вызовов TRADE_STATUS_CALLBACK  будет по три на каждый трейд ?
Вы бы хоть давали рекомендованный алгоритм как это все обрабатывать.
 
Допустим я дал заявку по цене лучше рынка, объемом достаточным для того чтобы она собрала стакан.
Исполняться она будет несколькими трейдами с разной ценой.
Я хочу вычислить среднюю цену исполнения моей заявки средствами только trans2quik.dll, т.е. не заглядывая в таблицу сделок.
Раньше у меня это получалось. Теперь как прикажете мне это делать ? В сообщениях ORDER_STATUS_CALLBACK нет цены сделки, там цена заявки. А сообщения TRADE_STATUS_CALLBACK  совершенно неразличимы для разных сделок одинакового объема и их приходит по несколько штук на одну сделку. Т.е. если вы гарантируете что их будет всегда по 3, то я их тупо посчитаю, а если нет, то как тогда быть с ценой исполнения заявки ?
 
В сделках есть уникальный номер сделки, т.е. обновления можно фильтровать/агреггировать по нему, и есть уникальный номер заявки, породившей эту сделку - по ним можно накапливать например цены.
 
Если по простому пути пойти, можно записывать последний номер сделки (dNumber) из TRADE_STATUS_CALLBACK и игнорировать следующие вызовы TRADE_STATUS_CALLBACK  если dNumber совпадает с предыдущим.
Разработчики одобряют такой алгоритм ?
 
Цитата
evm написал:
Разработчики одобряют такой алгоритм ?
Незнаю как разработчики, но именно такой подход обсуждался в вышеприведенных ссылках. это если вы потрудились их почитать.
 
Я не нашел где там именно это обсуждается, но могу сказать, что зафиксировал случай когда три вызова TRADE_STATUS_CALLBACK по одной сделке пришли не вместе а в перемешку с другими. Значит таким простым способом решить проблему не получиться. Придется для каждой заявки создавать таблицу сделок и проверять по ней.
 
Цитата
evm написал:
три вызова TRADE_STATUS_CALLBACK по одной сделке пришли не вместе а в перемешку с другими.
Вообще никто не обещал что они придут вместе и подряд.

И порядок вообще не важен. Первая пришла - запомнили, следующая пришла - проверили, совпадает ли по параметрам, если совпадает - значит это повтор, игнорим. Если не совпадает - значит это новая сделка, и надо ее обработать как новую, и ее параметры запомнить.
 
А вот пост, где человек внятно описывает это
https://forum.quik.ru/messages/forum10/message11805/topic1302/#message11805

Цитата
evm написал:
Придется для каждой заявки создавать таблицу сделок и проверять по ней.
Не для каждой таблицу, а проверять, если такая сделка уже приходила.
Зачем для каждой-то?
 
Просто с окончательным исполнением заявки эта таблица благополучно удаляется, и итераций в поиске меньше. А так тоже можно, но надо периодически удалять старые сделки.
Страницы: 1
Читают тему
Наверх