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 мсек после подачи заявки.
      • Егор NiKO
        15 июня 2022, 13:48
        FatCat, Квик не даст снять заявку пока она не попадет в OnOrder() с нужным статусом. С перестановкой сработает?
  • Манул Кот
    09 октября 2021, 11:52

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

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

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

    Как заказ данных делается — руками в настройках инструменты и параметры выбираются или по открытым таблицам? По идее куча лишнего может приходить, можно попробовать уменьшить поток ненужной инфы.
      • Максим
        09 октября 2021, 18:37
        FatCat, ага, спасибо. Так а какие тогда параметры у крайней правой точки? Выглядит, будто OnTransReply=~20s и OnOrder=~0.1s

        Другие сервера не пробовали? Я что-то разницы не заметил.

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

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