Блог им. mirovan

Создание торгового робота с помощью библиотеки Stock#. Часть 1. Разработка торгового алгоритма и обзор библиотеки Stock# 4.1.6

В настоящее время всё больше приобретает популярность автоматизированная торговля. Для этих целей есть довольно большой спектр инструментов. В данной статье я хочу рассмотреть библиотеку StockSharp, которая позволяет программировать торговых роботов.
Рассмотрим простую систему – входа относительно внутридневных экстремумов.
Алгоритм входа в сделку:
— вход в ЛОНГ — при пробитии и закреплении цены выше внутридневного High
— вход в ШОРТ — при пробитии и закреплении цены ниже внутридневного Low
Управление позицией:
— вход в сделку только с 11.00 до 19.00
— закрытие позиции осуществляется в конце дня, либо по стоп-лосу
Управление рисками:
— риск на сделку равен 3% от цены входа
Для наглядности рассмотрим сделку по этой системе (Рис. 1). Вначале дня (до 11,00), до момента разрешения входа в сделку формируются текущие внутридневные экстремальные значения – High и Low. Вход в сделку осуществляется при наличии следующих условий:

1) Если цена пробивает одно один из экстремумов
2) Закрытие этой свечи происходит выше(ниже) экстремума
3) Длина тела свечи как минимум в два раза больше чем тень по направлению движения свечи
Создание торгового робота с помощью библиотеки Stock#. Часть 1. Разработка торгового алгоритма и обзор библиотеки Stock# 4.1.6
Рис. 1. Пример сделки по системе
Реализация данной системы в Wealth Lab и тестирование на исторических данных дает положительную кривую доходности (Рис. 2). В качестве инструмента выбран фьючерс на индекс РТС, временной интервал исторических данных – с 01.06.2008 до 17.11.2012, таймфрейм – 15 минут, проскальзывание – 50 пунктов.
Статистика системы при торговле 1 контрактом показана на рис. 3.
Создание торгового робота с помощью библиотеки Stock#. Часть 1. Разработка торгового алгоритма и обзор библиотеки Stock# 4.1.6
Рис.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)


Создание торгового робота с помощью библиотеки Stock#. Часть 1. Разработка торгового алгоритма и обзор библиотеки Stock# 4.1.6
Рис 5. Структура архива библиотеки Stock# 4.1.6
Далее, чтобы работать полноценно с библиотекой рекомендуется получить лицензию, которая для физических лиц бесплатна. Для этого надо скачать утилиту для получения лицензии https://www.box.com/stocksharp, запустить её (Рис. 6), ввести логин/пароль (необходимо предварительно зарегистрироваться на сайте StockSharp), сохранить файл с лицензией. Более подробную информацию можно узнать на форуме – http://stocksharp.com/forum/yaf_postst2297_Litsienziia—Novaia-riedaktsiia.aspx.
Создание торгового робота с помощью библиотеки Stock#. Часть 1. Разработка торгового алгоритма и обзор библиотеки Stock# 4.1.6
Рис 6. Получение лицензии StockSharp
Пришло время настроить терминал QUIK для работы с нашим роботом. Для этого, проще всего импортировать файл настроек QUIK. Т.е. терминал должен иметь определенный набор открытых таблиц (Рис. 7), таких как портфели, все сделки и т.д.

На этом подготовительный этап работы для написания робота закончен. Остается запустить среду Visual Studio и начать программировать. Об этом я расскажу в следующей части статьи.

Код стратегии для Wealth-Lab И файл настроек Quik вы можете скачать на сайте robostroy.ru 
★86
29 комментариев
отлично
Вот он, грааль! Бегу за лицензией! Жду-недождусь, когда чудо-робот наколбасит мне на BMW X6.
avatar
вот это я понимаю пошаговая инструкция. А то на этих вэбинарах черти что рассказывают, кроме вот таких действий.
Жду продолжения…
Дядя самым честным вправил, на самом деле все это лежит в открытом доступе, просто я попытался как-то уменьшить и систематизировать, упростить. Через недельку опубликую продолжение — простого робота с использованием S#.
спасибо за инструкцию. жду продолжения
avatar
Максим Милованов, есть маленькая тонкость: статус лицензии в будущем и, самое главное, статусы коннекторов к разным платформам. В идеале — логичные разъяснения механизма монетизации.

Иначе, великая формула про свою рубашку, которая ближе к телу, неизменно побеждает.
старый трейдер, для физиков лицензия в данный момент бесплатна, платно для юр. лиц (насколько я помню).
В любом случае я считаю, что за хороший продукт стоит платить. А команда Stock# сделала очень многое чтобы их продукт был действительно хорошим.
еще б где нибудь коды и файл настроек на яндекс.народе выложить например, а то робострой просить залогиниться или это так и задуманно?
avatar
Хотел накидать по быстрому системку, но прочитав был сильно удивлён описанием системы!!!
Может ли автор пояснить, как может цена пробить внутридневный хай??? если цена внутри дня повысилась, это и будет внутридневный хай, если цена ещё повысилась, это будет новый внутридневный хай и цена никогда его не пробъёт, потому что она его формирует.
Николай Лазарев, Внутридневные хай и лоу.

Николай Лазарев,
Вначале дня (до 11,00), до момента разрешения входа в сделку формируются текущие внутридневные экстремальные значения – High и Low.
avatar
Natty, Ага, значит формируем ценовой канал от открытия до 11.00 правильно?
Тогда ещё пару вопросов: период и уточнить понятие «закрепилась выше/ниже» т.е. закрылась выше канала и открылась новая свеча тоже выше канала? так? или как то по другому?
Накидал этот грааль кубиками минут за 30.
без учёта проскальзывания и комисии получилось как на картинке.
Поставим комисы и учтём проскальзывание, будет грустно((
Николай Лазарев, код в коммент не помещается, так бы выложил.
В кубиках это 25 шт.
Время написания с ноля 30 мин.)))))
Но надеюсь в сток шарпе всё быстрее и проще.
И ещё, моё мнение: не работают ценовые каналы по времени.
Николай Лазарев, думаю автор хотел показать наглядность применения стокшарпа а не ценность алгоритма, хотя конечно и немного пролукавил возможно))
Saro, Дык я нисколько не сомневаюсь в возможностях стокшарпа. Интересно было как раз проверить алгоритм.
Николай Лазарев, у него с 2008 года, а у тебя с 2012!) думаю резы одинаковые почти
Saro, Интрадей тестировать с 2008??? Результат будет всегда предсказуем: профит вплоть до 2012, дальше или отсутствие профита или слив. Совсем другой рынок сейчас.
доступен ли экспорт котировок на S# в свою программу?
данные стакана, таблица всех сделок?
avatar
VpnS, S# — это фреймворк на языке С#, следовательно, экспортировать можно собственноручно, куда только фантазии хватит.
avatar
Natty, там есть классы для этого, или нужно всё таки самостоятельно проводить экспорт через DDE?
avatar
VpnS, вывод через DDE там уже организован
Максим Милованов, ещё вопрос важный.
там есть callback по транзакциям?
avatar
VpnS, да, есть.
гляньте доку stocksharp.com/doc/
avatar
спасибо. добавил в избранное!
avatar
Максим отличная работа!
Интересно, автору плюс
avatar
Спасибо! Будем ждать продолжения и читать. +++
avatar
Плюс и спасибо! Продолжение ждем!)
avatar

теги блога Максим Милованов

....все тэги



UPDONW
Новый дизайн