Открыть на GitHub

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

Два инструмента, которые обычно движутся вместе, время от времени расходятся, и разрыв между ними, как правило, снова закрывается. Схема делит одну цену на другую, следит за тем, насколько это отношение уходит от собственной скользящей средней, и покупает или продаёт первый инструмент в момент, когда разрыв начинает закрываться, а не в момент, когда он открывается.

Обзор стратегии

  • Индексный кубик строит из двух реальных инструментов один синтетический, деля цену первого на цену второго, и на этот синтетический инструмент подписывается серия свечей — так спред приходит готовыми свечами, а не собирается вручную.
  • По свечам спреда считается скользящая средняя, а конвертер берёт их цену закрытия — так у спреда появляются и текущий уровень, и собственная опорная линия.
  • Формула сводит эту пару к одному числу: расстоянию от закрытия до средней, в процентах от средней.
  • То же значение на бар назад восстанавливается из предыдущей свечи спреда и предыдущего значения средней, а вторая формула превращает их в отклонение предыдущего бара.
  • Вторая серия свечей идёт по торгуемому инструменту, и две переменные привязывают к ней оба отклонения: каждая хранит последнее число, выданное спредом, и отдаёт его при завершении торгуемой свечи — так любое решение принимается по часам того инструмента, на который идут заявки.
  • Дальше сравнения задают четыре вопроса: где предыдущее отклонение стояло относительно порога, в какую сторону отклонение движется сейчас, по какую сторону от средней оно всё ещё находится и пуста ли позиция. Логическое условие собирает четыре ответа в один вход по каждому направлению.
  • Входы — рыночные заявки фиксированного объёма, открываемые только из пустой позиции, и выставляются они по тому инструменту, который задан самой стратегии. Синтетический инструмент — источник чисел, заявок он не несёт никогда.
  • Ещё два сравнения ждут, когда отклонение снова дойдёт до средней, и передают этот момент двум позиционным кубикам, по одному на каждую сторону, которые закрывают то, что открыто.

Правила входа и выхода

  • Вход в лонг: Отклонение предыдущего бара было ниже нижнего порога, отклонение этого бара выше предыдущего, отклонение всё ещё под средней, а позиция пуста. Кубик длинной стороны покупает по рынку объём заявки.
  • Вход в шорт: Отклонение предыдущего бара было выше верхнего порога, отклонение этого бара ниже предыдущего, отклонение всё ещё над средней, а позиция пуста. Кубик короткой стороны продаёт по рынку объём заявки.
  • Выход: Позиция закрывается, когда спред проходит путь, ради которого её открывали: длинная уходит, когда отклонение доходит до средней или пересекает её вверх, короткая — когда доходит до средней или пересекает её вниз. У каждого закрывающего кубика своя сторона, поэтому предназначенный для длинных не тронет короткую, а закрывающий кубик, сработавший на пустой позиции, просто ничего не сделает. Ни цели по прибыли, ни стоп-лосса, ни ограничения по времени здесь нет: весь выход — это возврат спреда.

Параметры

Параметр По умолчанию Описание
Index Expression BTCUSDT@BNBFT/TONUSDT@BNBFT Выражение, из которого строится синтетический инструмент: цена первого инструмента, делённая на цену второго. Оба инструмента должны присутствовать в подключённых данных, и торгуется только первый из них.
Spread Candles 00:05:00 Длина свечей, на которых строится серия спреда.
Traded Candles 00:05:00 Длина свечей, на которых выставляются заявки. Держите её равной серии спреда, иначе привязанные числа окажутся старше того бара, на котором их читают.
Average Length 20 Число свечей спреда в скользящей средней, от которой измеряется отклонение.
Deviation Threshold, % 0.3 Насколько далеко спред должен уйти от своей средней, в процентах, чтобы возврат к ней стоил сделки.
Order Volume 1 Объём заявки, в лотах.

Детали диаграммы

  • Отклонение предыдущего бара восстанавливается из предыдущей свечи и предыдущего значения средней, а не хранится готовым процентом, — так обе половины отношения читаются на бар назад, и сравнение нынешнего значения с прежним не может смешать два разных момента.
  • Две серии заканчиваются не в один и тот же миг: синтетический инструмент собирается из двух потоков, и его свеча закрывается чуть позже обычной. Именно привязка чисел к торгуемой свече держит стратегию на одних часах; отдача обеих серий вместе датировала бы каждую заявку более ранней из двух, а заявка с датой раньше текущего времени отклоняется.
  • Константы запускаются торгуемой свечой. Сравнению для каждого вычисления нужно, чтобы оба его значения пришли заново, поэтому не отправленная повторно константа останавливает условие, которое она питает, и никак этого не показывает.
  • Нижний порог — не вторая константа, а формула от того же значения, поэтому полоса остаётся симметричной при любом заданном пороге.
  • Кубикам заявок велено не ждать выхода стратегии в онлайн, а входы настроены открываться только из пустой позиции, поэтому сигнал, повторившийся при уже идущей сделке, ничего к ней не добавляет.

Использование

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