Максим Милованов
Максим Милованов личный блог
12 марта 2014, 15:38

Мой домашний робот

В данной статье я хочу рассказать о свое опыте создания управления роботом. В конце заметки вы найдете полностью рабочий алгоритм (робот) для QUIK, который работал у меня на реальном счете в 2012 году.
В рамках создания робота передо мной стояла задача разработки торгового алгоритма и его программирования. В свою очередь данная задача делится на следующие подзадачи:
1)      разработка идеи торгового алгоритма
2)      формализация торгового алгоритма с помощью языка программирования (в том числе и выбор платформы и языка программирования)
3)      тестирование алгоритма на исторических данных
4)      оптимизация параметров торгового алгоритма
5)      принятие решения о возможности применения алгоритма
6)      программная реализация робота и применение на реальном счете
7)      организация инфраструктуры для робота
Рассмотрим все эти этапы подробно.
Разработка идеи торгового алгоритма


Я тестировал на истории многие стратегии связанные с использованием индикаторов, паттернов, уровней. В результате исследования, в рамках выработки идеи торгового алгоритма, я остановился на уровнях. Мною были исследованы различные торговые системы, основанные на уровнях – уровни Камариллы, уровни Вуди, уровни де Марка. Основываясь на комплексном анализе подходов к этим уровням, я взял за основу формулы для определения этих уровней
Поскольку все эти уровни являются классом уровней пивот, то есть определяющие точки разворота на основе исторических данных,
Pivot = (High + Low + 2×Close) / 4

Сопротивление:
Resist = (2 × Pivot) — Low

Поддержка
Support = (2 × Pivot) — High

где High, Low, Close – соответственно цены максимума, минимума и закрытия вчерашнего дня.
Параметры входа в сделку мной выбраны следующие.
— При пробитии уровня Resist – осуществляется вход в лонг
— При пробитии уровня Support – осуществляется вход в шорт
Формализация торгового алгоритма
Поскольку по образованию я программист, мне не составляет труда применить один из известных языков программирования для формализации идеи. За основу я выбрал платформу Welath-Lab и язык программирования C#.
В качестве торгуемого инструмента был выбран самый ликвидный актив — фьючерс на индекс РТС.
 
Тестирование алгоритма на исторических данных
Таймфрейм для тестирования был выбран мной равным 15 минутам.
Чтобы не возникало вопросов по тестированию за полный период, приведу сразу эти результаты (Рис. 1 – Рис. 6):
 Мой домашний робот
Рис. 1. Тестирование на исторических данных за 2008-2013 год (1 контракт фьючерса на Индекс РТС).



Мой домашний робот
Рис. 2. Историческая кривая доходности





Читать полный текст статьи
 

 
 
Действительно, картинка получилась очень привлекательная – за  3 года с реинвестированием стартовый капитал увечился с 250 тысяч рублей до 4 миллионов, с приемлемым риском в 30%. Всё очень заманчиво, но нужно помнить, что это исторические данные и как поведет себя робот в будущем, мне было не известно.
Тем не менее, тестирование на 2008-2009 мне дало повод протестировать и на более позднем периоде – 2010-2011 годах. Конечно, результаты были не столь ошеломляющие, но система была рабочая. И я решил начать использовать данную систему вручную на реальном счете, параллельно отлаживая робота и тестируя на тестовом счете.
Сразу приведу результаты ручной торговли на реальном счете (Рис. 10). Напомню, что это был этап тестирования (хоть и на реальном счете), поэтому начальная сумма была 30 т.р.
Мой домашний робот
Рис. 11. Результаты ручной торговли на реальном счете с 01.10.2011 до 12.09.2012
В результате максимальная прибыль системы составила на тот период (почти год тестирования) 48%.



Организация инфраструктуры для робота
Как оказалось этот этап стал не менее сложным при интеграции робота и реальных торгов.
Был установлен компьютер с операционной системой Windows XP SP3. Для синхронизации времени компьютера я использовал программу SymmTime, настроенную на московское время.
Проблемы были и в реальной торговле, через пару недель боевого режима робота, были разрывы связи, а однажды пропал свет.
В свою очередь, при этом пришлось использовать программу XStarter, которая позволяет отслеживать появление окон (прерывание связи, окно логина). Также с помощью этой программы автоматически запускался торговый терминал QUIK по расписанию.
Проблему с выключением электричества я решил путём покупки источника бесперебойного питания, в результате чего компьютер мог работать еще 10 минут от аккумулятора.
Монитор, мышь и клавиатура мне не потребовались (только на этапе настройки компьютера). Подключался к компьютеру я всегда удаленно с помощью программ TeamViewer и RMS Viewer(которой пользуюсь до сих пор).
Для организации и тестирования инфраструктуры ушло еще почти 2 месяца.
Для форс-мажорных ситуаций, были сделаны также образы системы (с помощью программы Acronis), чтобы в случае поломки компьютера, я мог в кратчайшие сроки развернуть систему на новом компьютере.
 
