rss

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

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

Блог компании Os_Engine | Торговые методы для открытия позиций. BotTabSimple #12

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

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

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

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

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

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

В проекте это тут:

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

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

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

И здесь:

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

1. Вход в позицию по текущей цене с использованием маркет ордера.

public Position BuyAtMarket(decimal volume) – покупка.

public Position SellAtMarket(decimal volume) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся ордер с типом исполнения Market, с объёмом, указанным в переменной volume. Но если биржа не поддерживает такой тип заявок, будет создан ордер с типом исполнения Limit с проскальзыванием в 40 шагов цены.
  3. Ордер на открытие отправляется на биржу, позиция возвращается из метода.

2. Вход в позицию по текущей цене с использованием маркет ордера, с указанием названия сигнала.

public Position BuyAtMarket (decimal volume, string signalType) – покупка.

public Position SellAtMarket(decimal volume, string signalType) – продажа.

Параметры:

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

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся ордер с типом исполнения Market, с объёмом, указанным в переменной volume. Но если биржа не поддерживает такой тип заявок, будет создан ордер с типом исполнения Limit с проскальзыванием в 40 шагов цены.
  3. Ордер на открытие отправляется на биржу. Позиция возвращается из метода.
  4. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.

 

3. Вход в позицию по определённой цене с использованием лимит ордера.

public Position BuyAtLimit(decimal volume, decimal priceLimit) – покупка.

public Position SellAtLimit(decimal volume, decimal priceLimit) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.
  2. decimal priceLimit – цена ордера.

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся ордер с типом исполнения Limit, с объёмом, указанным в переменной volume, и ценой, указанной в переменной priceLimit.
  3. Ордер на открытие отправляется на биржу, позиция возвращается из метода.

 

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

public Position BuyAtLimit(decimal volume, decimal priceLimit, string signalType) – покупка.

public Position SellAtLimit(decimal volume, decimal priceLimit, string signalType) – продажа.

Параметры:

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

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся ордер с типом исполнения Limit, объёмом, указанным в переменной volume, и ценой, указанной в переменной priceLimit.
  3. Ордер на открытие отправляется на биржу, позиция возвращается из метода.
  4. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.

 

5. Айсберг-лимит. Вход в позицию несколькими ордерами типа Limit.

public Position BuyAtIceberg(decimal volume, decimal price, int ordersCount) – покупка.

public Position SellAtIceberg(decimal volume, decimal price, int ordersCount) – продажа.

Параметры:

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

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся серия ордеров с типом исполнения Limit в количестве ordersCount с общим объёмом, указанным в переменной volume, и ценой, указанной в переменной price.
  3. Первый из серии ордеров на открытие отправляется на биржу, позиция возвращается из метода.
  4. Серия ордеров выставляется по очереди, по мере исполнения ордеров на бирже.
  5. Серия работает только в реальных торгах. В тестере вместо серии ордеров будет создан один.

 

6. Айсберг-лимит. Вход в позицию несколькими ордерами типа Limit с указанием названия сигнала.

public Position BuyAtIceberg (decimal volume, decimal price, int orderCount, string signalType) – покупка.

public Position SellAtIceberg(decimal volume, decimal price, int orderCount, string signalType) – продажа.

Параметры:

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

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся серия ордеров с типом исполнения Limit в количестве ordersCount, с общим объёмом, указанным в переменной volume, и ценой, указанной в переменной price.
  3. Первый из серии ордеров на открытие отправляется на биржу, позиция возвращается из метода.
  4. Серия ордеров выставляется по очереди, по мере исполнения ордеров на бирже.
  5. Серия работает только в реальных торгах. В тестере вместо серии ордеров будет создан один.
  6. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.

 

7. Айсберг-маркет. Вход в позицию несколькими ордерами типа Market.

public Position BuyAtIcebergMarket (decimal volume, int orderCount, int minMillisecondsDistance) – покупка.

public Position SellAtIcebergMarket (decimal volume, int orderCount, int minMillisecondsDistance) – продажа.

Параметры:

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

Механика:

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

 

8. Айсберг-маркет. Вход в позицию несколькими ордерами типа Market с указанием названия сигнала.

