Пирамидинг — это метод управления капиталом, при котором трейдер увеличивает размер рабочей позиции по мере движения цены в прибыльном направлении. В отличие от усреднения против тренда (мартингейла), пирамидинг позволяет максимизировать прибыль на сильных трендовых движениях при контролируемом риске.
Главная сложность при бэктесте пирамидинга в TradingView — корректный расчет средней цены входа для всей сетки ордеров и динамическое управление уровнями фиксации прибыли и ограничения убытков. В Pine Script v5 для этого используется встроенная переменная strategy.position_avg_price.
Для определения оптимальных точек первого входа вы можете использовать продвинутые методы анализа объемов, такие как Индикатор профиля дельты (Delta Profile) по барам с Intrabar Inspection в Pine Script v5, или классические разворотные сигналы, которые генерирует Индикатор дивергенций (Bullish/Bearish Divergence) с осциллятором Стохастик в Pine Script v5.
Исходный код стратегии
Ниже представлен готовый к использованию код стратегии трендового пирамидинга. Скрипт открывает первичную позицию при пересечении скользящих средних (SMA) и добавляет новые ордера при росте цены на заданный шаг в процентах.
//@version=5
strategy('Pyramiding with Average Price Backtest', overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=5)
// Inputs
fast_ma_len = input.int(10, title='Fast MA Length')
slow_ma_len = input.int(30, title='Slow MA Length')
step_percent = input.float(2.0, title='Pyramiding Step (%)', minval=0.1)
max_entries = input.int(5, title='Max Pyramiding Entries', minval=1, maxval=10)
tp_percent = input.float(5.0, title='Take Profit (%) from Avg Price', minval=0.1)
sl_percent = input.float(3.0, title='Stop Loss (%) from Avg Price', minval=0.1)
// Indicators
fast_ma = ta.sma(close, fast_ma_len)
slow_ma = ta.sma(close, slow_ma_len)
plot(fast_ma, color=color.blue, title='Fast MA')
plot(slow_ma, color=color.orange, title='Slow MA')
// State variables
var float last_entry_price = na
// Entry Conditions
initial_buy = ta.crossover(fast_ma, slow_ma) and strategy.position_size == 0
// Pyramiding logic
can_pyramid = strategy.position_size > 0 and strategy.opentrades < max_entries
pyramid_buy = can_pyramid and (close >= last_entry_price * (1 + step_percent / 100))
// Execution
if (initial_buy)
strategy.entry('Long_1', strategy.long)
last_entry_price := close
if (pyramid_buy)
int next_trade_num = strategy.opentrades + 1
string trade_id = 'Long_' + str.tostring(next_trade_num)
strategy.entry(trade_id, strategy.long)
last_entry_price := close
// Reset last entry price
if (strategy.position_size == 0)
last_entry_price := na
// Exit logic based on Average Price
avg_price = strategy.position_avg_price
// Plot Average Price
plot(strategy.position_size > 0 ? avg_price : na, color=color.purple, style=plot.style_linebr, linewidth=2, title='Average Entry Price')
// Calculate TP/SL levels
tp_level = avg_price * (1 + tp_percent / 100)
sl_level = avg_price * (1 - sl_percent / 100)
plot(strategy.position_size > 0 ? tp_level : na, color=color.green, style=plot.style_linebr, title='Take Profit Level')
plot(strategy.position_size > 0 ? sl_level : na, color=color.red, style=plot.style_linebr, title='Stop Loss Level')
if (strategy.position_size > 0)
strategy.exit('Exit', limit=tp_level, stop=sl_level) Разбор ключевых параметров и логики
pyramiding: Параметр в объявлении функцииstrategy(), определяющий максимальное количество одновременно открытых сделок в одном направлении. Без его явного указания TradingView проигнорирует последующие сигналы на вход.strategy.position_avg_price: Встроенная переменная, которая автоматически пересчитывает средневзвешенную цену входа при каждом добавлении к позиции. Именно от нее рассчитываются динамические уровни Take Profit и Stop Loss.strategy.opentrades: Возвращает текущее количество открытых сделок. Используется для контроля лимита пирамидинга внутри кода.step_percent: Процентное изменение цены от уровня последней сделки (last_entry_price), необходимое для совершения следующей доливки.
Как запустить скрипт в TradingView
Чтобы протестировать стратегию, выполните следующие шаги:
1. Откройте платформу TradingView и перейдите на вкладку любого графика (например, BTCUSDT или AAPL).
2. В нижней панели выберите вкладку Pine Editor (Редактор Pine).
3. Полностью удалите стандартный шаблон и вставьте скопированный выше код.
4. Нажмите кнопку Add to chart (Добавить на график) в правом верхнем углу редактора.
5. Перейдите во вкладку Strategy Tester (Тестер стратегий), чтобы проанализировать показатели доходности, просадки и винрейта.
Если вы решите автоматизировать отправку сигналов из этой стратегии на биржу через вебхуки, вам может потребоваться масштабирование системы уведомлений. О том, как обойти стандартные ограничения платформы, читайте в нашей статье TradingView: Обход лимита 500 алертов Pine Script v5 через JSON мультиплексирование.




