Двусторонний бэктест сеточных хедж-ботов
Azgard
В связи с тем, что TradingView пока не может оперировать одновременно открытыми сделками в противоположном направлении, возникла необходимость создать бэктест, который показывал бы работу таких сеточных ботов, которые можно запускать одновременно и в лонг, и в шорт.
Частично эта задача была решена в бэктесте NEON, но там из-за описанных выше ограничений, сделки открываются в противоположном направлении последовательно, а не одновременно.
И так как в рамках стратегии - то есть скрипта, который эмулирует открытие и закрытие сделок, данную задачу решить нельзя, был создан скрипт-индикатор, который позволяет видеть на графике все сделки.
Скрипт доступен по подписке для новых пользователей. Также есть возможность получить тестовый период и бессрочный доступ ко всем существующим и будущим скриптам.
Пишите на https://t.me/azgard_trade и подписывайтесь на канал https://t.me/azgards_codes с информацией и новостями.
Ссылка на скрипт https://www.tradingview.com/script/C1jsMjg8-Azgard-HeadgeBots/
Ограничения
Так как в терминах TradingView этот скрипт является индикатором, он имеет некоторые ограничения:
- расчеты прибылей и убытков отличаются от стратегии (например, NEON или Grid MAX) с теми же настройками. Отличия могут составлять до нескольких процентов.
- невозможно провести глубокое тестирование - все расчеты проводятся только на видимом графике и для проверки настроек за пределами графика необходима ручная "перемотка" или переход к конкретной дате в прошлом.
- Этот скрипт создан для тех, кто хочет использовать нестандартный выход из трейда на крипторге - по стопу или по трейлингу.
С основами работы бэктестов сеточных ботов можно и нужно познакомиться в этих документах: Grid MAX и NEON
Это описание скрипта содержит информацию об отличиях от вышеуказанных стратегий.
Ссылка на обязательное к прочтению дополнение к видео
https://t.me/AzgardTS/143/1150?single
Таблица данных

1 - блок общей информации по двум направлениям
- Профит по всем сделкам на графике
- Сумма собственных средств с учетом плеча, необходимая для открытия и срабатывания обеих сеток. Если сумма больше начального депозита, то сделки не открываются и ячейка подсвечивается красным.
- Начальный и конечный депозит за период на графике. PNL открытых сделок на момент последнего бара не учитывается.
- Оценки профита за периоды в абсолютном и относительном выражении. При наведении на ячейки открывается подсказка о способе вычисления.

- Период торговля от первого бара на графике до последнего. Может не совпадать с расстоянием от первой сделки до последней.
2 и 3 - блоки информации о сделках в лонг и шорт соответственно
- информация о настройках сетки
- количество завершенных сделок на графике
- профит в абсолютном и в относительном выражении за период на графике
- расчетное расстояние до цены ликвидации (при кросс- или изолированной марже)
- минимальное расстояние до цены ликвидации в процессе торговли с датой этого минимума
- максимальная продолжительность сделки и количество страховых ордеров, после которых сделки закрылись. Это НЕ количество срабатываний СО.
Настройки
В целом настройки похожи на настройки бэктестов NEON или Grid MAX, о которых можно прочитать и посмотреть видео выше.
Далее будут описаны только отличия.

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

Первое отличие от односторонней торговли - цена ликвидации постоянно меняется в довольно широких пределах, но никогда не бывает ближе предварительно рассчитанной и указанной в таблице с данными. Напомню - минимальное расстояние определяется приближением цены инструмента к ликвидации, а не наоборот - изменением самой цены ликвидации.
В ситуации А мы видим, что набрана максимальная длинная позиция (зеленые линии) и в зависимости от набора короткой позиции (красные линии) цена ликвидации для длинной позиции (фиолетовая линия внизу) отдаляется, так как ЦЛ считается только для разницы позиций. Это приводит к тому, что для открывающихся коротких сделок цены ликвидации нет - длинная позиция значительно больше.
Однако в ситуации В картина обратная: после закрытия длинной позиции из предыдущего пункта цена ликвидации для коротких позиций появилась (оранжевая линия наверху). А для коротких позиций цена ликвидации становится дальше по мере набора короткой позиции, так как короткая позиция намного больше открываемых длинных.
При закрытии большой короткой позиции цена ликвидации для лонга возвращается к нормальным значениям.
Пример зависимости в таблице
Для некоторых минимальных настроек объема сетки расстояния до ликвидации такие:

Для лонга значение 100% означает, что ликвидация не рассчитывается для данного объема позиции, но это не означает, что актив может обнулить цену, так как биржа устанавливает определенные страховые комиссии на этот случай и ликвидация происходит раньше.
Для шорта значение больше 100% означает фактическое расстояние до цены ликвидации. Ликвидация, которая в 2 раза и более превышает цену, на графике не отображается.
Если теперь увеличить только позицию в лонг, то расстояние до ликвидации шорта уменьшится, так как доступная часть депозита уменьшится за счет обеспечения длинной позиции:

В режиме изолированной маржи картина совершенно другая:

Цена ликвидации не меняется, так как она зависит только от средств, необходимых для открытия позиции.
Торговля при разных режимах маржи.
При ликвидации в режиме кросс-маржи теряется весь депозит, при ликвидации в режиме изолированной маржи теряется только сумма, на которую открыта текущая сделка. В некотором смысле режим с изолированной маржи можно считать торговлей со стопом.
Соответственно, бэктест по-разному обрабатывает эти две ситуации.
Если ликвидация происходит в изолированном режиме, то торговля не останавливается, только уменьшается депозит на размер убытка и в нижнем правом углу появляется соответствующее сообщение с датой последней ликвидации:

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

Количество тиков для исполнения ордера (2)

Эта настройка является аналогом настройки для стратегий

Управление тиками позволяет увеличить реалистичность бэктеста за счет уменьшения ситуаций исполнения лимитного ордера по последнему тику или по окончанию тени свечи:

При добавлении 5 тиков закрытие исполнение уже происходит телом следующих свечей, что больше соответствует действительности:

Комиссия (3)
Также необходимо устанавливать комиссию мейкера из параметров вашего аккаунта на торговой площадке, так как она существенно влияет на оценку результатов торговли. По-умолчанию стоит значение 0,05%
Мобильный режим
В мобильном приложении TradingView стрелки, показывающие завершение работы бота и закрытие сделки, не показываются:

Поэтому добавлена соответствующая настройка

при включении которого показываются значки, отображаемые в мобильном приложении:

Автор предупреждает: торговля на бирже сопряжена с риском потери денег. Никакая информация не может считаться инвестиционным или торговым советом. Не используйте в торговле суммы, потеря которых для вас будет ощутимой. Скрипт для платформы TradingView предоставляется "как есть" и может быть изменен без уведомления. Автор не несет ответственности за любой ущерб, полученный в период доступа к данному скрипту. Результаты, полученные на исторических данных, не гарантируют таких же результатов в будущей реальной торговле.