Пустое значение trans_id в таблице сделок.

Страницы: 1
RSS
Пустое значение trans_id в таблице сделок.
 
Всем привет.
Ситуация простая: скрипт просматривает таблицу сделок и ищет в ней сделки с нужным id транзакции.
Сегодня произошла странная ситуация: скрипт пропустил одну сделку из таблицы, т.к. её tans_id оказался равен 0. Проблема в том, что это была нужная сделка по моей заявке, и у неё был нужный trans_id. В таблице он отобразился правильно.
Единственное объяснение, которое мне приходит в голову - что скрипт прочитал строку таблицы прямо в момент её записи, и часть полей  в таблицу еще не была записана. Но это была не последняя строка таблицы. Хотя я где-то на форуме видел, что строки необязательно могут добавляться строго по порядку.
Возможно ли вообще такое, что строка оказалась записана не полностью? Есть ли способ как-то избежать подобных глюков? Может существует какой ключ или маркер, который говорит о том, что строка записана полностью?
Или проблема вообще в другом?
 
99% что проблема именно в том, что вы написали.
Никакого признака "вот теперь заполнено все" нет.
С другой стороны заполненность trans_id и есть в вашем случае такой маркер.
 
Если сам скрипт и отправляет транзакции, то Вы можете дополнить транзакцию комментарием, который будет записан в поле brokerref. Соответственно сделки с контролируемым комментарием - это сделки, требующие учета.
Далее уже в этих сделках ждете появления trans_id и разбираете по идентификатору транзакции (если это вообще необходимо).

Т.к. записи в таблице формируются не за один раз, т.о. первичное появление записи о сделке, возможно, было просто как фиксация факта. Потом уже было дополнено идентификатором транзакции.
Если обратите внимание на колбек OnTrade, то он приходит три раза на сделку. Каждый раз - это какое-то изменение в записи таблицы.
 
Сергей, Мой скрипт не просматривает таблицу сделок, а получает данные по OnTrade, но довольно часто (раза 2-3 на сотню сделок) встречается именно такая ситуация. Сегодня, например, она встретилась уже 4 раза. Значение trans_id формирует сам пользователь (в смысле, скрипт), а потому появление там нулей однозначно глюк Квика: уж кто-кто, а он ОБЯЗАН её знать!
 
Цитата
Nikolay написал:
Если обратите внимание на колбек OnTrade, то он приходит три раза на сделку. Каждый раз - это какое-то изменение в записи таблицы.

Во-первых, по новым правилам (QUIK 9.7.1.10) на одну сделку приходится не три, а четыре колбека OnTrade.
Во-вторых, в большинстве случаев, все четыре OnTrade абсолютно одинаковые. В некоторых случаях один из них может отличаться параметром broker_comission и, возможно, другими параметрами со словом *comission*
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Во-первых, по новым правилам (QUIK 9.7.1.10) на одну сделку приходится не три, а четыре колбека OnTrade.
Это сильно. Жаль что не пять.

Но, кажется, формулировка разработчиков была - есть изменения во внутренних полях, недоступных для чтения, все равно получите callback.
 
Цитата
Nikolay написал:
Но, кажется, формулировка разработчиков была - есть изменения во внутренних полях, недоступных для чтения, все равно получите callback.

Кажется, формулировка была другой:
Цитата
Sergey Gorokhov написал:
По данному обращению мы определили, что причиной множественных     отправок сделок (более двух) на клиентские места является неоптимальность в     серверном ПО QUIK. После ее устранения сделки могут быть отправлены на клиентское место максимум 2 раза - по     получению сделки из торговой системы и по факту ее обновления.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель, Во-первых, где можно посмотреть на "новые правила"? До знакомства с Квиком я наивно полагал, что на одно событие должно быть только ОДНО прерывание, а все остальные варианты есть маразм. Во-вторых, пусть хоть по 124 колбека на одну сделку присылают - текущая версия скрипта спокойно отфильтрует "лишние" 123. Но эти же падлы ещё и значения полей "варьируют"! В частности, "пустое значение trans_id в таблице сделок" и не только. Что с того, что "в большинстве случаев, все четыре OnTrade абсолютно одинаковые"? С меньшинством что делать прикажете? Я уже собрался отлавливать сделки нечётким поиском, по совпадению или хотя бы правдоподобию хоть части полей.

Nikolay, Да, "формулировка разработчиков была - есть изменения во внутренних полях, недоступных для чтения, все равно получите callback" - в частности, лично мне так отвечали (не помню кто, не помню когда, да уже и не интересно).
 
Здравствуйте, Сергей.

Действительно, это допустимое поведение, как уже сказали выше, таблица сделок обновляемая. Таблица обновляется столько раз сколько обновит ее сервер. Связано это с тем, что в самой сущности сделки есть параметры которых нет на бирже, при установке/изменении значений этих параметров как раз и происходит повторная отправка данных.
И как уже сказал Nikolay, можно использовать для контроля сделок - brokerref.  
Страницы: 1
Читают тему (гостей: 1)
Наверх