Esta estrategia genera señales comerciales cuando el precio cruza la EMA y utiliza ATR como un stop loss dinámico para gestionar los riesgos.
La lógica clave es:
Calcular ATR como la línea de pérdida de parada, el valor ATR determina la distancia de parada nLoss
La fuente de precios es el precio de cierre por defecto, use Heikin Ashi close si la opción de Heikin Ashi h está habilitada
xATRTrailingStop sigue la línea dinámica de pérdida de parada basada en la comparación de precios con la parada anterior
La posición pos es 1 para largo cuando el precio cruza por encima de la línea de stop loss, -1 para corto cuando cruza por debajo, de lo contrario 0
Las señales de cruce de la EMA, por encima de la EMA es la señal de compra, por debajo es la señal de venta
Entrar en operaciones con señales de compra/venta, salir con señales opuestas
Barras de color basadas en la posición, señales de marca y líneas de stop loss
Esta estrategia sigue las tendencias con paradas dinámicas basadas en ATR. Puede identificar tendencias y gestionar los riesgos de manera efectiva.
Las ventajas son:
La suspensión dinámica basada en ATR se adapta a la volatilidad del mercado
El filtro EMA reduce las señales falsas del ruido
Opcional Heikin Ashi filtra el ruido e identifica la tendencia
Clear long/short position avoids whipsaws from trailing stop Orden para dejar una posición larga o corta
Ayudas visuales como líneas, etiquetas y coloración
Sencilla y fácil de entender la lógica para modificar
Período ATR y multiplicador personalizables para diferentes mercados
En resumen, al combinar el seguimiento de tendencias y las paradas dinámicas, esta estrategia puede detectar tendencias y gestionar bien los riesgos para el swing trading.
Hay algunos riesgos a tener en cuenta:
Las señales de la EMA pueden retrasarse con los movimientos a corto plazo
Se pueden desencadenar pérdidas de parada frecuentes en mercados agitados
No se consideran los costes como las comisiones
Falta de control de dimensionamiento de la posición
El rendimiento depende del ajuste de parámetros
Riesgo de pérdidas en mercados variados
Requiere monitoreo e intervención
Los riesgos pueden reducirse optimizando los parámetros, agregando filtros, dimensionando las posiciones correctamente, monitoreando el rendimiento e interviniendo cuando sea necesario.
Algunas maneras de mejorar la estrategia:
Ajuste de los parámetros ATR para diferentes mercados
Prueba otras medias móviles para filtrar señales
Añadir indicadores de filtro de tendencia para una mayor probabilidad
Implementar límites de tamaño de posición
Añadir condiciones de entrada como el volumen, la distancia de MA
Incorporar costos como comisiones en las paradas
Optimice el tiempo de entrada y salida con más señales
Introducción de operaciones de toma de ganancias o paradas de seguimiento
Optimización automática de parámetros
Al combinar más técnicas para entradas, salidas, filtros y ajuste de parámetros, la estrategia se puede robustecer aún más.
Esta estrategia combina bien las paradas dinámicas y el seguimiento de tendencias. Con paradas efectivas, seguimiento de tendencias sin problemas, facilidad de uso y personalización, es adecuada para las tendencias de negociación de swing. Pero se requiere una gestión adecuada del riesgo, monitoreo y ajuste de parámetros. Cuando se aplica bien en los mercados de tendencias, se pueden lograr buenos resultados. En general, proporciona un enfoque simple y práctico para combinar el comercio de tendencias y la gestión de riesgos.
/*backtest start: 2022-10-25 00:00:00 end: 2023-10-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="UT Bot Strategy", overlay = true) //CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. // Inputs a = input(1, title = "Key Vaule. 'This changes the sensitivity'") c = input(10, title = "ATR Period") h = input(false, title = "Signals from Heikin Ashi Candles") xATR = atr(c) nLoss = a * xATR src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema = ema(src,1) above = crossover(ema, xATRTrailingStop) below = crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) strategy.entry("long", true, when = buy) strategy.entry("short", false, when = sell)