En la carga de los recursos... Cargando...

Estrategia de adaptación dinámica de la toma de ganancias y el alto de pérdidas basada en ATR y EMA

El autor:¿ Qué pasa?, Fecha: 2024-05-28 14:15:56
Las etiquetas:El ATREl EMA

img

Resumen general

Esta estrategia utiliza dos indicadores, ATR (Average True Range) y EMA (Exponential Moving Average), para ajustar dinámicamente los niveles de toma de ganancias y stop loss con el fin de adaptarse a la volatilidad del mercado. La idea principal de la estrategia es utilizar el indicador ATR para medir la volatilidad del mercado y establecer los niveles de toma de ganancias y stop loss basados en la magnitud de la volatilidad. Al mismo tiempo, el indicador EMA se utiliza para determinar la dirección del comercio. Cuando el precio se rompe por encima de la EMA, se abre una posición larga, y cuando el precio se rompe por debajo de la EMA, se abre una posición corta.

Principio de la estrategia

  1. Calcular el indicador ATR para medir la magnitud de la volatilidad del mercado.
  2. Calcular el nivel dinámico de pérdida de parada basado en el valor ATR y el parámetro múltiple de entrada.
  3. Utilizar el indicador EMA como condición de filtro. Abrir una posición larga cuando el precio se rompe por encima de la EMA, y abrir una posición corta cuando el precio se rompe por debajo de la EMA.
  4. Mientras mantiene una posición, ajuste continuamente los niveles de toma de ganancias y stop loss en función de los cambios de precios y los cambios dinámicos en los niveles de stop loss.
  5. Cuando el precio alcance el nivel dinámico de stop loss, cierre la posición y abra una posición inversa.

Ventajas estratégicas

  1. Una gran adaptabilidad: Al ajustar dinámicamente los niveles de toma de ganancias y stop loss, la estrategia puede adaptarse a los cambios en la volatilidad en diferentes condiciones de mercado y controlar los riesgos.
  2. Una gran capacidad de seguimiento de tendencias: el indicador EMA se utiliza para determinar la dirección de las operaciones, lo que puede capturar eficazmente las tendencias del mercado.
  3. Parámetros ajustables: Al ajustar el período de ATR y múltiples parámetros, el riesgo y el rendimiento de la estrategia se pueden controlar de manera flexible.

Riesgos estratégicos

  1. Establecimiento de parámetros de riesgo: el establecimiento del período de ATR y de múltiples parámetros afectará directamente al rendimiento de la estrategia.
  2. Riesgo de mercado oscilante: en un mercado oscilante, la apertura y el cierre frecuentes de posiciones pueden dar lugar a grandes pérdidas por deslizamiento y comisiones de transacción.
  3. Riesgo de inversión de tendencia: cuando la tendencia del mercado se invierte, la estrategia puede experimentar pérdidas consecutivas.

Direcciones para la optimización de la estrategia

  1. Introducir más indicadores técnicos, como el MACD y el RSI, para mejorar la precisión del juicio de tendencia.
  2. Optimizar el método de cálculo de los niveles de toma de ganancias y stop loss, como la introducción de métodos de stop loss de trailing y de ratio dinámico.
  3. Optimizar los parámetros para encontrar la mejor combinación de período ATR y múltiples parámetros para mejorar la estabilidad y la rentabilidad de la estrategia.
  4. Añadir un módulo de gestión de posiciones para ajustar dinámicamente el tamaño de las posiciones en función de la volatilidad del mercado y el nivel de riesgo de la cuenta.

Resumen de las actividades

Esta estrategia utiliza los indicadores ATR y EMA para ajustar dinámicamente los niveles de toma de ganancias y stop loss para adaptarse a los cambios en la volatilidad del mercado, mientras que utiliza el indicador EMA para determinar la dirección de negociación. La estrategia tiene una fuerte adaptabilidad y capacidades de seguimiento de tendencias, pero puede enfrentar ciertos riesgos en la configuración de parámetros, mercados oscilantes e inversiones de tendencias.


/*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)

Relacionados

Más.