В данной статье я хочу рассказать о свое опыте создания управления роботом. В конце заметки вы найдете полностью рабочий алгоритм (робот) для 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
Есть дыры?
Кому интересно поучиться S# и C# у опытного алготрейдера, предлагаю поучаствовать в групповом обучении. Стоимость на каждого будет примерно 2000 рублей.
Подробности:
skladchik.com/threads/Повтор-Торговые-роботы-s-Курс-по-Датамайнингу-ФОРТС-nyse-от-М-Тазетдинова.28550/
2 советую афтору взять и перетестить весь короткий сисок бумаг + си, голд и брент и посмотреть итоговую суммарную эквити