Как стать автором
Обновить

Комментарии 9

У Финам появился open api. Сделайте с ним сравнение https://finamweb.github.io/trade-api-docs/

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

Методология вызывает ряд вопросов:

  1. Тестирование происходило одновременно или в разное время?

  2. Почему всего 30 секунд?

  3. Из результатов нельзя понять, кто из брокеров позволяет получить данные раньше. Средняя частота обновлений - весьма косвенный показатель.

  4. Скорость обновления может сильно зависеть от локации тестирующего. Пинг до хоста может сильно зависеть от того, в каком ДЦ Москвы Вы расположены

  1. Одновременно. Вы можете посмотреть код. Все подключение идет с одного места, с одного компьютера, по одному и тому же фьючерсу.

  2. А сколько нужно для проверки самого ликвидного источника данных?

  3. У стаканов нет меток времени. Поэтому "раньше" вещь недостоверная. Но можно понять, кто транслирует изменения цен "чаще". Что будет влиять и на "раньше".

  4. Локация - обычный домашний компьютер, равноудаленно расположенный от двух брокеров. Более того, специально выложен код для проверки тем, у кого ситуация другая. Потому что кто-то может быть ближе к Тинькофф, и у него картина будет другая. А вычисления средней температуры по больнице уже не так интересны.

И кроме того, есть еще вопрос, с какой скоростью API позволяет выставить заявку - это, бывает, очень не быстро происходит. Может так оказаться, что из доступных API (если не рассматривать TWIME/PLAZAII/FIX/FAST и тп. из колокации MOEX) данные получать лучше через одного, о заявку выставлять - через другого брокера.

Сомневаюсь что такая комбинация будет быстрее, чем использование одного брокера. Но протестировать конечно имеет смысл.

С другой стороны, стаканы могут наполняться разными ценами. Можно выставлять заявку через параллельное подключение, но и цена в нем будет "параллельная". Брокер не обязан транслировать стакан как он есть на бирже. Он может добавлять свои уровни ликвидности, исполняя заявку по цене лучше, чем может дать биржа, к примеру. Тиньков так и делает. Он называет это диллерским стаканом.

А сколько нужно для проверки самого ликвидного источника данных?

Ну хотя бы пару часов. А еще лучше повторить в разные дни. А 30 секунд - нерепрезентативная выборка.

У стаканов нет меток времени. Поэтому "раньше" вещь недостоверная. Но можно понять, кто транслирует изменения цен "чаще". Что будет влиять и на "раньше".

Офферы приходят и уходят. Каждый оффер - это цена и количество. Можно же оценить, где одни и те же офферы раньше приходят и раньше уходят из стакана. Более высокая частота обновления ≠ более актуальные данные. Можно, условно, 6 раз в секунду получать данные о том, что было 0,5 секунд назад, или 3 раза в секунду о том, что было 0,1 секунд назад. Что лучше?

Хорошее дополнение для опен сорс подхода. Всегда рад принять PR

по api Алора:
1. для "скорости" лучше использовать формат Slim
2. при создание подписки в WebSocket есть ткой параметр как frequency ( Максимальная частота отдачи данных сервером в миллисекундах ). если его не указывать = стоит 175 миллисекунд . Но можно его уменьшить .

"

Минимальное значение параметра зависит от выбранного формата возвращаемого JSON-объекта:

  • Simple — 25 миллисекунд

  • Slim — 10 миллисекунд

  • Heavy — 500 миллисекунд

https://github.com/osaengine/snippets/blob/main/Metrics/MarketDataSpeed/AlorOrderBookClient.cs#L30 вот так

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации