Sistema de trading de seguimiento de tendencias con stop loss dinámico ATR

ATR EMA ROI TSL
Fecha de creación: 2025-02-20 13:22:24 Última modificación: 2025-02-20 14:53:21
Copiar: 2 Número de Visitas: 445
2
Seguir
319
Seguidores

Sistema de trading de seguimiento de tendencias con stop loss dinámico ATR Sistema de trading de seguimiento de tendencias con stop loss dinámico ATR

Descripción general

La estrategia es un sistema de seguimiento de tendencias basado en el ATR (medio real amplitud de onda) de seguimiento dinámico de pérdidas. Combina la línea media EMA como un filtro de tendencia y controla la generación de señales mediante la adaptación de los parámetros de sensibilidad y el ciclo ATR. El sistema no solo es compatible con el comercio de más, sino también con el comercio de menos, y tiene un mecanismo de administración de ganancias perfectamente desarrollado.

Principio de estrategia

  1. Utiliza el indicador ATR para calcular la amplitud de las fluctuaciones de los precios y determina la distancia de seguimiento de los paros de acuerdo con el coeficiente de sensibilidad establecido (valor clave)
  2. Para determinar la dirección de la tendencia del mercado a través de la línea media de la EMA, sólo se pueden abrir más órdenes cuando el precio está por encima de la línea media y se pueden abrir órdenes en blanco cuando están por debajo de la línea media
  3. Cuando el precio rompe la línea de seguimiento del stop loss y se ajusta a la dirección de la tendencia, se activa una señal de negociación
  4. El sistema de gestión de las posiciones en forma de ganancias por etapas:
    • Si la ganancia es del 20% al 50%, el stop loss se elevará a la garantía de costos.
    • Cuando se obtiene una ganancia del 50% al 80%, parte de la ganancia se cierra y se aprieta el Stop Loss
    • Tener una ganancia de entre el 80% y el 100% de las ganancias, y luego apretar aún más la protección de stop loss.
    • Cuando el beneficio es superior al 100%, el beneficio total se iguala.

Ventajas estratégicas

  1. El stop loss de seguimiento dinámico permite un seguimiento eficaz de las tendencias, sin salirse de juego prematuramente mientras se protegen los beneficios.
  2. El filtro de tendencias de la EMA reduce el riesgo de brechas falsas
  3. El mecanismo de ganancias por tramos garantiza la rentabilidad y da espacio a la tendencia para desarrollarse
  4. Apoyo a las operaciones binarias de más deuda externa para aprovechar las oportunidades del mercado
  5. Los parámetros son muy ajustables para adaptarse a diferentes entornos de mercado

Riesgo estratégico

  1. Las operaciones frecuentes en mercados convulsionados pueden causar pérdidas
  2. La reversión inicial de la tendencia podría generar un retroceso mayor
  3. La configuración incorrecta de los parámetros puede afectar el rendimiento de la estrategia Sugerencias para el control de riesgos:
  • Se recomienda su uso en mercados de tendencia evidente.
  • Parámetros cuidadosamente seleccionados, optimizados mediante retroalimentación
  • Establecer el límite máximo de retirada
  • Considerar el aumento de las condiciones de filtración del entorno de mercado

Dirección de optimización de la estrategia

  1. Aumentar el mecanismo de identificación del entorno de mercado, utilizando diferentes parámetros en diferentes condiciones de mercado
  2. Introducción de indicadores auxiliares como el tráfico para mejorar la fiabilidad de la señal
  3. Optimizar el mecanismo de gestión de ganancias y ajustar los objetivos de ganancias en función de la fluctuación de la tasa
  4. Aumentar el filtro de tiempo para evitar operaciones en tiempos adversos
  5. Considere la inclusión de filtros de volatilidad para reducir la frecuencia de las transacciones en caso de exceso de volatilidad

Resumir

Es un sistema de seguimiento de tendencias con una estructura completa y una lógica clara. La combinación de seguimiento dinámico de ATR y filtración de tendencias EMA permite un mejor control del riesgo mientras se capta la tendencia. El diseño del mecanismo de ganancias por etapas también refleja una mentalidad de negociación madura.

