Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
Сегодня в 10:33

Торговые методы для закрытия позиций BotTabSimple #14

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

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

Торговые методы для закрытия позиций BotTabSimple #14

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

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

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

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

Торговые методы для закрытия позиций BotTabSimple #14

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

Торговые методы для закрытия позиций BotTabSimple #14

1. Закрыть все позиции робота по маркету.

public void CloseAllAtMarket()

Механика:

  1. По всем открытым у источника позициям отзываются все типы ордеров.
  2. Все открытые позиции, которые есть у источника, закрываются при помощи Market ордеров.

 

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

public void CloseAllAtMarket(string signalType)

Параметры:

  1. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. По всем открытым у источника позициям отзываются все типы ордеров.
  2. Все открытые позиции, которые есть у источника, закрываются при помощи Market ордеров.
  3. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

3. Закрыть позицию фейковым ордером.

public void CloseAtFake(Position position, decimal volume, decimal price, DateTime time)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal volume – объём, на который будет закрыта позиция.
  3. decimal price – цена ордера.
  4. DateTime time – время исполнения ордера.

Механика:

  1. Для позиции, переданной в метод, создаётся Fake ордер на закрытие. Fake означает, что ордер не будет выставлен на биржу, а будет сведён внутри терминала.
  2. Цена для ордера берётся из price, объём из volume, время исполнения из time.

 

4. Закрыть позицию маркет ордером.

public void CloseAtMarket(Position position, decimal volume)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal volume – объём, на который будет закрыта позиция.

Механика:

  1. Для позиции, переданной в метод, создаётся Market ордер на закрытие.
  2. Объём ордера берётся из переменной volume.

 

5. Закрыть позицию маркет ордером с указанием сигнала на закрытие.

public void CloseAtMarket(Position position, decimal volume, string signalType)

Параметры:

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

Механика:

  1. Для позиции, переданной в метод, создаётся Market ордер на закрытие.
  2. Объём ордера берётся из переменной volume.
  3. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

6. Закрыть позицию лимитным ордером.

public void CloseAtLimit(Position position, decimal priceLimit, decimal volume)

Параметры:

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

Механика:

  1. Для позиции, переданной в метод, создаётся Limit ордер на закрытие.
  2. Цена для ордера берётся из priceLimit, объём из volume.

 

7. Закрыть позицию лимитным ордером с указанием сигнала на закрытие.

public void CloseAtLimit(Position position, decimal priceLimit, decimal volume,string signalType)

Параметры:

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

Механика:

  1. Для позиции, переданной в метод, создаётся Limit ордер на закрытие.
  2. Цена для ордера берётся из priceLimit, объём из volume.
  3. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

8. Закрыть позицию лимитным ордером в небезопасном режиме.

public void CloseAtLimitUnsafe(Position position, decimal priceLimit, decimal volume)

Параметры:

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

Механика:

  1. Для позиции, переданной в метод, создаётся Limit ордер на закрытие.
  2. Цена для ордера берётся из priceLimit, объём из volume.
  3. В отличие от безопасных методов данный не будет отзывать предыдущие заявки на закрытие позиции в статусе Active (на бирже). Таким образом можно держать на бирже одновременно множество ордеров на закрытие по одной позиции.

 

9. Закрыть позицию айсбергом.

public void CloseAtIceberg(Position position, decimal priceLimit, decimal volume, int ordersCount)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceLimit – цена, по которой будет выставлен новый ордер.
  3. decimal volume – объём, на который будет закрыта позиция.
  4. int ordersCount — количество ордеров, которые будут выставлены последовательно.

Механика:

  1. Для позиции, переданной в метод, создаётся Айсберг ордер на закрытие.
  2. Цена для ордера берётся из priceLimit, объём из volume, количество ордеров в связке берётся из переменной ordersCount.
  3. Работать айсберг будет только в реальном подключении. В тестере заявка преобразуется в Limit ордер.

 

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

public void CloseAtIceberg(Position position, decimal priceLimit, decimal volume, int ordersCount, string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceLimit – цена, по которой будет выставлен новый ордер.
  3. decimal volume – объём, на который будет закрыта позиция.
  4. int ordersCount — количество ордеров, которые будут выставлены последовательно.
  5. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся Айсберг ордер на закрытие.
  2. Цена для ордера берётся из priceLimit, объём из volume, количество ордеров в связке берётся из переменной ordersCount.
  3. Работать айсберг будет только в реальном подключении. В тестере заявка преобразуется в Limit ордер.
  4. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

 

11. Закрыть позицию айсбергом, применяя Market ордера.

public void CloseAtIcebergMarket(Position position, decimal priceLimit, decimal volume,int ordersCount ,int minMillisecondsDistance)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceLimit – цена, по которой будет выставлен новый ордер.
  3. decimal volume – объём, на который будет закрыта позиция.
  4. int ordersCount — количество ордеров, которые будут выставлены последовательно.
  5. int minMillisecondsDistance – минимальный временной промежуток между выставляемыми ордерами, указанный в миллисекундах. В 1 секунде – 1000 миллисекунд.

Механика:

  1. Для позиции, переданной в метод, создаётся Айсберг ордер на закрытие.
  2. Объём для всех ордеров будет взят из volume, количество ордеров в связке берётся из переменной ordersCount.
  3. Работать айсберг будет только в реальном подключении. В тестере заявка преобразуется в Market ордер.
  4. Поскольку ордера типа Market, и они будут исполняться довольно быстро, есть возможность установить между ордерами минимальное время, чтобы между ордерами была задержка.

 

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

public void CloseAtIcebergMarket(Position position, decimal priceLimit, decimal volume, int ordersCount, int minMillisecondsDistance, string signalType)

Параметры:

  1. Position position – позиция, которая будет закрыта.
  2. decimal priceLimit – цена, по которой будет выставлен новый ордер.
  3. decimal volume – объём, на который будет закрыта позиция.
  4. int ordersCount — количество ордеров, которые будут выставлены последовательно.
  5. int minMillisecondsDistance – минимальный временной промежуток между выставляемыми ордерами, указанный в миллисекундах. В 1 секунде – 1000 миллисекунд.
  6. string signalType – тип закрытия для позиции, который будет записан в поле позиции SignalTypeClose.

Механика:

  1. Для позиции, переданной в метод, создаётся Айсберг ордер на закрытие.
  2. Объём для всех ордеров будет взят из volume. Количество ордеров в связке берётся из переменной ordersCount.
  3. Работать айсберг будет только в реальном подключении. В тестере заявка преобразуется в Market ордер.
  4. Поскольку ордера типа Market, и они будут исполняться довольно быстро, есть возможность установить между ордерами минимальное время, чтобы между ордерами была задержка.
  5. Данная модификация метода запишет в поле позиции SignalTypeClose переменную signalType.

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

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

Торговые методы для закрытия позиций BotTabSimple #14

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

Торговые методы для закрытия позиций BotTabSimple #14

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

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

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