StockSharp

StockSharp

Вот уже полтора года прошло с тех пор как я начал писать роботов на библиотеке Stock Sharp. Мой блоггерский долг зовёт. Требует от меня взяться за ручку. И сегодня отличный день чтобы начать об этом писать! Начнём мы издалека, гуманитарно - философски, а заканчивать будем обзором проблем библиотеки S#.Api, хардкорно - хаскерски.

Мы поговорим о программировании в целом и его сложностях, программировании ботов вообще, месте Stock Sharp в этом во всём. Поговорим о тех знаниях которые нужны для освоения этой технологии и о проблемах, которые здесь имеют место.

 
Я олдскульный программист и ориентируюсь на StockSharp Api. Конечно же, мы затронем самые разные аспекты этой платформы, но основной упор будет на ней. Прошу прощения у тех, кто думал найти здесь инструкции по перетаскиванию кубиков в S#.Designer. Вы здесь этого не найдёте.
 
Между тем, это не просто какой-то там обзор. Это ГАЙД по Stock Sharp. Ваш путеводитель по этому причудливому и опасному миру. Что-то мне подсказывает, что он не устареет и через пять лет.
 
Полезен он всем кто когда-нибудь хотел, захочет или прямо сейчас изучает этот самый Stock Sharp.
Поехали!
 
План такой:
 
1. О программистах и их местах обитания;
2. Кто такой программист StockSharp
3. О платформе СтокШарп. Что в неё входит;
4. О способах создания роботов;
5. С чего начать изучая Stock Sharp Api;
6. Так что со стабильностью?
7. Заключение.
 
Первые несколько глав будут с демотиваторами. Прошу не удивляться. Прекрасно понимаю, что так не делают, но ведь и вопрос не простой. Поверьте, я просто пытаюсь быть с Вами честными. СтокШарп - это не для всех.
У меня в скайпе множество начинающих программистов. Когда мне пишут люди в скайп, я пытаюсь со всеми пообщаться и с некоторыми у меня очень хорошие отношения. Так вот, точно не помню, но пять или даже семь человек мне признались, что купили курсы обучения у СтокШарп. И теперь никто из них не может создавать программы на этом самом StockSharp. И это не с проста. Поэтому первые три главы я попытаюсь Вас отговорить от изучения этой технологии.
 

1. Программисты, лесорубы, Stock Sharp

 
Каждый программист может начать работать со StockSharp. Для этого нужно лишь немного времени и сил. Нужно лишь быть программистом, причём не важно какой предметной области. Надо "быть" программитом. Пройти через обучение этому ремеслу, понимать что такое дебаггинг и что такое обратная совместимость. Писать можно на любом языке. На Си++, Делфи, HTML или VBA.
В общем, если Вы когда либо писали на каком-то из языков программирования, отлично! Вы обязательно разберётесь со СтокШарп и справитесь со StockSharp Api.
Но, если Вы ещё не программист, то Вам ПРИДЁТСЯ им стать, если Вы хотите писать на StockSharp. Я имею ввиду не то что Вам придётся идти учится куда-то в институт или довести свои знания до уровня уверенного специалиста, которому за кодинг будут платить. Нет. Но Вам придётся пройти тест на совместимость с профессией. Стать стрессаустойчивым и дотошным. Человеком, который готов разбираться с проблемой двое суток, и не заскучать ни разу. Вы должны обладать полным набором качеств настоящего программиста. Это единственный путь.

 
Это как с профессией лесоруба, хирурга или спасателя. Нужно понимать, готов ли ты на это или нет. И когда решил - делать до конца. На изучение этих профессий нужно время. Очень много. Так же как на изучение StockSharp. И также, как в изучении СтокШарп, тебе нужно обладать набором некоторых базовых качеств.
 

2. Кто такой программист Stock Sharp Api

 
В этой главе посмотрим на качества человека, который уже пишет на СтокШарп. Я это не с себя пишу, это обычные качества любого программиста. Ну об этом уже писал...
Вы пока читаете, примеряйте на себя и думайте. Надо Вам это или нет.
 
 
Качество первое: Любовь доводить дела до конца.
 
