Стратегия динамического отслеживания стоп-лоссов на основе ATR и SMA


Дата создания: 2024-03-11 11:55:21 Последнее изменение: 2024-03-11 11:55:21
Копировать: 0 Количество просмотров: 705
1
Подписаться
1617
Подписчики

Стратегия динамического отслеживания стоп-лоссов на основе ATR и SMA

Обзор

Эта стратегия объединяет показатели ATR (Average True Range) и SMA (Simple Moving Average) и реализует торговую систему, которая отслеживает динамические остановки убытков. Когда цена открывает много заказов выше SMA, в то же время устанавливая динамические остановки на основе ATR, цена остановки убытков постоянно повышается по мере роста цены.

Стратегический принцип

  1. Вычислить 50-дневную SMA, открыть опцион, когда цена закрытия больше 50-дневного SMA.
  2. Вычислите показатель ATR, ATR-цикл 10, умножьте на ключевое значение ((по умолчанию 3) и получите Stop Loss nLoss.
  3. Вычислить динамическую цену стоп-стопа xATRTrailingStop, начальная величина 0。
    • Когда цена закрытия и предыдущая цена закрытия больше предыдущей цены остановки, новая цена остановки является большей из предыдущей цены остановки и цены закрытия - nLoss.
    • Когда цена закрытия и предыдущая цена закрытия меньше предыдущей цены остановки, новая цена остановки меньше предыдущей цены остановки и ((цена закрытия + nLoss)).
    • В остальных случаях новая стоп-стоп цена будет выглядеть как: ((закрывающая цена - nLoss) или ((закрывающая цена + nLoss)) [2].
  4. При закрытии цены, когда она пересекает динамическую цену остановки убытков.
  5. Стоп-точки обозначены различными цветами, многоголовый стоп - зеленым, пустой стоп - красным, в других случаях - синим.

Анализ преимуществ

  1. Динамический стоп-механизм может защитить прибыль в трендовых ситуациях и снизить риск вывода. По сравнению с фиксированным стопом, динамический стоп-механизм более гибкий и может адаптироваться к различным рыночным условиям.
  2. Стоп-рывок рассчитывается на основе показателя ATR, который хорошо отражает величину рыночных колебаний, поэтому стоп-расстояние будет автоматически корректироваться в соответствии с колебаниями в недавних событиях, увеличивая стоп-рынок при увеличении колебаний и уменьшая стоп-рынок при уменьшении колебаний.
  3. Используя SMA в качестве основы для определения тренда, можно улавливать относительно четкие тенденции. Открывая несколько ордеров выше SMA, можно вмешаться в начале тренда и получить больше возможностей для получения прибыли.
  4. Позволяет пользователям устанавливать ATR-циклы и параметры ключевых значений, а также гибко адаптировать параметры стратегии к характеристикам различных сортов и циклов.

Анализ рисков

  1. В условиях неопределенности тренда или волатильности эта стратегия может приводить к частым позиционным погашениям, что приводит к увеличению стоимости торговли и снижению прибыли.
  2. Эта стратегия имеет только много логики, не может получить прибыль в нисходящем тренде, рискует в одностороннем рынке. Можно рассмотреть возможность добавления логики дисконтирования, чтобы осуществить двустороннюю торговлю.
  3. Стоп-лосс рассчитывается на основе ATR. При резких колебаниях рынка стоп-роуминг может быть слишком большим, что приводит к увеличению риска. Можно рассмотреть возможность установки максимального стоп-лосса, чтобы контролировать максимальные потери от одной сделки.
  4. Неправильный выбор параметров может привести к неэффективности стратегии. Например, слишком маленький цикл ATR может привести к слишком чувствительному и частому срабатыванию стоп-лосса; слишком большой может не вовремя остановить стоп-лосс и увеличить убытки.

Направление оптимизации

  1. Добавление логики позиционирования приводит к увеличению приспособляемости стратегии. Можно открыть пустую позицию, когда цена падает ниже SMA, также используя динамическую логику остановки убытков.
  2. Внедрение управления многоплоскими позициями, изменение размеров позиций в зависимости от силы тренда. Увеличение позиций при сильных тенденциях, повышение прибыли; уменьшение позиций при слабых тенденциях, контроль риска.
  3. Оптимизируйте логику остановки убытков, установите максимальную степень остановки убытков, чтобы предотвратить чрезмерные потери в экстремальных ситуациях. Кроме того, можно рассмотреть возможность установки точки остановки, чтобы активировать ликвидацию позиции после достижения ожидаемой прибыли, а не держать ее до остановки убытков.
  4. Оптимизация параметров, поиск оптимальных параметров, пройдя через различные комбинации параметров. Умные методы оптимизации, такие как генетические алгоритмы, могут быть использованы для повышения эффективности оптимизации.
  5. Подумайте о добавлении дополнительных фильтров, таких как объем торгов, волатильность и другие показатели, чтобы лучше оценивать тенденции и риски и повысить надежность сигналов.

Подвести итог

Стратегия реализует динамическую систему торговли с отслеживанием стоп-убытков на основе ATR и SMA, которая может автоматически регулировать стоп-позиции в условиях тренда, защищая прибыль и контролируя риск. Логика стратегии ясна, преимущества очевидны, но также существуют некоторые ограничения и риски.

Исходный код стратегии
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")