rss

Профиль компании

Финансовые компании

Блог компании OsEngine | Механика работы Stop и Profit приказов для открытых позиций в OsEngine

В статье рассматривается сопровождение открытых позиций отложенными приказами в OsEngine: выставление стопов и профитов через интерфейс, программный интерфейс для роботов, различия внутренних и серверных стоп-ордеров и особенности тестирования. 

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

 

1) Закрытие позиции LONG (Buy) по стопу.

Для ограничения убытка при движении цены против позиции Long на неё выставляется стоп-ордер, закрывающий позицию при достижении заданного уровня.

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

Нажмите ПКМ на позицию и в контекстном меню выберите «Закрыть выбранную»:

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

Откроется окно закрытия позиции по стопу:

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

1) Цена активации стоп-ордера — уровень, при достижении которого позиция будет закрыта.
2) Цена ордера, который будет выставлен для закрытия позиции. Рекомендуется закладывать запас на проскальзывание, чтобы ордер гарантированно исполнился.
3) Объем позиции, который будет закрыт.
4) Чекбокс «Серверный стоп ордер» — если включен, стоп-ордер сразу уходит на биржу.

Уровень стопа отображается на графике и в таблице позиций:

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

При достижении ценой уровня активации на рынок отправляется ордер на продажу по указанной цене, и позиция закрывается.

 

2) Закрытие позиции LONG по профиту

Для фиксации прибыли на позицию Long выставляется профит-ордер, закрывающий позицию при достижении целевого уровня.

Нажмите ПКМ на позицию и в контекстном меню выберите «Закрыть выбранную»:

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

Откроется окно закрытия позиции по профиту:

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

1. Цена активации — целевой уровень фиксации прибыли.
2. Цена ордера, который будет выставлен после активации. Указывается чуть ниже цены активации, чтобы ордер гарантированно исполнился.

Уровень профита отображается на графике. При достижении ценой уровня активации на рынок отправляется ордер на продажу, и позиция закрывается:

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

 

3) Закрытие позиции SHORT — зеркально

Для позиции Short используется то же окно, цены выставляются зеркально:
• Стоп для позиции Short: цена активации выше рынка, ордер на покупку выставляется выше цены активации — чтобы гарантировать исполнение.
• Профит для позиции Short: цена активации ниже рынка, ордер на покупку выставляется чуть выше цены активации.

 

4) Внутренние и серверные стоп-приказы

OsEngine поддерживает два вида стоп-приказов для открытых позиций — внутренние и серверные:

• Внутренний стоп-приказ хранится внутри OsEngine. Движок отслеживает цену последней сделки и отправляет ордер на рынок только после достижения цены активации. До этого момента на бирже ордера нет.
• Серверный стоп-приказ сразу уходит на биржу и хранится там. За ценой активации следит биржа и порождает заявку при касании уровня — в том числе когда OsEngine выключен.

Некоторые биржи поддерживают стоп-ордера. В окне закрытия позиции для них предназначен чекбокс «Серверный стоп ордер»:

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

Если подключённый сервер не поддерживает серверные стопы, чекбокс неактивен, а методы *OnServer в коде роботов автоматически откатываются на внутренние стопы.

 

5) Программный интерфейс

Внутренние стопы и профиты выставляются методами CloseAtStop / CloseAtProfit / CloseAtTrailingStop. Пример — встроенный робот PriceChannelBreak: подписка на событие открытия позиции, раздельная логика для BUY и SELL, выставление заявок с проскальзыванием в шагах цены инструмента.

Серверные стопы для позиции выставляются методами:
• CloseAtStopOnServer(position, priceActivation, priceOrder) — серверный стоп-лимит на закрытие;
• CloseAtStopMarketOnServer(position, priceActivation) — серверный стоп-маркет на закрытие;
• CloseAtStopOnServerCancel(position) — отзыв серверных стопов позиции.

Пример вызова:
_tab.CloseAtStopOnServer(pos, priceActivation, priceOrder);

Готовый пример робота — ServerStopOrdersSample (папка Robots/TechSamples). После открытия позиции робот на следующей свече выставляет закрывающий серверный стоп-лимит по лучшему биду и перевыставляет его по актуальной цене, если за заданное число свечей стоп не сработал.

 

6) Особенности серверных стопов в Т-Инвестициях

• Активированный биржей стоп-ордер приходит в робота со статусом Cancel — это штатное поведение: биржа завершает жизнь стопа, порождая дочернюю заявку. Исполнение приходит на дочернем ордере (Limit для stop-limit, Market для stop-market).
• Дочерняя заявка автоматически привязывается к позиции в журнале робота.
• После перезапуска или переподключения активные стоп-ордера автоматически запрашиваются с сервера и восстанавливаются в журнале.
• Цена выставленного серверного стопа не редактируется: для изменения уровня ордер снимается и выставляется заново.

 

7) Особенности тестирования

В тестере и оптимизаторе проскальзывание для стопов и профитов не учитывается: ордера исполняются строго по цене активации. Это общая практика торговых платформ.

Одинаковые значения в графах «цена активации» и «цена ордера» — штатная ситуация: исполнение по касанию с последующей активацией ордера по другой цене позволяло «рисовать» прибыль в тестере, поэтому такое поведение было исключено.

Методы *OnServer в тестере и оптимизаторе работают как внутренние стопы, поэтому поведение робота в тесте и в бою совпадает.

 

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

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

Механика работы Stop и Profit приказов для открытых позиций в OsEngine

Скачать OsEngine: https://github.com/AlexWan/OsEngine

Официальная поддержка OsEngine в MAX: https://max
Канал Научный трейдинг в MAX: https://max.ru/

Поддержка OsEngine в Телеграм: https://t.me/osengine_official_support 
Канал Научный трейдинг (Bad Quant) в Телеграм: https://t.me/bad_quant

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
  • обсудить на форуме:
  • OsEngine
6.7К | ★1

теги блога OS_Engine_team

....все тэги



UPDONW
Новый дизайн