Буханов Александр Знания | Статьи

Создание собственного торгового робота, от азов до профитов

30 октября 2012  Источник / http://www.nettrader.ru/
Давно не писал интересных блогов, сегодня решил заполнить этот прогал, т.к. ежедневный анализ боковика уже начинает надоедать, решено написать серию блогов об алгоритмической торговле. Введение и немного теории.

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

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

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

Да, сразу сделаю акцент на роботах, которых продают в интернете по символическим ценам от 1500 до 5000 руб. Тут принцип один и он неизменный, зарабатывает на этой сделке ТОЛЬКО продавец этого робота, покупатель же в лучшем случае останется при своем депозите, в худшем робот «сливает» депо. Почему так? Да потому, что работающую торговую систему никто и ни за какие деньги не продаст. Зачем? Если она приносит реальные деньги и увеличивает депозит. Такой робот становится бесценным. Поэтому идею с покупкой лучше сразу вычеркнуть из головы не тратя на нее ни деньги, ни время. Робота нужно создавать самому!

И так, что такое алготрейдинг?

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

Если взглянуть на ту же Америку, то доля алгоритмических сделок по самым скромным подсчетам на NYSE составляет порядка 75%! Мы, как развивающийся рынок, держим нос по ветру и четко следуем таким трендам, поэтому с каждым годом данная отрасль будет развиваться и ускоряться. Если взглянуть на ту же турнирную таблицу ЛЧИ 2012, то лидирующие места все принадлежат роботам.

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

Для чего вообще нужна торговая стратегия?

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

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

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

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

Для тех, у кого нет четкого метода торговли и нет каких-то наработок в этом плане совет один, искать закономерности! Открываем график, накладываем индикаторы, изучаем пересечение, анализируем, почему тут остановились, а тут развернулись. Кто- то торгует по стакану, принцип тот же, найти закономерности. Анализ объема так же может быть использован для создания стратегии. В общем, на выходе мы должны получить два, три правила, при соблюдении которых в рынок можно входить. Чем меньше правил, тем более устойчивая торговая стратегия. Условия вчера Лукойл падал, значит, сегодня покупаем Роснефть, неприемлемы!

Если удалось найти какие-то закономерности, делаем пометку себе и начинаем изучать их тонкости, если ничего не получилось, возвращаемся и ищем дальше. Они есть! Поиск таких закономерностей длится от нескольких часов и, пожалуй, до бесконечности.

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

Начнем с хорошего! Плюсы:

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

2. Точность. Робот никогда не ошибается, конечно, при условии, что его создатель не заложил эту ошибку при программировании. Робот никогда не сможет перепутать buy и sell на клавиатуре и не припишет несколько лишних нолей при вводе заявки, в отличие от трейдера.

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

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

Чтобы снять эйфорию, немного минусов:

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

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

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

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

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

Сразу сделаю оговорку, система не должна содержать более 5-ти условий, иначе ее стабильность встает под большой вопрос. Не стоит ее излишне загружать фильтрами. Самый оптимальный вариант это 3- 4 условия.
Формализация заключается в том, чтобы четко изложить на бумаге свои условия входа, выхода, по каким правилам выставляется стоп- лосс, тейк- профит, переносится позиция или же она закрывается до клиринга, каким количеством лотов осуществляется вход/ докупка и т.д. На выходе мы должны получить блок- схему, где прописаны все ваши действия, а в будущем и действия робота, при тех или иных обстоятельствах.

Наглядный, но далеко не полный, пример:

Создание собственного торгового робота, от азов до профитов


Для чего это нужно? Во-первых, при составлении ТЗ программисту эта информация будет наглядным пособием, потому как «на пальцах» объяснить, а тем более запомнить все это нереально. Во-вторых, эта схема, состоящая из кучи квадратиков с еще большей кучей стрелочек, разворачивает перед вами весь алгоритм, на который вы посмотрите другими глазами, и, я уверен, найдете ни один момент который можно доработать.

Почему это сложно? Перед вами чистый лист и карандаш, попробуйте изложить свою стратегию используя только технический анализ и математические вычисления. Думаю, что не все с этим справятся. Тут же внутренний голос подскажет: нужно взглянуть на график S&P500; как же там DAX поживает; чтобы принять решение, нужно почитать, что советуют аналитики; нужно дождаться выступления Бернанке и т.д. Хотя на самом деле, большинство выступлений, заявлений, ожиданий заложено в цене, и строить свою торговую стратегию на этом было бы не правильно.

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

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

На сегодняшний день на рынке есть огромнейший выбор программного обеспечения, куча языков программирования и еще большая куча предложений от сторонних компаний о предоставлении услуг по написанию роботов. Раздавать советы это лучше, а это хуже я не стану, работает абсолютно все и пресловутые роботы в Exсel и стратегии написанные на языке Qpile, а так же более продвинутый трейдерский софт. Тут выбор целиком и полностью зависит от ваших потребностей. Я лишь расскажу о наиболее популярных, на сегодняшний день, платформах, это наша отечественная разработка TSLab и американская Wealth-Lab.

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

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

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

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

Основной минус необходимы навыки программирования на языке C#. Но, если взять тот же Microsoft Visual C# и писать код стратегии в нем, то проблема частично решается. Программа платная, стоимость в районе $800, но опять же, есть бесплатная тестовая версия, предоставляемая на 30 дней.

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

/Элитный Трейдер, ELITETRADER.RU/
При полном или частичном использовании материалов - ссылка обязательна http://elitetrader.ru/index.php?newsid=158454. Об использовании информации.