Статья про то, как использовать 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. Ну и тут какая-то произвольная логика робота.
Комментарии