В настоящее время всё больше приобретает популярность автоматизированная торговля. Для этих целей есть довольно большой спектр инструментов. В данной статье я хочу рассмотреть библиотеку StockSharp, которая позволяет программировать торговых роботов.
Рассмотрим простую систему – входа относительно внутридневных экстремумов.
Алгоритм входа в сделку:
— вход в ЛОНГ — при пробитии и закреплении цены выше внутридневного High
— вход в ШОРТ — при пробитии и закреплении цены ниже внутридневного Low
Управление позицией:
— вход в сделку только с 11.00 до 19.00
— закрытие позиции осуществляется в конце дня, либо по стоп-лосу
Управление рисками:
— риск на сделку равен 3% от цены входа
Для наглядности рассмотрим сделку по этой системе (Рис. 1). Вначале дня (до 11,00), до момента разрешения входа в сделку формируются текущие внутридневные экстремальные значения – High и Low. Вход в сделку осуществляется при наличии следующих условий:
1) Если цена пробивает одно один из экстремумов
2) Закрытие этой свечи происходит выше(ниже) экстремума
3) Длина тела свечи как минимум в два раза больше чем тень по направлению движения свечи
Рис. 1. Пример сделки по системе
Реализация данной системы в Wealth Lab и тестирование на исторических данных дает положительную кривую доходности (Рис. 2). В качестве инструмента выбран фьючерс на индекс РТС, временной интервал исторических данных – с 01.06.2008 до 17.11.2012, таймфрейм – 15 минут, проскальзывание – 50 пунктов.
Статистика системы при торговле 1 контрактом показана на рис. 3.
Рис.2. Кривая доходности торговой системы.
Статистика торговой системы
Теперь, когда определены основные параметры системы, перейдем к её программированию и созданию торгового робота.
Обратимся к последней версии библиотеки для создания торговых роботов Stock# 4.1.6.
В качестве платформы для разработки торгового робота будем использовать самый популярный терминал для торговли – QUIK.
Первое что нужно сделать – это скачать библиотеку Stock# —
https://www.box.com/stocksharp и распаковать архив с библиотекой.
Архив состоит из (Рис. 5):
1) Самой библиотеки в виде подключаемых DLL-файлов (папка References)
2) Примеров для различных терминалов (папка Samples)
3) Гидры – программы для загрузки и обработки рыночных данных (папка Hydra)
4) Файл со справкой по библиотеке (StockSharp.chm)
5) Файла с лицензионным соглашением (StockSharp_EULA_ru.rtf)
6) Файла с информацией о сборке (StockSharpAssemblyInfo.cs)
Рис 5. Структура архива библиотеки Stock# 4.1.6
Далее, чтобы работать полноценно с библиотекой рекомендуется получить лицензию, которая для физических лиц бесплатна. Для этого надо скачать утилиту для получения лицензии
https://www.box.com/stocksharp, запустить её (Рис. 6), ввести логин/пароль (необходимо предварительно зарегистрироваться на сайте StockSharp), сохранить файл с лицензией. Более подробную информацию можно узнать на форуме –
http://stocksharp.com/forum/yaf_postst2297_Litsienziia—Novaia-riedaktsiia.aspx.
Рис 6. Получение лицензии StockSharp
Пришло время настроить терминал QUIK для работы с нашим роботом. Для этого, проще всего импортировать файл настроек QUIK. Т.е. терминал должен иметь определенный набор открытых таблиц (Рис. 7), таких как портфели, все сделки и т.д.
На этом подготовительный этап работы для написания робота закончен. Остается запустить среду Visual Studio и начать программировать. Об этом я расскажу в следующей части статьи.
Код стратегии для Wealth-Lab И файл настроек Quik вы можете скачать на сайте robostroy.ru
Жду продолжения…
Иначе, великая формула про свою рубашку, которая ближе к телу, неизменно побеждает.
В любом случае я считаю, что за хороший продукт стоит платить. А команда Stock# сделала очень многое чтобы их продукт был действительно хорошим.
Может ли автор пояснить, как может цена пробить внутридневный хай??? если цена внутри дня повысилась, это и будет внутридневный хай, если цена ещё повысилась, это будет новый внутридневный хай и цена никогда его не пробъёт, потому что она его формирует.
Вначале дня (до 11,00), до момента разрешения входа в сделку формируются текущие внутридневные экстремальные значения – High и Low.
Тогда ещё пару вопросов: период и уточнить понятие «закрепилась выше/ниже» т.е. закрылась выше канала и открылась новая свеча тоже выше канала? так? или как то по другому?
без учёта проскальзывания и комисии получилось как на картинке.
Поставим комисы и учтём проскальзывание, будет грустно((
В кубиках это 25 шт.
Время написания с ноля 30 мин.)))))
Но надеюсь в сток шарпе всё быстрее и проще.
И ещё, моё мнение: не работают ценовые каналы по времени.
данные стакана, таблица всех сделок?
там есть callback по транзакциям?
гляньте доку stocksharp.com/doc/