Финансовая лаборатория

Биржевая торговля и торговые роботы

Данный вебинар состоялся 3-го мая 2011 года при содействии компании АЛОР.

В  процессе вебинара создатель известной библиотеки Stock# (S#) Михаил Сухов рассказал о создании торговых  роботов и о том, какую роль играет  С# в создании этих торговых роботов.

Сегодня выкладываю краткий обзор первой теоретической части данного вебинара. Чтобы не пропустиить продолжение – подписывайтесь по RSS на обновление нашего блога и ждите продолжения.

Существуют два основных метода разработки торговых роботов:

Самый популярный метод создания торговых роботов - использование среды, которую предоставляют программы технического анализа (ТА). Речь идет о таких программах, как: Wealth Lab, TSLab, AmiBroker, Ninja Trader, OpenQuant и другие.

Второй, не менее популярный метод разработки торговых роботов – это когда робот программируются в среде программирования. При этом используется API предоставляемый брокером или биржей (например Plaza 2 у РТС или Micex Gateway у ММВБ). Речь идет о таких средах программирования, как Visual Studio, Delphi,  Java.

Во всех этих двух подходах используется C#.

Этот язык программирования стал стандартом для разработки приложений для трейдинга. C# можно использовать и при работе с программами технического анализа и писать на нем автономных торговых роботов с использованием API.

Используют язык С#  такие программы как ВелсЛаб, ТСЛаб, Ninja Trader, Open Quant, RightEdge (http://www.rightedgesystems.com). Возможное еще есть что-нибудь интересное, но мы пока этого, к сожалению, не знаем.

Давайте теперь посмотрим основные плюсы и минусы двух методов разработки торговых роботов:

Плюсы разработки торговых роботов в среде программ для технического анализа:

Во-первых, уже проделана работа с подключением. Нам не нужно заботиться о том, как соединиться с Квиком, как получить сделки, как работать со стаканом и т.д. Это всё входит в стандартную поставку.

Во-вторых, во всех таких программах есть графика (свечи, таблицы, отчеты по тестированию). Все эти программы “user friendly”. Когда пользователь открывает окно, то сразу видит среду, в которой он привык работать. Там есть инструменты, заявки, лента сделок. То есть присутствует всё, что пользователю знакомо «с пеленок», т.е. с тех пор, как трейдер начал торговать на рынке.

В-третьих, помимо привычной графики (свечки, бары, линии…) есть отчеты по тестированию.

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

Минусы разработки торговых роботов в среде программ для технического анализа:

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

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

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

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

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

Рассмотрим Плюсы и минусы роботов под API:

Первый плюс создания роботов под API – возможность создания HFT роботов.

Аббревиатура HFT (High Frequency Trading) обозначает высокочастотный робот. Критерием здесь является скорость работы робота с биржей. Другими словами, все что работает с биржей выше определенной частоты  это HFT робот. Стратегиями для HFT робота может быть скальпинг, арбитраж, парный трейдинг и т.п.

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

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

Наличие графика в стандартных программах технического анализа для HFT робота – это не плюс, а минус. Ведь из-за большого количества заявок и сделок на графике будет «мешанина». Графики будут непонятными и только бесполезно отнимать память. Ведь даже в пределах минуты будет очень много сигналов.

Сейчас я работаю с роботом под опционы. В этом роботе графики совсем не такие, к каким привыкли обычные трейдеры. На моем графике нет не свечек нет линий. Этот график отображает профиль позиции. У меня всего три кнопочки: подключиться, торговля и пересчет позиции. В целях оптимизации работы он не постоянно обновляется.

Создавать такие интерфейсы в принципе невозможно в программе технического анализа. Здесь как в анекдоте – это вначале у всех головы разные, а потом они у всех одинаковые. Программы технического анализа по-сути диктуют нам условия, т.е. мы должны следовать её правилам. Наш робот должен быть стандартным, код должен быть стандартным, графический интерфейс должен быть стандартным. Параметры должны быть заданы по заранее определенным правилам. Естественно, это не всегда удобно.

Поэтому еще раз подчеркну, что наличие графики в программах технического анализа иногда полезно, а иногда и нет.

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

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

Роботу же, который работает с API  доступны все возможности того API, с которыми он работает. Например, квик не предоставляет никакой работы с историческими  данными, а вот Алор Аттентис и Смартком - предоставляют.

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

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

В программах ТА есть 4 основные транзакции – Buy At Market, Sell At Market, Buy At Close, Sell At Close. Естественно, стандартные программы технического анализа не позволяют работать с такими транзакциями.

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

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

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

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

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

