Чтобы дать некоторое представление об объемах данных, Nasdaq TotalView ITCH провела анализ сделок по инструментам, торгуемым на NASDAQ.

В результате получилось, что объем получаемой информации за день может составить до 20 Гб,  с максимальной скоростью передачи до  3 Мб / сек и более отдельными сообщениями в, среднем  около 20 байт каждое.

Это  означает, что для HFT необходима обработка 100 000-200 000 сообщений в секунду.

Таким образом, необходимо обрабатывать одно сообщение примерно за 0.01 ms(10 микросекунд).

В своем роботе я использую тайм 5 минут.

Попытка перейти на более мелкие таймы приводит к существенному  увеличению времени расчета и отображения информации .

Поэтому решил написать платформу, которая не только обеспечивала бы высокую скорость работы в реальном времени, но и позволяла бы максимально компактно и быстро собирать историю торгов.

Сейчас в данной платформе реализован интерфейс DDE с торговым терминалом QUIK.

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

В своих исследованиях я поставил следующие задачи:

1) Определить максимальную скорость передачи информации торговым терминалом QUIK по каналу DDE.

2) Определить время обработки принимающей программой стакана и таблицы всех сделок.

3) Определить период передачи информации о заявках (стаканах) сервером брокера

 

Как говорится, не обошлось и без казуса.

Когда я стал измерять период передачи информации о заявках сервером брокера, то получил странную величину – ровно 1000 ms.

Пришлось задать вопрос разработчикам QUIK.

На который получил ответ, что этот интервал передачи информации по DDE установлен по умолчанию ( интересно кто-нибудь видел об этом упоминание в документации)  и если надо иное,

то следует установить значение в файле инициализации.

Минимальной интервал передачи по каналу DDE со стороны терминала составляет 10 ms.

Время обработки стакана реализованной мною программой составило 0.3 ms на 40 строк стакана.

В пересчете на одну строку имеем примерно 0.01 ms.

Далее я протестировал скорость передачи таблицы всех сделок объемом в 1.1 млн.записей.

В результате получил следующие данные.

Общее время составило 8 секунд.

Из них терминал QUIK готовил информацию 6 секунд.

Моя программа принимала информацию, сортировала ее по инструментам ( всего 1000 инструментов) и записывала в базу данных за 2 секунды.

Таким образом, время обработки записи об одной сделки составляет примерно 0.01 ms.

В итоге, за торговый день, я получил записи 1 млн.сделок по 1000 инструментам объемом 30 Мбайт, при работе в реальном времени, и 6 Мбайт – для бектестинга.

Последним этапом было определение интервала обновления информации о заявках(стаканах) брокером.

В результате я получил, что время обновления составляет от 200 до 500 ms.

В последнее время начинают появляются сообщения, что кто-то якобы создает базы данных стаканов с шагом миллисекунда.

На основе собственных измерений и публично доступной информации, считаю, что реально период получения информации о заявках может составлять порядка 100 ms.

Буду рад, если кто-то сможет на результатах фактических замеров доказать , что можно быстрее.

 

This entry was posted on Четверг, 23 февраля, 2012 at 20:29 and is filed under QUIK DDE, торговые роботы (МТС). You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed at this time.