Динамическая адаптивная стратегия стоп-профита и стоп-лосса на основе ATR и EMA

ATR EMA
Дата создания: 2024-05-28 14:15:56 Последнее изменение: 2024-05-28 14:15:56
Копировать: 1 Количество просмотров: 835
1
Подписаться
1617
Подписчики

Динамическая адаптивная стратегия стоп-профита и стоп-лосса на основе ATR и EMA

Обзор

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

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

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

Стратегические преимущества

  1. Адаптируемость: благодаря динамической корректировке стоп-стоп-стоп, стратегия может адаптироваться к изменениям волатильности в различных рыночных условиях, контролируя риск.
  2. Умение отслеживать тенденции: использование показателей EMA для определения направления торговли позволяет эффективно улавливать тенденции рынка.
  3. Параметры регулируемы: можно гибко контролировать риски и выгоды стратегии путем корректировки параметров ATR по периодичности и кратности.

Стратегический риск

  1. Риск параметров: настройка параметров ATR и множителей может напрямую повлиять на эффективность стратегии. Неправильная настройка параметров может привести к ее сбою.
  2. Риск в условиях кризиса: частое открытие позиций в условиях кризиса может привести к значительным потерям в скольжениях и комиссионных.
  3. Риск перехода в тренд: когда рыночная тенденция переходит в тренд, стратегия может столкнуться с последовательными потерями.

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

  1. Введение новых технических показателей, таких как MACD, RSI и т.д., для повышения точности определения тенденций.
  2. Оптимизация методов расчета стоп-стоп-стоп, таких как введение подвижных стопов, динамических стопов и т. д.
  3. Оптимизация параметров, поиск оптимальных комбинаций ATR-циклов и кратных параметров, повышение стабильности и прибыльности стратегии.
  4. Добавление модуля управления позициями, динамическое изменение размеров позиций в зависимости от рыночной волатильности и уровня риска счета.

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

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

Исходный код стратегии
/*backtest
start: 2024-04-27 00:00:00
end: 2024-05-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy(title='UT MB&SS Bot', overlay=true)

// Inputs
a = input(1, title='Key Value. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')
stoploss = input(2.0, title='Stop Loss (ATR Multiples)')

xATR = ta.atr(c)
nLoss = a * xATR

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close

var xATR_trailing_stop = 0.0
iff_1 = src > nz(xATR_trailing_stop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATR_trailing_stop[1], 0) and src[1] < nz(xATR_trailing_stop[1], 0) ? math.min(nz(xATR_trailing_stop[1]), src + nLoss) : iff_1
xATR_trailing_stop := src > nz(xATR_trailing_stop[1], 0) and src[1] > nz(xATR_trailing_stop[1], 0) ? math.max(nz(xATR_trailing_stop[1]), src - nLoss) : iff_2

pos = 0
iff_3 = src[1] > nz(xATR_trailing_stop[1], 0) and src < nz(xATR_trailing_stop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATR_trailing_stop[1], 0) and src > nz(xATR_trailing_stop[1], 0) ? 1 : iff_3

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

ema = ta.ema(src, 1)
above = ta.crossover(ema, xATR_trailing_stop)
below = ta.crossover(xATR_trailing_stop, ema)

buy = src > xATR_trailing_stop and above
sell = src < xATR_trailing_stop and below

barbuy = src > xATR_trailing_stop
barsell = src < xATR_trailing_stop

plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

stop_level = pos == 1 ? xATR_trailing_stop - stoploss * xATR : xATR_trailing_stop + stoploss * xATR
stop_level := math.max(stop_level, nz(stop_level[1]))

if pos == 1
    strategy.exit('Exit Long', 'UT Long', stop=stop_level)
else if pos == -1
    strategy.exit('Exit Short', 'UT Short', stop=stop_level)





if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)