FatCat
FatCat личный блог
08 октября 2021, 22:15

Quik: отлавливаем заявки на скорость с помощью Lua и колбэков

Строя автоматизированную торговлю на базе Квик, нет-нет да и столкнёшься с ситуацией, когда отправленная заявка исполняется совсем не так быстро как хотелось бы. Удивляться тут нечему, производительность квиковских серверов брокера не резиновая, на всплесках нагрузки могут изрядно подтупливать. Что с этим делать?
Запилить торговую систему через прямое подключение к бирже задача совсем другого уровня сложности по сравнению с демократичным Квиком со встроенным языком Lua. Что же, будем выкручиваться с имеющимся инструментарием.

Для получения информации о выставлении или перестановке заявки можно использовать колбэки OnTransReply (со значением поля status = 3) или OnOrder. Сильно ли они отличаются между собой по скорости? Для ответа на этот вопрос я прикрутил логгирование задержек срабатывания этих колбэков от момента вызова функции отправки заявки на сервер до срабатывания соответствующего колбэка. Логгирование выполнялось на дельтахеджере и опционном котировщике. Данные собирались в течение месяца не первом сервере в Открывашке, сам Квик работал на VDS-хостинге.

Результаты замера можно посмотреть на графике. Каждая точка — это одна заявка на выставление, перестановку или снятие приказа в координатах задержек OnTransReply и OnOrder.
Quik: отлавливаем заявки на скорость с помощью Lua и колбэков


Что же, OnTransReply вполне достоин более блестящей медальки по сравнению с OnOrder :

  1. В диапазоне задержек срабатывания OnOrder до одной секунды OnTransReply показывает существенно более быструю реакцию
  2. С увеличением задержки отличие становится не столь существенным, тупят оба колбэка
  3. Лучик света — один OnTransReply, прилетевший на порядки быстрее залипшего почти на 20 секунд OnOrder
  4. Несколько занятных глитчей, когда OnOrder прилетал быстрее OnTransReply
 
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
11 Комментариев
  • GoGo
    09 октября 2021, 08:28
    А какой конфиг вдски?
    Спасибо.
  • Rostislav Kudryashov
    09 октября 2021, 10:03
    Когда-то я из Питера получал в Церих-кэпитале срабатывание OnTransReply — 100 мсек.
    Но никакой медали OnTransReply не заслуживает, т.к. он всего лишь сообщает, что заявка отвергнута брокером или принята (например, поставлена в очередь на бирже).
    А сигнал OnOrder по хэлпу Квика: «Функция вызывается терминалом QUIK при получении новой заявки или при изменении параметров существующей заявки» — это ни о чём. Внутренние дела между клиентом и брокером.
    А вот сигнал OnTrade даёт полную информацию о выполнении заявки на бирже.
    В Церихе я получал срабатывание OnTrade через 200 мсек после подачи заявки.
  • Манул Кот
    09 октября 2021, 11:52

    Браво! Гениальный кот, который еще и переводится с английского, как «денежный мешок». Вы на верном пути, сэр! Мы тоже в Qlua...

    Всем котам — срочно переходить на АЛГО-ТОРГОВЛЮ !!

  • Максим
    09 октября 2021, 14:46
    А гистограмму можно?
    Пункт 3 — это крайняя правая точка? Подписи на осях перепутаны?

    Как заказ данных делается — руками в настройках инструменты и параметры выбираются или по открытым таблицам? По идее куча лишнего может приходить, можно попробовать уменьшить поток ненужной инфы.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн