Использование корреляции и коинтеграции из общих слоёв создания роботов в OsEngine.

Использование корреляции и коинтеграции из общих слоёв создания роботов в OsEngine.

Статья про то, как использовать CorrelationBuilder и CointegrationBuilder в ботах, бросая в них свечки. Эти классы делались исключительно для BotTabPair, но расчет этих индикаторов универсальный.

Для того, чтобы ими воспользованться Вам нужны свечи из двух источников и эта статья…

1. Расположение данных индикаторов в OsEngine.

2. CorrelationBuilder обзор кода.

1. Метод, пересчитывающий корреляцию между массивами свечей. На вход принимает свечи и глубину расчета. ВАЖНО! Свечи должны быть одного ТФ, иначе будут ошибки.

2. Закрытый лист с результатами последнего пересчёта.

3. Закрытый метод для расчетов.

4. Закрытый метод для расчетов.

Класс очень простой. Ничего настраивать не нужно. Подаёшь в него свечи одного ТФ и длину расчётов. Получаешь массив значений корреляции. 

3 CointegrationBuilder обзор кода.

В целом логика работы с ним похожа на корреляцию. Однако! Перед тем, как грузить туда свечи, надо настроить данный класс. И после работы взять из него результаты через поля и свойства.

 

1. Настройка. CointegrationLookBack – длина расчета индикатора.

2. Настройка. CointegrationDeviation – множитель для расчёта линий на графике отклонений.

3. Поле. После пересчёта индикатора содержит в себе массив минимальных разниц между инструментами.  

4. Свойство. Только чтение. После пересчёта содержит в себе мультипликатор для второго инструмента в формуле поиска минимальных остатков. (Candles1[i].Close – Candles2[i].Close * CointegrationMult).

5. Свойство. Только чтение. После пересчёта содержит в себе стандартное отклонение остатков, взятых для подсчёта по модулю.

6. Свойство. Только чтение. После пересчёта содержит в себе сторону расположения текущей разницы на последней свече относительно линий на чарте.

a. Up - отклонение выше текущей линии.

b. Down - отклонение ниже текущей линии.

c. No… 

7. Свойство. Только чтение. После пересчёта содержит в себе верхнюю линию на графике отклонений. 

8. Свойство. Только чтение. После пересчёта содержит в себе нижнюю линию на графике отклонений. 

9. Метод вызова пересчёта индикатора. Принимает два массива свечей (которые должны быть с одним ТФ!!!) и булево значение, указывающее классу, нужно ли обрезать от графика отклонений незначимые величины (False – для тестера, ибо это затратно. True – для боевого робота, ибо это красиво выглядит на чарте потом).

10. Приватные методы расчёта индикатора.

4 Пример использования.

Создавать оба класса для расчёта этих индикаторов рекомендуется в конструкторе робота. Смысла в постоянном создании новых объектов этих классов нет.

Хранить их можно как обычные поля, рядом с параметрами стратегии и обработчиками событий:

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

 

1. Вызов объекта для расчёта коинтеграции. Передаём в него два массива свечей. И StrategyParametrInt интовое значение длины индикатора. Сразу же сохраняем значения индикатора в массив для дальнейшего использования.

2. Устанавливаем настройки для объекта, рассчитывающего коинтеграцию. 

3. Вызываем расчёт коинтеграции. Передаём в объект два массива свечей, и false, чтобы лишние расчёты не делались, и данные не обрезались.

4. Берём из объекта, отвечающего за коинтеграцию, данные. 

5. Ну и тут какая-то произвольная логика робота.

 

13:03
455

Комментарии

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