Иногда не срабатывает killorder (во время движений)

Страницы: 1
RSS
Иногда не срабатывает killorder (во время движений)
 
Хронология событий такая:
1) 10:00:01 Робот отправил приказ удалить заявку "KILL_ORDER"
2) Примерно в это же время (или чуть раньше, на открытии сессии) началось сильное движение в котировках инструмента.
3) 10:00:08 Заявка была исполнена (заключена сделка на бирже) . Спустя СЕМЬ СЕКУНД !!!
4) 10:00:08 Пришёл OnOrder с флагами исполнения заявки.
5) 10:00:09 Пришёл OnTransReply с статусом 5. "Вы не можете снять данную заявку"

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

Вопросы:
Это где-то у брокера приказ "KILL_ORDER" подвис ?
Как обрабатывать такие коллизии ?
Слать повторный "KILL_ORDER" , если вижу что заявка осталась в активном статусе ?
 
При подаче команд в ядро биржи все встают в очередь. Часть клиентов работает на своих серверах "рядом", минуя брокера.
Так если сервер брокера "подвис" или шлюз биржи нагружен, то пока дойдет очередь до вашей команды, ордер вполне мог успеть исполнится. Поэтому будет ответ - снять уже нельзя.

Бороться с этим - это быть быстрее других.

7 секунд - это даже не плохо.
 
7 секунд - это ваще ничего, быстро и весело. Я, например, снимаю неисполненные (или частично исполненные) заявки через три минуты активности. Иногда приходят сообщения "Вы не можете снять данную заявку" - убей, не понимаю, почему: сделок по ней не было. А скрипту это дело по барабану: послал KILL_ORDER - и даже не контролирует, исполнилась ли эта команда или нет, считает, что раз он дал приказ, значит будет снята. Заявки у меня все лимитированные, так что пофиг, что там за "движение в котировках". Ну, сработает позже как "левая" заявка - делов-то? Или не сработает - снимется по окончанию сессии. Или я сам сниму, вручную, если окажусь поблизости от компа. Зачем с этим бороться?
 
Утром на открытии торгов и после вечернего клиринга часто бывают такие задержки.
И это вполне понятно, ибо очень много таких как вы желающих в первые секунды торгов совершить сделку.
Сервера брокеров и биржи просто не успевают обрабатывать заявки, отсюда и задержки.

И вариантов тут не много
1) Выстраивать стратегию чтобы такие задержки были не критичны
2) Снимать заявки за несколько минут/секунд до окончания торговой сессии
3) Разместить сервер у брокера
4) Ну или даже разместить свой сервер на площадке биржи и торговать без брокера.

Вот я выбрал первый вариант, как самый простой и понятный.
 
Дозвонился в техподдержку брокера. Они признают, что утром были проблемы с их серверами. О чём они сообщили на сайте.
Цитата
... возможны затруднения с отображением лимитов и проведением операций по срочному рынку.
Тем не менее, повторю вопрос:

Имеет ли смысл отправлять повторный приказ "KILL_ORDER", если не дождался подтверждения исполнения первого приказа ??
Может второй приказ проскочит в другую очередь ? ))
 
Не проскочит быстрее первой транзакции, они же в очереди. Вот если получили ответ транзакции об ошибке, тогда можно повторно отправить. Случай что первая транзакция не прошла, но и ответ транзакции не пришел вовсе не рассматриваем (хотя...).

При открытии сделки это было бы открытие дублей позиции, когда все пройдут до биржи.Часто такое вижу: нажимают купить по рынку командой самого терминала. Ничего не происходит. Жмут еще раз. И т.д. Пока не откроется позиция по всем нажатиям. И это без всяких скриптов.

В этом плане терминал, конечно, малоинформативен для простого пользователя.
 
Цитата
Alexey написал:
Имеет ли смысл отправлять повторный приказ "KILL_ORDER", если не дождался подтверждения исполнения первого приказа ??
В таком случае надо определить, что такое "не дождался подтверждения исполнения первого приказа".
Какое время будете считать за не ответ?
Вот в вашем случае ответ на заявку был спустя 8 секунд, т.е. заявка никуда не потерялась, а просто висела в очереди на исполнение.

Лично я считаю, что смысла нет, ну по крайней мере в течении первой минуты после отправки на исполнение
Приходилось наблюдать задержки и по примерно 30 секунд, а вот потерь заявок без потери связи с сервером не наблюдал.

Цитата
Alexey написал:
Может второй приказ проскочит в другую очередь ? ))
Это вряд ли
 
Цитата
Какое время будете считать за не ответ?
Вроде достаточно 1 секунды. Обычно время между отправкой заявки и OnTransReply меньше 1 сек.
Если за секунду не удалось снять заявку, то выдаём сообщение об ошибке, которое является руководством к действию идти в другие приложения (мобильное, web-интерфейс) и снимать заявки в ручном режиме.
Техподдержка говорит, что эти приложения (мобильное, web-интерфейс) работают на других серверах. В теории вроде получится за несколько секунд снять заявки, если находился у терминала и заметил, что квик начал "лагать".
Цитата
Вот в вашем случае ответ на заявку был спустя 8 секунд, т.е. заявка никуда не потерялась, а просто висела в очереди на исполнение.
Если я правильно понял, то заявка висела на одном из серверов брокера, который отправил её на биржу с большим опозданием.
Возможно, что через другой сервер я бы смог снять зявку быстрее.
Страницы: 1
Читают тему
Наверх