public Position BuyAtIcebergMarket (decimal volume, int orderCount,int minMillisecondsDistance, string signalType) – покупка.

public Position SellAtIcebergMarket (decimal volume, int orderCount, int minMillisecondsDistance, string signalType) – продажа.

Параметры:

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

Механика:

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

 

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

public Position BuyAtFake(decimal volume, decimal price, DateTime time) – покупка.

public Position SellAtFake(decimal volume, decimal price, DateTime time) – продажа.

Параметры:

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

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся ордер с типом исполнения Limit, с объёмом, указанным в переменной volume, и ценой, указанной в переменной price.
  3. Ордер на открытие НЕ отправляется на биржу. Ордер будет исполнен по времени time. Сведён внутри платформы без выставления реальных заявок на биржу.
  4. Позиция возвращается из метода.

 

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

public Position BuyAtFake(decimal volume, decimal price, DateTime time, string signalType) – покупка.

public Position SellAtFake(decimal volume, decimal price, DateTime time, string signalType) – продажа.

Параметры:

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

Механика:

  1. После вызова метода происходит создание позиции в определённом направлении.
  2. Для открытия позиции создаётся ордер с типом исполнения Limit с объёмом, указанным в переменной volume, и ценой, указанной в переменной price.
  3. Ордер на открытие НЕ отправляется на биржу. Ордер будет исполнен по времени time. Сведён внутри платформы без выставления реальных заявок на биржу.
  4. Позиция возвращается из метода.
  5. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.

 

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

public void BuyAtStop(decimal volume, decimal priceLimit, decimal priceRedLine, StopActivateType activateType) – покупка.

public void SellAtStop(decimal volume, decimal priceLimit,decimal priceRedLine, StopActivateType activateType) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.
  2. decimal priceLimit – цена ордера.
  3. decimal priceRedLine – цена на рынке, после которой ордер будет выставлен.
  4. StopActivateType activateType – сторона ожидания цены.
    1. StopActivateType.HigherOrEqual – ожидаем, что цена на рынке станет больше либо равна priceRedLine, после чего будет выставлен ордер.
    2. StopActivateType.LowerOrEqual – ожидаем, что цена на рынке стане меньше либо равна priceRedLine, после чего будет выставлен ордер.

Механика:

  1. После вызова метода происходит создание условия, при котором мы ожидаем цену priceRedLine для того, чтобы при её достижении выставить в рынок лимитные ордер по цене priceLimit с объёмом, указанным в volume.
  2. При этом объект позиции не будет создан до тех пор, пока цена priceRedLine не будет достигнута.
  3. Мы можем ожидать цену как сверху от текущей (StopActivateType.HigherOrEqual), так и снизу (StopActivateType.LowerOrEqual).

 

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

public void BuyAtStop(decimal volume, decimal priceLimit, decimal priceRedLine, StopActivateType activateType, string signalType) – покупка.

public void SellAtStop(decimal volume, decimal priceLimit, decimal priceRedLine, StopActivateType activateType, string signalType) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.
  2. decimal priceLimit – цена ордера.
  3. decimal priceRedLine – цена на рынке, после которой ордер будет выставлен.
  4. StopActivateType activateType – сторона ожидания цены.
    1. StopActivateType.HigherOrEqual – ожидаем, что цена на рынке станет больше либо равна priceRedLine, после чего будет выставлен ордер.
    2. StopActivateType.LowerOrEqual – ожидаем, что цена на рынке станет меньше либо равна priceRedLine, после чего будет выставлен ордер.
  5. string signalType – тип открытия для позиции, который будет записан в поле позиции SignalTypeOpen.

Механика:

  1. После вызова метода происходит создание условия, при котором мы ожидаем цену priceRedLine для того, чтобы при её достижении выставить в рынок лимитный ордер по цене priceLimit с объёмом, указанным в volume.
  2. При этом объект позиции не будет создан до тех пор, пока цена priceRedLine не будет достигнута.
  3. Мы можем ожидать цену как сверху от текущей (StopActivateType.HigherOrEqual), так и снизу (StopActivateType.LowerOrEqual).
  4. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.

 

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

public void BuyAtStop(decimal volume, decimal priceLimit,decimal priceRedLine, StopActivateType activateType,int expiresBars) – покупка.

