Каждый отдельный робот в OsEngine может открывать множество разнонаправленных позиций. При этом, чтобы различать позиции для различного управления ими в будущем, их необходимо помечать. Поговорим об одном из способов помечать позиции через поля SignalTypeOpen и SignalTypeClose у позиции.
Сегодня с Вами разберём робота, который торгует ДВЕ торговые логики одновременно, разделяя логику как раз по сигналам.
1. О чём речь?
Каждый экземпляр класса робота одновременно может вести несколько позиций. Фактически это число ничем не ограниченно, все упирается в производительность железа и размер средств на счете. В таких случаях роботу бывает необходимо разделять позиции по каким-либо критериям, например, по причинам открытия и/или закрытия позиции. Для этих целей в классе Position имеется два открытых поля:
public string SignalTypeOpen
public string SignalTypeClose
Оба они могут содержать произвольное строковое значение, передаваемое через торговые методы.
Как правило, сигналы используются для анализа позиций и удобства восприятия информации, но также с их помощью можно строить сложные торговые системы, основанные на ветвлении логики в зависимости от сигнала, приведшего к открытию и закрытию позиции.
2. Открываем робот-пример. TwoEntrySample.
На ГитХаб в репозитории OsEngine это находится здесь:
https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/Trend/TwoEntrySample.cs
Внутри проекта здесь:
3. У робота два индикатора, по которым он одновременно торгует.
В остальном он стандартен:
- Параметры для настройки.
- Два индикатора. Envelops и PriceChannel. Два индикатора канала.
- Источник для подключения к одному инструменту.
- Вход в логику у него через событие завершения свечи.
Настройки такие:
За что отвечают параметры:
1. Regime – режим работы.- Off – Выключен.
- On – Включен и будет входить и в лонг и в шорт.
- Contracts – кол-во контрактов инструмента.
- Contract currency – валюта контракта.
- Deposit percent – процент от депозита.
4. Asset in portfolio – тут нужно указывать название валюты, которое будет использовано для расчёта объёма, если Вы выбрали тип объёма “Deposit percent”. В тестере оставляем «Prime». На крипте это обычно “USDT”.
5. Envelop deviation – отклонение для индикатора Envelops.
6. Envelop moving length – длина центральной линии индикатора Envelops.
7. Price channel length – длина индикатора PriceChannel.
4. Во время открытия позиции помечаются строковым сигналом.
Для этого в методе открытия позиции добавляется один параметр:
5. Докупаем вторую позицию, обращая внимание на сигнал в первой.
Если у нас открыта одна позиция с каким-то сигналом, то по ней больше в логику открытия не входим:
6. Сортируем позиции по разным методам закрытия, смотря на сигнал.
Логику закрытия тоже разделяем на две, в зависимости от сигнала открытия:
7. Тип позиции в интерфейсе.
В таблице позиций в роботах и главном интерфейсе есть колонки «Signal Type Open» и «Signal Type Close». Если Вы помечаете позиции таким образом, в данных колонках Вы увидите тип сигнала:
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка 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
Подробнее https://smart-lab.ru/compan...









