Estrategia de trading inteligente con combinación de múltiples indicadores ATR y trailing stop loss

ATR EMA VWMA SMA JLines Cloud
Fecha de creación: 2025-02-21 10:03:26 Última modificación: 2025-02-21 10:03:26
Copiar: 1 Número de Visitas: 373
2
Seguir
319
Seguidores

Estrategia de trading inteligente con combinación de múltiples indicadores ATR y trailing stop loss Estrategia de trading inteligente con combinación de múltiples indicadores ATR y trailing stop loss

Descripción general

Esta es una estrategia de comercio inteligente que combina varios indicadores tecnológicos, principalmente basados en indicadores ATR para implementar la función de seguimiento de pérdidas. La estrategia también integra indicadores de análisis multidimensionales como la nube de líneas medias (JLines Cloud), análisis de volumen de transacción y precio de apertura diaria, especialmente adecuado para operar en períodos de tiempo de 3 y 5 minutos. La estrategia ajusta dinámicamente la posición de pérdidas a través de ATR y combina la dirección de la tendencia con el sistema de línea medias para lograr un sistema de decisión de comercio completo.

Principio de estrategia

El núcleo de la estrategia es un sistema de seguimiento de stop loss basado en el indicador ATR. Utiliza el ATR de 10 períodos y el doble de ATR para calcular la línea de stop loss dinámica. Al mismo tiempo, integra el sistema JLines Cloud de dos períodos de tiempo (combinación de línea de paridad 7289) y el sistema de línea de paridad 515 opcional. La generación de señales de negociación requiere que se cumplan los siguientes requisitos:

  1. ATR rastrea la ruptura de la línea de parada
  2. La tendencia de JLines Cloud en los dos períodos de tiempo coincide
  3. Posicionamiento del precio con respecto al precio de apertura del día
  4. Confirmación de volúmenes de transacciones inusuales

Ventajas estratégicas

  1. Protección contra pérdidas dinámicas - Proporciona protección contra pérdidas flexible para adaptarse a las fluctuaciones del mercado a través de los indicadores ATR
  2. Confirmación de tendencias multidimensional - combinación de medias lineales de diferentes períodos de tiempo para mejorar la precisión de la determinación de tendencias
  3. Verificación de volumen de transacciones - aumento de la confirmación de transacciones a través del análisis de volumen de transacciones anormales
  4. Gestión de riesgos de calidad - doble protección con objetivos fijos de pérdidas y ganancias
  5. Adaptabilidad: los parámetros se pueden ajustar según las diferentes condiciones del mercado

Riesgo estratégico

  1. Sensibilidad de parámetros - el ciclo ATR y la elección de la multiplicación pueden afectar significativamente el rendimiento de la estrategia
  2. Dependencia de las condiciones del mercado - falsas señales frecuentes en el mercado horizontal
  3. Restricciones de múltiples condiciones - las condiciones de entrada estrictas pueden hacer que se pierda parte de las oportunidades de negociación
  4. Efectos del punto de deslizamiento - durante un período de alta volatilidad, el precio de ejecución real puede tener una gran desviación del precio de la señal

Dirección de optimización de la estrategia

  1. Ajuste de parámetros dinámicos - los parámetros ATR se pueden ajustar automáticamente según la volatilidad del mercado
  2. Filtro de tiempo - Agrega un filtro de tiempo de negociación para evitar períodos de alta volatilidad en los mercados de apertura y cierre
  3. Filtrado de intensidad de tendencia - Introducción de indicadores de intensidad de tendencia para mejorar la precisión de la determinación de tendencias
  4. Optimización de la gestión de riesgos - Realización de stop-loss dinámicos para adaptarse a diferentes entornos de mercado
  5. Mejoras en el análisis de volúmenes de transacciones - Mejoras en el análisis de volúmenes de transacciones para mejorar la precisión de las confirmaciones de transacciones

Resumir

Se trata de un sistema de negociación completo que combina varios indicadores técnicos, proporciona una gestión de riesgo central mediante el seguimiento de la parada de pérdidas de ATR y proporciona confirmación de transacciones utilizando la nube uniforme y el análisis de volumen de transacciones. La ventaja de la estrategia reside en su marco de análisis de mercado completo y un sistema de gestión de riesgos completo, pero requiere optimización de parámetros para entornos de mercado específicos.

Código Fuente de la Estrategia
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("AI trade Roney nifty value", overlay=true)

// User Inputs
atrPeriod = input.int(10, "ATR Period")
atrMultiplier = input.float(2, "ATR Multiplier")
target = input.float(40, "Target")
stopLoss = input.float(40, "Stop Loss")

// Calculate ATR-based trailing stop
atr = ta.atr(atrPeriod)
nLoss = atrMultiplier * atr
var float xATRTrailingStop = na

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