public void SellAtStop(decimal volume, decimal priceLimit, decimal priceRedLine, StopActivateType activateType,int expiresBars) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.
  2. decimal priceLimit – цена ордера.
  3. decimal priceRedLine – цена на рынке, после которой ордер будет выставлен.
  4. StopActivateType activateType – сторона ожидания цены.
    1. StopActivateType.HigherOrEqual – ожидаем, что цена на рынке станет больше либо равна priceRedLine, после чего будет выставлен ордер.
    2. StopActivateType.LowerOrEqual – ожидаем, что цена на рынке станет меньше либо равна priceRedLine, после чего будет выставлен ордер.
  5. int expiresBars – время жизни условной заявки в кол-ве свечей.

Механика:

  1. После вызова метода происходит создание условия, при котором мы ожидаем цену priceRedLine для того, чтобы при её достижении выставить в рынок лимитный ордер по цене priceLimit с объёмом, указанным в volume.
  2. При этом объект позиции не будет создан до тех пор, пока цена priceRedLine не будет достигнута.
  3. Мы можем ожидать цену как сверху от текущей (StopActivateType.HigherOrEqual), так и снизу (StopActivateType.LowerOrEqual).
  4. В рамках данной модификации метода мы должны указывать кол-во свечей (expiresBars), которые будет существовать данная заявка.

 

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

public void BuyAtStop(decimal volume, decimal priceLimit, decimal priceRedLine, StopActivateType activateType,int expiresBars, string signalType) – покупка.

public void SellAtStop(decimal volume,decimal priceLimit, decimal priceRedLine, StopActivateType activateType, int expiresBars, string signalType) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.
  2. decimal priceLimit – цена ордера.
  3. decimal priceRedLine – цена на рынке, после которой ордер будет выставлен.
  4. StopActivateType activateType – сторона ожидания цены.
    1. StopActivateType.HigherOrEqual – ожидаем, что цена на рынке станет больше либо равна priceRedLine, после чего будет выставлен ордер.
    2. StopActivateType.LowerOrEqual – ожидаем, что цена на рынке станет меньше либо равна priceRedLine, после чего будет выставлен ордер.
  5. int expiresBars – время жизни условной заявки в кол-ве свечей.
  6. string signalType – тип открытия для позиции, который будет записан в поле позиции SignalTypeOpen.

Механика:

  1. После вызова метода происходит создание условия, при котором мы ожидаем цену priceRedLine для того, чтобы при её достижении выставить в рынок лимитный ордер по цене priceLimit с объёмом, указанным в volume.
  2. При этом объект позиции не будет создан до тех пор, пока цена priceRedLine не будет достигнута.
  3. Мы можем ожидать цену как сверху от текущей (StopActivateType.HigherOrEqual), так и снизу (StopActivateType.LowerOrEqual).
  4. В рамках данной модификации метода мы должны указывать кол-во свечей (expiresBars), которые будет существовать данная заявка.
  5. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.

 

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

public void BuyAtStop(decimal volume, decimal priceLimit, decimal priceRedLine,  StopActivateType activateType, int expiresBars, string signalType, PositionOpenerToStopLifeTimeType lifeTimeType) – покупка.

public void SellAtStop(decimal volume, decimal priceLimit, decimal priceRedLine,  StopActivateType activateType, int expiresBars, string signalType, PositionOpenerToStopLifeTimeType lifeTimeType) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.
  2. decimal priceLimit – цена ордера.
  3. decimal priceRedLine – цена на рынке, после которой ордер будет выставлен.
  4. StopActivateType activateType – сторона ожидания цены.
    1. StopActivateType.HigherOrEqual – ожидаем, что цена на рынке станет больше либо равна priceRedLine, после чего будет выставлен ордер.
    2. StopActivateType.LowerOrEqual – ожидаем, что цена на рынке станет меньше либо равна priceRedLine, после чего будет выставлен ордер.
  5. int expiresBars – время жизни условной заявки в кол-ве свечей.
  6. string signalType – тип открытия для позиции, который будет записан в поле позиции SignalTypeOpen.
  7. PositionOpenerToStopLifeTimeType lifeTimeType – тип времени жизни условной заявки.
    1. PositionOpenerToStopLifeTimeType.CandlesCount – время жизни будет измеряться в количестве свечек.
    2. PositionOpenerToStopLifeTimeType.NoLifeTime – время жизни будет бесконечным, пока робот принудительно не отзовёт данную условную заявку.

