Первое, что Вы увидите, открыв OsEngine, обозреватель решения с папками справа. Главное в этот момент не испугаться.
В этих папках хранится весь проект, но для создания роботов Вам нужно примерно знать всего несколько. Ну а сами папки, по сути, можно называть «Пространства имён», которые Вы должны научиться использовать. Про это сегодня и поговорим.
Пространства имен — это способ группировки кода, который позволяет организовать логическую и удобную структуру проекта. Как правило, типы, связанные общей идеей и схожей функциональностью, содержатся в общем пространстве.
Во время разработки торговых роботов в OsEngine нужно примерно представлять откуда и что берётся. Где хранятся те или иные сущности в проекте. Рассмотрим базовые пространства, которые Вам точно пригодятся.
1 Часть. Теория.
Начнём с того, что посмотрим, что такое пространство имён в исходном коде на примере почти любого робота, доступного в платформе. В файле с кодом пространство задается при помощи ключевого слова namespace:
Рис. 1. Пространство имен у робота.
В итоге получается, что пространство имён, это открывающие и закрывающие кавычки в каком-то файле, внутри которых содержатся классы.
Это сделано почти во всех языках программирования для того, чтобы мы (программисты) могли сначала группировать какие-то классы вместе. А ещё для того, чтобы можно было в другие классы быстро добавлять много кода (классов) из других пространств имён.
Когда Вы пишите код класса (ну или робота в OsEngine), нужные пространства можно импортировать при помощи директивы using в начале класса робота:
Рис. 2. Включение пространств имен.
Альтернативой добавлению пространств имён вверху файла является использование нужного пространства при объявлении переменной. Но в таком случае нужно знать проект наизусть, что немного сложно:
Рис. 3. Вариант использования пространства имен.
2 Часть. Что точно надо знать о пространствах имён OsEngine.
Посмотрим на те пространства имён, которые точно Вам понадобятся во время создания роботов.
1 Entity
Пространство имён, которое содержит примитивы, повсеместно используемые в роботах:
- Extensions – расширения и специфические математические операции.
- MarketDepth – стакан котировок.
- MyTrade – мой трейд. Результат сведения двух ордеров на бирже.
- Order – ордер… Или заявка. Как хотите.
- Portfolio – портфель для торговли.
- Position – позиция у робота.
- PositionOnBoard – позиция по портфелю.
- Security – инструмент для торговли.
- StrategyParameter – параметры стратегии и всё, что с этим связано.
- Trade – сделка. Единичная запись в ленте сделок.
2 OsTrader.Panels
Содержит в себе базовую инфраструктуру роботов:
1 BotPanel – интерфейс для всех роботов. Штука, став наследником от которой, любой класс становится роботом.
3 OsTrader.Panels.Attributes
Пространство имён с одним классом, позволяющим упрощать создание робота через атрибут. Не переживайте, скоро Вы поймёте зачем это:
4 OsTrader.Panels.Tab
Данное пространство имён содержит все источники, которые есть в OsEngine. Его тоже Вам придётся добавлять в каждого робота:
3 Часть. Где лежат примеры роботов.
Конечно же, первым делом также захочется посмотреть примеры. Внутри проекта они находятся вот здесь:
Роботы располагаются в проекте в папке Robots. Порядок, который предлагаем мы:
- Роботы на паттернах. По ним есть классные серии постов с разбором что это и зачем. И что такое свечи.
- Скринеры. Роботы для одновременной торговли десятков бумаг. Это обязательно захочется в какой-то момент.
- Индексные арбитражи. Примеры того, как торговать от индекса. По этому направлению также есть хорошая серия статей.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php