Estrategia dinámica adaptativa de stop-profit y stop-loss basada en ATR y EMA

ATR EMA
Fecha de creación: 2024-05-28 14:15:56 Última modificación: 2024-05-28 14:15:56
Copiar: 1 Número de Visitas: 835
1
Seguir
1617
Seguidores

Estrategia dinámica adaptativa de stop-profit y stop-loss basada en ATR y EMA

Descripción general

La estrategia utiliza dos indicadores, el ATR y el EMA, para adaptarse a la volatilidad del mercado mediante el ajuste dinámico de los puntos de parada. La idea principal de la estrategia es: utilizar el indicador ATR para medir la volatilidad del mercado y establecer puntos de parada en función de la magnitud de la volatilidad.

Principio de estrategia

  1. Calcula el indicador ATR, que se utiliza para medir la magnitud de la volatilidad del mercado.
  2. Calcula el punto de parada dinámico de acuerdo con el valor de ATR y el parámetro del múltiplo de la entrada.
  3. Utiliza el indicador EMA como condición de filtración para abrir una orden adicional cuando el precio rompe la EMA hacia arriba y una orden vacía cuando rompe la EMA hacia abajo.
  4. Cuando se mantiene una posición, se ajusta constantemente la posición de parada de pérdidas en función de los cambios en el precio y los cambios en el punto de parada dinámico.
  5. Cuando el precio toca el punto de parada dinámica, se cierra la posición y se abre la posición inversa.

Ventajas estratégicas

  1. Adaptabilidad: la estrategia puede adaptarse a los cambios en la volatilidad en diferentes estados de mercado, controlando el riesgo mediante el ajuste dinámico del punto de parada.
  2. La capacidad de seguimiento de tendencias es fuerte: el uso de los indicadores EMA para determinar la dirección de las transacciones permite capturar eficazmente las tendencias del mercado.
  3. Parámetros ajustables: los riesgos y los beneficios de la estrategia se pueden controlar con flexibilidad ajustando los parámetros de periodicidad y multiplicidad del ATR.

Riesgo estratégico

  1. Riesgo de configuración de parámetros: la configuración de los parámetros de ATR y de multiplicadores afecta directamente el rendimiento de la estrategia, y la configuración incorrecta de los parámetros puede causar la falla de la estrategia.
  2. Riesgo en mercados convulsionados: En mercados convulsionados, la apertura frecuente de posiciones abiertas puede ocasionar grandes pérdidas de puntos de deslizamiento y comisiones.
  3. Riesgo de cambio de tendencia: cuando la tendencia del mercado cambia, la estrategia puede tener pérdidas continuas.

Dirección de optimización de la estrategia

  1. La introducción de más indicadores técnicos, como el MACD, el RSI, etc., para mejorar la precisión de la determinación de tendencias.
  2. Optimización de los métodos de cálculo de los puntos de pérdida de la parada de frenado, como la introducción de paradas móviles, paradas de proporción dinámica y otros métodos.
  3. Optimización de los parámetros para encontrar la combinación óptima de parámetros ATR y multiplicadores para mejorar la estabilidad y la rentabilidad de la estrategia.
  4. Admite el módulo de gestión de posiciones y ajusta dinámicamente el tamaño de las posiciones en función de la volatilidad del mercado y el nivel de riesgo de la cuenta.

Resumir

La estrategia utiliza dos indicadores, ATR y EMA, para adaptarse a los cambios en la volatilidad del mercado mediante el ajuste dinámico de los puntos de parada y pérdida, y al mismo tiempo utiliza los indicadores EMA para juzgar la dirección de las operaciones. La estrategia tiene una gran capacidad de adaptación y seguimiento de tendencias, pero puede enfrentar cierto riesgo al establecer parámetros, mercados de temblor y cambios de tendencia.

Código Fuente de la Estrategia
/*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)