Контроль позиций по разным типам входов при помощи SignalTypeOpen и SignalTypeClose.

Контроль позиций по разным типам входов при помощи SignalTypeOpen и SignalTypeClose.

Каждый отдельный робот в OsEngine может открывать множество разнонаправленных позиций. При этом, чтобы различать позиции для различного управления ими в будущем, их необходимо помечать. Поговорим об одном из способов помечать позиции через поля SignalTypeOpen и SignalTypeClose у позиции.

Разберём робота, который торгует ДВЕ торговые логики одновременно, разделяя логику как раз по сигналам.

 

1. О чём речь?

Каждый экземпляр класса робота одновременно может вести несколько позиций. Фактически это число ничем не ограниченно, все упирается в производительность железа и размер средств на счете. В таких случаях роботу бывает необходимо разделять позиции по каким-либо критериям, например, по причинам открытия и/или закрытия позиции. Для этих целей в классе Position имеется два открытых поля:

public string SignalTypeOpen

public string SignalTypeClose

Оба они могут содержать произвольное строковое значение, передаваемое через торговые методы.

Как правило, сигналы используются для анализа позиций и удобства восприятия информации, но также с их помощью можно строить сложные торговые системы, основанные на ветвлении логики в зависимости от сигнала, приведшего к открытию и закрытию позиции.

 

2. Открываем робот-пример. TwoEntrySample.

На ГитХаб в репозитории OsEngine это находится здесь.

Внутри проекта здесь:

 

3. У робота два индикатора, по которым он одновременно торгует.

В остальном он стандартен:

1. Параметры для настройки.

2. Два индикатора. Envelops и PriceChannel. Два индикатора канала.

3. Источник для подключения к одному инструменту.

4. Вход в логику у него через событие завершения свечи.

Настройки такие:

За что отвечают параметры:

1. Regime – режим работы.

a. Off – Выключен.

b. On – Включен и будет входить и в лонг и в шорт.

2. Volume type – режим выбора объёма.

a. Contracts – кол-во контрактов инструмента.

b. Contract currency – валюта контракта.

c. Deposit percent – процент от депозита.

3. Volume – значение объёма. Что именно, зависит от предыдущего пункта. В случае 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://t.me/osengine_official_support

16:37
64

Комментарии

Нет комментариев. Ваш будет первым!