Estrategia de trading de ruptura dinámica de tres líneas basada en ATR y ADX

ATR ADX SL TP
Fecha de creación: 2025-02-21 09:23:20 Última modificación: 2025-02-27 17:20:50
Copiar: 2 Número de Visitas: 405
2
Seguir
319
Seguidores

Estrategia de trading de ruptura dinámica de tres líneas basada en ATR y ADX Estrategia de trading de ruptura dinámica de tres líneas basada en ATR y ADX

Descripción general

La estrategia es un sistema de negociación avanzado basado en las clásicas formas de ruptura de tres líneas, que ofrece una solución de negociación completa mediante la integración de indicadores de confirmación de tendencia ADX y un mecanismo de stop-stop dinámico ATR. El núcleo de la estrategia es identificar las formas de ruptura después de tres líneas K consecutivas y combinar la confirmación de la intensidad de la tendencia para lograr una generación de señales de negociación precisa.

Principio de estrategia

La estrategia se basa en tres mecanismos centrales: primero, la identificación de las clásicas formas de ruptura de tres líneas, incluidas las formas de alza ((tres rupturas de línea de la barra después de tres líneas de la barra consecutivas) y las formas de caída ((tres rupturas de línea de la barra después de tres líneas de la barra consecutivas); luego, el uso de ADX ((indicador de tendencia promedio) para filtrar la intensidad de la tendencia, confirmando la señal solo cuando el valor de ADX supera el umbral establecido; y finalmente, el uso de ATR ((amplitud real de la onda) para calcular la posición de los estancamientos, lo que permite la adaptabilidad de la gestión de riesgos. La estrategia garantiza la calidad de la señal técnicamente mediante la determinación precisa del color de la línea K y la verificación de la fuerza de ruptura.

Ventajas estratégicas

  1. Mecanismo de confirmación de señal mejorado: mejora de la fiabilidad de la señal mediante la combinación de múltiples indicadores técnicos (forma de la línea K, ADX, ATR)
  2. Inteligencia de gestión de riesgos: configuración de stop loss dinámica basada en ATR que se ajusta automáticamente a la volatilidad del mercado
  3. Alta personalización: ofrece opciones de ajuste para varios parámetros clave, incluidos los límites de ADX, el ciclo ATR, etc.
  4. Seguimiento de tendencias mejorado: filtración ADX para asegurar la entrada solo en entornos de tendencias fuertes
  5. La estructura del código es clara: el diseño modular facilita el mantenimiento y la extensión

Riesgo estratégico

  1. Retraso en el reconocimiento de formas: la confirmación de la forma de la ruptura de tres líneas requiere la finalización de cuatro líneas K, lo que puede causar un retraso en el tiempo de entrada
  2. Riesgo de brechas falsas: las señales de brechas falsas pueden aparecer en mercados convulsionados
  3. Lacalidad del ADX: como indicador de confirmación de tendencias, el ADX tiene cierta lacalidad en sí mismo
  4. Consideraciones sobre la amplitud de la parada: la configuración de parada basada en el ATR puede ser demasiado grande o demasiado pequeña en caso de fluctuaciones intensas
  5. Dependencia del entorno del mercado: las estrategias son más efectivas en mercados con tendencia y menos efectivas en mercados con conmoción.

Dirección de optimización de la estrategia

  1. Mejora de la filtración de la señal: se puede agregar un mecanismo de confirmación de la entrega para mejorar la fiabilidad de la señal
  2. Optimización de parámetros dinámicos: introducción de mecanismos de adaptación para ajustar dinámicamente los límites de ADX y el ciclo ATR
  3. Optimización de la hora de entrada: se puede combinar con la estructura de precios (suporte / resistencia) para optimizar el punto de entrada
  4. Mejora en la gestión de posiciones: aumento de mecanismos de gestión de posiciones dinámicas basadas en la volatilidad
  5. Identificación de entornos de mercado: agregar una lógica de clasificación de entornos de mercado para usar diferentes configuraciones de parámetros en diferentes condiciones de mercado

Resumir

Esta estrategia crea un sistema de negociación con base teórica y práctica al combinar la clásica forma de tres líneas de ruptura con indicadores tecnológicos modernos. Su principal ventaja radica en el mecanismo de confirmación de múltiples señales y la gestión inteligente del riesgo, pero su uso requiere atención a la adecuación al entorno del mercado y a la optimización de los parámetros.

Código Fuente de la Estrategia
/*backtest
start: 2024-08-05 00:00:00
end: 2024-12-24 00:00:00
period: 5h
basePeriod: 5h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

// Copyright ...
// Based on the TMA Overlay by Arty, converted to a simple strategy example.
// Pine Script v5

//@version=5
strategy(title='3 Line Strike [TTF] - Strategy with ATR and ADX Filter',
     shorttitle='3LS Strategy [TTF]',
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     pyramiding=0)

// -----------------------------------------------------------------------------
//                               INPUTS
// -----------------------------------------------------------------------------

// ATR and ADX Inputs
atrLength = input.int(title='ATR Length', defval=14, group='ATR & ADX')
adxLength = input.int(title='ADX Length', defval=14, group='ATR & ADX')
adxThreshold = input.float(title='ADX Threshold', defval=25, group='ATR & ADX')

// ### 3 Line Strike
showBear3LS = input.bool(title='Show Bearish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bearish 3 Line Strike (3LS-Bear) = 3 zelené sviečky, potom veľká červená sviečka (engulfing).")
showBull3LS = input.bool(title='Show Bullish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bullish 3 Line Strike (3LS-Bull) = 3 červené sviečky, potom veľká zelená sviečka (engulfing).")

// -----------------------------------------------------------------------------
//                          CALCULATIONS
// -----------------------------------------------------------------------------

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate ADX components manually
tr = ta.tr(true)
plusDM = ta.change(high) > ta.change(low) and ta.change(high) > 0 ? ta.change(high) : 0
minusDM = ta.change(low) > ta.change(high) and ta.change(low) > 0 ? ta.change(low) : 0
smoothedPlusDM = ta.rma(plusDM, adxLength)
smoothedMinusDM = ta.rma(minusDM, adxLength)
smoothedTR = ta.rma(tr, adxLength)

plusDI = (smoothedPlusDM / smoothedTR) * 100
minusDI = (smoothedMinusDM / smoothedTR) * 100

dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, adxLength)

// Helper Functions
getCandleColorIndex(barIndex) =>
    int ret = na
    if (close[barIndex] > open[barIndex])
        ret := 1
    else if (close[barIndex] < open[barIndex])
        ret := -1
    else
        ret := 0
    ret

isEngulfing(checkBearish) =>
    sizePrevCandle = close[1] - open[1]
    sizeCurrentCandle = close - open
    isCurrentLargerThanPrevious = math.abs(sizeCurrentCandle) > math.abs(sizePrevCandle)

    if checkBearish
        isGreenToRed = (getCandleColorIndex(0) < 0) and (getCandleColorIndex(1) > 0)
        isCurrentLargerThanPrevious and isGreenToRed
    else
        isRedToGreen = (getCandleColorIndex(0) > 0) and (getCandleColorIndex(1) < 0)
        isCurrentLargerThanPrevious and isRedToGreen

isBearishEngulfing() => isEngulfing(true)
isBullishEngulfing() => isEngulfing(false)

is3LSBear() =>
    is3LineSetup = (getCandleColorIndex(1) > 0) and (getCandleColorIndex(2) > 0) and (getCandleColorIndex(3) > 0)
    is3LineSetup and isBearishEngulfing()

is3LSBull() =>
    is3LineSetup = (getCandleColorIndex(1) < 0) and (getCandleColorIndex(2) < 0) and (getCandleColorIndex(3) < 0)
    is3LineSetup and isBullishEngulfing()

// Signals
is3LSBearSig = is3LSBear() and adx > adxThreshold
is3LSBullSig = is3LSBull() and adx > adxThreshold

// Take Profit and Stop Loss
longTP = close + 2 * atr
longSL = close - 1 * atr
shortTP = close - 2 * atr
shortSL = close + 1 * atr

// -----------------------------------------------------------------------------
//                          STRATEGY ENTRY PRÍKAZY
// -----------------------------------------------------------------------------
if (showBull3LS and is3LSBullSig)
    strategy.entry("3LS_Bull", strategy.long, comment="3LS Bullish")
    strategy.exit("Exit Bull", from_entry="3LS_Bull", limit=longTP, stop=longSL)

if (showBear3LS and is3LSBearSig)
    strategy.entry("3LS_Bear", strategy.short, comment="3LS Bearish")
    strategy.exit("Exit Bear", from_entry="3LS_Bear", limit=shortTP, stop=shortSL)