Любой программист должен быть таким. И программист торговых роботов, уж если вы им хотите стать.
 
В моей практике, в начале своей карьеры программиста, я часто сталкивался с мыслью, что хочу бросить это дело и уйти на завод. Теперь я понимаю что именно в такие моменты выясняется кто ты, программист или слесарь(ничего не имею против слесарей, так к слову).
 
Когда Вы будете разбираться со Stock Sharp Api, такие ситуации будут возникать постоянно. Чуть ниже я объясню почему это происходит, а пока надо примерить это на себя.
 
Приведу лишь один пример. Как то я делал заказ, и там в боте одновременно использовалось два типа заявок: Лимит и СтопЛимит. Они обрабатываются разными методами на входе и выходе. Взяв свежую версию СтокШарп Апи я собрал программу. После чего выяснилось что стопЗаявки не работают. Это было при готовности проекта 80%.
 
Поскольку StockSharp, либа закрытая, мне не оставалось ничего иного как скачать более старую версию. Очень быстро выяснилось что мой код почти полностью несовместим (там как раз изменяли способ создания индикаторов и ещё что-то с чартом). Я переписал код. Это ещё пара дней. И после запуска выяснилось что индикаторы работают не верно. Никак не прорисовываются и чарт постоянно падает с ошибкой.
 
Я взял версию ещё более раннюю... В это время клиент меня подгонял и нервничал. Нужно было сдавать проект, а я не мог найти стабильную Stock Sharp Api версию! И я его сдал. Через два дня, в очередной раз переписав МТС под другую сборку S.Api удалось таки запустить программу. К чему это я?
 
Подумайте над тем, сможете ли Вы справляться с такими ситуациями? Что Вы будете делать, если Вам придётся переделывать работу три раза подряд, без гарантированного результата?
 
Качество второе: Терпение
 
Очень нравиться определение из Википедии.
 
Терпение — добродетель, спокойное перенесение боли, беды, скорби, несчастья в собственной жизни.
 
Это качество похоже на первое. Просто делать дело несмотря на никакие преграды.
 
Вот и всё! Больше нам ничего не понадобиться. Если Вы Терпеливы и любите всё доводить до конца - то, милости прошу! Если же нет - немедленно бросайте это читать и забудьте про Stock Sharp!
 

3. Что такое StockSharp

 
Stock Sharp (S#) - это проект предоставляющий полный цикл программ для алготрейдинга. По крайней мере, именно так они позиционируются. Это целый набор разных программ, которые могут Вам понадобиться для алго торговли. Код этих программ закрыт. Лицензии запретительные, необходимо покупать. Обучение платное. Имеются закрытые части форума.
 
Кроме программ стокШарп это: сайт, форумы, магазин, коллективный блог.
 
S#.Desingner
 
Станция для создания ботов в визуальном редакторе. На момент написания статьи идёт бетаТестирование. Но тут имеется трабл, т.к. есть мысли что это может длиться несколько лет.
 
Раньше эта программа называлась S#.Studio и она находилась в стадии бета тестов в течение кажется трёх лет. Когда каждый программист попытался её использовать и публично сматирился, было принято решение переименовать её в S#.Desingner и перезапустить тесты.
 
В общем, судьба конкретно этой программы вызывает вопросы.
 
S#.Data
 
Программа для скачивания, хранения и просмотра исторических данных. Несмотря на высокий уровень входа, зарекомендовала себе хорошо. Это одна из немногих программ способных подключаться к торговым точкам и скачивать данные он-лайн.
 
Следует отметить излишнюю сложность программы и не очевидность многих решений.
 
S#.Api
 
Библиотека для написания МТС. Именно о ней мы поговорим подробнее ниже. Пока в общих словах.
 
StockSharp Api это библиотека предоставляющая окружение для создания ботов для трейдинга. С ёе помощью можно тестировать торговые алгоритмы на свечных данных, тиковых и ордер логе. Торговать на нескольких площадках мира, через несколько десятков способов подключения к биржам.
 
На этом мы хорошие стороны этого Апи перестанем обсуждать и ниже будем обсуждать не очень хорошие. Это не значит что хороших сторон нет - они имеются. Но мы здесь не рекламой занимаемся, а обсуждаем нюансы использования этой технологии на биржи. А самое важное в этом - знать чего ожидать и быть готовым столкнуться с определённым типом проблем.
 
Проблемы(пока коротко) СтокШарп Апи, по степени важности:
 
1) Открыты только интерфейсы высокого уровня. Остальной код, а это около 90% - находятся в закрытых dll.
 
