В этом посте будем разговаривать про отдельную пару внутри источника для парного трейдинга в OsEngine.
Напоминаем, что один BotTabPair (источник для парного арбитража) может содержать множество Пар:
Рис. 1. Отношение BotTabPair и PairToTrade.
Это позволяет:
1. Применять для пар общие настройки.
2. Быстро создавать большое кол-во пар через автосоздание пар.
3. Одним кодом обрабатывать десятки и сотни одновременно рассчитывающихся пар.
4. Для этого BotTabPair и создавался.
Базово вы можете подписаться на события изменения корреляции или коинтеграции по какой-то паре и ждать, пока оно произойдёт в коде. Ссылка: https://o-s-a.net/posts/bottabpair-events.html
Располагается PairToTrade в том же файле, что и основной класс для парного арбитража:
Рис.2. Расположение PairToTrade в проекте.
Внутри файла:
Рис.3. Расположение PairToTrade в файле.
Регионы, которые есть в классе PairToTrade:
Рис.4. Регионы внутри класса PairToTrade.
1. Сервисный регион, в котором собраны методы, отвечающие за правильную работу пары внутри архитектуры OsEngine. Для трейдинга не нужно.
2. Properties and settings – торговые настройки, свойства, которые можно запросить в торговле, источники с инструментами. Нужно изучить.
3. Trading methods – методы для торговли. Обязательно к изучению.
4. Delayed position opening on the second leg – реализация отложенного открытия позиции по второй ноге. Для трейдинга не нужно.
5. Correlation calculation and storage – расчет корреляции и её хранение. Из интересного – событие изменения корреляции по паре. Обязательно к изучению.
6. Cointegration calculation and storage – расчёт коинтеграции и её хранение. Из интересного – два события об изменении коинтеграции и расположения последнего отклонения. Обязательно к изучению. Также доступны значения:
a. Текущие значения линий.
b. Последнее значение отклонения коинтеграции.
c. Мультипликатор, применявшийся при последнем пересчёте таблицы минимальных отклонений.
d. Стандартное отклонение у последней таблицы минимальных отклонений.
7. Event processing and indicator recalculation call – сервисный регион. Не представляет интереса для трейдинга.
8. Logging – логирование…
Properties and settings.
Рис.5. Регион Properties and settings в PairToTrade.
1. Источники для торговли. Типа BotTabSipmle. Через них доступно всё, что доступно у стандартного источника. Добавление индикаторов, все торговые методы базового источника и всё, что Вам может понадобиться. Ссылка на статью про сабж: https://o-s-a.net/os-engine-faq/index/40
2. Режим торговли для соответствующих источников. Режимы могут быть:
a. Off – торговля по ноге отключена.
b. Limit – лимитная заявка. В данном случае начнёт работать проскальзывание.
c. Market – маркет заявка.
d. Second – позиция по данной ноге будет взята по маркету сразу после того, как по другой ноге позиция будет открыта.
3. Режим проскальзывания для соответствующего источника. Могут быть:
a. Percent – проскальзывание будет рассчитано в процентах от текущей цены контракта.
b. Absolute – абсолютное значение, которое введёт пользователь.
4. Величина проскальзывания для соответствующего источника.
5. Режим расчета объёма для соответствующего инструмента. Может быть:
a. Currency – Цена контракта. В случае если контракт номинирован в рублях, то это рубли. Если в долларах, то доллары. Например BTCUSDT номинирован в USDT. И если выбрать данный тип расчёта объёмов, то в данном случае это будет означать, что мы выбрали 7мь долларов.
b. Contract – Количество контрактов без преобразований.
6. Величина объёма для соответствующего источника.
7. Имеет ли данная пара позиции. True – имеет. False – нет.
Trading methods.
Рис.6. Регион Trading methods в PairToTrade.
1. Купить инструмент 1 и продать инструмент 2. Если работаем по коинтеграции на схождение инструментов, то следует вызывать этот торговый метод, когда текущая разница между инструментами находится над нулевой отметкой.
2. Продать инструмент 1 и купить инструмент 2. Если работаем по коинтеграции на схождение инструментов, то следует вызывать этот торговый метод, когда текущая разница между инструментами находится под нулевой отметкой.
3. Закрыть все текущие позиции. Отозвать все ордера с рынка по паре.
4. Метод расчёта объёма для соответствующей бумаги, которая передаётся в параметры.
5. Метод расчёта цены ордера для соответствующей бумаги, которая передаётся в параметры.
6. Последняя сторона расположения разницы между инструментами на чарте коинтеграции, во время открытия позиции.
Correlation calculation and storage.
Рис.7. Регион Correlation calculation and storage в PairToTrade.
1. Объект для расчета корреляции. Если интересно использовать где-то самому, лучше посмотреть, как с ним обращается данный класс.
2. Настройка длины расчёта корреляции.
3. Массив с историей изменения корреляции.
4. Последнее значение корреляции между инструментами.
5. Пересчитать корреляцию принудительно, не дожидаясь конца завершения последней свечи.
6. Приватный метод для перерасчёта корреляции. Если интересно использовать корреляцию вне рамок данного класса где-то самому, лучше посмотреть как это работает.
7. Событие изменения корреляции.
Cointegration calculation and storage.
Рис.8. Регион Cointegration calculation and storage в PairToTrade.
1. Объект для расчета коинтеграции (минимальных разниц между инструментами с оптимальным мультипликатором). Если интересно использовать где-то самому, лучше посмотреть, как с ним обращается данный класс.
2. Настройка длины расчёта коинтеграции.
3. Отклонение для расчёта линий на графике коинтеграции. Используется как мультипликатор для стандартного отклонения текущего массива отклонений.
4. Массив с минимальными разницами между закрытиями свечей по инструментам с оптимальным мультипликтором умноженным на инструмент 2 (коинтеграция).
5. Последнее значение на чарте коинтеграции.
6. Оптимальный мультипликтор. Это то значение в формуле расчета минимальных разниц между инструментами, на которое умножается второй инструмент. Сохраняется последнее актуальное значение.
7. Стандартное отклонение в массиве разниц.
8. Сторона расположения текущей разницы на последней свече относительно линий на чарте.
a. Up - отклонение выше текущей линии.
b. Down - отклонение ниже текущей линии.
c. No…
9. Верхнее значение линии на коинтеграции.
10. Нижнее значение линии на коинтеграции.
11. Пересчитать массив разниц (коинтеграция) принудительно, не дожидаясь конца завершения последней свечи.
12. Приватный метод для перерасчёта массива минимальных разниц между инструментами (коинтеграция). Если интересно использовать коинтеграцию вне рамок данного класса где-то самому, лучше посмотреть как это работает.
13. Событие изменения массива минимальных разниц между инструментами (коинтеграция).
14. Событие изменения расположения текущей разницы на последней свече относительной линий на чарте.
Как получить доступ к PairToTrade из робота? Взять из BotTabPair на прямую.
В классе, который предоставляет хранение и менеджмент пар (BotTabPair), есть массив типа PairToTrade:
Рис.8. Расположение массива PairToTrade в BotTabPair.
Можно из робота запросить этот массив на прямую:
Рис.9. Пример работы с массивом PairToTrade в роботе
1. Создание источника для торговли пар.
2. В любом событии или обработчике или потоке у нас доступен вызов списка пар, созданных пользователем из массива Pairs. В данном случае показан пример того, как мы бежим в цикле по массиву пар и можем брать по очереди из всех пар какие-то значения. В том числе и BotTabSimple – базовые торговые источники в OsEngine.
Как получить доступ к PairToTrade из робота? Через подписку на события BotTabPair.
Рис.10. Пример подписки на событие, которое передаёт нам PairToTrade, по которому оно произошло.
1. Создание источника для торговли пар.
2. Подписка на событие изменения стороны расположения последнего отклонения между инструментами относительно линий на чарте коинтеграции.
3. Обработчик. И во втором параметре нам передаётся та пара, по которой произошло это событие. После чего мы можем с ней что-то делать.
Комментарии