Перейти к содержимому

Бэктесты

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

Бэктест обязателен для любых стратегий: купленных, подарочных, с витрины учебных ботов и собственных. Для запуска бэктеста требуется подключение к бирже (действующая API-привязка в кабинете), но не требуется реальный депозит (для симуляции можно указать любую сумму).

ТарифСтоимостьНачисление в деньМаксимальное накоплениеПараллельные тесты
Free$0+2 года6 лет1
Starter$15 / мес+50 лет150 лет1
Pro$29 / мес+500 лет1 500 лет5
Quant$69 / мес+50 000 лет150 000 лет50
  • «Free»: между повторными запусками — 30 сек.
  • «Starter», «Pro», «Quant»: интервал между стартами 1 сек.

Подробнее: Тарифы бэктестов

Все ваши тесты, счётчики, оплата подписки — в разделе кабинета «Бэктесты».

Чтобы тест прошёл корректно:

  • В боте есть фильтры на старт (кроме TradingView — такие тесты не запускаются).
  • Метод расчёта во всех фильтрах — «На закрытии бара» (режим «Раз в минуту» не поддерживается в бэктесте).
  • Трейлинг-стоп не используется (по минутным свечам нельзя восстановить внутрисвечную траекторию).

Если хотите протестировать «бот без фильтров» — временно поставьте на старт «Цена > 0», это примерно то же самое.

  1. Цена исполнения в тесте:

    • вход (рыночный) — по цене открытия свечи, следующей за сигнальной,
    • усреднение/выход — по цене открытия свечи, следующей за сигнальной.

    В реальной торговле исполнение будет между ценой открытия/закрытия — поэтому результаты отличаются.

  2. Фитили минутных свечей по умолчанию не учитываются. В реальности на тенях происходят усреднения/SL/TP/ликвидации. В тесте длинные тени не «цепляют» ордера → стоп-лоссов на практике бывает больше. Включайте опцию “Учитывать тени свечей”, если используете фиксированные стоп-лоссы.

  3. Смотрите не только цифры, но и график сделок: так понятнее механика стратегии и причины просадок.

  4. Подтяжка в бэктесте считается по цене закрытия свечи (в реальной торговле — по тикам).

  5. В самых первых сделках на периоде тестирования могут быть погрешности во входе — поскольку для вычисления индикаторов нет достаточного количества предшествующих свечей (например, нужно 200).

  1. Каждый раз проверяйте дату начала/конца периода.
  2. Указывайте реальные комиссии биржи (ставки).
  3. На окне старта теста посмотрите фитили (p0.99) и настройте SL: рекомендуемый SL ≈ 2 × соответствующий фитиль.
  4. Давайте тестам говорящие названия (например: BTC 1ord SL_6% DCA_30/60 BB_15).

Запуск — из редактора бота («Тестировать») или с карточки бота.

Откроется окно с параметрами:

Окно запуска бэктеста

  1. Название теста — желательно уникальное и понятное (переименовать нельзя).
  2. Период (выбор зависит от тарифа).
  3. Свечи — сколько свечей доступно, сколько попадёт в тест, длины фитилей (важно для SL).

    Если у вас в стратегии есть SL, для Long-бота делайте его как минимум 2 × фитиль вниз (подробнее — в статье про стоп-лосс). Лучше, если SL будет за самым длинным фитилём в периоде.

  4. Комиссия — выберите фактические ставки вашей биржи.
  5. Публичный тест — попадёт в общую базу (может войти в рассылку/витрину). В платных тарифах опцию можно отключить.
  6. «Учитывать тени свечей (пессимистично)» — включает консервативный сценарий:
    • учитываются лимитные сеточные ордера,
    • лимитные TP,
    • простой SL (не по индикатору). Если на одной минуте пересекаются TP и SL, зачтётся SL.

Проверьте сводку параметров и нажмите «Подтвердить»:

Запуск бэктеста

После завершения вы увидите экран с графиком и вкладками.

Сразу переключите график на минимальный таймфрейм, который использовали во входных фильтрах (здесь — 5 минут).

Пример бэктеста

Вверху есть «Поделиться» — получите ссылку на тест (прикладывайте её в вопросы в поддержку). Например: https://veles.finance/share/ybUIi.

Заголовок бэктеста

Важно: значение Gross-прибыли — промежуточное; ориентируемся на Net. Подробнее о показателях — в разделе Статистика.