2 Стабильность. Могут не работать базовые функции доступа на биржу.
 
3) Обратная совместимость отсутствует.
 
4) Все "вкусные" коннекторы закрыты лицензиями очень дорого.
 
5) В открытом доступе нет готовых шаблонов. Всё нужно покупать!
 
Мы вернёмся к обсуждению этих пунктов чуть позже, в предпоследней главе. Поговорим о том как это обойти и во что нам это обойдётся.
 
А пока давайте поговорим о других способах создания ботов. И я снова Вас буду демотивировать, пытаться сберечь Вам несколько лет жизни.
 

4. Место S# в мире создания роботов

 
Я повидал самых разных методов создания МТС. От самых причудливых вроде VBA EXCEL до самых узкозаточенных, вроде Wealth - Lab. И поверьте мне, StockSharp и S#.Api в частности - не самый простой и не самый стабильный вариант написания роботов.
 
В этой главе поговорим об общепринятых способах создания ботов и месте СтокШарп в этом всём.
 

 

Языки встроенные в терминал

 
Самый старинный и заслуженный способ написания ботов. Так делали ботов когда... Начиная с конца двадцатого века.
 
Сначала появились терминалы. Их было не много. В России это Квик. В Америках это TWS. На Forex куча их, остался MetaTrader.
 
В этих терминалах со временем начали появляться встроенные языки программирования. Из известных в СНГ это Quik и его первый встроенный язык QPLE.
 
Обычно, МТС написанные во встроенном языке терминала - медленные и ограниченный. Никаких HFT алгоритмов сделать не выйдет. Протестировать написанных в такой среде программы можно только в очень редких случаях.
 
Однако! Этот метод написания ботов один из самых простых! Если сравнивать со StockSharp - то на изучение этого способа нужно потратить в 10 раз меньше времени.
 

Визуальные редакторы и S#.Design

 
Сравнительно новый способ создания МТС. Он стал популярен с развитием домашних компьютеров и повышением их мощностей.
 
В общем случае всё сводится к перетаскиванию кубиков логики по рабочему столу программы и созданию из них логики программы.
 
Чуда в таких визуальных редакторах не сотворишь. HFT и сложная логика не доступны. Есть
 
В СНГ самая популярная "кубикоТаскательная станция" это безусловно TsLab. Это лучшее что есть на нашем рынке в плане визуальных редакторов на сегодня. После нескольких дней изучения вопроса можно начинать писать программы по немногу.
 
Несколько месяцев назад, от команды СтокШарп вышла станция с подобным функционалом. Называется S#.Design. Сложно сказать, что у них получилось. У меня ещё не было времени оценить. Первые отзывы мягко говоря настораживают...
 
Этот метод создания МТС также один из самых простых. Если сравнивать со StockSharp - то на изучение этого способа создания роботов нужно потратить в 50 - 100 раз меньше времени. Т.е. буквально, ботов можно начинать делать через пару дней после начала изучения технологии.
 

Библиотеки для написания МТС

 
У крупных банков и заинтересованных групп появились почти сразу же с появлением этого Вашего трейдинга. Однако в массы подобные решения вышли только в последнее десятилетие.
 
Возможна реализация самых разных алгоритмов. Конечно же HFT. Быстрых и медленных, на множестве инструментах сразу. Арбитражи и синтетика. Возможность подключить несколько бирж одновременно. Есть возможность тестирования на тиках и стаканах. В некоторых можно запускать эмулятор биржи, например в моей;).
 
Тут же у нас располагается StockSharp. Это один из первых подобных проектов в СНГ.
 
Это самый сложный и трудозатратный способ написания ботов. Он не многим подходит и вероятность изучить данную технологию очень низка.
 
