В процессе загрузки ресурсов... загрузка...

Динамическая стратегия адаптации прибыли и остановки убытков на основе ATR и EMA

Автор:Чао Чжан, Дата: 2024-05-28 14:15:56
Тэги:ATRЕМА

img

Обзор

Эта стратегия использует два индикатора, ATR (средний истинный диапазон) и EMA (экспоненциальный скользящий средний), для динамической корректировки уровня получения прибыли и остановки потерь, чтобы адаптироваться к волатильности рынка. Основная идея стратегии заключается в использовании индикатора ATR для измерения волатильности рынка и установки уровня получения прибыли и остановки потерь на основе величины волатильности. В то же время индикатор EMA используется для определения направления торговли. Когда цена превышает EMA, открывается длинная позиция, а когда цена превышает EMA, открывается короткая позиция. Эта стратегия может автоматически корректировать уровень получения прибыли и остановки потерь в соответствии с изменениями волатильности рынка, тем самым достигая цели динамического контроля риска.

Принцип стратегии

  1. Вычислить индикатор ATR для измерения величины волатильности рынка.
  2. Динамический уровень стоп-потери рассчитывается на основе значения ATR и параметра множественного ввода.
  3. Открыть длинную позицию, когда цена превышает 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)

Связанные

Больше