// Define position and entry/exit prices
var int pos = na
pos := close[1] < xATRTrailingStop[1] and close > xATRTrailingStop[1] ? 1 : 
       close[1] > xATRTrailingStop[1] and close < xATRTrailingStop[1] ? -1 : pos[1]

var bool isLong = false
var bool isShort = false

var float entryPrice = na
var float exitPrice = na
var float exitStop = na

// JLines Cloud indicator
sl = input.int(72, "Smaller length")
hl = input.int(89, "Higher length")

res = input.timeframe("1", "JLines - Time Frame 1")
res1 = input.timeframe("3", "JLines - Time Frame 2")
enable515 = input.bool(false, "5/15 EMA")
res2 = input.timeframe("5", "5/15 EMA")

ema1_72 = request.security(syminfo.tickerid, res, ta.ema(close, sl))
ema1_89 = request.security(syminfo.tickerid, res, ta.ema(close, hl))
ema2_72 = request.security(syminfo.tickerid, res1, ta.ema(close, sl))
ema2_89 = request.security(syminfo.tickerid, res1, ta.ema(close, hl))
ema3_5 = request.security(syminfo.tickerid, res2, ta.ema(close, 5))
ema3_15 = request.security(syminfo.tickerid, res2, ta.ema(close, 15))

// Plot JLines Cloud
p1_1 = plot(ema1_72, "TimeFrame 1 - SL", color=color.blue, display=display.none)
p1_2 = plot(ema1_89, "TimeFrame 1 - HL", color=color.blue, display=display.none)
p2_1 = plot(ema2_72, "TimeFrame 2 - SL", color=color.yellow, display=display.none)
p2_2 = plot(ema2_89, "TimeFrame 2 - HL", color=color.yellow, display=display.none)
p3_1 = plot(enable515 ? ema3_5 : na, "Late Day Fade - 5 EMA", color=color.yellow, display=display.none)
p3_2 = plot(enable515 ? ema3_15 : na, "Late Day Fade - 15 EMA", color=color.yellow, display=display.none)

fill(p1_1, p1_2, color=ema1_72 > ema1_89 ? color.new(color.green, 30) : color.new(color.red, 30), title="Background 1")
fill(p2_1, p2_2, color=ema2_72 > ema2_89 ? color.new(color.green, 90) : color.new(color.red, 90), title="Background 2")
fill(p3_1, p3_2, color=enable515 ? (ema3_5 > ema3_15 ? color.new(color.blue, 50) : color.new(color.red, 50)) : na, title="Late Day Fade")

// Plot Buy and Sell signals
plotshape(pos == 1, title="Buy", style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(pos == -1, title="Sell", style=shape.triangledown, location=location.abovebar, color=color.red)

// Volume Analysis
vol_length = input.int(20, "Volume SMA length", minval=1)
vol_avg = ta.sma(volume, vol_length)

unusual_vol_down = volume > vol_avg * 1.2 and close < open
unusual_vol_up = volume > vol_avg * 1.2 and close > open

barcolor(unusual_vol_down or unusual_vol_up ? color.yellow : na)

// ATR Indicator
len2 = input.int(20, minval=1, title="Smooth")
src = input.source(close, title="Source")
out = ta.vwma(src, len2)
avg1 = math.avg(out, xATRTrailingStop) // FIXED: Replaced `ta.avg()` with `math.avg()`

plot(avg1, color=color.aqua, title="ATR")

// Daily Open Line
dl = input.bool(true, "Show daily Open")
dopen = request.security(syminfo.tickerid, "D", open)
plot(dl ? dopen : na, title="Day Open", color=color.orange, style=plot.style_circles, linewidth=2)

// Strategy Entry Conditions
if pos == 1 and not isLong and ema1_72 > ema1_89 and ema2_72 > ema2_89 and ema1_72 > ema2_72 and close > dopen
    entryPrice := close
    exitPrice := close + target
    exitStop := entryPrice - stopLoss
    strategy.entry("Buy", strategy.long)
    strategy.exit("buy_target", "Buy", limit=exitPrice)
    isLong := true
    isShort := false

if pos == -1 and not isShort and ema1_72 < ema1_89 and ema2_72 < ema2_89 and ema1_72 < ema2_72 and close < dopen
    entryPrice := close
    exitPrice := close - target
    exitStop := entryPrice + stopLoss
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell_target", "Sell", limit=exitPrice)
    isLong := false
    isShort := true

// Stop Loss Handling
if strategy.position_size > 0 and close < entryPrice - stopLoss
    strategy.close("Buy", comment="Buy_Stop Loss")

if strategy.position_size < 0 and close > entryPrice + stopLoss
    strategy.close("Sell", comment="Sell_Stop Loss")