deisik (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Превышен лимит отправки транзакций для данного логина
 
Спасибо за информацию
Превышен лимит отправки транзакций для данного логина
 
Цитата
Anton Belonogov написал:
deisik, добрый день.

Это биржевое сообщение - ограничение установлено в Торговой системе биржи.

Правильно ли я понимаю, что ограничение устанавливается биржей для брокера в целом, а не для его клиентов по отдельности?
Превышен лимит отправки транзакций для данного логина
 
В первый раз столкнулся с такой ошибкой при реальной торговле "Ошибка перестановки заявок. [GW] "Превышен лимит отправки транзакций для данного логина"

Соответственно, вопрос. Кем устанавливается это ограничение – брокером или биржей?
Ошибка перестановки заявок
 
Еще вдогонку вопрос по этой же теме

Для чего нужен параметр nTransactionExtendedErrorCode (второй в колбеке TRANS2QUIK_TRANSACTION_REPLY_CALLBACK)? Согласно документации "в случае возникновения проблемы при выходе из функции обратного вызова в переменную может быть помещен расширенный код ошибки".

Что здесь понимается под "выходом из функции обратного вызова", и кто (что) помещает в эту переменную "расширенный код ошибки"? Если сам колбек, тогда почему в него передается значение, а не ссылка?
Частично исполненный ордер
 
Окей
Частично исполненный ордер
 
Если я правильно понимаю ваш ответ, частично исполненная заявка в любом случае (в начальной рассылке или непосредственно при частичном исполнении) передается в соответствующий колбек со статусом "Активная заявка" (1) до тех пор, пока она не будет полностью исполнена?
Частично исполненный ордер
 
Добрый день

У меня вопрос, как в начальной рассылке передается частично исполненный ордер и в каком порядке, если он передается несколько раз (например, как исполненный и как активный)
Race condition в Trans2Quik.dll?
 
Цитата
Михаил Филимонов написал:
Цитата
deisik написал:
 
Цитата
Михаил Филимонов  написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота
 
Сколько у вас транзакций в день по одному инструменту?
5000 - 6000
250-300 тысяч
Повторная загрузка старых заявок после начальной рассылки
 
И можно сделать так, чтобы мне не загружать +200 тысяч старых заявок?
Повторная загрузка старых заявок после начальной рассылки
 
Второй раз наблюдаю повторную загрузку всех старых заявок после окончания начальной рассылки. Сегодня это было утром, а перед этим было пару недель назад перед вечерней сессией

При этом параметр nMode в колбеке TRANS2QUIK_ORDER_STATUS_CALLBACK имеет значение 0, т.е. это не повторная начальная рассылка. Сегодня начальная рассылка (nMode = 1) началась в 08:32:28 и закончилась в 08:38:10, а после этого опять начали приходить те же заявки из начальной рассылки, но уже как новые (nMode = 0)

Прошу прокомментировать эту ситуацию
Race condition в Trans2Quik.dll?
 
Цитата
Михаил Филимонов написал:
Хоть и trans2quik кривая, но все же она работает нормально, у меня вызывы идут из 138 потоков и все ок.
Проверяйте своего бота

Сколько у вас транзакций в день по одному инструменту?
Ошибка перестановки заявок
 
Цитата
deisik написал:
Цитата
Anton Belonogov написал:
deisik ,  добрый день.

В параметре dwTransId функции TRANS2QUIK_TRANSACTION_REPLY_CALLBACK  передается идентификатор транзакции, на которую был получен ответ.
Номер заявки, если таковая зарегистрирована в торговой системе в результате выполнения транзакции, передается в параметре dOrderNum - можно для проверки успешности подачи заявки обращаться к этому значению.

Как отслеживать ошибки (например, описанную выше приостановку торгов) в TRANS2QUIK_TRANSACTION_REPLY_CALLBACK? Если какая-нибудь подфункция, которую можно вызвать внутри TRANS2QUIK_TRANSACTION_REPLY_CALLBACK через дескриптор ответа на транзакцию, чтобы получить код ошибки?
Если -> Есть ли
Ошибка перестановки заявок
 
Цитата
Anton Belonogov написал:
deisik,  добрый день.

В параметре dwTransId функции TRANS2QUIK_TRANSACTION_REPLY_CALLBACK  передается идентификатор транзакции, на которую был получен ответ.
Номер заявки, если таковая зарегистрирована в торговой системе в результате выполнения транзакции, передается в параметре dOrderNum - можно для проверки успешности подачи заявки обращаться к этому значению.

Как отслеживать ошибки (например, описанную выше приостановку торгов) в TRANS2QUIK_TRANSACTION_REPLY_CALLBACK? Если какая-нибудь подфункция, которую можно вызвать внутри TRANS2QUIK_TRANSACTION_REPLY_CALLBACK через дескриптор ответа на транзакцию, чтобы получить код ошибки?
Двойной вызов TRANS2QUIK_ORDER_STATUS_CALLBACK
 
Ну и теперь более конкретно

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

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

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

Каким образом сервер не знает, что заявка 1892957001206697733 создана транзакцией 443606, если ранее вызывался TRANS2QUIK_TRANSACTION_REPLY_CALLBACK с этой транзакцией и этой заявкой?
Двойной вызов TRANS2QUIK_ORDER_STATUS_CALLBACK
 
Цитата
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 пришло такое:  "Ошибка перестановки заявок. [GW][65] "Приостановка торгов во всех режимах и по всем инструментам данного БА.".

У меня вопрос, что в данном случае находится в параметре dwTransId?

Как следует из описания Quik API, в dwTransId будет содержаться номер зарегистрированной транзакции – это номер транзакции,  присвоенный заявке при отправке через TRANS2QUIK_SEND_ASYNC_TRANSACTION (TRANS2QUIK_SEND_SYNC_TRANSACTION), правильно?

Ну и чтобы два раза не вставать, как разработчиками Квика предлагается отслеживать эту ошибку?

Race condition в Trans2Quik.dll?
 
Если колбек может вызываться из разных потоков, то, возможно, это у меня возникает race condition

Поглядим...
Race condition в Trans2Quik.dll?
 
Уже несколько раз сталкиваюсь с зависанием моего торгового бота на реальном сервере, которое с большой долей вероятности вызвано проблемами в Trans2Quik.dll

Зависание происходит в интервале от нескольких часов до нескольких суток, не зависит от активности на бирже и происходит при практически одновременной асинхронной подаче двух разных заявок по изменению их цены (перестановка заявок).

То, что проблема именно с Trans2Quik.dll подтверждается следующим:
- возврат из функции TRANS2QUIK_SEND_ASYNC_TRANSACTION происходит со статусом 0 (TRANS2QUIK_SUCCESS) в обоих случаях, т.е. без ошибок (бот успевает записать заявки в лог после возврата из функции)
- обе заявки остаются активными в терминале Quik и их потом приходится снимать вручную – запрос до биржи не доходит ни по одной из заявок
- в самом Quik также ничего не происходит

Если нужна более детальная информация (что отправляется на сервер), могу предоставить ее в личку

Прошу разобраться в этой проблеме
Статус рыночной заявки
 
Цитата
Anton Belonogov написал:
deisik, добрый день.

Если говорить о заявках на Срочном рынке, такая ситуация возможна.

Технически на Срочном рынке нет рыночных заявок - если Вы указываете для заявки признак "Рыночная", то соответствующее поведение эмулирует терминал QUIK, отправляя транзакцию с указанием минимальной/максимальной (в зависимости от операции) возможной цены для инструмента.

Такая заявка в некоторых случаях может какое-то время быть активной в Торговой системе, в этом виде информация о заявке будет передана на сервер QUIK и, далее, в пользовательский терминал - таким образом в функции обратного вызова может быть получен статус "Активна".

Зачем тогда было вообще городить огород с типа "рыночными" заявками? Вместо решения псевдопроблемы вы создали условия для появления реальной проблемы

Я уже не говорю о введении в заблуждение -- "Такое поведение невозможно"
Статус рыночной заявки
 
Цитата
Anton Belonogov написал:
deisik, добрый день.

Такое поведение невозможно.

Это оказалась неправдой

Транзакция с рыночной заявкой на продажу по цене ниже лучшей на покупку (т.е. в любом случае заявка должна была выполниться сразу) пришла в функцию обратного вызова TRANS2QUIK_ORDER_STATUS_CALLBACK со статусом 1 (активная заявка) и сообщением "Заявка 1892956880947543031 успешно зарегистрирована"

Использовался тестовый сервер

Запрос: CLASSCODE=SPBFUT; ACTION=NEW_ORDER; ACCOUNT=SPBFUT000hd; TRANS_ID=233503; QUANTITY=1; TYPE=M; SECCODE=SiU3; OPERATION=S; PRICE=84294

Номер заявки: 1892956880947543031

Прошу пояснить эту ситуацию
Двойной вызов TRANS2QUIK_ORDER_STATUS_CALLBACK
 
Я описываю ситуацию, когда TRANS_ID задается пользователем, и отправляется вместе с "телом" заявки. Другими словами, сервер не может не знать TRANS_ID
Двойной вызов TRANS2QUIK_ORDER_STATUS_CALLBACK
 
При создании новой заявки функция TRANS2QUIK_ORDER_STATUS_CALLBACK вызывается два раза -- в первый раз с номером транзакции 0, а второй раз с номером, который был указан в заявке

Это ожидаемое поведение?
Статус рыночной заявки
 
Окей, спасибо
Статус рыночной заявки
 
Может ли статус рыночной заявки (TYPE=M), получаемый через функцию обратного вызова TRANS2QUIK_ORDER_STATUS_CALLBACK, принимать значение 1 (активная заявка)?
Статус заявки и отправка двух заявок
 
Дабы два раза не вставать, такие вопросы:

1. Можно ли сразу получить статус заявки (снята/выставлена/исполнена) через TRANS2QUIK_SEND_SYNC_TRANSACTION (TRANS2QUIK_SEND_ASYNC_TRANSACTION) без использования функции обратного вызова TRANS2QUIK_ORDER_STATUS_CALLBACK?

Такой вопрос возникает при отправке рыночной заявки, но с указанием цены лучшей покупки/продажи (или лимитированной зачвки FILL-OR_KILL). Например, цена может уйти и заявка снимается -- но из ответа TRANS2QUIK_SEND_SYNC_TRANSACTION я этого не могу определить (статус заявки всегда возвращается 3 -- "транзакция выполнена")

2. Можно ли одним вызовом отправить две заявки по разным бумагам с условием, если исполняется первая заявка (например, FILL-OR_KILL), то выставляется заявка по второй бумаге?


Заранее благодарю за дельные ответы и советы!
Текущая цена бумаги
 
Можно ли узнать через api последнюю (текущую) цену по бумаге?
Страницы: 1
Наверх