rss

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

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

Блог компании Os_Engine | Вход в позицию через кастомный айсберг для реала. Как протолкнуть в рынок миллиард, не привлекая внимания санитаров? Микроменеджмент позиций в OsEngine #6

Паттерн позволяет разделить логику тестирования от логики реального входа внутри робота для того, чтобы при входе и выходе не «рисовать свечи» своими большими заявками.

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

Итоговая логика робота на графике в реале выглядит так:

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

В примере на графике получилось даже зайти лучше, чем если бы мы это делали одним ордером.

Сам робот – классический отбойник от боллинджера с выходом в % по стопу и профиту. Выход также в реале через «кастомный айсберг».

 

1. Открываем робот-пример. CustomIcebergSample.

На ГитХаб в репозитории OsEngine это находится здесь:

https://github.com/AlexWan/OsEngine

Внутри проекта здесь:

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

 

2. Конструктор и сервисный код.

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

  1. Поле для хранения источника BotTabSimple. В это поле потом мы положим объект источника и сможем обращаться к нему из любой части робота. Так удобнее.
  2. Поле для хранения индикатора.
  3. Параметры. Чуть позже поговорим про каждый.
  4. Создание источника BotTabSimple.
  5. Создание параметров.
  6. Создание индикатора Bollinger. Установка его длины и отклонения из параметров.
  7. Подписка на событие CandleFinishedEvent (завершение свечи). В обработчике этого события будет вся торговая логика.
  8. Подписка на событие изменение параметров. В этом обработчике мы будем устанавливать индикатору новое значение длины.
  9. Отключаем автоматическое сопровождение позиции.

Настройки такие:

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

За что отвечают параметры:

1.Regime – режим работы.
  1. Off – Выключен.
  2. On – Включен и будет входить и в лонг и в шорт.
  3. OnlyLong – открытие только длинных позиций.
  4. OnlyShort – открытие только коротких позиций.
  5. OnlyClosePosition – доступно только закрытие позиций.
2. Volume type – режим выбора объёма.
  1. Contracts – кол-во контрактов инструмента.
  2. Contract currency – валюта контракта.
  3. Deposit percent – процент от депозита.
3. Volume – значение объёма. Что именно, зависит от предыдущего пункта. В случае Contracts тут указывается объём инструмента. В случае Contract currency здесь указывается кол-во рублей или долларов, которыми нужно войти. В случае с Deposit percent здесь указывается % от общего депозита, которым нужно войти в контракт.
4. Asset in portfolio – тут нужно указывать название валюты, которое будет использовано для расчёта объёма, если Вы выбрали тип объёма “Deposit percent”. В тестере оставляем «Prime». На крипте это обычно “USDT”.
5. Bollinger length – длина индикатора Bollinger.
6. Bollinger deviation – отклонение для индикатора Bollinger.
7. Profit percent – движение от входа до выхода в %. Для установки профит-приказа.
8. Stop percent – движение от входа до выхода в %. Для установки стоп-приказа.
9. Iceberg count – количество ордеров, которым будет взят установленный объём.
10. Iceberg seconds between orders – время между ордерами в секундах.

 

3. Вход в логику в событии завершения свечи.

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

  1. Если режим робота Off, выходим из метода.
  2. Если данных по индикатору нет, выходим из метода.
  3. Если данных в индикаторе меньше, чем его длина расчёта, выходим из метода.
  4. Берём все позиции у источника.
  5. Если позиций нет, но режим не позволяет открывать новые позиции, выходим из метода.
  6. Если позиций нет и режим позволяет, идём в метод открытия позиции.
  7. Если позиции есть, идём в метод закрытия позиций.

 

4. Логика открытия позиций.

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

  1. Берём значения Bollinger и цену закрытия последней свечи.
  2. Если вдруг значения индикатора равны нулю, выходим из метода.
  3. Если цена выше верхней линии боллинджера, это сигнал зайти в шорт.
  4. Если мы в тестере или оптимизаторе, то заходим по маркету всем объёмом.
  5. Если мы в реальных торгах, создаём объект «IcebergMaker» для входа в шорт по заданному кол-ву ордеров.
  6. Если цена ниже нижней линии боллинджера, это сигнал зайти в лонг.
  7. Если мы в тестере или оптимизаторе, заходим по маркету всем объёмом.
  8. Если мы в реальных торгах, создаём объект «IcebergMaker» для входа в шорт по заданному кол-ву ордеров.

 

