Найти в Дзене
Жить с трейдинга

Backtest стратегии на Pine Script — как проверить идею без потерь

Оглавление

Привет, любитель трейдинга и инвестиций! Ты наверняка знаешь, что торговать без тестирования — это как прыгать с парашютом, не проверив, есть ли он за спиной. Backtest в Pine Script — твой надежный способ проверить стратегию, не теряя ни копейки. Давай разберёмся, как это сделать правильно.

Backtest — это "машина времени" для трейдера

Представим: ты изобрел торговую стратегию за ночь, вдохновленный пятой чашкой кофе. "Покупай, когда RSI ниже 30, продавай выше 70 — гениально же!" Но вот вопрос: а что, если в 2008 году, когда рынок падал как камень, твоя стратегия превратила бы депозит в пыль?

Бэктест — это твоя личная машина времени. Ты загружаешь свою стратегию в Pine Script, запускаешь её на исторических данных и смотришь:

- Сколько бы ты заработал (или потерял) во время доткомовского пузыря?

- Как твои правила сработали бы в кризис 2008-го?

- Выдержала бы стратегия волатильность 2020 года?

Реальный пример:

Один мой знакомый тестировал стратегию "покупай на дивергенции RSI". На данных 2021 года она давала +40%. Но когда он прогнал её на периоде 2000-2003 — оказалось, она бы сожгла 70% депозита.

Аналитический вывод:

Торговать без бэктеста — это как играть в русскую рулетку с полным барабаном. Да, иногда везёт, но статистически — плохая идея.

Бэктест не гарантирует успех в будущем, но он:

1. Показывает слабые места стратегии

2. Даёт понимание, в каких рыночных условиях она работает/не работает

3. Спасает тебя от слива денег на очевидно убыточных идеях

P.S. Если твой бэктест показывает 1000% прибыли — скорее всего, ты где-то накосячил. Проверь ещё раз! 😉

Шаг 1. Задаем условия входа и выхода (как объяснить бабушке)

Допустим, ты решил торговать по RSI — это как градусник для рынка. Когда показатель ниже 30 — "переохлаждение", покупаем. Выше 70 — "перегрев", продаем.

Вот как это выглядит в Pine Script:

pinescript

// Включаем режим стратегии

strategy("RSI стратегия", overlay=true)

// Считаем RSI за 14 дней

rsiValue = ta.rsi(close, 14)

// Условия:

buyCondition = rsiValue < 30 // Покупаем при перепроданности

sellCondition = rsiValue > 70 // Продаем при перекупленности

// Подаем торговые сигналы

strategy.entry("Buy", strategy.long, when = buyCondition)

strategy.close("Buy", when = sellCondition)

Что важно:

- overlay=true — чтобы стратегия отображалась прямо на графике

- ta.rsi(close, 14) — стандартная функция для расчета RSI

- strategy.entry и strategy.close — основные команды для сделок

Пример из жизни:

Это как если бы ты в 2020 году покупал Bitcoin каждый раз, когда RSI падал ниже 30. На истории видно — некоторые входы были бы очень удачными, но были бы и ложные сигналы.

Шаг 2. Запускаем тест (магия в один клик)

1. Копируешь код в редактор Pine Script (Ctrl+V)

2. Жмешь "Add to Chart"

3. На графике появляются стрелки покупок/продаж

4. Справа вкладка "Strategy Tester" показывает прибыль

Где смотреть результаты:

- Кривая баланса — как рос бы твой депозит

- Статистика — процент прибыльных сделок, максимальная просадка

- Список сделок — можно посмотреть каждую сделку

Аналитический вывод:

В 60% случаев такая простая стратегия покажет убыток. Почему? Потому что:

- RSI может долго оставаться в зоне перепроданности при сильном тренде

- Нет фильтров (например, объема или тренда)

- Не учтены комиссии

Совет:

Попробуй добавить условие "покупать только если цена выше 200-дневной скользящей средней". Это сразу улучшит результаты!

P.S. Первый бэктест — как первая любовь: обычно оказывается разочарованием, но без него никуда 😄

Разработано Freepik
Разработано Freepik

1. Переоптимизация — когда стратегия становится "капризной любовницей"

Знакомо: ты подбираешь параметры, пока стратегия не начинает давать 90% прибыльных сделок на исторических данных. Но в реальной торговле она ведёт себя как совершенно другой человек!

Как это происходит:

- Ты тестируешь 20 вариантов скользящих средних

- Подбираешь "идеальный" период RSI

- Оптимизируешь стоп-лоссы до пункта

Реальный кейс:

Один мой коллега создал стратегию, которая в 2017-2019 давала 15% в месяц. Но в 2020 она начала терять по 5% ежедневно. Оказалось, он "переоптимизировал" параметры под конкретный рыночный режим.

Как избежать:

1. Тестируй на разных временных отрезках (включая кризисные периоды)

2. Используй "walk-forward" оптимизацию

3. Оставляй "разумный зазор" в параметрах (например, RSI 25-35 вместо строго 30)

Аналитический вывод:

Стратегия должна быть как хороший джин — универсальной. Если она работает только при определённых "погодных условиях" — это путь к сливу депозита.

2. Игнорирование комиссий — "а ведь я считал себя гением!"

Твой бэктест показывает 120% годовых? Прежде чем праздновать — посчитай комиссии!

Что часто забывают:

- Комиссии брокера

- Спред (разница между покупкой и продажей)

- Свопы по ночам

- Проскальзывание при исполнении

Пример из практики:

Стратегия скальпинга по EUR/USD показывала +85 пунктов за день. Но:

- Комиссия 2 пункта за сделку

- 10 сделок в день = 20 пунктов

- Спред 1 пункт × 10 сделок = ещё 10

Итого реальная прибыль не 85, а 55 пунктов!