Механика:

  1. После вызова метода происходит создание условия, при котором мы ожидаем цену priceRedLine для того, чтобы при её достижении выставить в рынок лимитный ордер по цене priceLimit с объёмом, указанным в volume.
  2. При этом объект позиции не будет создан до тех пор, пока цена priceRedLine не будет достигнута.
  3. Мы можем ожидать цену как сверху от текущей (StopActivateType.HigherOrEqual), так и снизу (StopActivateType.LowerOrEqual).
  4. В рамках данной модификации метода мы должны указывать кол-во свечей (expiresBars), которые будет существовать данная заявка.
  5. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.
  6. Также в данной модификации метода необходимо явно указывать тип жизни условия. Можно делать так, что оно не будет иметь времени жизни, указав последним параметром NoLifeTime.

 

16. Вход в позицию по определённой цене с использованием МАРКЕТ ордера, который будет выставлен при достижении определённой цены на рынке, с указанием срока жизни в виде кол-ва свечек, с указанием названия сигнала, с явным указанием типа жизни условия.

public void BuyAtStopMarket(decimal volume, decimal priceLimit, decimal priceRedLine,  StopActivateType activateType, int expiresBars, string signalType, PositionOpenerToStopLifeTimeType lifeTimeType) – покупка.

public void SellAtStopMarket(decimal volume, decimal priceLimit, decimal priceRedLine,  StopActivateType activateType, int expiresBars, string signalType, PositionOpenerToStopLifeTimeType lifeTimeType) – продажа.

Параметры:

  1. decimal volume – объём для открытия позиции.
  2. decimal priceLimit – цена ордера. Будет использована, если коннектор не поддерживает Market ордера.
  3. decimal priceRedLine – цена на рынке, после которой ордер будет выставлен.
  4. StopActivateType activateType – сторона ожидания цены.
    1. StopActivateType.HigherOrEqual – ожидаем, что цена на рынке станет больше либо равна priceRedLine, после чего будет выставлен ордер.
    2. StopActivateType.LowerOrEqual – ожидаем, что цена на рынке станет меньше либо равна priceRedLine, после чего будет выставлен ордер.
  5. int expiresBars – время жизни условной заявки в кол-ве свечей.
  6. string signalType – тип открытия для позиции, который будет записан в поле позиции SignalTypeOpen.
  7. PositionOpenerToStopLifeTimeType lifeTimeType – тип времени жизни условной заявки.
    1. PositionOpenerToStopLifeTimeType.CandlesCount – время жизни будет измеряться в количестве свечек.
    2. PositionOpenerToStopLifeTimeType.NoLifeTime – время жизни будет бесконечным, пока робот принудительно не отзовёт данную условную заявку.

Механика:

  1. Создаёт Market заявку.
  2. После вызова метода происходит создание условия, при котором мы ожидаем цену priceRedLine для того, чтобы при её достижении выставить в рынок Market ордер с объёмом, указанным в volume.
  3. При этом объект-позиция не будет создан до тех пор, пока цена priceRedLine не будет достигнута.
  4. Мы можем ожидать цену как сверху от текущей (StopActivateType.HigherOrEqual), так и снизу (StopActivateType.LowerOrEqual).
  5. В рамках данной модификации метода мы должны указывать кол-во свечей (expiresBars), которые будет существовать данная заявка.
  6. Данная модификация метода создаст позицию, в поле SignalTypeOpen у которой будет записано signalType.
  7. Также в данной модификации метода необходимо явно указывать тип жизни условия. Можно делать так, что оно не будет иметь времени жизни, указав последним параметром NoLifeTime.

 

17. Отмена всех условных заявок на открытие позиций типа BuyAtStopи SellAtStop.

public void BuyAtStopCancel() – снятие условных заявок на покупку.

public void SellAtStopCancel() – снятие условных заявок на продажу.

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

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

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

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 #12


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