mirovan
0
All posts from mirovan
  mirovan in mirovan,

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

В данной статье я хочу рассказать о свое опыте создания управления роботом. В конце заметки вы найдете полностью рабочий алгоритм (робот) для 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. Историческая кривая доходности


Сразу приведу результаты ручной торговли на реальном счете (Рис. 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