Стратегия-бэктест сеточного бота
Azgard
Эта статья описывает принципы работы сеточного бэктеста, но относится к устаревшему продукту. Тем не менее, для понимания работы бэктестов она необходима.
Актуальный бэктест на Azgard Grid MAX https://telegra.ph/any-connect-09-06
Стратегия с точки зрения TradingView отличается от просто индикатора (https://telegra.ph/grid-backtest-05-26) тем, что позволяет считать PNL.
Напоминание: бэктест не может служить прогнозной моделью для торговли. Бэктест может уменьшить риски путем проверки на прошлых данных вашей торговой стратегии и дать возможность разработать правила поведения в критических ситуациях. Реальная торговля всегда будет иметь элемент неожиданности и непредсказуемости, а также будет отличаться от результатов бэктеста за тот же период.
Для получения доступа необходимо написать в личном сообщении https://t.me/azgard_trade
Подписывайтесь на группу с последней информацией о разработках https://t.me/+kmyJBw7jQPxlMDgy
Ссылка на скрипт: https://www.tradingview.com/script/MI48uuD0-Azgard-Dynamic-Grid-Martingale-Backtest/
Стратегия НЕ ищется поиском, необходимо добавить в избранное. После добавления вас в список допуска, у вас должно появиться меню

Поддерживает работу с индикатором “OMOF” https://ru.tradingview.com/script/DBbf7QYa-Any-OMOF-by-Azgard/ и “Ценовые Ограничения” https://ru.tradingview.com/script/AOJ7tbrd-Cross-EMA-Price-Restriction-by-Azgard/ со специальными коннекторами:


А также с другими: https://telegra.ph/Indicators-07-26
Eсли вы сочтете данный скрипт полезным, я с благодарностью приму донат.
Донатеры получают неограниченный доступ к существующим скриптам, приоритет в техподдержке и адаптации их любимых индикаторов под бэктесты. Пишите на https://t.me/azgard_trade Спасибо!
Краткое описание
Для использования скрипта необходимо сначала подключить индикатор, который будет давать сигналы на покупку/продажу. В данном описании это OMOF https://t.me/c/1711645774/14.
Далее подключите бэктест-стратегию специальным коннектором “Backtest” (с другими коннекторами других индикаторов работать не будет) для получение сигналов от первого индикатора:

После этого вы увидите на экране визуализацию работы сеточного бота:

- Свеча, по закрытию которой формируется точка входа в сделку - в данном случае LONG
- Серые линии - уровни страховых ордеров
- Голубая линия - уровень тейк-профита, меняющийся при срабатывании страхового ордера
- Указание на свечу, на которой сделка закрылась
- Текущие настройки сетки бота
- Количество закрытых трейдов с этими настройками
- Статистика срабатывания СО - если “0”, то до этого СО цена не дошла на доступной в данной момент истории.
- Оранжевая линия - текущая точка входа (цена)
- Фон показывает направление сделки: зеленый - лонг, розовый - шорт.
Настройки бэктеста:

- Выбор источника сигнала
- Реверс сигнала - при выборе сигнал “лонг” стороннего индикатора будет запускать шорт-сделку, и наоборот.
- Выбор периода теста - полезно, когда необходимо рассчитать месячную доходность.
- и ниже - параметры сетки бота
- и ниже - настройки трейда
При первом запуске бэктест может выдать ошибку, если настройки сетки не подходит к данному инструменту:

это значит, что ни одна сделка не была закрыта, т. е. данные параметры сетки не позволяют завершить сделку, начатую в самом начале графика.
Самый просто выход - увеличить количество СО, чтобы найти проблемный вход. Пример для режима “SHORT”:

Про подбор параметров более подробно смотрите в описании https://telegra.ph/grid-backtest-05-26
До тех пор, пока текущая сделка не закроется при достижении тейк-профита, другие сигналы игнорируются.
Отключение лишней информации
Для того, чтобы видеть на графике только те сигналы, которые привели к открытию сделки, а не все, которые выдает индикатор, можно отключить показ всех сигналов в сигнальном индикаторе, если данная функция поддерживается (в том, на который настроен бэктест):

Сделано для того, чтобы избежать “замусоривания” графика:

Период расчетов
Так как канальные индикаторы в начале периода считаются всегда некорректно, расчет бэктеста также не начинается с самого начала периода (зеленая пунктирная линия). Обязательно проверяйте работу индикатора на более ранней истории, включая режим “Replay” и далее - кнопкой “Jump”

Статистика показа количества сработавших страховых ордеров и расстояние этого ордера по сетке:

Если напротив последних по сетке СО стоят проценты, но ноль срабатываний, то это значит, что ни в одной сделке до соответствующих СО цена не падала. Может быть промежуток из нулей до сработавшего одним из последних ордера - это означает, что цена сразу ушла на больший ордер, а с промежуточных ни разу сделки не завершались
В данном примере 12-й СО ни разу не срабатывал за 49 трейдов. Если откатывать историю дальше в прошлое, и за приблизительно 400 трейдов эти СО так и не сработают, то это один из факторов для уменьшения количества СО.
Анализ результатов
В Tradingview каждая сделка считается по отдельности, поэтому в списке трейдов вы всегда будете видеть убыточные сделки:

Трейд (1) открывается, а потом срабатывают еще три СО 2-3-4. После этого трейд закрывается по тейк-профиту (5). Хорошо видно, что первый трейд закрылся в убыток, однако последующие закрываются с прибылью.
Увеличенный пример:

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

Важно! Просадка и прибыль имеют разные шкалы - если просадка как бы опускается ниже начального капитала - это НЕ ликвидация.

Ответы на вопросы
Почему не совпадает с реальными результатами?
- Моделирование - это не реальность. В реальности шип (тень) свечи может исполнить ордер, а может и не исполнить. В бэктесте то же самое - соответственно, сделка может не открыться, а может не сработать страховой ордер. И эти варианты не совпадают у модели и у реальной торговли.
- Бэктест - это оценка того, как поведут себя настройки в разных ситуациях на рынке. Планировать финансовые результаты и опираться на тесты нельзя. Это не грааль.
- Также надо учитывать, что OMOF и FOMO Крипторга - не одно и то же, сигналы могут приходить по-разному, хотя настройки кривых по-умолчанию приближены к фомо для биткоина.
- Еще надо проверять, одинаковые ли сигналы идут в бэктестер и по веб-хукам, нет ли разницы в настройках не только сетки, но и самого индикатор (например, направление пересечения зоны).
- Стратегии ТВ открывают сделку по внешнему сигналу только на закрытии свечи, на которой поступил сигнал - это также сказывается на результатах.
Почему не совпадает количество трейдов?

Выше указано, что бэктестер и ТВ по-разному считают трейды: ТВ считает каждый ордер, а бэктестер все СО сводит в одну сделку.
Однако если вы кликните в самом начале графика прибыли, вы попадете на первую сделку периода, показанного на графике:

Таким образом и сам бэктест, и график ТВ показывает один и тот же период, и одинаковое количество итоговых закрытий по ТП.
Что означает “период” в настройках?

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

Это относится только к настройкам кривых графика!
Что делать с ошибкой (исправлено в Grid MAX)

Эта ошибка означает, что где-то раньше (в пределах данных на экране) возникает сделка, которая не закрывается до текущего момента и ТВ не может ее вывести на экран, потому что слишком много баров задействовано. Выход единственный - подобрать сетку, которая покажет хоть какой-то результат и его оптимизировать. Для этого лучше всего увеличивать количество СО и мартингейл.
Эта ошибка может возникнуть и при длительном периоде тестирования:

Предупреждение: использование расчетов по стратегии не может гарантировать, что вы не потеряете свои средства!
Используйте с осторожностью и обо всех ошибках сообщайте в https://t.me/+kmyJBw7jQPxlMDgy
Обновление 26-05-2023
- По-умолчанию считаются сделки за последние 30 дней, чтобы можно было быстро прикинуть месячную доходность:

Внимание! Для "глубокого тестирования" и для анализа всех доступных на графике данных необходимо эту опцию отключить.
Обновление 06/06/23
1) Страховые ордера срабатывают точно по сетке и имеют соответствующую подпись:


