Мульти-лимитный Take Profit в Pine Script v5: Пошаговое руководство

Мульти-лимитный Take Profit в Pine Script v5: Пошаговое руководство Pine Script
Как реализовать частичное закрытие позиции (TP1, TP2, TP3) в Pine Script v5 с помощью функции strategy.exit. Готовый код и разбор параметров.
Суть: Для реализации мульти-уровневого Take Profit (TP1, TP2, TP3) в Pine Script v5 используется несколько вызовов функции strategy.exit с одинаковым from_entry, но уникальными идентификаторами id и параметром qty_percent, определяющим процент закрываемой позиции на каждом уровне.

Исходный код

Ниже представлен готовый шаблон торговой стратегии на Pine Script v5. В коде реализован вход по пересечению скользящих средних и каскадный выход по трем уровням тейк-профита с одновременным выставлением общего стоп-лосса. При разработке сложных торговых систем, таких как Расчет и Визуализация Уровней Ликвидации Binance Futures (Kingfisher) в Pine Script v5, критически важно правильно фиксировать прибыль частями.

//@version=5
strategy("Multi-Level Take Profit Strategy", overlay=true, initial_capital=10000)

// Настройки уровней в процентах
tp1_perc = input.float(1.0, title="TP1 %")
tp2_perc = input.float(2.0, title="TP2 %")
tp3_perc = input.float(3.0, title="TP3 %")
sl_perc = input.float(1.5, title="SL %")

// Процент закрытия позиции на каждом уровне
tp1_qty = input.float(30.0, title="TP1 Qty %")
tp2_qty = input.float(30.0, title="TP2 Qty %")
tp3_qty = input.float(40.0, title="TP3 Qty %")

// Простая логика входа (EMA Cross)
fast_ema = ta.ema(close, 9)
slow_ema = ta.ema(close, 21)
entry_cond = ta.crossover(fast_ema, slow_ema)

var float entry_price = na

if entry_cond and strategy.position_size == 0
    strategy.entry("Long", strategy.long)
    entry_price := close

if strategy.position_size > 0
    // Расчет ценовых уровней
    tp1_price = entry_price * (1 + tp1_perc / 100)
    tp2_price = entry_price * (1 + tp2_perc / 100)
    tp3_price = entry_price * (1 + tp3_perc / 100)
    sl_price = entry_price * (1 - sl_perc / 100)

    // Выставление ордеров выхода
    strategy.exit("Exit_TP1", from_entry="Long", qty_percent=tp1_qty, limit=tp1_price, stop=sl_price)
    strategy.exit("Exit_TP2", from_entry="Long", qty_percent=tp2_qty, limit=tp2_price, stop=sl_price)
    strategy.exit("Exit_TP3", from_entry="Long", qty_percent=tp3_qty, limit=tp3_price, stop=sl_price)

if strategy.position_size == 0
    entry_price := na

// Визуализация уровней на графике
plot(strategy.position_size > 0 ? entry_price * (1 + tp1_perc / 100) : na, color=color.green, style=plot.style_linebr, title="TP1")
plot(strategy.position_size > 0 ? entry_price * (1 + tp2_perc / 100) : na, color=color.green, style=plot.style_linebr, title="TP2")
plot(strategy.position_size > 0 ? entry_price * (1 + tp3_perc / 100) : na, color=color.green, style=plot.style_linebr, title="TP3")
plot(strategy.position_size > 0 ? entry_price * (1 - sl_perc / 100) : na, color=color.red, style=plot.style_linebr, title="SL")

Разбор параметров

Для корректной работы каскадного закрытия мы используем следующие ключевые параметры функции strategy.exit:

  • id: Уникальный идентификатор ордера выхода (например, "Exit_TP1"). Каждый уровень фиксации должен иметь свой уникальный ID, иначе Pine Script перезапишет предыдущий ордер.
  • from_entry: Указывает, к какому именно входному ордеру применяется данное закрытие. В нашем случае это "Long".
  • qty_percent: Процент от текущей открытой позиции, который необходимо закрыть при достижении уровня. Сумма процентов всех уровней должна составлять 100% для полного закрытия позиции.
  • limit: Целевой уровень цены для фиксации прибыли (Take Profit).
  • stop: Уровень ограничения убытков (Stop Loss), который дублируется во всех ордерах для защиты всей позиции.

Как запустить

Иногда для точного входа требуется анализировать младшие таймфреймы. О том, как это сделать, читайте в статье Как обойти лимит 15 минут в request.security_lower_tf в Pine Script v5. А если вы хотите добавить в свою стратегию немного экзотики, посмотрите материал Динамический bgcolor по фазам луны в Pine Script v5.

Чтобы запустить стратегию на платформе TradingView, выполните следующие шаги:

1. Откройте график любого актива на TradingView.

2. В нижней панели выберите вкладку ‘Pine Editor’ (Редактор Pine).

3. Удалите стандартный код и вставьте скопированный выше скрипт.

4. Нажмите кнопку ‘Add to chart’ (Добавить на график) в правом верхнем углу редактора.

5. Перейдите во вкладку ‘Strategy Tester’ (Тестер стратегий), чтобы проанализировать результаты бэктеста.

Оцените статью
FinFluct