Итоги работы
Поскольку очень много времени ушло на внедрение и организации инфраструктуры, рынок под который был заточен робот изменился. В итоге за 6 месяцев работы, робот заработал около 12 процентов. В 2013 году я отключил данного робота, т.к. робот в начал работать в ноль, т.е. не приносить прибыли.
Для себя я решил, что работать частному инвестору с роботами с точки зрения самостоятельной разработки, организации инфраструктуры и внедрения очень трудозатратно. Поэтому в настоящий момент я бы рекомендовал либо работать в командах или использовать автоматические системы, которые сейчас есть на ранке – Tradematic, TSLab и др.
В качестве завершения данной статьи я предлагаю читателям полный исходный код робота, который работал у меня.

 
Полная версия статьи и код робота для терминала QUIK


22 Комментария
  • Тимофей Мартынов
    12 марта 2014, 16:01
    Плюсанул!
  • Simix
    12 марта 2014, 16:11
    Почему TeamViewer а не стандартный Windows Remote Desktop?
    Есть дыры?
      • Сергей Грошев
        12 марта 2014, 18:34
        Максим Милованов, Максим, если не секрет, какие планы на будущее? С рынка уйдёте? Рассматриваете перспективы трудоустройства вне рынка?
          • Сергей Грошев
            12 марта 2014, 19:58
            Максим Милованов, если не секрет, чем занимаетесь? Просто интересно, на какие стройки народного хозяйства берут со знанием С#
  • Nemo_2000
    12 марта 2014, 16:18
    как то безрадостно. То есть доходность, показанная на тестах не реализовалась в реале. То есть в тестах была осуществлена подгонка под существовавшие условия, что происходит при любой оптимизации, а потом, скажем волатильность увеличивается и стопы начинает выбивать… А создать робота под любую волатильность (+ любые другие показатели) невозможно…
      • vvkg
        12 марта 2014, 17:17
        Максим Милованов, такая же и у меня пестня — заметил что с конца мая 2013 разбег как внутри дня, так и вообще в целом, достаточно сильно уменьшился в размахе… сначала думал на обычный летний флэт, но он продолжился и до конца года, поэтому я тоже выключил своих ботов и пришел к выводу, что надо бы каждые 3 месяца перепроверять результаты и подтачивать алгоритм на текущий характер рынка…
    • Lukasus
      22 марта 2014, 18:43
      Nemo_2000, возможно, нужна динамическая оптимизация
  • Алексей Сухомлинов
    12 марта 2014, 16:48
    спасибо…
  • алексей
    12 марта 2014, 16:59
    ++
  • flowtrader
    12 марта 2014, 17:07
    Оффтоп, некоммерческая реклама :)
    Кому интересно поучиться S# и C# у опытного алготрейдера, предлагаю поучаствовать в групповом обучении. Стоимость на каждого будет примерно 2000 рублей.

    Подробности:
    skladchik.com/threads/Повтор-Торговые-роботы-s-Курс-по-Датамайнингу-ФОРТС-nyse-от-М-Тазетдинова.28550/
  • Чеширский Кот
    12 марта 2014, 17:28
    Спасибо за пищу для размышлений! можно подправить пару моментов. попробую в ручном режиме на фьючерсе газпром. Если интересно, спросите через пару месяцев, поделюсь резульатом
  • Алексей
    12 марта 2014, 17:38
    нет логина на данном сайте, сюда прикрепите если не трудно…
  • ves2010
    12 марта 2014, 17:43
    1 надо было брать несколько бумаг… т.е торговать диверсифицированно… можно было торговать и спот, т.к средняя сделка высока
    2 советую афтору взять и перетестить весь короткий сисок бумаг + си, голд и брент и посмотреть итоговую суммарную эквити
  • Алексей
    12 марта 2014, 17:50
    Мне кажется если бы вы не отключили робота, а просто подправили параметры, можно было ещё извлечь пользу. А то обидно, видно что проделана серьёзная работа и всего 12%
    • Сергей Грошев
      12 марта 2014, 18:52
      Алексей, там параметров особо и нет — уровень стопа только, так из него много не выжмешь. Плодотворная дебютная идея сдулась — усохли трендовухи, вот и вся причина. Вернутся ли — кто знает…
  • SuperTrend
    12 марта 2014, 21:17
    Молодца!+++

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн