Робот для парного арбитража на основе коинтеграции в OsEngine. PairCointegrationSideTrader.

Робот для парного арбитража на основе коинтеграции в OsEngine. PairCointegrationSideTrader.

Обзор бесплатного робота для парного арбитража в OsEngine. Робот уже готов к запуску на Московской бирже (MOEX), критобиржах вроде Binance, Bitget и т.д. В общем, присоединяйтесь.

Логика:

Робот, торгующий по графику отклонений одного инструмента от другого, рассчитанного через их разницу с мультипликатором. 

На данный график (Коинтеграция) накладывается две линии, рассчитанные из стандартного отклонения, умноженного на мультипликатор. Выше и ниже нуля.

Рис. 1. Коинтеграция.

1. Когда текущее отклонение выше верхней линии на графике отклонений, входим в позицию, рассчитывая на схождение инструментов. Закрываем предыдущую позицию.

2. Когда текущее отклонение ниже нижней линии на графике отклонений, входим в позицию, рассчитывая на схождение инструментов. Закрываем предыдущую позицию.

Рис. 2. Пример логики робота.

Расположение: 

Рис. 3. Расположение робота в проекте.

Код робота: 

Рис. 4. Конструктор.

1. Создаем закрытое поле типа BotTabPair.

2. Вызываем метод из базового класса робота TabCreate, а в качестве параметра передаем туда перечисление BotTabType, в нашем случае Pair. И ниже записываем ссылку в ранее созданное поле.

3. Подписываемся на событие CointegrationPositionSideChangeEvent.

4. Создаем параметр Regime для проверки состояния робота, включен он или же наоборот.

5. Так же создаем параметр MaxPositionCount для настройки максимального количества позиций.

Рис. 5. Метод GetNameStrategyType.

Создаем метод GetNameStrategyType и записываем в нем название робота.

Рис. 6.  Обработчик событий CointegrationPositionSideChangeEvent.

Переходим в обработчик событий:

  1. Проверяем, включен робот или нет, если нет то выходим из события.
  2. Проверяем, есть ли у нас открытые позиции. Если да, то заходим в логику закрытия позиций и потом в логику открытия. Если нет открытых позиций, то сразу переходим с логику открытия позиций.

Рис. 7. Логика закрытия позиций.

1. Смотрим направление Коитеграции:

a. Направление выше верхней линии.

b. Прошлое значение было ниже нижней линии.

То мы закрываем позиции.

2. Так же смотрим направление.

a. Значение ниже нижней линии.

b. Прошлое значение выше верхней линии.

Закрываем позиции.

Рис. 8. Логика открытия позиций.

1. Смотрим количество открытых позиций и выходим из метода, если они равняются максимальному разрешенному количеству позиций.

2. Сравниваем нынешнее направление Коинтеграции, если оно равняется прошлому значению, то выходим из метода.

3. Если коинтеграция пробила верхнюю линию, то на первом инструменте мы заходим в Short, а на втором в Long.

Если была пробита нижняя линия, то в точности наоборот первый инструмент - вход в Long, а второй - вход в Short.

Тестирование: 

Мы провели тестирование на 5 парах, и вот такие у нас получились результаты:

Рис. 9. Результаты тестирования.

 

18:37
337

Комментарии

Нет комментариев. Ваш будет первым!