Начинающие роботостроители, да и не только, порою не задумываются над таким понятием , как «работа программы в реальном времени»
Вот этому моменту я и хочу посвятить данную заметку.
Что же такое «реальное время » для торгового робота.
Почему при работе на компьютере, в офисных приложениях, для нас не имеет значение такие интервалы времени как секунда или даже минута , а иногда и час можно одним пальцем в клавиатуру стучать.
Но в торговых роботах важным может оказаться даже 0.01 секунды.
Cистема обработки данных в реальном времени, отличается от обычных расчетных программ тем, что время вычислений, сколь угодно сложного алгоритма, ограничено интервалом поступления информации.
Например, если сделки совершаются каждую секунду, то правильный робот должен обработать информацию о прошедшей сделке и принять решение до совершения следующей.
Если робот не успевает сделать все до поступления новой порции информации, то необработанная информация начинает накапливаться, а решения принимаются с возрастающим запаздыванием. Говорят, что «после драки кулаками не машут», а робот именно это и начинает делать в таких случаях.
Подавляющее большинство мелких инвесторов предпочитают торговать фьючерсом на индекс РТС.
Действительно, выглядит заманчиво.
При депозите в 10 тысяч рублей, получаем плечо 1:10 и комиссию в 1.5 рубля на транзакцию.
Но проблема в том, что для успешной такой торговли вы должны построить HFT робот, и обеспечить скорость обработки информации менее 10 мс на сделку.
Но…
Во-первых, Операционная система Windows обеспечивает обслуживание прерываний с запаздыванием более 10 мс, а в реальности это запаздывание составит, по моим оценкам, более 100 мс.
Поэтому тестирование казалось бы прибыльных стратегий, на истории, на тиках — это утопия, которая не реализуема в действительности.
Во-вторых, если вы торгуете портфелем акций, то время, которое вы можете потратить на анализ одной акции, будет в число раз меньше минимального интервала между сделками.
Т.е. если совершается 10 сделок в секунду, а у вас 10 акций в портфеле, то для обработки одной сделки у вас есть всего 10 мс.
Вы можете сказать: «Зачем так быстро обрабатывать информацию, если я совершаю 1 сделку в день?»
Но дело в том, что либо вы будете «махать руками после драки», либо вынуждены обрабатывать в реальном времени, чтобы максимально быстро реагировать на изменение ситуации на рынке.
Проблема состоит еще и в том, что информация с биржи поступает крайне неравномерно. Именно резкие движения рынка и обуславливают необходимость быстрой реакции торговых систем.
Если вы начинаете пропускать информацию и обрабатывать ее выборочно, то в этом случае вы допускаете неконтролируемое изменение стоимости открытых позиций в пропускаемом интервале времени.
Чтобы обеспечить успешную работу робота с пропуском данных, необходимо создавать прогнозирующие системы, что значительно сложнее систем HFT.
В прогнозирующих системах существенно возрастают затраты времени , так как алгоритмы таких систем учитывают большой объем информации.
В заключение, хочу заметить, что методы построения систем обработки данных в реальном времени имеют свои особенности.
Если кратко сказать, то в таких системах «дурным тоном» считается : использование циклов для обработки информации, накапление первичных данных без обработки.
Но смею предположить, что именно то, что не рекомендуется в системах реального времени, большинство из вас и применяет.