В нашем блоге мы уже писали о важные этапы развития механические торговые системы, выбор стратегии работа на рынке и их бэктестинг .
В сегодняшнем материале мы подведем итог изложенной ранее информации и поговорим о том, как новичкам фондового рынка следует подойти к созданию своего первого торгового робота, чтобы избежать типичных ошибок.
Выбор технологий: способность идти на компромисс
Практически всегда при создании программных продуктов разработчикам так или иначе приходится идти на определенные компромиссы и искать баланс между несколькими вещами.В случае с торговыми роботами важную роль играют три фактора:
- Скорость торговли, т.е.
выполнения самих торговых операций - скорость выставления ордера, скорость получения ответа от биржи, скорость обработки самим роботом
- Универсальность и возможность настройки робота для работы с новыми рынками, финансовыми инструментами и вариантами алгоритмов.
- Скорость разработки и внесения существенных изменений.
Для этих задач очень подходит 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. Если вы заметили опечатку, битую ссылку или другую неточность, напишите нам личное сообщение и мы быстро все исправим.
Теги: #разработка #фондовый рынок #торговые роботы #Разработка сайтов
-
Полезная Usb-Ссылка Go
19 Oct, 24 -
Firefox Автоматически Обновит Flash Player
19 Oct, 24 -
Изучите C# За 30 Дней
19 Oct, 24 -
Доступ К Диагностической Консоли Iphone
19 Oct, 24