Código Fuente de la Estrategia
/*backtest
start: 2024-10-15 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Enhanced UT Bot with Long & Short Trades", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input Parameters
keyvalue = input.float(1.1, title="Key Value (Sensitivity)", step=0.1)
atrperiod = input.int(200, title="ATR Period")
emaPeriod = input.int(50, title="EMA Period")
roi_close = input.float(100, title="Close Trade at ROI (%)", step=1)

// ATR Calculation
src = close
xATR = ta.atr(atrperiod)
nLoss = keyvalue * xATR

// EMA for Trend Filtering
ema = ta.ema(src, emaPeriod)

// Trailing Stop Logic
var float xATRTrailingStop = na
if na(xATRTrailingStop)
    xATRTrailingStop := src - nLoss

if src > nz(xATRTrailingStop[1]) and src[1] > nz(xATRTrailingStop[1])
    xATRTrailingStop := math.max(nz(xATRTrailingStop[1]), src - nLoss)
else if src < nz(xATRTrailingStop[1]) and src[1] < nz(xATRTrailingStop[1])
    xATRTrailingStop := math.min(nz(xATRTrailingStop[1]), src + nLoss)
else
    xATRTrailingStop := src > nz(xATRTrailingStop[1]) ? src - nLoss : src + nLoss

// Buy/Sell Signal with Trend Filter
buySignal = ta.crossover(src, xATRTrailingStop) and src > ema
sellSignal = ta.crossunder(src, xATRTrailingStop) and src < ema

// Strategy Logic: Long Trades
if buySignal and strategy.position_size <= 0
    strategy.entry("Buy", strategy.long)

if sellSignal and strategy.position_size > 0
    strategy.close("Buy")

// Strategy Logic: Short Trades
if sellSignal and strategy.position_size >= 0
    strategy.entry("Sell", strategy.short)

if buySignal and strategy.position_size < 0
    strategy.close("Sell")

// ROI Calculation for Both Long and Short Trades
var float entryPrice = na
var bool isLong = na
if strategy.position_size > 0
    entryPrice := strategy.opentrades.entry_price(0)
    isLong := true
if strategy.position_size < 0
    entryPrice := strategy.opentrades.entry_price(0)
    isLong := false

// Calculate current profit
currentProfit = isLong ? (close - entryPrice) / entryPrice * 100 : (entryPrice - close) / entryPrice * 100

// Enhanced ROI Management
if strategy.position_size > 0 // Long Position
    if currentProfit >= 20 and currentProfit < 50
        stopLevel = entryPrice // Breakeven
        strategy.exit("TSL Breakeven", from_entry="Buy", stop=stopLevel)
    if currentProfit >= 50 and currentProfit < 80
        stopLevel = entryPrice * 1.30 // 30% ROI
        strategy.exit("TSL 30%", from_entry="Buy", stop=stopLevel)
        strategy.close("Partial Profit", qty_percent=50) // Take 50% profit
    if currentProfit >= 80 and currentProfit < roi_close
        stopLevel = entryPrice * 1.60 // 60% ROI
        strategy.exit("TSL 60%", from_entry="Buy", stop=stopLevel)
    if currentProfit >= roi_close
        strategy.close("Full Exit at 100% ROI")

if strategy.position_size < 0 // Short Position
    if currentProfit >= 20 and currentProfit < 50
        stopLevel = entryPrice // Breakeven
        strategy.exit("TSL Breakeven", from_entry="Sell", stop=stopLevel)
    if currentProfit >= 50 and currentProfit < 80
        stopLevel = entryPrice * 0.70 // 30% ROI (Short stop)
        strategy.exit("TSL 30%", from_entry="Sell", stop=stopLevel)
        strategy.close("Partial Profit", qty_percent=50) // Take 50% profit
    if currentProfit >= 80 and currentProfit < roi_close
        stopLevel = entryPrice * 0.40 // 60% ROI (Short stop)
        strategy.exit("TSL 60%", from_entry="Sell", stop=stopLevel)
    if currentProfit >= roi_close
        strategy.close("Full Exit at 100% ROI")

// Plotting
plot(xATRTrailingStop, color=buySignal ? color.green : sellSignal ? color.red : color.gray, title="Trailing Stop")
plot(ema, color=color.blue, title="EMA Trend Filter")
plotshape(buySignal, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=color.green, text="Buy")
plotshape(sellSignal, title="Sell Signal", style=shape.labeldown, location=location.abovebar, color=color.red, text="Sell")