Но мы сегодня говорим именно про этот блок. Про S#.Api и про то какой путь надо пройти чтобы научиться писать на ней ботов. Об этом в следующей главе.
 
 

5. С чего начать, изучая Stock Sharp Api

 
Во первых, не торопитесь покупать коннекторы и обучение. Да простит меня товарищ Сухов, но до этого нужно понять, справитесь Вы или нет.

решаем для себя, программист я или нет

 
Для этого читаем первую и вторую главы этого Гайда.
 
Напомню кратко: если есть проблемы с дисциплиной или нервишками - не начинайте. Стокшарп апи это технология с высоким уровнем входа.
 
Если проблем с дисциплиной и психическим здоровьем никаких не наблюдается - Вэклом!
 

учим язык программирования СиШарп(C#) на уровне Junior

 
Да, да. Никаких других способов освоить StockSharp нет. Чтобы научиться писать HFT роботов Вам придётся выучить язык программирования СиШарп.
 
На это может уйти от двух до 5ти месяцев. Это процесс не простой. Нужны не просто базовые знания конструкций языка, это не сработает. Нужны средние представления про ООП, многопоточность и перехвате исключений.
 
Да. Это сложно. Читаем вот эту статью и потом вот эту.
 

качаем либу

 
Если чувствуете в себе силы молодого джедая программиста C#, то идём дальше. Теперь нужно скачать несколько дистрибутивов S.Api. Можно конечно надеяться на то что проблем не будет, но это не наш метод. Ещё ни разу беря в руки свежую версию не было такого чтобы у меня сразу проект заработал. Поэтому, плюём через плечо и качаем три последних.
 

проверяем у релиза базовый функционал

 
Например открываем пример подключения к Квик. QuikConnect, и пытаемся подключиться к Квику. Это может быть очень и очень проблематично.
 
Даже если алгоритм будет работать как надо, этот процесс займёт у Вас очень много времени. Это есть у них на форуме. В процессе подключения к бирже через новый коннектор, всегда есть куча нюансов в которых надо разобраться. При этом помните, если что-то не получается с пятого раза, руки опускаются - пора сменить версию S.Api. Вероятно какая-то функция отсохла и не работает.
 

пишем робота!

 
Далее Вы должны написать своего первого робота. Берём из открытой части либы, из примеров, пример робота на пересечении СМА. Для начала запускаем его, и затем перепиливаем его под себя. Например добавляем индикатор АТР для добавления в логику. Делаем трейлинг стоп пересчитывающийся раз в свечу.
 
Этот этап покажет Вам, достаточно ли хорошо Вы понимаете ООП и язык. В плане самой библиотеки там очень и очень просто. Главное разобрать пример.
 
 

покупаем обучение

 
После всех предыдущих операций Вы сможете убедиться, что Вы сможете и будете делать роботов на СтокШарп Апи.
 
В принципе, на этом этапе можно купить обучение, если хотите. В нём Вам расскажут про архитектуру СтокШарп Апи и покажут несколько фокусов. Но! Обучение писалось много лет назад и библиотека очень сильно изменилась с тех пор. То, что Вы там можете увидеть не совпадает с тем, что есть на самом деле. В общем, в итоге Вам придётся разбираться самим.
 
Смотрите сами с этим пунктом. Я лично ничего не покупал, сам разобрался и написал себе сам конструктор роботов. Делается довольно просто и работает прекрасно. Лишь надо понять основные архитектурные вопросы.
 
 

6. Проблемы СтокШарп Апи и способы их обойти

 
Итак, несколько глав выше я писал про проблемы, которые имеют место быть, вот они:
 
1) закрытый код
2) проблемы со стабильностью.
3) Обратная совместимость отсутствует.
4) "вкусные" коннекторы закрыты лицензиями очень дорого.
5) В открытом доступе нет шаблонов для написания роботов. Т.е. в принципе отсутствуют готовые примеры роботов. Нужно их покупать!
 
Теперь обо всём поподробнее
 

закрытый код и стабильность StockSharp Api

 
Объединил эти две проблемы в одну, т.к. они страшны только вместе.
 