Как исправить:

pinescript

strategy(commission_type = strategy.commission.percent, commission_value = 0.1) // 0.1% комиссии

strategy(slippage = 3) // Проскальзывание 3 пункта

Аналитический вывод:

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

P.S. Особенно коварны стратегии с большим количеством сделок — там комиссии съедают прибыль как термиты деревянный дом!

1. Тестируй на разных рынках — или как найти "универсального солдата"

Твоя стратегия идеально работает на S&P 500? Прекрасно! А теперь давай проверим её на:

- Волатильных криптопарах (BTC/USD)

- Спокойных фьючерсах на золото

- Акциях третьего эшелона

- Форекс-парах в азиатскую сессию

Реальный пример:

Однажды я разработал стратегию по нефти Brent. На тестах 2015-2018 — стабильные 25% годовых. Но когда попробовал на Bitcoin — за неделю "слил" виртуальный депозит. Оказалось:

- Крипта слишком волатильна для моих параметров

- Ночные гэпы съедали всю прибыль

- Ликвидность в выходные была другой

Как правильно тестировать:

1. Выбери 3-5 принципиально разных инструментов

2. Проверь на разных таймфреймах (от 1 минуты до 1 дня)

3. Протестируй в периоды высокой и низкой волатильности

Аналитический вывод:

Если стратегия показывает хорошие результаты на:

- Акциях

- Индексах

- Сырьевых активах

- Валютах

...значит, ты действительно нашёл "грааль" (ну или хотя бы что-то близкое к нему)

2. Добавляй фильтры — или как отсеять 80% мусорных сигналов

Базовый RSI-фильтр даёт слишком много ложных срабатываний? Пора добавить "охранников":

1. Трендовый фильтр (цена выше 200 SMA)

2. Объёмный фильтр (объёмы выше среднего)

3. Временной фильтр (торгуем только в лондонскую сессию)

4. Волатильностный фильтр (ATR выше определённого уровня)

Пример улучшенной стратегии:

pinescript

// Основные условия

rsiBuy = ta.rsi(close, 14) < 30

priceAboveMA = close > ta.sma(close, 200)

highVolume = volume > ta.sma(volume, 20)1.5

// Комбинированный сигнал

finalBuySignal = rsiBuy and priceAboveMA and highVolume

Почему это работает:

- SMA 200 отсекает сделки против тренда

- Фильтр объёмов исключает "мёртвые" зоны

- RSI остаётся основным триггером

Аналитический вывод:

Каждый добавленный фильтр должен:

1. Уменьшать количество сделок

2. Увеличивать качество сделок

3. Не усложнять стратегию до невозможности

P.S. Идеальный фильтр — как хороший кофе: отсеивает всё лишнее, оставляя только крепкий и качественный результат! ☕

Реальный пример: как "прибыльная" стратегия моего друга, оставила его с носом

Давай разберём наш эпик фейл подробнее — это поучительнее, чем успехи!

Исходные данные:

- Стратегия: пересечение MACD + всплеск объёмов

- Таймфрейм: 15 минут

- Бэктест за 2021 год: +80%

- Реальная торговля: -20% за 3 месяца

Что пошло не так (разбор полётов):

1. Ночной кошмар ликвидности

В тесте он не учитывал, что в 2:00-5:00 по МСК:

- Спред по EUR/USD расширялся с 1 до 5 пунктов

- 30% ордеров исполнялись с проскальзыванием

- Объёмы были в 3 раза ниже дневных

настройка:

pinescript

// Добавляем временной фильтр

londonSession = hour >= 10 and hour < 19

strategy.entry("Buy", strategy.long, when = buySignal and londonSession)

2. Коварное проскальзывание

В тесте все сделки исполнялись по идеальной цене. В реале:

- 15% сделок исполнялись на 2-3 пункта хуже

- На стоп-лоссах терялось дополнительно 1-2% депозита

настройка:

pinescript

// Устанавливаем реалистичные параметры

strategy(slippage = 3, commission_type = strategy.commission.percent, commission_value = 0.07)

3. Психологический фактор

В бэктесте он спокойно наблюдал за просадкой 25%. В реале:

- Уже при -8% начинал паниковать

- Вручную отменял часть сделок

- Пропускал хорошие входы из-за страха

Что он извлёк из этого:

1. Всегда тестируй в условиях:

- Реальных комиссий

- Типичных спредов

- Периодов низкой ликвидности

2. Добавляй в код:

- Временные ограничения

- Лимиты на размер позиции

- Защитные ордера

3. Перед реальным запуском:

- 1 месяц торгуй на демо-счёте

- Сравнивай результаты с бэктестом

- Готовься к худшему сценарию

Аналитический вывод:

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

P.S. Теперь я перед запуском любой стратегии специально ищу, в каких условиях она даёт убыток. Если нахожу — значит, стратегия стала надёжнее!

-3

Заключение: Бэктест — твой финансовый щит и меч

Уважаемый трейдер, если ты добрался до этого места — ты уже на голову выше 90% трейдеров, которые торгуют "на глазок". Давай резюмируем главное:

1. Бэктест — это страховка от слива

Лучше потерять 2 часа на тесты, чем 2 месяца зарплаты в рынке.

2. Идеальных стратегий не существует

Но хороший бэктест помогает найти "достаточно хорошую" — такую, которая:

- Работает в разных условиях

- Учитывает комиссии и спреды

- Не ломается при первом же рыночном чихе

3. Главный секрет успеха

Лучшая стратегия — это:

20% грамотного тестирования +

30% дисциплины +

50% управления капиталом

Философская мысль в конце:

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

P.S. Помним: каждая проваленная стратегия — это шаг к прибыльной. Главное — анализировать ошибки, а не опускать руки. Удачи на рынках!

-4