Практическое Руководство: Что Следует Учитывать При Разработке Своего Первого Торгового Робота



Практическое руководство: что следует учитывать при разработке своего первого торгового робота

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

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



Выбор технологий: способность идти на компромисс

Практически всегда при создании программных продуктов разработчикам так или иначе приходится идти на определенные компромиссы и искать баланс между несколькими вещами.

В случае с торговыми роботами важную роль играют три фактора:

  • Скорость торговли, т.е.

    выполнения самих торговых операций - скорость выставления ордера, скорость получения ответа от биржи, скорость обработки самим роботом

  • Универсальность и возможность настройки робота для работы с новыми рынками, финансовыми инструментами и вариантами алгоритмов.

  • Скорость разработки и внесения существенных изменений.

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

Для этих задач очень подходит C++ и чистый C (об использовании C++ в нашем интервью).

сказал разработчик торговых терминалов СмартХ ).

Бывает и так, что быстрые роботы создаются практически на языке ассемблера — здесь стоит упомянуть механизмы непосредственного чтения и записи данных в память сетевой карты, в обход стандартных механизмов работы через драйверы, а также работу со «сверхбыстрыми программируемое оборудование», такое как FPGA. Понятие скорости включает в себя две разные, хотя и взаимосвязанные задачи.

Первый из них — оптимизация скорости взаимодействия с биржей (размещение заказов, получение ответов).

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

Вторая задача — оптимизировать логику самого торгового приложения.



Практическое руководство: что следует учитывать при разработке своего первого торгового робота

Изображение: Бизнесвайр

Архитектура и среда разработки

Не менее важным моментом является выбор архитектуры робота.

Здесь тоже возможны компромиссы — например, стоит ли делать робота, «заточенного» под конкретный рынок, биржевой шлюз, систему с единым алгоритмом, а может быть, даже с ограниченным набором инструментов? Эта оптимизация позволяет получить дополнительный прирост производительности.

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

Не меньшее значение при выборе технологий имеет тип будущего робота и характер используемых алгоритмов.

Если вы планируете создавать высокочастотного робота, то использование C++, а иногда и C, становится просто необходимым.

В том случае, если вам необходимо автоматизировать торговую стратегию, предполагающую небольшое количество сделок (работающую по схеме «быть не самым быстрым, а самым умным») и величина «проскальзывания» при входе в позицию может быть ничтожно мала по сравнению как с возможной прибылью, так и с возможным убытком, то на первое место выходит скорость и удобство разработки.

Еще одним компромиссом между скоростью работы и скоростью разработки является .

Net в любых его воплощениях — C#, Visual Basic и вообще все, что на этой платформе (эта тема также обсуждалась в одном из наших предыдущих материалы ).

Если для работы робота требуются значительные вычисления, которые не требуют их проведения в реальном времени, а используются для оптимизации торговых параметров в фоновом режиме, то использование экзотических вещей вроде интерпретируемых языков Python, R и им подобных может быть вполне жизнеспособным (один из которых — скрипт Трейдскрипт , здесь больше рассказывается о создании роботов Здесь И Здесь ).

Существуют также реализации этих инструментов, совместимые с технологией .

Net.

Практическое руководство: что следует учитывать при разработке своего первого торгового робота

Пример создания простой торговой стратегии с помощью TradeScript в терминале SmartX Подводя итог разговору о среде разработки, можно порекомендовать следующую трехуровневую архитектуру.



Энажмите №1
Достаточно примитивный, но чрезвычайно быстрый робот, выполняющий простой набор операций.

По сути, его задача — быстро взять с рынка простой или синтетический актив или выпустить его на рынок, используя предельно простой алгоритм.

Этот уровень написан на C, C++ и ассемблерах разных уровней.



Энажмите №2
Система управления параметрами робота первого уровня, «обертка» вокруг него.

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

Такой продукт может быть реализован на C++, C#, Java или даже в виде веб-приложения.



Энажмите №3
Система бэк-тестирования и выбора параметров.

Этот третий уровень не имеет прямого отношения к первым двум торговым уровням, но есть принципиальная связь: именно здесь проводятся тесты новых алгоритмов на исторических данных и подбираются новые параметры для существующих алгоритмов.

Именно тестированию новых идей и гипотез на исторических данных (а не наблюдению за тем, как торгуются инструменты, созданные на первых двух этапах), создатель робота должен тратить большую часть своего рабочего времени.



Практическое руководство: что следует учитывать при разработке своего первого торгового робота

Изображение: Чикаго Хороший стиль разработки — это ситуация, когда алгоритм, написанный для системы третьего уровня «как есть», без внесения изменений в код после тестирования, можно перенести в торговый модуль.

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