5. Логика закрытия позиций.

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

  1. Если статус позиции не Open, выходим из метода. Либо позиция ещё открывается, либо уже закрывается.
  2. Берём цену закрытия последней свечи с рынка.
  3. Расчёт и проверка профита для ЛОНГ позиции.
  4. Обратите внимание, что для того, чтобы не дублировать код, создание айсберга на закрытие вынесено в отдельный метод. ClosePos.
  5. Расчёт и проверка профита для ШОРТ позиции.
  6. Расчёт и проверка стопа для ЛОНГ позиции.
  7. Расчёт и проверка стопа для ШОРТ позиции.
  8. Если мы в тестере или оптимизаторе, закрываемся по маркету всем объёмом.
  9. Если мы в реале, создаём объект для закрытия позиции.

 

6. Создание Iceberg для открытия позиции.

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

  1. Создание объекта «icebergMaker».
  2. Указываем объём, которым нужно будет открыться.
  3. Указываем кол-во ордеров, которыми будет открыт этот объём.
  4. Указываем кол-во секунд между ордерами.
  5. Указываем источник, по которому будет открыта позиция.
  6. Указываем сторону, в которую надо открывать позицию. Side.Buy / Side.Sell
  7. Вызываем метод Start(). Он запускает процесс набора позиции.

 

7. Создание Iceberg на закрытие позиции.

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

  1. Создание объекта «icebergMaker».
  2. Указываем кол-во ордеров, которыми будет закрыта позиция.
  3. Указываем кол-во секунд между ордерами.
  4. Указываем источник, по которому будет закрыта позиция.
  5. Указываем позицию, которую нужно закрыть.
  6. Вызываем метод Start(). Он запускает процесс закрытия позиции.

 

8. IcebergMaker. Сервис.

Вход в позицию через кастомный айсберг для реала. Как протолкнуть в рынок миллиард, не привлекая внимания санитаров? Микроменеджмент позиций в OsEngine #6
  1. Кол-во ордеров, которыми будет открыт этот объём.
  2. Кол-во секунд между ордерами.
  3. Объём для открытия позиции.
  4. Источник, по которому нужно открывать или закрывать позицию.
  5. Сторона открытия позиции, если её надо открывать.
  6. Позиция для закрытия.
  7. Позиция открывающаяся. Её указывать не нужно. Это сервисное поле, в которое сохраняется позиция во время открытия.
  8. Вызываем метод Start(). Он запускает процесс набора или закрытия позиции.
  9. Если позиция для закрытия не указана, значит надо открывать позицию. Вызываем метод OpenPositionMethod.
  10. Если позиция для закрытия указана, значит надо закрывать позицию. Вызываем метод ClosePositionMethod.

 

9. IcebergMaker. Логика открытия позиции.

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

  1. Если кол-во ордеров указано меньше 1, то ставим минимум 1 ордер.
  2. Рассчитываем все объёмы для ордеров, которыми будем входить.
  3. В случае, если расчётный объём не совпадает с указанным пользователем из-за «округлений», в первый ордер добавляем потерянный объём.
  4. Цикл открытия позиции.
  5. Buy. Если зашли в цикл впервые, вызываем метод BuyAtMarket, создавая новую позицию.
  6. Buy. Если зашли в цикл не в первый раз, докупаем для ранее созданной позиции, вызывая метод BuyAtMarketToPosition.
  7. Sell. Если зашли в цикл впервые, вызываем метод SellAtMarket, создавая новую позицию.
  8. Sell. Если зашли в цикл не в первый раз, допродаём для ранее созданной позиции, вызывая метод SellAtMarketToPosition.

 

10. IcebergMaker. Логика закрытия позиции.

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

  1. Если кол-во ордеров указано меньше 1, то ставим минимум 1 ордер.
  2. Берём из позиции текущий объём, его и будем закрывать.
  3. Считаем для каждого будущего ордера объём заранее.
  4. В случае, если расчётный объём не совпадает с указанным пользователем из-за «округлений», в первый ордер добавляем потерянный объём.
  5. Цикл для выставления ордеров на закрытие позиций.

 

11. На выходе.

Робот, торгующий классическую контртрендовую стратегию по каналу Bollinger, но в реале входящий и выходящий серией заявок, а не одной:

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

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

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

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

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

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

  • обсудить на форуме:
  • OsEngine

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