Теперь о самой библиотеке Stock#.  Что такое библиотека Stock#. Библиотека S# - это наработка для тех, кто собирается делать роботов под API.

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

В чем я мог остальных превосходить? В технике. Именно поэтому я создал техническое решение в виде библиотеки Stock#. Это решение, конечно, сложнее, чем использование программ технического анализа. Оно рассчитано на профессионалов  и использует напрямую API.

Разработка робота на Stock# - это тоже самое, что создание робота под API. Естественно, здесь есть свои «плюшки», которые упрощают работу по созданию робота.

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

Не забудьте подписываться на RSS. Продолжение следует…

В следующей части:

- примеры торгового кода на C# с использованием библиотеки S# и без неё.

- демонстрация простейшего торгового робота;

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

- ответы на самые популярные вопросы по Stock#;

Комментариев: 13

  1. Евгений пишет:

    Спасибо ! Слушал семинар , но из вашей статьи уяснил более четко в чем различия АТ и API роботов. Несомненно выбираю вторые. Конечно это более тяжелый для изучения путь , но прогресс не дается легко. Надеюсь Вы нам поможете в этом разобраться. Благодаря Вам настроил Велс Лаб 5 ,получаю данные, делаю анализ , пробую стратегии . Казалось бы привинтить всё это к АЛОРУ и всё – робот готов. Но теперь всё перевернулось- буду пробовать свои силы под API. Главное в самом начале определиться – жаль некому наставлять на путь истины. Вот теперь надеюсь на вашу помошь. Вы очень хорошее дело делаете. Ждем продолжения. С праздником!

    • Евгений, спасибо за добрые слова. С точки зрения создания роботов – я тоже постоянно разбираюсь в этом процессе. Соответственно и пишу только о том, что мне в данный момент интересно. По поводу вебинаров – нужно как-нибудь попробовать провести. Не знаю, правда многим ли это будет интересно. Кстати, создание робота под API совершенно не противоречит работе в Wealth Lab, TSLab и прочих программах.

  2. Евгений пишет:

    Дмитрий! Вы, как я понимаю , сотрудничаете с Алором. А почему Вы не проводите Вебинары ? Мне кажется у вас есть к этому талант.А главное Вам есть что рассказать. Я , являясь клиентом Алора ,постоянно слушаю вебинары Финама (жаль что некоторые только для клиентов Финама).Аж завидки берут , как там здорово заботятся о клиентах . Столько информации ! Но мне не нравятся их терминалы. Интуитивно я чувствую , что алор более приспособлен для роботорговли ( может я и заблуждаюсь). Алор Фаст очень понравился ( за исключением того что нет окошек в стакане с отображение значения Стопов и Профитов). Ваши программы тоже решили в пользу этого брокера. Очень нравятся вебинары Дозорова. Вот бы Вас ещё послушать про МТС. Думаю я не одинок в своих пожеланиях.
    Ещё раз с Праздником Победы !

  3. Kayzer пишет:

    Спасибо за пост. Полезно ознакомиться тем, кто пропустил сам вэбинар

  4. Евгений пишет:

    Только что с форума Stock#. Всё очень интересно. Очень жаль что платформа не состыкована с Алор-трейдом.Есть ли какая нибудь информация на этот счет ? Коды недоделанные вроде как взяли , но о результатах неизвестно. Читал,что программисты из техотдела Алора заинтересовались Stock#. Мне кажется что Финансовая Лаборатория должна взять на контроль сей важный момент. Дмитрий , пожалуйста сообщите ,если есть что по данному вопросу. Спасибо.

    • Евгений, приветствую. Мне тоже эта библиотека Stock# понравилась. Уверен, что в ближайшее время коннектор к Алор Трейду будет доделан. Кстати, раз осваиваете C# – это как раз шанс разобраться и попытаться написать собственный код… :-)

  5. Вячеслав пишет:

    Ну где же продолжение? :)
    Когда покажут самое интересное?
    Жду обещанных примеров торгового кода с использованием библиотеки S# :)

  6. Антон пишет:

    Здравствуйте, что то последний релиз библиотеки занимает 5 гигабайт, даже не хватило трафика что бы выкачать, интересно что там столько весит и можно ли найти поменьше размером работоспособный вариант?

  7. Дмитрий пишет:

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

  8. PILOT пишет:

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

  9. PILOT пишет:

    мы их делаем, но в продаже их нет, и не будет,
    а пишем вам, чтобы вы не разбили свои лбы !!!

  10. PILOT пишет:

    А товарищу Сухову – привет!

Оставить комментарий