Действующая сделка показывается со второго бара и до предпоследнего, чтобы не вводить в заблуждение как-бы сработавшими СО в тот момент, когда сделка еще не была открыта или уже закрыта (напомню: после получения сигнала сделка открывается по закрытию свечи и поменять это в стратегии, которая получает внешний сигнал, нельзя).
2) В объем депозита теперь настраивается в стандартных свойствах стратегии, там же настраивается и комиссия на открытие/закрытие сделок:

3) В таблице данных отображается депозит из свойств стратегии, а также среднемесячный профит, если период бэктеста больше заданных по-умолчанию 30 дней:

4) Добавлен трейлинг-профит:




Обратите внимание - трейлинг не всегда приводит к тому, что сделка закрывается с большим тейк-профитом:

Большое обновление 23/06/23
I
Расширились настройки торговли:

- Установка размера ПО в виде % от депозита
- Установка сигнала закрытия сделки при достижении противоположной зоны (по просьбе донатера)
- Вычисление ликвидаций - ориентировочной и точной.
- Установка стоп-лосса перед ликвидацией
II
В таблице данных появилась дополнительная информация:

- Размер позиции при срабатывании всех СО
- Расстояние ликвидации от первой точки входа
III
Информация на графике: (1) - линия стоп-лосса, (2) - линия ликвидации. Закрытие по тому или иному событию показывается соответствующей подписью к закрытой сделке (3).