Под графиком — вкладки:

Владка "Результаты"

  • Net (монета/USDT)главная метрика теста: результат с учётом торговых комиссий, но без учёта фандинга.
  • Gross (монета/USDT) — результат без комиссий (и торговых, и funding). Суммируются все сделки (TP и SL).
  • Комиссия — сумма торговых комиссий за весь период (ставки).
  • Эффективность в день — Net за период / суммарное время в сделках. Удобно для стратегий с редкими входами.
  • МПП (макс. плавающая прибыль) — пик положительного PnL по сделке (или за весь тест).
  • МПУ (макс. плавающий убыток)процент просадки от средней цены позиции и его абсолют (USDT) — ключевой риск-показатель. Учтите: в тесте не считается тень минутной свечи → на реальном рынке просадка по фитилю бывает глубже.

Если в стратегии есть SL и он сработал в тесте, МПУ определяется по минутной свече, где был зафиксирован SL. То есть в ботах со стоп-лоссом на МПУ можно не смотреть, а смотреть надо на размер убытка по стоп-лоссу (в списке сделок).

Высокий МПУ говорит о том, что стратегия попадала в пролив — это нормально, но важно учесть в расчете маржи.

Как оценить риск ликвидации (упрощённо):

  • Кросс-маржа: ликвидация ≈ когда МПУ ≥ баланс счёта.
  • Изолированная маржа, 1 ордер: ликвидация ≈ когда МПУ ≥ депозит (на практике раньше, ~75% просадки).
  • Изолированная маржа, сетка: ликвидация наступает, когда МПУ ≥ Начальная маржа позиции. Начальная маржа изменяется с каждым ордером. Бэктест в настоящее время не учитывает изменение маржи в позиции. Нужно вручную так подобрать сетку, чтобы Начальной маржи всегда хватало для просадки до исполнения очередного ордера (не используйте высокие плечи).

Как рассчитать маржу точнее (рекомендуем):

  1. Возьмите %МПУ из теста и максимальный фитиль % (вниз для Long / вверх для Short).
  2. Сложите: %МПУ + %макс. фитиль.
  3. Умножьте на объём позиции (депозит × плечо).
  4. Для поддержки позиции на счёте мы рекомендуем держать либо 2×МПУ, либо 2×Депозит — выбираем то, что больше.

Блок «Сделки» во вкладке «Результат» — сводка по исходам:

  • TP, SL, случаи подтяжки (отменённые сделки). Подробнее про подтяжку — в статье про режим торговли.

Часто «Всего» сделок на 1 меньше суммы TP/SL — последняя сделка не завершена в пределах периода.

Максимальное время в сделке — ищите долгие инвесты. Перейдите на «Сделки» и отсортируйте по длительности.

  • Винрейт, распределение исходов, кумулятивная прибыль по времени.
  • Позволяет быстро увидеть, когда стратегия зарабатывает и где теряет.

Вкладка "Графики"

Здесь детальный разбор каждой симулированной сделки. Таблица широкая — пролистывайте вправо. Типичные колонки: Начало/Конец, Длительность, Результат, PnL, Комиссия, МПУ/МПП, Ордеров исполнено/отменено и др.

Вкладка "Сделки"

Например:

Пример сделки

  • Зелёные стрелки — исполненные усреднения.
  • Пунктир — средняя цена позиции. Чтобы закрыться в плюс, цена должна быть выше средней — здесь сделка в инвесте.

Можно показать все сделки текущей страницы (до 100 шт.) — нажмите «Показать все». Удобно смотреть в полноэкранном (кнопка «уголки» или Shift+F).

Пример всех сделок

Листайте график влево (прошлые сделки).

Показывает все параметры протестированной конфигурации и точные даты теста.

Вкладка "Настройки"

Кнопка «РЕДАКТИРОВАТЬ БОТА» — переносит настройки в редактор: можно продолжить тюнинг, снова протестировать или сохранить бота и запускать на бирже.

  • Монета была залистена недавно — данных на ранний период нет.
  • Выбранная биржа подключена у нас позднее — может не хватать 1-минуток. Попробуйте другую биржу в тестах, а торговать — на нужной.
  • Проверьте время создания и время исполнения ордера, параметры Отступ первого ордера и Подтяжку (рекомендуется установить их на минимум). Так бывает: бот выставил ордера строго по сигналу, но исполнились они позже.
  • Также помните: вход — на следующей свече после срабатывания сигнала.
  • Если визуально «не сходится», докрутите историю свечей (см. примечание выше).

