Расчёт объёмов для робота. Скринеры #8

Продолжаем изучение скринеров. Сегодня поговорим о правильном расчёте объёма для торгов по отдельным инструментам. Метод, рассматриваемый ниже, Вам пригодится при создании своих роботов на базе скринеров.  Метод, описанный в данном посте, будет использован во всех примерах скринеров, которые будут обсуждаться в данной серии. Посмотрим на него один раз.1. Открываем пример.Открываем папку Robots/Screeners и открываем пример SmaScreener.cs:   2. Параметры для расчёта объёма.Для расчёта объёма сначала нужно создать три параметра: Объявление параметров для расчёта объёмов.Создание параметров в конструкторе робота.Параметры:VolumeType – тип расчёта объёма, который Вы хотите использовать.Volume – значение объёма. В зависимости от разных типов, выбранных первым параметром, данное значение используется в коде по-разному.TradeAssetInPortfolio – используется, если выбран тип объёма «Deposit percent». В этом параметре хранится название валюты, которую мы хотим взять для торгов. В большинстве случаев нужно оставлять «Prime».Сам метод для расчёта объёмов здесь: На вход метод принимает источник BotTabSimple для расчёта объёма по конкретной бумаге:  3. GetVolume. Режим «Contracts».Режим выбора объёма, в котором объём указывается пользователем напрямую. В таком случае расчётов не будет:  4. GetVolume. Режим «Contract currency».Режим «Валюта контракта». Для MOEX нужно указывать рубли, для крипты USDT: Считаем объём в валюте контракта. Для этого запрашиваем у источника по бумаге текущую цену.Если проходят боевые торги, нужно в обязательном порядке проверить лотность инструмента и обрезать объём по кол-ву возможных знаков после запятой для бумаги.Если робот работает в тестере или оптимизаторе, обрезаем объём до 6 знаков после запятой. 5. GetVolume. Режим «Deposit percent».Режим «Процент от депозита». Самый сложный вариант расчёта объёма. Запрашиваем у источника портфель.В данном участке кода мы берём текущий доступный объём средств по портфелю. Либо берём в теле портфеля, либо ищем выбранную валюту в позициях по портфелю.Рассчитываем объём с учётом лотности инструмента.Обрезаем итоговый объём по кол-ву разрешённых знаков у бумаги или, в случае если мы в тестере или оптимизаторе, оставляем 7 знаков после запятой.Удачных алгоритмов!Оглавление данной серии статей здесь: https://smart-lab.ru/company/os_engine/blog/1131003.phpКомментарии открыты для друзей!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

Апр 7, 2025 - 14:57
 0
Расчёт объёмов для робота. Скринеры #8

Продолжаем изучение скринеров. Сегодня поговорим о правильном расчёте объёма для торгов по отдельным инструментам. Метод, рассматриваемый ниже, Вам пригодится при создании своих роботов на базе скринеров.  

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

Расчёт объёмов для робота. Скринеры #8

1. Открываем пример.

Открываем папку Robots/Screeners и открываем пример SmaScreener.cs:

Расчёт объёмов для робота. Скринеры #8 

 

2. Параметры для расчёта объёма.

Для расчёта объёма сначала нужно создать три параметра:

Расчёт объёмов для робота. Скринеры #8 

  1. Объявление параметров для расчёта объёмов.
  2. Создание параметров в конструкторе робота.

Параметры:

  1. VolumeType – тип расчёта объёма, который Вы хотите использовать.
  2. Volume – значение объёма. В зависимости от разных типов, выбранных первым параметром, данное значение используется в коде по-разному.
  3. TradeAssetInPortfolio – используется, если выбран тип объёма «Deposit percent». В этом параметре хранится название валюты, которую мы хотим взять для торгов. В большинстве случаев нужно оставлять «Prime».

Сам метод для расчёта объёмов здесь:

Расчёт объёмов для робота. Скринеры #8 

На вход метод принимает источник BotTabSimple для расчёта объёма по конкретной бумаге:

Расчёт объёмов для робота. Скринеры #8 

 

3. GetVolume. Режим «Contracts».

Режим выбора объёма, в котором объём указывается пользователем напрямую. В таком случае расчётов не будет:

Расчёт объёмов для робота. Скринеры #8 

 

4. GetVolume. Режим «Contract currency».

Режим «Валюта контракта». Для MOEX нужно указывать рубли, для крипты USDT:

Расчёт объёмов для робота. Скринеры #8 

  1. Считаем объём в валюте контракта. Для этого запрашиваем у источника по бумаге текущую цену.
  2. Если проходят боевые торги, нужно в обязательном порядке проверить лотность инструмента и обрезать объём по кол-ву возможных знаков после запятой для бумаги.
  3. Если робот работает в тестере или оптимизаторе, обрезаем объём до 6 знаков после запятой.

 

5. GetVolume. Режим «Deposit percent».

Режим «Процент от депозита». Самый сложный вариант расчёта объёма.

Расчёт объёмов для робота. Скринеры #8 

  1. Запрашиваем у источника портфель.
  2. В данном участке кода мы берём текущий доступный объём средств по портфелю. Либо берём в теле портфеля, либо ищем выбранную валюту в позициях по портфелю.
  3. Рассчитываем объём с учётом лотности инструмента.
  4. Обрезаем итоговый объём по кол-ву разрешённых знаков у бумаги или, в случае если мы в тестере или оптимизаторе, оставляем 7 знаков после запятой.

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

Оглавление данной серии статей здесь: https://smart-lab.ru/company/os_engine/blog/1131003.php

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

Расчёт объёмов для робота. Скринеры #8

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

Расчёт объёмов для робота. Скринеры #8