Estrategia de seguimiento de tendencia de impulso de ruptura de tres líneas combinada con filtro ADX

ADX ATR TMA TP SL 3LS
Fecha de creación: 2025-02-20 17:46:30 Última modificación: 2025-02-20 17:46:30
Copiar: 0 Número de Visitas: 459
2
Seguir
319
Seguidores

Estrategia de seguimiento de tendencia de impulso de ruptura de tres líneas combinada con filtro ADX Estrategia de seguimiento de tendencia de impulso de ruptura de tres líneas combinada con filtro ADX

Descripción general

La estrategia es un sistema de seguimiento de tendencias basado en tres líneas de ruptura y filtración de tendencias ADX. La estrategia identifica la fuerza de la tendencia mediante la identificación de tres rupturas consecutivas después de la asimetría, en combinación con el indicador ADX, y utiliza el ATR para establecer dinámicamente la posición de parada. Este método garantiza la fiabilidad de la señal de entrada y permite controlar el riesgo de manera efectiva.

Principio de estrategia

La lógica central de la estrategia incluye los siguientes elementos clave:

  1. Identificación de formas de ruptura de tres líneas: las formas de varias cabezas requieren una ruptura de línea de sol más grande después de tres líneas de sol continuas; las formas de cabezas vacías requieren una ruptura de línea de sol más grande después de tres líneas de sol continuas.
  2. Confirmación de la intensidad de la tendencia de ADX: utiliza el indicador ADX para determinar la intensidad de la tendencia actual, generando una señal de negociación solo cuando el valor de ADX supera el umbral establecido (el valor predeterminado de 25).
  3. ATR Dinámico Stop Loss: utiliza el ATR Dinámico para calcular el stop y la posición de stop loss, donde el stop está configurado para 2 veces ATR y el stop loss para 1 veces ATR.
  4. Lógica de ejecución de operaciones: cuando se cumplen los requisitos de reconocimiento de formas y la intensidad de la tendencia, el sistema ejecuta automáticamente la operación de apertura de posición y, al mismo tiempo, establece la correspondiente orden de parada y pérdida.

Ventajas estratégicas

  1. Alta fiabilidad de la señal: la combinación de la forma de los precios y la doble confirmación de los indicadores de tendencia, mejora significativamente la fiabilidad de la señal de negociación.
  2. El control de riesgo es razonable: el ATR utiliza un parador de pérdidas dinámico, que permite ajustar los parámetros de control de riesgo de acuerdo con la volatilidad del mercado.
  3. Alta sistematización: la lógica de la estrategia es clara, los parámetros son ajustables, lo que facilita la transacción sistematizada.
  4. Adaptabilidad: Se puede aplicar a diferentes mercados y períodos de tiempo, con una buena universalidad.

Riesgo estratégico

  1. Riesgo de Falso Breakout: En un mercado convulso puede haber falsos breakouts, lo que lleva a pérdidas de operaciones.
  2. Riesgo de deslizamiento: debido a la estrategia de entrada a precio de mercado, puede haber deslizamientos significativos en mercados con poca liquidez.
  3. Sensibilidad de parámetros: los efectos de la estrategia son sensibles a parámetros como el umbral de ADX y el ciclo ATR, y necesitan ser optimizados para diferentes mercados.
  4. Dependencia de la tendencia: la estrategia puede no funcionar bien en un mercado convulso y es más adecuada para un entorno de mercado con una tendencia evidente.

Dirección de optimización de la estrategia

  1. Reconocimiento de forma mejorado: se pueden agregar más condiciones de verificación de forma de precio, como la proporción de entidad y sombra de la línea de referencia.
  2. Mejoras en la confirmación de tendencias: se pueden introducir otros indicadores de tendencias como el MACD o el cruce de medias móviles como confirmación auxiliar.
  3. Optimización de stop loss: se puede ajustar el multiplicador ATR según la dinámica de las diferentes características del mercado, o se puede utilizar el método de seguimiento de stop loss.
  4. Optimización de la hora de negociación: Se puede agregar un filtro de hora de negociación para evitar operaciones en momentos de mayor volatilidad del mercado.

Resumir

La estrategia de seguimiento de la tendencia de la dinámica de la ruptura de tres líneas es un sistema de negociación completo que combina las formas clásicas de precios y los indicadores técnicos. A través de filtros de tendencia ADX y control de riesgo dinámico ATR, la estrategia controla mejor el riesgo al mismo tiempo que garantiza oportunidades de negociación. Aunque tiene algunas limitaciones, la estrategia tiene un buen valor de aplicación en el campo de batalla a través de la optimización de parámetros y la mejora de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2024-08-11 00:00:00
end: 2025-02-19 00:00:00
period: 1h
basePeriod: 1h
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)