Есть и исключения, в которых описанная схема выглядит иначе — например, быстрые высокочастотные (HFT) роботы по сути ограничиваются первым уровнем, исключая все ненужные обвесы, а сложные опциональные модели могут требовать поддержки вычислений на видеокартах, например, используя CUDA. При этом для 80% задач такое разделение на три уровня кажется наиболее оправданным.



Шаги по созданию торгового робота

Разработка роботов — циклический процесс, состоящий из нескольких этапов.



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



Бэктестирование
В дальнейшем возникающую торговую идею необходимо «обкатать на истории» — в зависимости от конкретного торгового подхода и таймфрейма для этого могут использоваться разные исторические данные — и «грубые» свечи, и тиковая последовательность сделок, и даже полный лог.

стаканов заявок с учетом движения заявок в них.



Анализ возможных затрат
Важным этапом, который новички на фондовом рынке часто недооценивают, является анализ как обязательных (комиссий, ставок за перевод позиции, репо и т.д.), так и возможных дополнительных плохо прогнозируемых расходов (проскальзывание цены при совершении сделки, непредвиденные задержки в инфраструктуре).

в момент сильных движений на рынке).



Практическое руководство: что следует учитывать при разработке своего первого торгового робота

Изображение: ГЕТТИ ИЗОБРАЖЕНИЯ Общее количество таких расходов влияет на среднюю стоимость транзакции.

Существует множество алгоритмов, которые находятся на грани рентабельности, и плохая оценка этих дополнительных затрат может создать иллюзию успешного нахождения Грааля там, где его нет и в помине.



Написание робота и его «боевое» тестирование
На самом деле программирование робота – это хоть и очень важная, но все же самая банальная задача (при условии правильного выбора архитектуры, рабочей идеи и т. д.).

После написания робота и его отладки (для этого можно использовать тестовый доступ к бирже виртуальными деньгами) начинается практическое использование алгоритма.

Самый эффективный подход — торговать на реальные деньги даже в период тестирования робота — вам необходимо выделить определенный бюджет (с ним можно заранее попрощаться), чтобы иметь возможность протестировать стратегию на сделках небольшого объема.

.

Пусть суммы будут очень небольшими, но рискование реальными деньгами дает принципиально иное понимание торговых процессов – только так их можно понять и успешно смоделировать в будущем.

Скорее всего, сразу после начала торговли результат будет не совсем таким, как изначально планировалось, поэтому разработчику придется не раз возвращаться на пару шагов назад и что-то исправлять.

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

Весной 2012 года я неожиданно подзаработал, не понимая, откуда они взялись.

Оказалось, что у меня был неправильный долларовый хедж.

В тот момент произошло сильное движение по индексу РТС, и моя «корзина» была переоценена в большой плюс.

Я заработал около 1,5 млн рублей, но в то же время прибыль послужила для меня поводом серьезно трансформировать систему, чтобы в будущем не было неожиданных сбоев.

— Заместитель управляющего директора «АйТинвест» Алексей Афанасьевский, интервью журналу F&O



Стабильная (возможно) работа.

Через некоторое время постоянной оптимизации алгоритм (возможно) начнет стабильно показывать приемлемые результаты — этот этап чреват снижением концентрации (очень быстро появляются мечты о спортивных машинах, яхтах и виллах в теплых странах).

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



Практическое руководство: что следует учитывать при разработке своего первого торгового робота



выводы

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

и так далее.

Все эти параметры будут иметь разный вес в случае создания разных типов роботов - для высокочастотной торговли нужно быстрое исполнение, для направленного робота - хорошее понимание технических и/или фундаментальных процессов, для разных видов арбитража хорошая статистика.

методы.

При этом нужно понимать, что такой «классификации роботов» в чистом виде не существует — каждый продукт в той или иной степени «лезет в прояснение разных подходов одновременно.

IT-специалистам, желающим попробовать свои силы в создании роботов, необходимо сначала подтянуть свои знания о структуре фондового рынка (в этом помогает специализированная литература), а уже потом переходить к этапу написания кода и экспериментирования.

На пути к созданию робота, добивающегося результатов, неизбежны ошибки и финансовые потери.

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

Алгоритмический трейдинг – это интересная, но долгая и непрерывная работа над совершенствованием себя и своего понимания мира и рынка как его выражения.

Если человек заинтересован этим заниматься, то создание роботов станет лишь инструментом получения результата, а не самоцелью.

При подготовке материала была использована информация из интервью заместителя управляющего директора компании «АйТинвест» Алексея Афанасьевского журналу F&O. Тизер-картинка: современная рыночная инициатива P.S. Если вы заметили опечатку, битую ссылку или другую неточность, напишите нам личное сообщение и мы быстро все исправим.

Теги: #разработка #фондовый рынок #торговые роботы #Разработка сайтов

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.