Изображение блога
Алексей Ван <o-s-a.net>
Алексей Ван <o-s-a.net> Блог компании Os_Engine
28 марта 2024, 19:06

Пример 1. ArbitrageSimple. Торговля от индекса #12

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

Пример 1. ArbitrageSimple. Торговля от индекса #12

Перед нами стоит следующая задача: построить график спреда двух торговых инструментов, набросить индикатор ценового канала на график и при расхождении спреда открывать разнонаправленные позиции. По сути, у нас должен получится двуногий арбитраж, который открывает позиции при расхождении спреда, в надежде дождаться сужения и выйти из позиций. В качестве канала будем использовать индикатор LastDayMiddle. Пример робота является демонстрационным и не гарантирует прибыли. Его задача — познакомить вас с возможностями BotTabIndex.

Рассмотрим список полей, используемых в роботе:

Пример 1. ArbitrageSimple. Торговля от индекса #12

Режим работы бота, On/Off, включен или выключен соответственно.

Параметр для настройки размера отклонения для индикатора.

Торговый объем для первого инструмента.

Торговый объем для второго инструмента.

Поле для хранения ссылки на индекс вкладку.

Простая вкладка для первого инструмента.

Простая вкладка для второго инструмента.

Используемый в роботе индикатор.

Чтобы не раздувать конструктор, инициализацию параметров вынесем в отдельный метод CreateParameters:

Пример 1. ArbitrageSimple. Торговля от индекса #12

Рассмотрим конструктор робота:

Пример 1. ArbitrageSimple. Торговля от индекса #12

  1. Создаем параметры.
  2. Создаем вкладку типа BotTabIndex и сохраняем ссылку в переменную. Это та самая вкладка, которая строит график спреда и уведомляет робота об изменении графика отношений между инструментами.
  3. Создаем вкладку типа BotTabSimple. Через нее будет вестись торговля первой бумагой.
  4. Создаем вкладку типа BotTabSimple для торговли второй бумагой.
  5. При помощи фабрики создаем нужный индикатор.
  6. Настраиваем индикатор, присваивая значение параметра отклонения.
  7. Прорисовываем созданный индикатор на графике спреда. 
  8. Сохраняем настройки индикатора.
  9. Задаем обработчик события SpreadChangeEvent изменения графика спреда.
  10. Подписываемся на событие изменения параметров стратегии.

Тут следует сделать важное замечание по поводу метода CreateCandleIndicator. Он возвращает ссылку на индикатор, приведенный к интерфейсу IIndicator. Нам нужно выполнить приведение к типу Aindicator, чтобы получить доступ ко всем возможностям индикатора. И также обязательно нужно обновить ссылку индикатора в поле _dayMiddle.

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

Пример 1. ArbitrageSimple. Торговля от индекса #12

Далее рассмотрим метод обработчик события изменения спреда, в котором имеется пара фильтров:

Пример 1. ArbitrageSimple. Торговля от индекса #12

Если робот выключен, выходим из метода.

Если последнее значение одной из серий индикатора равно нулю, значит индикатор еще не готов, выходим из метода.

Вызываем метод с торговой логикой.

Рассмотрим основной метод робота, в котором содержится торговая логика:

Пример 1. ArbitrageSimple. Торговля от индекса #12

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

Процесс запуска и настройки этого алгоритма, а также принцип его работы мы рассмотрим в следующей статье.

Код алгоритма доступен по ссылке: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/bin/Debug/Custom/Robots/SimpleArbitrage.cs

 

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

Пост из серии статей по Индексному Арбитражу.

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

Подписывайтесь. Комментарии открыты для друзей.

Пример 1. ArbitrageSimple. Торговля от индекса #12

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
Программа лояльности от АЛОР БРОКЕР:https://smart-lab.ru/company/os_engine/blog

Пример 1. ArbitrageSimple. Торговля от индекса #12

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн