Бэктесты Veles предназначены для создания и тестирования собственных торговых стратегий. Тест проводится на сохранённых с разных бирж исторических данных о цене монеты, а конкретно — 1-минутных свеч. То есть вы создаёте конфигурацию бота, а затем запускаете симуляцию его торговли — и можете увидеть, как бот с такими настройками торговал бы в прошлом на выбранной бирже.
Каждому пользователю доступны 10 бесплатных бэктестов в 24 часа. Счетчик запускается в момент создания первого бэктеста и сбрасывается через 24 часа (а не в полночь). Максимальный период тестирования на бесплатных бэктестах составляет 3 месяца.
C целью балансировки нагрузки на сервера реализованы ограничения — минимальный промежуток между повторными запусками бэктестов равен 1 минуте, а размер очереди проведения бэктестов ограничен. Если в очереди уже имеется 5 бэктестов в статусе «В работе» или «Ожидает», то стартовать новый анализ не получится.
Все результаты (проведённые вами тесты) и счётчики доступны на странице:
http://veles.finance/cabinet/backtests
Здесь же можно купить подписку «Бэктесты ПРО», которая действует 30 дней с момента покупки, при этом число тестов в сутки не ограничено. Максимальный период тестирования при этом составляет 1 год. Однако, как и в бесплатной версии, не получится стартовать тест чаще, чем 1 раз в минуту, и иметь более 5 бэктестов в очереди.
Также подписчикам становится доступна подборка удачных бэктестов (выбранных нами из публичной базы), которая обновляется раз в неделю, по средам. В каждый выпуск могут входить и тесты с прошлой недели, если их настройки хорошо показали себя за прошедший месяц.
.
Итак, сперва вам нужен бот. Справка по настройкам бота доступна по ссылке:
https://help.veles.finance/ru/как-создавать-и-редактировать-бота-полный-список-настроек-бота/
Бэктест можно запустить только для бота, который имеет фильтры на старт, и все они используют метод расчёта «На закрытии бара» («Раз в минуту» не даёт запустить анализ). Чтобы провести хотя бы примерный тест бота без фильтров, вы можете поставить на старт в боте индикатор «Цена больше 0» или «RSI 1 мин больше 0» — так бот будет близок по точкам входа к боту с вашей «нефильтрующей» стратегией.
Также невозможно провести бэктест бота, который работает на сигналах/стратегии с TradingView.
.
Всякая математическая модель имеет ограничения, и в бэктестах Veles они тоже есть.
Надо помнить, что сделки по бэктесту всегда открываются по ценам открытия свечи, а закрываются по ценам закрытия свечи. А вот в реальности боты входят (и выходят) где-то между ценой открытия и закрытия свечи, поэтому цены реальной торговли и расчётной — неизбежно отличаются.
Бэктест в своей работе не учитывает фитили 1-минутных свечей. А в реальной жизни торговля на тенях происходит — может открыться сделка по ордеру, выставленному с отступом, или сработает стоп-лосс, или тейкпрофит, или произойдёт ликвидация. Поэтому там, где в реальности бот из сделки вышел на тени свечи и немного позже открыл следующую сделку , на бэктесте всё это время будет продолжаться одна сделка, первая.
Изучая выдачу бэктеста (а это внушительный объём информации), рекомендуем смотреть не только на цифры, но и на отработки сделок по графику. Благодаря этому вы лучше будете понимать механику бота, а значит, корректировать его получится точнее и эффективнее.
Бэктесты — это очень полезный инструмент, уже практически незаменимый, который помогает вам подобрать наиболее эффективные параметры и стратегию под торгуемый актив. Но для этого инструментом надо научиться правильно пользоваться.
.
Рекомендации для запускающих бэктесты:
1. Каждый раз проверять выбор дат начала и конца тестирования — а то иногда предыдущий выбор отменяется.
2. Узнать свою комиссию биржи и указывать её правильно. Иногда это значительно влияет на результат.
3. Посмотреть фитили на диалоговом окне старта бэктеста (p0.99 для фитилей вверх или вниз), чтобы правильно настроить (если он есть) стоп-лосс в боте.
Рекомендуемый размер стоплосса = соответствующий фитиль * 2.
4. Не забыть дать тесту информативное имя. Иначе потом трудно различать тесты в общем списке.
Например, «BTC 1ord SL_5% ВВ_60 BB_15», «BTC 1ord SL_6% ВВ_30 BB_15», и т.д.
Вы можете стартовать бэктест из редактора бота (кнопка «Анализ» внизу страницы) или по кнопке на карточке бота с главной страницы.
Открывается окно, где нужно задать параметры теста:
Здесь мы сразу видим параметры свечей по заданной монете. Их количество в базе, их число в бэктесте, длину фитилей — и, если в боте есть стоп-лосс, то для бота Long он должен быть как минимум 2 х Фитиль вниз. А лучше, если будет больше самого большого известного фитиля (информация о его размере будет в результатах теста). Почему это важно? Дело в том, что если стоплосс вашего бота стоит в пределах фитиля минутной свечи, то в реальности такой стоп-лосс будет срабатывать в 99 случаях из 100, а вот симуляция этого не покажет — так как фитили не считаются.
Выбираем период тестирования. В бесплатной версии можно тестировать на периоде до 3 месяцев, а с подпиской на Бэктесты Про — до 1 года.
Внимание! На монетах, которые залистились на бирже лишь недавно, сделки вы получите, конечно, только за то время, когда монета торговалась, даже если выбрали 1 год. Также может быть «укороченный» по времени результат, если выбранная для тестирования биржа лишь недавно появилась на платформе и нет нужного объёма сохранённых свечей (сами биржи хранят минутные свечи недолго, лишь несколько недель).
Узнайте и правильно укажите торговую комиссию для своей биржи.
«Публичный тест» означает, что результаты (а значит, и настройки стратегии) будут записаны в общую базу, откуда могут попасть в рассылку или на витрину. Подписчики тарифа Бэктесты Про могут отключать эту галочку и, таким образом, не делиться своими стратегиями.
На втором экране вы проверяете, все ли настройки стоят правильно, прежде чем стартовать тест.
.
После того, как тест отработает, вы получите экран с результатами.
Разберём его подробнее.
В верхней части находится кнопка «Поделиться» — с её помощью вы получите ссылку на этот тест, которую советуем прилагать ко всем вопросам.
Например, данный тест вы можете открыть по ссылке https://veles.finance/share/ybUIi
Также сверху указана Gross-прибыль, на которую не нужно ориентироваться, так как это промежуточный результат.
Отметим главное:
Gross (монета или USDT) — результат теста в монете или USDT без учёта фандинга и комиссии биржи. Gross cчитается как сумма результатов всех сделок — как прибыльных, так и убыточных (закрытых по стоп-лоссу).
Net (монета или USDT) — результат теста без учёта фандинга, но с учётом комиссии биржи. На эту цифру мы и смотрим, она главная.
Комиссия — сумма биржевых комиссий за все сделки в данном тесте.
МПП (Максимально плавающая прибыль) — это наибольший возможный процент прибыли в контексте одной сделки. Считается по закрытию свечи, от средней цены позиции.
МПУ (Максимально плавающий убыток) — процент просадки от средней цены позиции и его сумма в USDT, взятые по закрытию свечи. При этом помните, пожалуйста, что тени свечей не учитываются в бэктесте, и по графику можно увидеть, что просадка позиции на тени свечи будет заметно глубже, чем показывает МПУ.
Если в боте есть стоп-лосс, и он где-то в бэктесте расчётно сработает, то МПУ — это максимальная просадка по свече, внутри которой сработал стоплосс. Высокий МПУ на боте в лонг будет, если ваш бот попал в «пролив», когда по монете случалось особо резкое падение цены. Вам нужно просто учесть, что вот так бывает — и планировать настройки бота/его маржу с учётом этих данных. Поэтому даже рекомендуется в выбираемый период тестирования включать даты, когда на рынке были проливы.
В каждой сделке свой МПУ, а для всего теста показывается максимальный из всех сделок (не суммарный). Данный параметр позволяет оценить, как бот переживает просадки. В упрощённой редакции — на изолированной марже ликвидация наступит, когда МПУ больше или равен Депозиту бота (на самом деле раньше, где-то у 75% просадки), а на кросс-марже ликвидация наступит, когда МПУ больше или равен всему объёму средств на счёте (Балансу).
Если же считать точнее (что мы приветствуем), то вам нужно сложить процент МПУ с максимальным фитилём по данному тесту и умножить эту сумму на объём позиции с учётом плечей. Получится количество средств, которое и нужно держать в поддерживающей марже для данного бота, чтобы его не ликвидировало.
В результатах бэктеста нигде не будет написано «Ликвидация произошла». О вероятности её наступления вы должны судить самостоятельно, по методу, описанному выше.
.
Секция «Сделки» показывает подсчёт всех сделок и результатов — число тейк-профитов, стоп-лоссов, срабатываний подтяжки (это отменённые сделки). Часто бывает, что «Всего» сделок на одну меньше, чем сумма закрытых сделок по разным итогам. Это потому, что последняя сделка в периоде не является завершённой, её тейк-профит или стоп-лосс ещё не исполнен.
Бэктест игнорирует настройки бота «Остановить после исполнения стоп-лосса», ограничение по числу сделок, глубокие просадки (которые в реальности привели бы к ликвидации). В тесте считается, что бот имеет достаточно маржи в поддержке и ограничен лишь датами начала и конца теста.
Максимальное время в сделке — нужно обратить внимание на долго висевшие сделки. Причём их может быть несколько, поэтому рекомендуется перейти на вкладку «Список» и отсортировать сделки по продолжительности.
Вкладка «Графики» позволяет посмотреть статистику исполнения ордеров в боте, его винрейт и график кумулятивной прибыли.
Список сделок — место, где вы разбираете каждую смоделированную сделку. Таблица широкая, её требуется пролистывать вправо, чтобы увидеть все колонки. Управляйте числом сделок на одной экранной странице с помощью настройки в правом углу (максимальное число сделок на страницу = 100).
Перед разбором сделок рекомендуем переключить график на минимальный таймфрейм, который был использован в боте (здесь это 5 минут).
Верхняя сделка в списке — пока без результатов, она не завершена.
Вы должны раскрыть её список ордеров (кнопка «+») или перейти к сделке на графике (кнопка с диаграммой), чтобы увидеть, что там произошло. Например, в данном тесте мы увидим следующее:
Здесь зелёные «стрелочки» на графике — это сработавшие сеточные ордера.
Зелёная пунктирная линия — средняя цена позиции. Чтобы сделка закрылась, цена должна подняться выше этой средней цены.
Вы можете также включить показ всех сделок с экранной страницы (то есть максимум 100 штук) на графике, нажав «Показать все» в строке верхнего меню.
График со всеми сделками удобнее будет просматривать в полноэкранном режиме (кнопка с «уголками» или комбинация клавиш Shift+F)
Перелистывайте график влево, чтобы смотреть сделки, происходившие ранее.
И последняя вкладка — «Настройки», где вы можете посмотреть параметры тестировавшегося бота.
Здесь важны не только сами параметры стратегии, но также даты начала и конца теста.
Кнопка «Создать бота» переносит данные настройки в редактор бота, где можно либо продолжить изменения и тесты, либо сохранить бота. После сохранения бот появится в списке на главной странице сайта, и его можно будет стартовать на бирже.
Многочисленные примеры работы с бэктестами можно увидеть в наших видео на канале Youtube.
Рассмотрим некоторые вопросы, возникающие при анализе результатов бэктеста.
1. Почему бот входит в сделку не по установленным индикаторам?
Проверьте, как настроены «Отступ первого ордера» и «Подтяжка» в вашем боте. Если их неудачно подобрать, то возможна ситуация, когда бот входит в сделку по своим индикаторам (выставляет ордера), а исполнение первого ордера происходит намного позже. Раскройте список ордеров в сделке, посмотрите на точное время выставления ордеров и значение индикаторов в этот момент.
Также надо помнить, что бот входит в сделку на свече, следующей после срабатывания индикатора, а не на той, где индикатор имел нужное значение.
2. Почему МПУ не равен проценту просадки от суммы депозита бота?
Когда Вы выделяете боту депозит — это не значит, что ваша позиция будет строго весь его использовать. Это значит, что будет задействовано не больше выданной боту суммы.
Рассчитанная математически сетка ордеров обычно также не может быть именно в таком виде отправлена на биржу. Поверх этой сетки налагаются требования биржи на минимальный ордер, на шаг цены, в результате бот должен произвести ряд округлений, чтобы сделать торговлю возможной.
Например, тест бота с депозитом 100 USDT с 10 плечом показывает МПУ в 11%, но одновременно его сумму в 77.88 USDT (а не 110).
Если посмотреть на ордера сетки в данной сделке, можно увидеть, что бот выставил ордера в общей сумме на 0,012 BTC, средняя цена позиции получилась 59000 USDT, а объем этой позиции — 708 USDT. А не 1000 (=100х10), как можно предполагать.
Поэтому просадка в 11% от 708 USDT и составляет 77,88 USDT.
Кстати, имейте в виду, пожалуйста, что бэктест не учитывает фитили свечей — и по графику Вы можете видеть, что реальная просадка на тени свечи составляла, например, больше 13%.
3. Почему в списке сделок есть сделки с результатом «Профит», но в результатах только прочерки?
Раскройте список ордеров и посмотрите в столбец «Статус». Если все в сделке ордера отменены — значит, в сделке сработал выход по сигналу индикатора. При этом проверка на минимальный PnL не участвует.
Если же ордера в сделке исполнялись — то может быть дело в округлении. Некоторые монеты имеют цену с большим количеством знаков после запятой, превышающим ограничение биржи для выставления ордеров. Поэтому бот пытается округлить цену до допустимой, и может оказаться, что цена открытия и закрытия сделки при этом совпадают. Здесь поможет увеличение процента тейк-профита.
4. Почему на графике бота с фильтром «Цена больше 0» видны промежутки между сделками, ведь он должен входить ежеминутно?
На графике показаны только сделки, которые у вас на текущей странице общего списка сделок. Проверьте сортировку списка — если стоит не по дате, то по длительности, к примеру, то вы можете получить такую картину.
Если сделки отсортированы корректно, но пустые промежутки всё равно есть, то дело может быть в подтяжке. Установите вход в сделку с отступом 0 (Маркет), или увеличьте процент подтяжки. Сделки с подтяжкой также отображаются в списке истории сделок бэктеста.
5. Почему процент МПУ не равен сумме в USDT, взятой от объёма сделки? Почему МПУ в сделке, где исполнилась лишь часть ордеров, показывается больше, чем в сделке, где бот собрал всю сетку?
МПУ – это величина, плавающая от ордера к ордеру, он отражает расстояние между средней ценой по позиции (с учётом усреднений) и текущей.
А абсолютное значение (сумма в USDT) ещё и зависит от количества исполненных ордеров (объёма сделки). Поэтому такие расчёты и получаются, и они корректны.
Теперь мы показываем максимальный из процентов МПУ, получавшихся поэтапно от всех ордеров, и рядом с ним — максимальный из абсолютов среди всех ордеров.