Когда в библиотеке что-то одно встречается, то нормально. Например если имеем баг в открытой библиотеке - фиксим его сами. Или сама по себе закрытость библиотеки, вообще никому не мешает, но ровно до того времени пока проект не начнёт падать.
 
Единственный способ это побороть, это:
а) найти версию СтокШарп с открытым кодом. А такие есть. Было пару месяцев когда библиотека была открыта, и они есть в интернете. Ну) У меня то точно есть. Целых четыре версии. Йо-хохо. Но, к сожалению скоро эти программы устареют...
б) придётся разбираться в нескольких версиях библиотеки. От трёх до пяти и выбрать себе более менее стабильную.
 

проблемы с обратной совместимостью

 
Тут рецепт простой. Знайте об этом и не планируйте переходить на новые версии библиотеки. Выбрали одну - качаем скилы на ней, делаем роботов на ней. Переходим только когда что-то в закрытой части кода начало отваливаться. В основном это бывает в коннекторах.
 
Например при обновлении Квик могут отсохнуть какие-то данные. Ну... Тут уж придётся поднапрячься.
 

HFT коннекторы стоят денег

 
Никого не боимся, ведь есть возможность сделать свой! Я понимаю, что это не для всех подходит. Это тяжело. Но лично я, т.к. являюсь не очень богатым человеком нищебродом, написал себе свой коннектор Плаза 2. Спокойно интегрировал в СтокШарп через интерфейсы. И работает он как часы. Вот такой вот рецепт.
 

7. Заключение

 
Ну вот и всё что нужно знать о StockSharp и S#.Api чтобы начать её изучение.
 
Мы поговорили о месте этой технологии в контексте других методов создания ботов. Посмотрели на проблемные места. Я попытался дать Вам примерную дорожную карту того что нужно делать, чтобы начать колдовать на StockSharp.
 
Это не самая простая и вероятно одна из самых проблемных технологий написания роботов. Однако только в ней на сегодня есть множество вкусных вещей, вроде тестера на ордер логе.
 
В общем, решайте сами. Стоит оно того или нет. Пост Вам в помощь!
 
А для себя я уже давно решил. Пока не сделаю библиотеку лучше, буду иногда возвращаться к СтокШарп.
 
 
Удачных алгоритмов!
 
ссылки:
1. СтокШарп http://stocksharp.ru

 

15:02
13305

9 комментариев

12:12
Спасибо) Хорошая статья, мне понравилась.
Подскажите пожалуйста, как я Вас понял, всю стратегию пишем в S#.Api и тесты проводим в ней же? Тогда получается что S#.Desingner — не нужен, если писать на С#?
С уважением, Александр
13:06
Всё верно. Если уметь писать на S#.Api — S#.Designer не нужен.
13:10
А как производить тест?
13:18
у них есть тестовый сервер в рамках Апи. Подключаешь к нему данные накачанные Гидрой и вперёд! В публичных примерах вроде у них есть пример тестирования в Апи робота на машках.
13:22
Спасибо. Попробую.
19:02
А чем хуже TSLab Api по сравнению с S#.Api?
04:21
ТсЛаб — хорошая платформа. Не охота писать про неё плохо, но там и половины нет, что доступно в СтокШарп. В первую очередь это конструктор ботов из кубиков. Т.ч. я напишу про то, чем СтокШарп лучше.
1) В СтокШарп доступен не только слой создания роботов, но и более низкоуровневые абстракции. На нём можно писать свои терминалы и приводы. Без доп прослоек.
2) СтокШарп ни стоит ничего, если не пользоваться ХФТ коннекторами. А можно и свой запилить, о чём есть в статье выше. А ТсЛаб обойдётся в 48 т.р. в год. Для среднего в России депозита — это гарантия слива.
17:04
Алексей, описанное в статье актуально на 2018 год?
Есть ли смысл пользовать S# или проще с нуля под себя написать программу с аналогичным функционалом?
17:43
Единственное что могло измениться это количество багов на стороне библиотеки. Тут я не знаю.
Всё остальное на своих местах.
Так уже вроде написали: http://o-s-a.net/os-engine.html
Всё бесплатно, код открыт.