Это значит, что после такого колбека обязательно должен прийти OnOrder с заполненным UID? Какие ещё параметры могут быть не заполненными в колбеках OnOrder, OnTrade? Можете отметить их в руководстве.
Надо делать так, как надо. А как не надо - делать не надо.
Гипотетический случай последовательности событий вижу таковой: - отправлена транзакция - получена заявка с биржи - в ней нет UID (нет еще ответа на транз) - тут же закончилась торг. сессия - заявка снята биржей, о чем опять нас уведомили, но UID всё еще нет - пришел ответ на транзакцию - квик сумел связать заявку с транзакцией и радостно сообщил нам UID на снятой заявке, вызвав OnOrder
Например так: у брокера два независимых сервера QUIK и два комплекта шлюзов в торговую систему. Менеджер с другого сервера может поставить заявку за Вас, которая через торговую систему приедет на другой сервер без UID пользователя. Но на практике такая система не используется.
Таблица заявок - обновляемая таблица. Поэтому, теоретически, обновлён (дописан/удалён) может быть любой параметр, кроме ключевых (ключевые это Номер заявки, Дата торгов, Код класса). На практике же дописывается UID и ID транзакции. Сделано это для того, чтобы как можно скорее отправить информацию о заявке пользователю и не ожидать определения всех атрибутов заявки (определение UID и ID транзакции происходит внутри сервера QUIK и занимает какое-то время). Таблица сделок - необновляемая. Соответственно, сразу заполняются все (присущие режиму торгов сделки) параметры и запись более не обновляется (даже если OnTrade вызывается более одного раза по одной и той же сделке, такое тоже может быть и не является аномалией). Касаемо документации Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Олег Хуснутдинов пишет: теоретически, обновлён (дописан/удалён) может быть любой параметр, кроме ключевых (ключевые это Номер заявки, Дата торгов, Код класса).
Т.е., возможна такая ситуация, когда OnOrder может прийти, скажем, с незаполненным параметром account, balance или sec_code? И какое в этом случае будет значение параметра: nil или ""/0 в зависимости от типа? И в этом случае не стоит бить тревогу? Или стоит?
Цитата
Олег Хуснутдинов пишет: даже если OnTrade вызывается более одного раза по одной и той же сделке, такое тоже может быть и не является аномалией
То, что OnTrade может вызываться более одного раза - я в курсе: при переключении на другой сервер или очистке данных (файл trades.dat, как я понимаю). В каких ещё ситуациях OnTrade по одной сделке может вызываться более одного раза?
Надо делать так, как надо. А как не надо - делать не надо.
Старатель пишет: Какие ещё параметры могут быть не заполненными в колбеках OnOrder, OnTrade? Можете отметить их в руководстве.
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
Олег Хуснутдинов пишет: даже если OnTrade вызывается более одного раза по одной и той же сделке, такое тоже может быть
Считаете ли вы эту информацию существенной? Почему данный факт не отражён в официальной документации по QLUA, а узнаём мы об этом только сейчас случайным образом?
Цитата
Старатель пишет: В каких ещё ситуациях OnTrade по одной сделке может вызываться более одного раза?
Надо делать так, как надо. А как не надо - делать не надо.
Олег Хуснутдинов пишет: даже если OnTrade вызывается более одного раза по одной и той же сделке, такое тоже может быть
Считаете ли вы эту информацию существенной? Почему данный факт не отражён в официальной документации по QLUA, а узнаём мы об этом только сейчас случайным образом?
Цитата
Старатель пишет: В каких ещё ситуациях OnTrade по одной сделке может вызываться более одного раза?
Добрый день.
Данный вопрос уже поднимался и не раз. Да в документации это не описано, но готовы зарегистрировать соответствующее пожелание.
Ontrade может быть вызван два раза например, в случаях потери связи между торговой системой и сервером QUIK, а затем получение всей информации заново. В таком случае клиент два раза получит не только заявки, но и сделки.
Egor Zaytsev пишет: Ontrade может быть вызван два раза например, в случаях потери связи между торговой системой и сервером QUIK, а затем получение всей информации заново. В таком случае клиент два раза получит не только заявки, но и сделки.
Если пользователь производил очистку данных, то, очевидно, что после подключения к серверу, информация по сделкам придёт повторно. Это понятно, и, наверное, на этом не стоит заострять внимания. В каком случае, клиент повторно получит данные, если очистка данных на клиентке не производилась?
Надо делать так, как надо. А как не надо - делать не надо.
Если у вас есть ссылка на обсуждение (и главное ответы) по этому вопросу, то, дайте, пожалуйста, ссылку. (В документации, к сожалению, нет ни информации, ни ссылки на обсуждение)
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev пишет: Ontrade может быть вызван два раза например, в случаях потери связи между торговой системой и сервером QUIK, а затем получение всей информации заново. В таком случае клиент два раза получит не только заявки, но и сделки.
А, понял. Сразу не сообразил...
Надо делать так, как надо. А как не надо - делать не надо.
Насколько я помню, ordernum - это старое название параметра (тогда ещё были secccode, classcode и пр.). Потом эти параметры переименовали, добавив "_" А старые параметры так оставили. Но вопрос не в этом.
Может ли OnTrade в принципе прийти с незаполненным полем "Номер заявки"? Вы обещали добавить информацию по обязательным полям в документацию.
Надо делать так, как надо. А как не надо - делать не надо.
Вы всё обратно переиграли что ли? Не рубите сгоряча.
Цитата
Егор Зайцев (ARQA Technologies) пишет: В новой документации параметры seccode, classcode, tradenum, ordernum имеют вид sec_code, class_code, trade_num, order_num.
Вопрос был задан выше:
Цитата
Старатель пишет: Может ли OnTrade в принципе прийти с незаполненным полем "Номер заявки"? Вы обещали добавить информацию по обязательным полям в документацию.
Надо делать так, как надо. А как не надо - делать не надо.
Старатель пишет: Может ли OnTrade в принципе прийти с незаполненным полем "Номер заявки"? Вы обещали добавить информацию по обязательным полям в документацию.
Если это поставочные сделки, но это лучше уточнить у биржи.
Старатель пишет: Вы всё обратно переиграли что ли? Не рубите сгоряча.
Цитата
Егор Зайцев (ARQA Technologies) пишет : В новой документации параметры seccode, classcode, tradenum, ordernum имеют вид sec_code, class_code, trade_num, order_num.
Сейчас (v. 6.17) в структуре данных ответа на транзакцию (в OnTransReply) эти поля содержат дублирующие значения: 1. "trans_id", "R" - ID транзакции. 2. "order_num", "ordernum" - номер заявки.
Мне лично все равно, как будут называться поля в структурах, но хорошо бы оставить что-то одно и привести в соответствие документацию. Пока нет возможности посмотреть, но если в 7.0 всё так же, то пожалуйста, займитесь этим вопросом.
В версии 7.0.0.289 в OnTrade и OnOrder присутствуют оба параметра order_num и ordernum. Но у вас там какой-то "косяк" с getOrderByNumber Информацию по этой проблеме я отправил на почту.
Надо делать так, как надо. А как не надо - делать не надо.
Егор Зайцев (ARQA Technologies) пишет : В новой документации параметры seccode, classcode, tradenum, ordernum имеют вид sec_code, class_code, trade_num, order_num.
Ну и что вы творите? Скачете туда-обратно. Это призыв переписывать все раннее написанные скрипты? Каких ещё сюрпризов от вас ждать? Вот и getOrderByNumber нормально не работает.
Надо делать так, как надо. А как не надо - делать не надо.
Sergey Gorokhov пишет: То что в 7 версии в событии OnTransReply только ordernum мы считаем ошибкой, которая будет исправлена. Но сейчас там работает только ordernum
Тогда надо не документацию переписывать, а исправлять ошибку в ПО. Выше вы писали:
Старатель пишет: Давайте уж сейчас определимся, как будет правильно называться параметр в будущем (надеюсь названия параметров останутся унифицированными).
Будет оба параметра (для поддержки обратной совместимости)
Олег Хуснутдинов пишет: Таблица заявок - обновляемая таблица. Поэтому, теоретически, обновлён (дописан/удалён) может быть любой параметр, кроме ключевых (ключевые это Номер заявки, Дата торгов, Код класса). На практике же дописывается UID и ID транзакции. Сделано это для того, чтобы как можно скорее отправить информацию о заявке пользователю и не ожидать определения всех атрибутов заявки (определение UID и ID транзакции происходит внутри сервера QUIK и занимает какое-то время).
В QUIK 7.0.3.7 в ответ на транзакцию стал приходить один OnOrder, в отличие от предыдущих версий, где их (OnOrder) было всегда несколько на одну транзакцию. Означает ли это, что в 7-й версии механизм работы с таблицей заявок изменён, и все параметры заявок всегда заполняются до отправки пользователю?
Надо делать так, как надо. А как не надо - делать не надо.
Старатель пишет: Означает ли это, что в 7-й версии механизм работы с таблицей заявок изменён, и все параметры заявок всегда заполняются до отправки пользователю?
Ничего не изменилось. Если требуется ответ о причинах, приведите конкретный пример. У нас проблема не воспроизводится. На тестовом сервере (не джуниор)