Расчёт объёмов для робота. Скринеры #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

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