Первое, что Вы увидите, открыв OsEngine, обозреватель решения с папками справа. Главное в этот момент не испугаться.
В этих папках хранится весь проект, но для создания роботов Вам нужно примерно знать всего несколько. Ну а сами папки, по сути, можно называть «Пространства имён», которые Вы должны научиться использовать.
Пространства имен — это способ группировки кода, который позволяет организовать логическую и удобную структуру проекта. Как правило, типы, связанные общей идеей и схожей функциональностью, содержатся в общем пространстве.
Во время разработки торговых роботов в OsEngine нужно примерно представлять откуда и что берётся. Где хранятся те или иные сущности в проекте. Рассмотрим базовые пространства, которые Вам точно пригодятся.
1 Часть. Теория.
Начнём с того, что посмотрим, что такое пространство имён в исходном коде на примере почти любого робота, доступного в платформе. В файле с кодом пространство задается при помощи ключевого слова namespace:
Рис. 1. Пространство имен у робота.
В итоге получается, что пространство имён, это открывающие и закрывающие кавычки в каком-то файле, внутри которых содержатся классы.
Это сделано почти во всех языках программирования для того, чтобы мы (программисты) могли сначала группировать какие-то классы вместе. А ещё для того, чтобы можно было в другие классы быстро добавлять много кода (классов) из других пространств имён.
Когда Вы пишите код класса (ну или робота в OsEngine), нужные пространства можно импортировать при помощи директивы using в начале класса робота:
Рис. 2. Включение пространств имен.
Альтернативой добавлению пространств имён вверху файла является использование нужного пространства при объявлении переменной. Но в таком случае нужно знать проект наизусть, что немного сложно:
Рис. 3. Вариант использования пространства имен.
2 Часть. Что точно надо знать о пространствах имён OsEngine.
Посмотрим на те пространства имён, которые точно Вам понадобятся во время создания роботов.
1. Entity
Пространство имён, которое содержит примитивы, повсеместно используемые в роботах:
1. Extensions – расширения и специфические математические операции.
2. MarketDepth – стакан котировок.
3. MyTrade – мой трейд. Результат сведения двух ордеров на бирже.
4. Order – ордер… Или заявка. Как хотите.
5. Portfolio – портфель для торговли.
6. Position – позиция у робота.
7. PositionOnBoard – позиция по портфелю.
8. Security – инструмент для торговли.
9. StrategyParameter – параметры стратегии и всё, что с этим связано.
10. Trade – сделка. Единичная запись в ленте сделок.
2.OsTrader.Panels
Содержит в себе базовую инфраструктуру роботов:
BotPanel – интерфейс для всех роботов. Штука, став наследником от которой, любой класс становится роботом.
3. OsTrader.Panels.Attributes
Пространство имён с одним классом, позволяющим упрощать создание робота через атрибут. Не переживайте, скоро Вы поймёте зачем это:
4. OsTrader.Panels.Tab
Данное пространство имён содержит все источники, которые есть в OsEngine. Его тоже Вам придётся добавлять в каждого робота:
3 Часть. Где лежат примеры роботов.
Конечно же, первым делом также захочется посмотреть примеры. Внутри проекта они находятся вот здесь:
Роботы располагаются в проекте в папке Robots. Порядок, который предлагаем мы:
1. Роботы на паттернах. По ним есть классные серии постов с разбором что это и зачем. И что такое свечи.
2. Скринеры. Роботы для одновременной торговли десятков бумаг. Это обязательно захочется в какой-то момент.
3. Индексные арбитражи. Примеры того, как торговать от индекса. По этому направлению также есть хорошая серия статей.
Удачных алгоритмов!
Комментарии