Estrategia de seguimiento de tendencia de ruptura de tres líneas combinada con filtrado dinámico de EMA y sistema de gestión de riesgo ATR

EMA ATR 3LS
Fecha de creación: 2025-02-18 15:30:08 Última modificación: 2025-02-18 15:30:08
Copiar: 1 Número de Visitas: 353
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia de ruptura de tres líneas combinada con filtrado dinámico de EMA y sistema de gestión de riesgo ATR

Descripción general

La estrategia es un sistema de trading de seguimiento de tendencias basado en la forma de tres líneas de ruptura en el análisis técnico del gráfico japonés. La gestión dinámica del riesgo, mediante la combinación de un índice de promedio móvil (EMA) como filtro de tendencia y un indicador de amplitud de onda real (ATR), mejora la fiabilidad de la tradicional modelo de tres líneas de ruptura. La estrategia no solo puede capturar los puntos de inflexión de la tendencia del mercado, sino que también puede controlar el riesgo de manera efectiva y es adecuada para el comercio de tendencias a medio y largo plazo.

Principio de estrategia

La lógica central de la estrategia se basa en los siguientes elementos clave: primero, la identificación de la forma de ruptura de tres líneas, es decir, después de tres líneas consecutivas del mismo color, aparece una gran esfera de absorción inversa. Segundo, el uso de la EMA como filtro de tendencia, sólo se considera hacer más señales cuando el precio está por encima de la EMA, y se considera hacer una señal de vacío cuando está por debajo de la EMA.

Ventajas estratégicas

  1. La combinación de confirmación de tendencias direccionales y reconocimiento de formas de reversión mejora la fiabilidad de las señales de negociación
  2. La configuración de stop-loss es dinámica y puede adaptarse a la volatilidad del mercado
  3. Estrategia con lógica clara y parámetros ajustables para optimizar según las diferentes características del mercado
  4. El filtro EMA reduce significativamente las señales falsas y mejora la estabilidad de la estrategia
  5. Sistema de gestión de riesgos completo, que incluye gestión de fondos y mecanismos de prevención de pérdidas

Riesgo estratégico

  1. Las falsas señales frecuentes que pueden producirse en mercados convulsionados, resultando en paros continuos
  2. La EMA como indicador de retraso puede no reaccionar a tiempo en el momento de un cambio brusco de tendencia
  3. La configuración de stop loss ATR con un multiplicador fijo puede no ser adecuada para todos los entornos de mercado
  4. La estrategia depende de una dirección de tendencia clara y puede funcionar mal durante un período sin tendencia
  5. La precisión de la hora de entrada está más influenciada por la selección del período de la línea K.

Dirección de optimización de la estrategia

  1. Introducción de indicadores de tráfico como confirmación auxiliar para mejorar la fiabilidad de la señal
  2. Ajuste de los parámetros de EMA en función de las diferentes dinámicas del ciclo del mercado para mejorar la adaptabilidad
  3. Aumentar los filtros de intensidad de tendencia, como el indicador ADX, para reducir las falsas señales en los mercados convulsivos
  4. Optimización del multiplicador de pérdidas de la parada de parada, que se puede considerar para ajustar de forma dinámica según la tasa de fluctuación
  5. Añadir un mecanismo de identificación del entorno del mercado, con diferentes configuraciones de parámetros en diferentes estados del mercado

Resumir

Se trata de un sistema de estrategias que combina la teoría clásica del análisis técnico con la filosofía moderna de las operaciones cuantitativas. Al combinar las formas tradicionales de ruptura de tres líneas con el seguimiento de tendencias y la gestión de riesgos, se construye un sistema de operaciones más completo.

Código Fuente de la Estrategia
/*backtest
start: 2025-01-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_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 EMA 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 EMA Inputs
atrLength = input.int(title='ATR Length', defval=14, group='ATR & EMA')
emaLength = input.int(title='EMA Length', defval=200, group='ATR & EMA')

// ### 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 EMA
ema = ta.ema(close, emaLength)

// 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 close < ema
is3LSBullSig = is3LSBull() and close > ema

// 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)