$ gnatovskie show moex-colocation
Свой сервер в колокации Московской биржи — от сетевой карты до заявки
задача>
Для своей торговли нужна была инфраструктура, где скорость зависит только от нас: сервер у биржи и свой софт от рыночных данных до заявки.
решение>
Собрали и поставили свой сервер в колокацию биржи. Написали всё, что на нём работает: приём рыночных данных срочного, фондового и валютного рынков напрямую с сетевой карты, выставление заявок, запись рынка и стенд, где стратегия проверяется на записанных днях до выхода в торговлю.
Два рынка — два протокола
Срочный рынок и фондовый с валютным у биржи устроены по-разному. Для каждого — свой приём данных и своё подключение для заявок. Общая часть — сервер, запись рынка и проверка стратегий.
Скорость — в каждой мелочи
Сервер собирали сами: процессор, память и сетевая карта выбраны под задержку, а не под объём. Данные идут с сетевой карты сразу в программу, минуя операционную систему. На пути от рыночных данных до заявки нет лишних операций — они вынесены за его пределы.
Проверка до торговли
Каждый торговый день записывается целиком. Стенд прогоняет стратегию по записанным дням с симуляцией биржи: очередь заявок, задержки, лимиты. Логика стратегии в проверке и в торговле одна и та же.
Коннекторы для других
Подключения к бирже работают отдельным сервисом: робот общается с ним через IPC, поэтому его можно написать на любом языке. Для Python есть готовый SDK. Ими уже пользуются клиенты.
результат>
Торгуем под своей маркой RunInfra на своей инфраструктуре. Рынок записывается каждый день, новую стратегию проверяем на реальных данных, а не на глаз.
- задержка от рыночных данных до заявки
- < 1 мс
- торговый оборот
- > 500 млн ₽
# похожая задача — опишите её словами
$ gnatovskie request --new