Депозит — это потолок средств под сделку, а не гарантированный объём маржи позиции. Биржевые ограничения (минимальный ордер, шаг цены) вызывают округления, и итоговый объём позиции отличается от «депозит × плечо».

4. В списке сделок «Профит», а в результатах прочерки

Заголовок раздела «4. В списке сделок «Профит», а в результатах прочерки»

Если все ордера отменены — выход был по сигналу индикатора (минимальный PnL тут не проверяется). Технически профит, но механика похожа на подтяжку. Избежать можно, если поставить Отступ = 0 (Маркет).

Если ордера исполнялись — возможно, всё «упёрлось» в округление цены (много знаков после запятой) → увеличьте % TP.

Ещё вариант — комиссия биржи списывается в 3-й валюте (например, BNB) — у нас этих данных нет, поэтому в тестах/реале они не отражаются.

5. С фильтром «Цена > 0» должны быть сделки каждую минуту, а их меньше

Заголовок раздела «5. С фильтром «Цена > 0» должны быть сделки каждую минуту, а их меньше»

График рисует только сделки текущей страницы списка. Проверьте сортировку (должна быть по дате). Если с сортировкой порядок, проверьте подтяжку — она отменяет сделки. Поставьте отступ 0 (Маркет) или увеличьте % подтяжки. Отменённые сделки видны в истории.

6. Почему %МПУ не совпадает с абсолютом, а при частичных усреднениях МПУ больше?

Заголовок раздела «6. Почему %МПУ не совпадает с абсолютом, а при частичных усреднениях МПУ больше?»

%МПУ зависит от средней цены позиции на каждом шаге. Абсолют (USDT) — ещё и от объёма, который успели собрать. Мы показываем максимальный из %МПУ по всем этапам и рядом максимальный абсолют (т.е. они могут быть не от одной и той же сделки).

  • Проверьте даты начала и окончания бэктеста. Был ли бот запущен в это время?
  • Проверьте блокировки в профиле. Мог ли вход бота быть ограничен?
  • Напишите в службу поддержки: прикрепите ссылку на бэктест, номер бота, дату и точное время UTC, которые вы хотите, чтобы мы проверили.

8. В реальной торговле сделка есть, а в бэктесте её нет.

Заголовок раздела «8. В реальной торговле сделка есть, а в бэктесте её нет.»
  • Проверьте даты начала и окончания бэктеста. Сделка могла не войти в период тестирования.
  • Если использовать фильтр отображения “Период” в длинном бэктесте, то будут видны только сделки, которые завершились внутри периода. Входы и ордера незакрытых сделок не показываются.

9. Почему одинаковые настройки с разным депозитом дают разное число сделок?

Заголовок раздела «9. Почему одинаковые настройки с разным депозитом дают разное число сделок?»

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

10. Почему в бэктесте вход был, но сделка отменилась, а в реале - продолжилась?

Заголовок раздела «10. Почему в бэктесте вход был, но сделка отменилась, а в реале - продолжилась?»

Это особенность моделирования. В бэктесте, если условия для тейка наступили до исполнения первого ордера, ордера отменяются. В реальности этого не происходит, а бот ждёт исполнения ордеров. Рекомендуем использовать конфигурации со входом по Маркету (с нулевым отступом первого ордера).

  1. Усилить фильтры на вход в сделку - использовать старшие таймфреймы, а также более консервативные значения для сравнения.
  2. Увеличить ширину перекрытия сетки (в режиме торговли «Простой»).
  3. Использовать адаптивное усреднение (режим торговли «Сигнал»). При этом также следить, чтобы отступы между ордерами не были слишком маленькими.
  4. Использовать логарифмическое распределение меньше 1 (в режиме торговли «Простой»), или аналогично ему настроить отступы в других режимах.
  5. Использовать высокий Мартингейл (увеличение объёма от ордера к ордеру).
  • Gross — суммарный результат без комиссий.
  • Net — итог с торговыми комиссиями (на этот показатель смотрим в первую очередь).
  • МПП — максимальная плавающая прибыль по сделке/тесту.
  • МПУ — максимальная плавающая просадка; ключ к оценке риска ликвидации.
  • Фитиль (тень) — экстремум внутри свечи.
  • Подтяжка — отмена неисполнённой сделки, если цена ушла слишком далеко.