Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
03 октября 2024, 18:48

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7

Рассмотрим пример того, как выходить из позиции двумя (вообще можно больше, но в примере 2) лимитными ордерами одновременно.

Это стало возможно совсем недавно, т.к. камрады из сообщества очень просили. Метод, которым будем пользоваться для закрытия позиций, называется CloseAtLimitUnsafe. Отличие от CloseAtLimit такое:

  1. Старый CloseAtLimit, когда Вы его вызываете, отзывает все другие ордера на закрытие позиции.
  2. CloseAtLimitUnsafe никакие заявки не отзывает. Просто выставляет в рынок очередной ордер, не обращая внимания на предыдущие. Т.ч. надо быть аккуратными при его использовании.

Точка входа у робота контртредовая на канале Envelops.

Итоговая логика робота на графике выглядит так:

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7 

Шорт, прикрытый стоп ордером, и два лимитных ордера на бирже для закрытия в прибыль.

 

1. Открываем робот-пример. UnsafeLimitsClosingSample.

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

https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/PositionsMicromanagement/UnsafeLimitsClosingSample.cs

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

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7 

 

2. Конструктор и сервисный код.

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7 

  1. Поле для хранения источника BotTabSimple. В это поле потом мы положим объект источника и сможем обращаться к нему из любой части робота. Так удобнее.
  2. Поле для хранения индикатора.
  3. Параметры. Чуть позже поговорим про каждый.
  4. Создание источника BotTabSimple.
  5. Создание параметров.
  6. Создание индикатора Envolops. Установка его длины и отклонения из параметров.
  7. Подписка на событие CandleFinishedEvent (завершение свечи). В обработчике этого события будет вся торговая логика.
  8. Подписка на событие изменение параметров. В этом обработчике мы будем устанавливать индикатору новое значение длины.
  9. Отключаем автоматическое сопровождение позиции.

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

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7 

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

1. Regime – режим работы.
  1. Off – Выключен.
  2. On – включено без ограничений.
  3. OnlyLong – открытие только длинных позиций.
  4. OnlyShort – открытие только коротких позиций.
  5. OnlyClosePosition – доступно только закрытие позиций.
2. Volume type – режим выбора объёма.
  1. Contracts – кол-во контрактов инструмента.
  2. Contract currency – валюта контракта.
  3. Deposit percent – процент от депозита.
3. Volume – значение объёма. Что именно, зависит от предыдущего пункта. В случае Contracts тут указывается объём инструмента. В случае Contract currency здесь указывается кол-во рублей или долларов, которыми нужно войти. В случае с Deposit percent здесь указывается % от общего депозита, которым нужно войти в контракт.
4. Asset in portfolio – тут нужно указывать название валюты, которое будет использовано для расчёта объёма, если Вы выбрали тип объёма “Deposit percent”. В тестере оставляем «Prime». На крипте это обычно “USDT”.
5. Envelops length – длина индикатора Envelops.
6. Envelops deviation – отклонение индикатора Envelops.
7. Stop percent – движение от входа до выхода в % для установки стоп-приказа.
8. Profit limit one percent – расстояние, на котором будет выставлен первый лимитный ордер на закрытие позиции.
9. Profit limit two percent – расстояние, на котором будет выставлен второй лимитный ордер на закрытие позиции.

 

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

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7

  1. Если режим робота Off, выходим из метода.
  2. Если данных по индикатору нет, выходим из метода.
  3. Если данных в индикаторе меньше, чем его длина расчёта, выходим из метода.
  4. Берём все позиции у источника.
  5. Если позиций нет, но режим не позволяет открывать новые позиции, выходим из метода.
  6. Если позиций нет, и режим позволяет, идём в метод открытия позиции.
  7. Если позиции есть, идём в метод закрытия позиций.

4. Логика открытия позиций.

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7

  1. Берём значения индикатора и последней цены по свечам.
  2. Если вдруг значения индикаторов почему-то равны нулю, выходим из логики.
  3. Если цена выше канала, продаём.
  4. Если цена ниже канала, покупаем.

 

5. Логика закрытия позиций.

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7

  1. Если ранее был активирован стоп приказ, или позиция ещё открывается, выходим из метода.
  2. Если по позиции нет закрывающих ордеров, заходим в эту ветку кода.
  3. Рассчитываем цену для ордеров на закрытие.
  4. Считаем кол-во исполненных ордеров, чтобы не выставить лишнего. Это нужно, т.к. на Московской бирже ордер может быть отозван после клиринга, но при этом уже какие-то раньше ордера исполнялись, и остался один ордер на закрытие.
  5. Если ранее по позиции не было исполненных закрывающих ордеров, выставляем два ордера на закрытие.
  6. В случае, если по позиции уже был исполненный лимит ордер, выставляем один.
  7. В логику закрытия по стоп-приказу заходим один раз, просматривая для этого цену ордера.
  8. Считаем цену стоп-ордера отдельно для лонгов, отдельно для шортов.
  9. Выставляем стоп-ордер.

 

6. На выходе.

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

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7

Удачных алгоритмов!

Комментарии открыты для друзей!

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7

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

Одновременный выход из позиций лимитками, ожидающими в рынке. Микроменеджмент позиций в OsEngine #7

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн