Динамическая сетка ордеров на основе ATR в Pine Script v5

Динамическая сетка ордеров на основе ATR в Pine Script v5 НАЛОГИ, ИП и САМОЗАНЯТОСТЬ
Пошаговое руководство по созданию сеточного торгового робота с динамическим шагом на основе ATR в Pine Script v5 с использованием strategy.order.
Суть: Реализация адаптивной сетки ордеров в Pine Script v5, где расстояние между уровнями динамически рассчитывается на основе индикатора ATR (Average True Range). Это позволяет сетке автоматически расширяться при высокой волатильности и сужаться во время флета, минимизируя риски преждевременного набора позиции.

Исходный код

Классические сеточные стратегии с фиксированным шагом часто страдают от резких изменений волатильности. На спокойном рынке фиксированный шаг может быть слишком большим, из-за чего ордера не наливаются, а во время сильных трендовых импульсов — слишком мелким, что приводит к мгновенному набору всей сетки и быстрому маржин-коллу. Решением является динамический шаг сетки на основе ta.atr().

При разработке сеточных роботов важно учитывать рыночный контекст. Например, перед запуском сетки можно анализировать зоны ликвидности с помощью индикатора имбаланса (Fair Value Gap) с митигацией в Pine Script v5, чтобы выставлять первый ордер сетки в зоне разрыва справедливой стоимости.

Ниже представлен готовый к использованию код стратегии на Pine Script v5. Скрипт автоматически рассчитывает уровни лимитных ордеров на основе текущего значения ATR и выставляет их при пересечении ценой скользящей средней.

//@version=5
strategy("Dynamic ATR Grid Strategy", overlay=true, pyramiding=10, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=2)

// Inputs
atrLength = input.int(14, title="ATR Length", group="Grid Settings")
atrMultiplier = input.float(1.0, title="ATR Step Multiplier", group="Grid Settings")
gridLevels = input.int(5, title="Max Grid Levels", minval=1, maxval=10, group="Grid Settings")
tpMultiplier = input.float(1.5, title="Take Profit ATR Multiplier", group="Grid Settings")

// ATR Calculation
atr = ta.atr(atrLength)

// Simple entry trigger (e.g., price above EMA)
ema = ta.ema(close, 200)
longCondition = ta.crossover(close, ema)

// Grid execution
if longCondition and strategy.position_size == 0
    // First market order to initiate the grid
    strategy.entry("Grid_Buy_0", strategy.long)
    
    // Place limit orders for subsequent levels
    for i = 1 to gridLevels - 1
        levelPrice = close - (i * atr * atrMultiplier)
        orderId = "Grid_Buy_" + str.tostring(i)
        strategy.order(orderId, strategy.long, limit=levelPrice)

// Manage exits
if strategy.position_size > 0
    avgPrice = strategy.position_avg_price
    tpPrice = avgPrice + (atr * tpMultiplier)
    strategy.exit("Exit_All", limit=tpPrice)
else
    // Cancel pending limit orders if position is closed
    strategy.cancel_all()

// Visualization
plot(ema, color=color.blue, title="EMA 200")
plot(strategy.position_size > 0 ? strategy.position_avg_price : na, color=color.green, style=plot.style_linebr, title="Avg Entry Price")

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

  • atrLength: Период индикатора ATR для расчета текущей волатильности рынка. Чем больше период, тем более сглаженными будут изменения шага сетки.
  • atrMultiplier: Коэффициент, на который умножается значение ATR для определения расстояния между уровнями сетки. Позволяет масштабировать шаг под конкретный инструмент.
  • gridLevels: Максимальное количество колен (уровней) в сетке ордеров, включая первый рыночный ордер.
  • tpMultiplier: Множитель ATR для расчета динамического уровня Take Profit от средней цены позиции (strategy.position_avg_price).

Если вы торгуете коррелированные активы, динамический шаг можно адаптировать под волатильность спреда. О том, как работать со спредами, читайте в нашей статье про RSI для спреда ETH/BTC в Pine Script v5: расчет и визуализация.

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

Для запуска стратегии выполните следующие шаги:

1. Откройте платформу TradingView и перейдите во вкладку ‘Pine Editor’ в нижней панели.

2. Скопируйте представленный выше код и вставьте его в редактор, заменив стандартный шаблон.

3. Нажмите кнопку ‘Add to Chart’ (Добавить на график), чтобы визуализировать работу сетки и среднюю цену входа.

4. Для оптимизации параметров откройте настройки стратегии (иконка шестеренки на графике) и настройте множители ATR под ваш таймфрейм.

Для определения разворотных точек, на которых выгодно запускать сетку, отлично подойдет алгоритм поиска экстремумов. Рекомендуем ознакомиться с руководством Pine Script v5: Поиск паттерна ‘Три маленьких индейца’ с циклами for.

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