Для более чистого графика сработавшие СО дальше не отображаются.
При расчете стратегии в ТВ и ликвидация, и стоп-лосс на графике показываются корректно:


После срабатывания стопа торговля продолжается на остаток депозита, при ликвидации - уже нет.
IV
Как считается ликвидация - ВАЖНО
Ликвидация считается по формуле BINANCE:

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

Для точного подсчета ЦЛ при больших объемах торговли необходимо отметить соответствующий пункт в настройках стратегии и заполнить поля "Ставка..." и "Размер...", использую данные со страницы https://www.binance.com/ru/futures/trading-rules/perpetual/leverage-margin

Пример
При заданных условиях быстрая ЦЛ равна 0,6040, а калькулятор BINANCE дает 0.60313

Если включить точную ЦЛ и подставить необходимые данные, то получим ЦЛ, равную 0,6022, что незначительно отличается и от быстрой ЦЛ, и от калькулятора, но приближается к последнему. Для расчета больших позиций рекомендуется использовать точную ЦЛ.

Ликвидация рассчитывается для цены входа, которая получится при срабатывании всех СО, т.е. для максимальной позиции. Эта цена справочно показывается в окне служебной информации ТВ, к которой можно получить доступ справа на экране:

Эта цена не совпадает с ценой входа просматриваемой сделки.
Если в таблице указано расстояние от ТВХ до ликвидации 99%, это означает, что ликвидация при данном соотношении депо и позиции маловероятна.
Спасибо!
Если у вас есть какой-то индикатор, который вы хотите подключить к бектесту - напишите в личном сообщении https://t.me/azgard_trade
Автор предупреждает: торговля на бирже сопряжена с риском потери денег. Никакая информация не может считаться инвестиционным или торговым советом. Не используйте в торговле суммы, потеря которых для вас будет ощутимой. Скрипт для платформы TradingView предоставляется "как есть" и может быть изменен без уведомления. Автор не несет ответственности за любой ущерб, полученный в период доступа к данному скрипту. Результаты, полученные на исторических данных, не гарантируют таких же результатов в будущей реальной торговле.