rss

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

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

Блог компании Os_Engine | Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.

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

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.

Логика:

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

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

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 1. График минимальных отклонений между инструментами с оптимальным мультипликатором.

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

Расположение в проекте OsEngine:

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 3. Расположение робота в проекте.

Код робота: 

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором. 
Рис. 4. Конструктор.

  1. Создаем закрытое поле типа BotTabPair.
  2. Вызываем метод из базового класса робота TabCreate, а в качестве параметра передаем туда перечисление BotTabType, в нашем случае Pair. И ниже записываем ссылку в ранее созданное поле.
  3. Подписываемся на событие CointegrationPositionSideChangeEvent.
  4. Создаем параметр Regime для проверки состояния робота включен он или же наоборот.
  5. Так же создаем параметр MaxPositionCount для настройки максимального количества позиций.

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 5. Метод GetNameStrategyType

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

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 6.  Обработчик событий CointegrationPositionSideChangeEvent.

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

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

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 7. Логика закрытия позиций.

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

  • Направление выше верхней линии.
  • Прошлое значение было ниже нижней линии.

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

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

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

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

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 8. Логика открытия позиций.

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

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

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

Мы провели тестирование на 5 парах одновременно, на крипте, из ТОП 10.
И вот такие у нас получились результаты:

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 9. Результаты тестирования. П/У % > 0.3


Конечно же не все пары инструментов коинтегрированы достаточное кол-во времени чтобы на них зарабатывать. Нужно их подбирать. Как и подбирать отклонение с глубиной подсчёта индикаторов. Но оно того стоит. 


Логика робота буквально из нескольких десятков строк кода. Все расчёты зашиты под капот OsEngine. Приятного использования!
 

Ссылка на робота: github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/PairArbitrage/PairCointegrationSideTrader.cs

Что почитать по алготрейдингу?

1) Сборник статей по парному арбитражу: https://smart-lab.ru/company/os_engine/blog/948250.php

2) Сборник статей по валютному арбитражу: https://smart-lab.ru/company/os_engine/blog/965051.php

3) Сборник статей по индексному арбитражу: https://smart-lab.ru/company/os_engine/blog/997533.php

4) Сборник статей про индикаторы и роботы к ним: https://smart-lab.ru/company/os_engine/blog/966919.php

5) Как стать программистом и изменить свою жизнь: https://smart-lab.ru/company/os_engine/blog/982134.php 

OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support

 Комментарии открыты для друзей, добавляйтесь!

 

★2

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