Пошаговый разбор структуры кода на Pine Script: от настройки параметров до торговых сигналов
Создание скрипта-стратегии в TradingView начинается с понимания структуры. Любая стратегия состоит из логических блоков, которые решают конкретные задачи. Рассмотрим построение скрипта на примере комплексной системы.
1. Блок объявления и настроек
Первые строки определяют тип скрипта и создают панель управления с параметрами.
//@version=5
strategy("Комплексная стратегия", overlay=true, initial_capital=10000)
//НАСТРАИВАЕМЫЕ ПАРАМЕТРЫ
param_a = input(1, 'Чувствительность ATR')
param_period = input(15, 'Период расчета')
// Переключатели индикаторов
show_bollinger = input(false, 'Показывать Боллинджер')
use_heikin_ashi = input(false, 'Использовать Heikin Ashi')
use_linreg = input(false, 'Свечи линейной регрессии')
// Параметры индикаторов
bb_length = input(20, 'Длина Боллинджера')
ema_length = input(50, 'ДлинаEMA')
signal_length = input(11, 'Длина сигнальной линии')
Что это дает: В интерфейсе TradingView появляется панель с ползунками и переключателями. Это позволяет тестировать разные настройки без редактирования кода.
2. Блок расчета индикаторов
Каждый индикатор вычисляется независимо, результаты сохраняются в переменные. Вычисление индикаторов:
// Базовые данные (цена)
src = use_heikin_ashi ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) : close
// Индикатор ATR для волатильности
xATR = ta.atr(param_period)
nLoss = param_a xATR
// Скользящие средние
basis = ta.sma(src, bb_length)
ema_val = ta.ema(src, ema_length)
signal_line = ta.sma(src, signal_length)
// Полосы Боллинджера (только если включены)
dev = 2.0 ta.stdev(src, bb_length)
upper = basis + dev
lower = basis - dev
// Адаптивный трейлинг-стоп (логика обновления)
xATRTrailingStop = 0.0
// ... логика расчета стоп-уровня
Принцип модульности: Каждый индикатор можно отключать через настройки, не ломая общую логику.
3. Блок торговой логики
Сердце стратегии — условия для открытия и закрытия позиций.
// Условие на покупку: цена выше трейлинг-стопа и пробитие вверх
buy_condition = src > xATRTrailingStop and ta.crossover(src, xATRTrailingStop)
// Условие на продажу: цена ниже трейлинг-стопа и пробитие вниз
sell_condition = src < xATRTrailingStop and ta.crossunder(src, xATRTrailingStop)
// Фильтр по тренду (опционально)
trend_filter = src > ema_val
final_buy_condition = buy_condition and trend_filter
Важный момент: Условия должны быть четкими и однозначными. Каждое условие проверяется на каждом баре.
4. Блок исполнения ордеров
Логика преобразуется в торговые приказы.
if final_buy_condition
strategy.entry("Long", strategy.long)
if sell_condition
strategy.close("Long")
// Или для обоюдной стратегии:
// if sell_condition
// strategy.entry("Short", strategy.short)
Рекомендация: Начинать стоит с односторонней стратегии (только long), чтобы упростить тестирование.
5. Блок визуализации
Информация выводится на график для анализа.
// Отображение индикаторов (только если включены)
plot(show_bollinger ? basis : na, color=color.red)
plot(show_bollinger ? upper : na, color=color.blue)
plot(show_bollinger ? lower : na, color=color.blue)
plot(ema_val, color=color.yellow, linewidth=2)
// Сигнальные маркеры
plotshape(final_buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Закраска фона
bgcolor(final_buy_condition ? color.new(color.green, 90) : sell_condition ? color.new(color.red, 90) : na)
Эстетика: Визуализация не влияет на логику, но помогает в ручном анализе.
6. Блок алертов
Система уведомлений о сигналах.
alertcondition(final_buy_condition, "Сигнал на покупку", "Покупка по стратегии")
alertcondition(sell_condition, "Сигнал на продажу", "Продажа по стратегии")
7. Блок тестирования и оптимизации
После написания кода запускается тестирование.
1. Нажать «Добавить на график»
2. Открыть вкладку «Strategy Tester»
3. Анализировать статистику: общая прибыль, максимальная просадка, процент прибыльных сделок
4. Менять параметры в настройках и перезапускать тест
Критерии успешной стратегии:
- Положительная математическое ожидание
- Просадка не более 20-30%
- Не менее 40% прибыльных сделок (для трендовых стратегий)
- Стабильная кривая эквити
Стандартные ошибки новичков
1. Переоптимизация — подгонка параметров под исторические данные. Решение: тестировать на разных периодах и активах.
2. Игнорирование комиссий — в настройках стратегии нужно выставить реалистичные комиссии.
3. Слишком частые сделки — на малых таймфреймах комиссии съедают прибыль.
4. Отсутствие стоп-лосса — в коде обязательно должна быть логика ограничения убытков.
Практический совет
Начинать следует с простой стратегии из 2-3 условий. Например:
- Покупка при пересечении быстрой SMA выше медленной
- Продажа при обратном пересечении
- Фильтр по объему
Такой код займет 15-20 строк, но позволит понять весь цикл: написание → тестирование → оптимизация → добавление алертов.
Следующий шаг: Встроенные функции Pine Script (ta, strategy) содержат все необходимые инструменты. Документация на сайте TradingView — лучший справочник.