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

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


Ну чтож, вот и пришло время создать первую механическую торговую систему (МТС) и протестировать её в Wealth Lab…

Процесс создания механической торговой системы достаточно прост. Но это простота - кажущаяся.

Этап 1: Проектирование торговой системы на бумаге

торговая система (МТС)

Проектирование МТС

На первом этапе необходимо продумать и решить - как будет функционировать механическая торговая система (МТС). Для этого нужно поставить перед собой вопросы:

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

Допустим, мы собираемся торговать тренды.

Основной принцип нашей МТС - это следование тренду. Соответственно девиз этой МТС - растет - покупай.

Торговать собираемся только ликвидные бумаги, торгующиеся на ММВБ.

У нас нет цели постоянно сидеть перед компьютером и отслеживать каждое малое движение рынка. Поэтому таймфрейм нашей МТС составит не менее 30-ти минут. Наличие коротких позиций на первом этапе - не предполагается. Будем торговать только при растущем тренде.

Этап 2: Написание кода торговой системы

код торговой системы

Код торговой системы (C#)

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

Здесь можно услышать такие высказывания: - "Я трейдер, а не программист!!!"

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

Наилучшим выбором здесь, на мой взгляд - является освоения языка программирования C#

Я, например, основы языка С# освоил просмотрев следующий бесплатный видеокурс: http://www.intuit.ru/department/pl/incsharp3/

Кроме того, очень рекомендую прочитать книгу Автор: М. Дрейер с названием "C# для школьников" и пройти курс, основанный на этой книге http://www.intuit.ru/department/school/cs4kids/ - это тоже бесплатно.

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

  • проводит Михаил Сухов: http://stockmarketdotnet.blogspot.com/2011/03/c-2.html - стоимость от 10 000 рублей
  • Проводит Церих: http://education.zerich.ru/event/141807/ - стоимость записи порядка 5000 рублей
  • Если знаете ещё курсы этой тематики - пишите в комментах.

Разобравшись с основными понятиями языка программирования C# - Вы без труда сможете написать код любой торговой системы в wealth lab.

Как это сделать - обязательно посвящу этому отдельный пост. Чтобы не пропустить - не забывайте подписываться по RSS.

Этап 3: тестирование созданного кода торговой системы и оптимизация параметров.

Понятно, что человек может только предполагать - какие параметры (длина скользящей средней, стоп лосс, тейк профит) являются оптимальными.

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

Конечно тут сразу же возникает вопрос - "Может ли поведение цены в прошлом определять поведение цены в будущем?".

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

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

Этап 4: Создание торгового робота

автоматизация торговой системы

автоматизация МТС

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

На текущий момент существует достаточно много вариантов автоматизации торговли. Перечислю некоторые из ник:

Создание собственного торгового робота с нуля, напрямую подключаясь к торговым серверам (или торговым терминалам).  К примеру, Алор представляет сервис Alorr Attentis - это возможность подключиться напрямую к серверу Алор Трейд, минуя посредника в виде торгового терминала. Также есть возможность работать с АйТи Инвестом (SmartCom 2), напрямую с Plaza 2 - в общем, варианты имеются.

  • Создание торгового робота, используя уже готовые библиотеки. Здесь стоить отметить динамично развивающийся проект Stock# - программная библиотека для создания на платформе .NET торговых роботов, аналитических программ и МТС.  Также можно использовать библиотеку от компании Финансовая лаборатория -  FinLab.MTS
  • Создание торгового робота, используя программу wealth lab и создавая адаптеры для непосредственной передаче  заявок брокеру. Насколько я знаю на текущий момент существуют адаптеры для работы с Квиком, терминалом Альфы, СмартТрейдом и т.п. Если поискать - можно найти любые варианты.
  • Создание торгового робота, используя программу OpenQuant - аналог WealthLab - в котором нет проблем с построением брокер-адаптера...
  • Создание торгового робота, используя программу TradeMatic - по сути, это аналог WealthLab, который можно сразу подключать к Квику и начинать торговлю…
  • Ну и конечно же, используя  полностью российскую наработку для создания торговых роботов - программу TSLab. Именно эту программу я использую для того, чтобы создавать полностью автоматически торгующие торговые системы. Об этом уже был отдельный пост.

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

Этап 5: Создание корзины механических торговых систем и отслеживание результатов торговли

Корзина МТС

Корзина торговых систем

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

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

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

Чтобы не пропускать следующие статьи про построение механической торговой системы - подписывайтесь на наши новые статьи по RSS

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

  1. Трейдер пишет:

    Да, главное вовремя понять что что-то нужно менять!

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

    На самом деле, это все только еще большее погрязание в теории… Рынок итак вещь не самая простая для понимания, а со всеми новомодными тенденциями к алгоритмам и роботописанию вообще складывается ощущение, что рынок только для избранных. Мол не знаешь С# все, вход заказан. Пока не изучишь тонны литературы и сотни часов семинаров на рынок даже не суйся. Все поглощает программирование и искусственный интеллект!
    Я не против того, что бы роботы были. Но сводить всю торговлю на рынке к роботам это уже перебор…

    • Дмитрий Власов пишет:

      Так речь не идет о том, что не знаешь C# – не суйся – речь о том, что если знаешь C# – значительно облегчишь себе жизнь. В любом случае для трейдера главное – голова и мысли в ней. А уж как реализовывать свои идеи – дело техники – хочешь – руками, хочешь – роботом. Как итог, чем более человек ленив, тем больше он должен узнавать, чтобы облегчить себе жизнь.

  3. Artem пишет:

    4 месяца просидел на ТСлабе,понял что без с# никуда.Исключительно личный опыт.Автору проекта спасибо за освещение самых актуальных для меня проблем.

    • Дмитрий Власов пишет:

      Да, я тоже сразу понял, что в TSLab кубики – удобная вещь, но только для ознакомления с возможностями программы. А вот зная C# – можно очень интересные вещи там творить. Главное, чтобы с багами продолжали бороться авторы TSLab в том же режиме, что и сейчас.

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

    Абсолютно согласен , что робот более точно и без колебаний отработает заданный алгоритм – ручками как то всё невпопад получается – опыта нет , а вот иысли есть. Хочется всё учесть и индикаторы и чтоб повадыри правильно вели, и чтоб риски учитывались , да чтоб дозаливаться вовремя , да чтоб ещё и ” переворачиваться”…. В общем как это всё учесть при работе ручками – НЕРЕАЛЬНО.Конечно только проектирование робота дает возможность реализовать весь накопленный опыт(если он есть) и знания , полученные из кучи семинаров,вебинаров,книг,форумов,блогов,от чего иногда начинает просо отьезжать крыша .Да ещё недели просиженные за монитором, кучи слитых денег от неумения применить на практике свои мысли( хотя вроде они правильные , но какой нибудь “поводырь” улетел и привет – за всем сразу уследить не получается . Поэтому даже не хочется тут обсуждать для чего нам нужна автоматизация . Вот тут уж и нужно вникать часами работая над новыми и новыми алгоритмами. Только вот с азами туго получается. Заглянул в проект Stock# – здорово ! Там понятно расписано ,есть библиотека – “дейсвие” – и тут же код к нему. Мечта начинающих. Да вот проблема – поддерживается Quik и SmartCOM.А как же быть с Алором – переходить на другой терминал ? Только к этому привык.Да и вообще хочется “добить” FinLab.MTS. Или уже переходить на другие программы для написания робоьов?В форуме у ФинЛаба я читал , как кто то пишет что без подробныж примеров написать рабочую программу начинающему практически невозможно.Согласен с ним. Ведь у ФинЛаба нет подобного описания “библтотеки” как у проекта Stock#.Мы только вводим …using FinLab.MTS.dll не зная какие методы там прописаны готовыми кодами . Без этих “кипичиков” невозможно слепить что то цельное , да ещё с кучей навернутых алгоритмов и индикаторов. Всё это расписать с головы – нужно быть программистом и трейдером одновременно. Хотя каждый представляет себе что он хотел бы заложить в “мозги” роботу.Даже если “слепить” в Visual Studio удобный интерфейс , чтобы было куда вбивать инструмент,индикаторы,размеры стопов, профитов…условия поведения повадырей при которых открывается или закрывается сделка ,что само по себе уже заморочено (поломать голову придётся точно), то прописать сами алгоритмы в коде без ошибок … Ну скажем даже у очень способных уйдет уйма времени, которого всем не хватает. В FinLab.MTS. привлекает то что есть интерфрйс , соединение с терминалом уже адаптировано(а может это плохо – лучше напрямую ?).Если бы к FinLab.MTS. шла понятная библиотека кодов как у проекта Stock# – задача на порядок облегчилась бы.Тогда даже начинающий дейсвительно мог бы что то слепить.Только нужно сделать доступ к изменению интерфейса ,или как то дополнять окно юзерских настроек – ведь для изощренных стратегий не хватит существующих настроек.Не знаю поддержат ли меня пользователи но думаю что нужно прогнать создание робота используя за основу тот же FinLab.MTS. Может кто то опытный составит библиотеку “командных” кодов по примеру проекта Stock#. Или их можно использовать ? Посмотрите кто опытный – там наверняка всё привязано к своей dll. и к Quik и SmartCOM.Сужу по себе – прочитал 2 книги по С# и NET 4. Попроектировап простенькие программки в Visual Studio , полюбовался на их структуру и связи между элементами – программа шикарная . Но увы от этого я не стал уметь создавать робота , который смогбы сам подать заявку при пробитии уровня сопротивления , при усовии ,что S&P на подьеме и докупиться по достижению 30 пунктов… Если даже я пропишу методы кодами это будет набор кодов. А вот как соединить этот набор кодов в одну систему, которая получает данные из разных источников – я пока не представляю . В ТС лабе связи между библиотеками командами,интерфейсом… организуюся с помощью натаскивания кубиков(т.е . указал что с чем обменивается данными – коды автоматически прописались. Конечно этоудобно.)Но если в FinLab.MTS. была библиотека кодов (c готовыми кодами всевозможных используемых команд ) – работа была бы не менее удобной ,и главное более понятной для изучения языка С#- сразу видишь команду “на языке С#”. В таком варианте даже настройки можно прямо в коде писать не используя интерфейс – ведь уже сам будешь разбираться что за команда и какие тебе там нужны параметры. Вот тогда силы пойдут на творчество , А не на рутинное изучение того как с помощью программирования организовать взаимодействие между всеми компонентами бота сервером брокера , других источников данных и управления их алгоритмами юэерских настроек.ИМХО.

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

    Простите за описки – спешка и зрение уже шалит к вечеру.

    • Дмитрий Власов пишет:

      Евгений, я так понимаю у Вас очень большой интерес к построению собственного робота. Скажу Вам откровенно – использование FinLab.MTS для этого не самый лучший выбор. FinLab.MTS заточена скорее под торговлю на принцыпах парного трейдинга. Конечно, используя библиотеку можно сделать и собственного робота, но для того, чтобы с ним пришлось удобно работать – придется проделать довольно большую работу – начиная от построения графической обвязки (графики и сделки на графике) и заканчивая программированием стандартных индикаторов технического анализа.Советую Вам обратить свое внимание на программу TSLab. Там эта работа уже проделана и Вам останется только разобраться – как описать с помощью C# только логику торговой системы.Я сейчас именно так и поступаю. В ближайшее время постараюсь подробно об этом написать в нашем блоге.
      Второй нормальный вариант – использование проекта S#. Ребята там проделали огромную работу и создали очень удобную библиотеку. Если разберетесь с ней – сможете потом всю жизнь пользоваться. Причем легко сделать адаптер к любому терминалу (хоть зарубежному хоть отечественному).
      Кстати, если хотите торговать через КВИК в АЛОРЕ – есть большой плюс. Торговля через КВИК в Алоре наиболее быстрая по сравнению с другими брокерами, т.к. сервер квиковский в Алоре менее всего загружен (основная масса клиентов торгует через сервер Алор Трейд).
      Успехов в Ваших начинаниях.

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