Разработка Pine Script: почему стратегия не работает
Стратегия на Pine Script показывает в тестере ровную растущую кривую, а на живом счёте — серию убытков. Дело почти никогда не в рынке: тестер проигрывает историю по тем же барам, по которым код считает сигнал, и все ошибки логики просто не видны. Разбираем, почему красивая история не переносится в реальные сделки.
Первая причина — переоптимизация. Когда под историю подбирают пять-шесть параметров с мелким шагом, из тысяч комбинаций обязательно находится та, что идеально ложится на прошлые данные: она описывает не поведение рынка, а шум конкретного отрезка. Признак простой — результат держится в очень узком коридоре значений: сдвинули параметр на шаг, и просадка выросла в разы. Такая стратегия рассыпается на первых же новых барах.
Вторая — логика входа и выхода расходятся с исполнением. Сигнал считается по закрытию бара, а заявка отправляется по этой же цене, хотя на практике вход идёт по открытию следующего или по худшей цене в момент волатильности. Сюда же отсутствие комиссии, спреда и проскальзывания: при частых сделках издержки съедают всё преимущество. Отдельно проверяем перерисовку — значения, которые пересчитываются на незакрытом баре и задним числом «подтверждают» вход.
Из-за этого же страдают стопы и цели, привязанные к экстремумам текущего бара. Чтобы понять, где именно ломается логика, мы прогоняем стратегию на отрезке, не участвовавшем в настройке, проверяем устойчивость параметров и только потом добавляем реалистичные издержки. Порядок обратный: сначала честные данные и исполнение, потом подбор.
Что даёт стратегия, проверенная на истории и на новых данных
Разница между стратегией, которая держится, и той, что рассыпается на первом новом месяце, видна не по прибыли, а по набору проверок. Мы фиксируем их до старта: если пункт не выполняется, гипотеза возвращается на доработку, а не в торговлю. Ниже — то, что заказчик видит в отчёте по каждой стратегии на Pine Script, языке платформы TradingView.
- Просадка на истории и на новых данных сопоставима. Расхождение глубже четверти — признак подгонки, такие параметры в работу не идут.
- Параметры не стоят на краю диапазона. Сдвиг каждого значения на шаг в обе стороны не переворачивает результат.
- Издержки заложены в расчёт. Комиссия, спред и проскальзывание считаются на реальных объёмах — иначе отчёт покажет доходность, которой на счёте не будет.
- Результат держится на разных активах и режимах рынка, а не на одном удачном отрезке.
- Проверка на новых данных идёт после заморозки правил. Дообучение запрещено: иначе это подгонка, а не тест.
- Прогон воспроизводим. Тот же набор данных и комиссий даёт тот же отчёт — результат можно перепроверить.
- Гипотеза проверяется за один прогон, а не за неделю ручной работы: стенд и шаблоны заготовок уже собраны.
Такой набор проверок даёт устойчивость стратегии на новых данных и отсекает слабые гипотезы до торговли. Просадка перестаёт быть сюрпризом, а решения по параметрам опираются на измерения, а не на убеждения.
Сравнение подходов: индикатор, робот, портфель стратегий
Формат реализации определяет не только объём кода, но и то, как логика переживёт смену рыночного режима. Один и тот же сигнал, собранный как индикатор, как автономный робот или как набор стратегий под общим управлением капиталом, ведёт себя по-разному при просадке, обрыве соединения и пересчёте данных на новых барах.
Ниже — три варианта, между которыми реально выбирают, с честными ограничениями каждого по устойчивости и стоимости сопровождения.
Варианты и их пределы
| Вариант | Когда подходит | Ограничения подхода |
|---|---|---|
| Индикаторная стратегия | Нужна визуальная проверка гипотезы на истории и на живом графике, решение принимает человек | Сигналы видны, но не исполняются сами: результат зависит от дисциплины оператора, ручной вход теряет на проскальзывании |
| Торговый робот | Логика формализована, условия входа и выхода однозначны, нужна работа без участия человека | Один сценарий на один инструмент: при смене волатильности правила устаревают, требуется регулярная перенастройка и контроль исполнения |
| Портфель стратегий | Несколько независимых логик делят капитал, важна устойчивость за счёт диверсификации | Сложнее отладка и учёт корреляций: стратегии могут дублировать друг друга, а риск считается по совокупной позиции |
Разделение работает и в обратную сторону: часть ограничений снимается, если индикатор оставить для контроля, а исполнение передать роботу. Такой гибрид встречается чаще, чем чистые варианты, и на оценке мы отталкиваемся от того, какой подход заказчик готов сопровождать.
Разработка Pine Script: этапы от схемы до сдачи
Этапы разработки стратегии одинаковы и для индикатора, и для стратегии с несколькими условиями. Сначала гипотеза превращается в проверяемые правила, затем в схему и только потом в код — иначе логика незаметно подгоняется под красивый график.
- Постановка гипотезы. Фиксируем рынок, таймфрейм, условие входа и выхода, правило риска и момент отмены сигнала. Критерии вроде «сильного тренда» заменяем измеримыми: наклон скользящей, дистанция от уровня, объём.
- Схема логики. Описываем состояния позиции: вход, удержание, переворот, частичное закрытие. Отдельно — поведение на границе сессии: здесь чаще всего расходятся ожидания и результат.
- Реализация. Пишем стратегию на Pine Script: параметры вынесены в настройки, расчёт идёт по закрытой свече, торговые условия отделены от отрисовки — поведение воспроизводимо и не зависит от перерисовки.
- Прогон на истории. Смотрим не только доходность: просадка, доля прибыльных сделок, распределение результатов по периодам, число сделок. Десяток сделок — ещё не статистика.
- Проверка устойчивости. Меняем таймфрейм и инструмент, сдвигаем параметры на шаг, смотрим участок, не участвовавший в настройке. Если результат рассыпается от небольшого сдвига — правило переобучено.
- Аудит кода. Проверяем расчёт на заглядывание в будущее, размер позиции, учёт комиссии и проскальзывания, обработку пропусков данных.
- Передача. Исходник с комментариями, описание параметров и их границ, известные ограничения, порядок подключения.
Каждый этап заканчивается артефактом: схема, код, отчёт по тестам, инструкция. По ним видно, на чём основаны выводы и что именно менять при смене рынка.
Что передаём: код, отчёт проверки, документация
Стратегия остаётся у вас в виде, который не требует нашего участия: код читается и меняется, расчёты воспроизводимы, решения объяснены. Состав поставки одинаков и для новой стратегии, и для переработки существующей — меняется только объём.
- Исходный код стратегии на Pine Script — полный, с комментариями по логике входов, выходов и управления позицией. Не закрытая библиотека, а файл, который можно прочитать построчно и изменить под свою гипотезу.
- Отчёт о тестировании — прогон на исторических данных в разных режимах рынка: устойчивый тренд, боковик, резкие движения. В отчёте зафиксированы параметры прогона, просадка, доля прибыльных сделок и их число, чтобы результат можно было повторить.
- Описание управления риском — как считается размер позиции, как ограничивается серия убытков, при каких условиях стратегия останавливается.
- Документация по стратегии — назначение каждого параметра, безопасные диапазоны значений, границы применимости. Её достаточно, чтобы новый инженер разобрался без переписки с автором кода.
- Регламент сопровождения — что проверять и с какой периодичностью, как переносить логику на другой инструмент или таймфрейм, как фиксировать изменения между версиями.
- Набор проверок и тестовые данные — воспроизводимый расчёт: после любой правки видно, что именно изменилось в поведении стратегии.
- Журнал решений — какие гипотезы проверялись и были отброшены, по каким причинам. Это экономит время при следующей доработке.
Кейс: как снизили просадку и убрали переоптимизацию
Стратегия на TradingView пришла к нам рабочей: 14 параметров, подобранных под конкретный участок истории, ровная кривая дохода и просадка около 18% на нём. На новых данных картина разошлась — просадка выросла до 42%, часть периодов ушла в минус. Параметры описывали не поведение рынка, а шум одного удачного отрезка, и это классическая подгонка под историю.
Что изменили
Разобрали, какие параметры реально влияют на результат, а какие только подстраивают вход под прошлое. Четыре оказались избыточными — их убрали, три объединили в один фильтр волатильности. Итоговая логика входа описывается шестью параметрами вместо четырнадцати, и каждый из них проверяем на смысл, а не на красоту графика.
Дальше — проверка на устойчивость: прогон по нескольким инструментам и разным интервалам свечей, скользящие окна и последовательная проверка на участках, которых стратегия не видела при настройке. Такой прогон показывает не лучшую кривую, а разброс результата: насколько итог зависит от случайно выбранного периода.
После переработки результат на истории стал скромнее, зато расхождение между историей и новыми данными сократилось с трёх с лишним раз до 1,2. Максимальная просадка снизилась с 42% до 16%, доля прибыльных периодов выросла с 48% до 61%, а сдвиг одного параметра уже не переворачивает итог теста. Главный эффект — предсказуемость: видно, в каких условиях стратегия работает и когда её нужно выключать.
Чем отличается проверка на истории от торговли на демо-счёте
Тестирование на истории и демо-счёт отвечают на разные вопросы. Первый показывает, воспроизводима ли логика стратегии на Pine Script на прошлых данных, второй — выживает ли она при реальном исполнении. В истории сигнал появляется на закрытии бара и исполняется по этой же цене, а на демо между закрытием бара и приходом заявки на сервер проходит время, и цена входа уже другая.
Расхождение результатов складывается из нескольких слоёв: спред и комиссия, проскальзывание на быстрых движениях, разное качество истории по младшим периодам, гэпы на открытии сессии. Отдельная причина — заполнение внутри бара: если логика опирается на максимум и минимум свечи, на истории результат получается оптимистичнее, чем достижим в реальном времени.
Норма — когда на демо совпадает число сделок и их направление, а расходятся только доходность и просадка, и то в пределах, объяснимых издержками. Дефект — когда меняется знак результата, часть сделок исчезает или появляется чаще, чем в истории, либо отчёт показывает входы по ценам, которых в тот момент не было. Это уже не погрешность исполнения, а ошибка в логике или в данных.
Период проверки подбираем так, чтобы он захватывал тренд, боковик и участок высокой волатильности, иначе стратегия выглядит устойчивой просто потому, что рынок был однообразным. Сверяем журналы сделок построчно по времени и цене, а издержки считаем отдельной строкой — тогда видно, на каком слое теряется результат и что править: условия входа или модель исполнения.
Технические сомнения: данные, комиссии, проскальзывание
Прибыльная стратегия на истории расходится с реальностью чаще не из-за логики входа, а из-за издержек и допущений тестера. Ниже — вопросы, которые мы закрываем до того, как считать результаты бэктеста достоверными.
Как комиссии попадают в расчёт?
Комиссия списывается и на входе, и на выходе, а для лимитных и маркет-заявок ставки разные. В тестере задаём обе и прибавляем к цене сделки — иначе кривая доходности завышается тем сильнее, чем чаще стратегия торгует.
Как моделируется проскальзывание?
Исполнение по идеальной цене — иллюзия: в тестере нет реальной очереди заявок. Задаём проскальзывание в тиках или в доле спреда; на тонком рынке расхождение с историей становится заметным.
Какие лимиты площадки меняют результат?
Минимальный шаг цены, округление объёма, лимит на число активных заявок и размер позиции. Стратегия, которая ставит объём выше лимита, в реальности получает частичное исполнение — метрики в тестере расходятся с торговлей.
Как проверить качество исторических данных?
Проверяем пропуски в свечах, дубли и разрывы на границах сессий. Если данные не выровнены по времени площадки, тест завышает результат и на живом счёте стратегия его не повторяет.
Обсудим задачу и вернёмся с оценкой и планом
Чтобы разбор не растянулся на недели, достаточно прислать короткое описание: инструмент и рабочий таймфрейм, логику входа и выхода, способ расчёта риска на сделку. Если наработки уже есть — файл стратегии, лог прогона на истории и список сделок, результаты которых вызывают вопросы. Этого хватает, чтобы обсудить задачу предметно и вернуться с оценкой и планом работ, а не с уточняющими вопросами по кругу.
Что фиксируем в плане до старта:
- правила входа, выхода и переноса защитной заявки — формулами, а не «на глаз»;
- объём позиции, шаг его изменения, предельная просадка на сделку и на серию сделок;
- набор исторических данных для тестирования, включая трендовые участки и длительный боковик;
- перечень проверок: комиссия, проскальзывание, пропущенные бары, поведение на открытии торгов;
- метрики приёмки: доля прибыльных сделок, профит-фактор, максимальная просадка, среднее время удержания;
- состав поставки: код стратегии, комментарии к логике, инструкция по запуску и настройке параметров;
- условия сопровождения стратегии: какие правки вносим при смене режима рынка и в какие сроки.
Пункты плана согласуем до первой строки кода — тогда результат можно проверить по числам, а не обсуждать на вкус. Опишите задачу в удобном виде: вернёмся с оценкой, планом работ и границами сопровождения стратегии.







