rss

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

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

Блог компании Os_Engine | Закрытие позиций условными заявками. Stop. Profit. TrailingStop. BotTabSimple #15

Продолжаем разбираться с BotTabSimple, источником, предоставляющим функционал для торговли одним инструментом.

В данной статье обсудим методы закрытия позиций условными заявками (Стоп / Профит / ТрейлингСтоп), которые существуют в OsEngine.

Закрытие позиций условными заявками. Stop. Profit. TrailingStop. BotTabSimple #15 

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

Обязательно откройте этого робота и посмотрите, как это выглядит в исходном коде!

Его исходный код на ГитХаб находится здесь: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/BotsFromStartLessons/Lesson9Bot4.cs

Робот-пример находится здесь:

Закрытие позиций условными заявками. Stop. Profit. TrailingStop. BotTabSimple #15

Методы, обсуждаемые ниже, в источнике BotTabSimple находятся здесь:

Закрытие позиций условными заявками. Stop. Profit. TrailingStop. BotTabSimple #15

 

1. Закрыть позицию условной заявкой Stop.

public void CloseAtStop(Position position, decimal priceActivation, decimal priceOrder)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен лимитный ордер на закрытие позиции.
  3. decimal priceOrder – цена ордера.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Limit ордер с ценой priceOrder. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.

 

2. Закрыть позицию условной заявкой Stop с указанием сигнала на закрытие.

public void CloseAtStop(Position position, decimal priceActivation, decimal priceOrder,string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен лимитный ордер на закрытие позиции.
  3. decimal priceOrder – цена ордера.
  4. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Limit ордер с ценой priceOrder. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.
  6. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

3. Закрыть позицию условной заявкой Stop, используя маркет ордер.

public void CloseAtStopMarket(Position position, decimal priceActivation)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен маркет ордер на закрытие позиции.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Market ордер. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.

4. Закрыть позицию условной заявкой Stop, используя маркет ордер, с указанием сигнала на закрытие.

public void CloseAtStopMarket(Position position, decimal priceActivation, string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен маркет ордер на закрытие позиции.
  3. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Market ордер. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.
  6. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

5. Закрыть позицию условной заявкой Trailing Stop.

public void CloseAtTrailingStop(Position position, decimal priceActivation, decimal priceOrder)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен лимитный ордер на закрытие позиции.
  3. decimal priceOrder – цена ордера.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Если ранее по позиции уже была назначена цена priceActivation, то:
    1. Если позиция LONG, новая цена priceActivation должна быть выше, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
    2. Если позиция SHORT, новая цена priceActivation должна быть ниже, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
  3. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Limit ордер с ценой priceOrder. Объём вновь созданного ордера – весь открытый объём по позиции.
  4. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  5. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  6. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.

 

6. Закрыть позицию условной заявкой Trailing Stop с указанием сигнала на закрытие.

public void CloseAtTrailingStop(Position position, decimal priceActivation, decimal priceOrder, string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен лимитный ордер на закрытие позиции.
  3. decimal priceOrder – цена ордера.
  4. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Если ранее по позиции уже была назначена цена priceActivation, то:
    1. Если позиция LONG, новая цена priceActivation должна быть выше, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
    2. Если позиция SHORT, новая цена priceActivation должна быть ниже, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
  3. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Limit ордер с ценой priceOrder. Объём вновь созданного ордера – весь открытый объём по позиции.
  4. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  5. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  6. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.
  7. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

7. Закрыть позицию условной заявкой Trailing Stop, используя маркет ордер.

public void CloseAtTrailingStopMarket(Position position,decimal priceActivation)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен маркет ордер на закрытие позиции.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Если ранее по позиции уже была назначена цена priceActivation, то:
    1. Если позиция LONG, новая цена priceActivation должна быть выше, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
    2. Если позиция SHORT, новая цена priceActivation должна быть ниже, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
  3. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Market ордер. Объём вновь созданного ордера – весь открытый объём по позиции.
  4. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  5. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  6. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.

 

8. Закрыть позицию условной заявкой Trailing Stop, используя маркет ордер, с указанием сигнала на закрытие.

public void CloseAtTrailingStopMarket(Position position, decimal priceActivation, string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен маркет ордер на закрытие позиции.
  3. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Stop.
  2. Если ранее по позиции уже была назначена цена priceActivation, то:
    1. Если позиция LONG, новая цена priceActivation должна быть выше, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
    2. Если позиция SHORT, новая цена priceActivation должна быть ниже, чем предыдущая, иначе вызов метода будет полностью проигнорирован.
  3. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Market ордер. Объём вновь созданного ордера – весь открытый объём по позиции.
  4. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  5. Если позиция LONG, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  6. Если позиция SHORT, будет ожидаться, когда цена поднимется вверх до цены priceActivation.
  7. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

9. Закрыть позицию условной заявкой Profit.

public void CloseAtProfit(Position position, decimal priceActivation, decimal priceOrder)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен лимитный ордер на закрытие позиции.
  3. decimal priceOrder – цена ордера.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Profit.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Limit ордер с ценой priceOrder. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена поднимется вверх до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена опустится вниз до цены priceActivation.

 

10. Закрыть позицию условной заявкой Profit с указанием сигнала на закрытие.

public void CloseAtProfit(Position position, decimal priceActivation, decimal priceOrder, string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен лимитный ордер на закрытие позиции.
  3. decimal priceOrder – цена ордера.
  4. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Profit.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Limit ордер с ценой priceOrder. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена поднимется вверх до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  6. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

11. Закрыть позицию условной заявкой Profit, используя маркет ордер.

public void CloseAtProfitMarket(Position position, decimal priceActivation)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен лимитный ордер на закрытие позиции.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Profit.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Market ордер. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена поднимется вверх до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена опустится вниз до цены priceActivation.

 

12. Закрыть позицию условной заявкой Profit, используя маркет ордер, с указанием сигнала на закрытие.

public void CloseAtProfitMarket(Position position, decimal priceActivation, string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceActivation – цена, при достижении которой на рынок будет выставлен маркет ордер на закрытие позиции.
  3. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся условный ордер на закрытие типа Profit.
  2. Когда цена на бирже достигнет цены priceActivation, для позиции будет создан Market ордер. Объём вновь созданного ордера – весь открытый объём по позиции.
  3. Когда цена на бирже достигнет цены priceActivation, все другие ордера по позиции в статусе Active будут отозваны.
  4. Если позиция LONG, будет ожидаться, когда цена поднимется ввер, до цены priceActivation.
  5. Если позиция SHORT, будет ожидаться, когда цена опустится вниз до цены priceActivation.
  6. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

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

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

Закрытие позиций условными заявками. Stop. Profit. TrailingStop. BotTabSimple #15

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

Закрытие позиций условными заявками. Stop. Profit. TrailingStop. BotTabSimple #15

#20 по плюсам

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