Sistema de estrategia dual de seguimiento de tendencias adaptativo y trading de rango

ADX SMA BB RSI MACD ATR
Fecha de creación: 2025-02-21 10:14:04 Última modificación: 2025-02-27 17:17:45
Copiar: 1 Número de Visitas: 419
2
Seguir
319
Seguidores

Sistema de estrategia dual de seguimiento de tendencias adaptativo y trading de rango Sistema de estrategia dual de seguimiento de tendencias adaptativo y trading de rango

Descripción general

La estrategia es un sistema de negociación auto-adaptado que combina el seguimiento de tendencias y el intercambio de intervalos. El sistema identifica el estado del mercado dinámicamente a través de los indicadores ADX, y adopta diferentes estrategias de negociación en mercados de tendencia y en mercados de oscilación. En mercados de tendencia, la estrategia utiliza una señal de cruce de media móvil en combinación con la confirmación RSI y MACD; en mercados de oscilación, la estrategia utiliza un sistema de negociación de ruptura de la banda de Brin en combinación con una señal de sobreventa y sobreventa en RSI.

Principio de estrategia

El núcleo de la estrategia es el mecanismo de identificación del estado del mercado. La estrategia de seguimiento de la tendencia se activa cuando el ADX es mayor a 25 y se determina que es un mercado de tendencia:

  1. Condición de múltiples cabezas: 50 días en la línea media de 200 días, mientras que el RSI es mayor que 50 y la línea MACD está por encima de la línea de señal
  2. Condición de cabeza vacía: 50 días por debajo de la línea media de 200 días, mientras que el RSI es menor que 50 y la línea MACD está por debajo de la línea de señal

Cuando el ADX sea menor o igual a 25 y sea considerado un mercado convulso, active la estrategia de intercambio por intervalos:

  1. Condición de más de uno: el precio sube y baja a través de la banda de Brin y el RSI es menor que 40
  2. Condición de cabeza vacía: el precio está por debajo de la banda de Brin y el RSI es mayor que 60

La configuración de la parada de pérdidas utiliza el método de multiplicador dinámico de ATR, con una parada de pérdidas de 1.5 veces ATR y una parada de 3 veces ATR.

Ventajas estratégicas

  1. Adaptabilidad al mercado: la capacidad de cambiar automáticamente de estrategia de negociación en función de las condiciones del mercado
  2. Confirmación de múltiples señales: reducción de falsas señales mediante la combinación de varios indicadores técnicos
  3. Control de riesgos mejorado: mecanismo de suspensión de pérdidas dinámico para adaptarse a las fluctuaciones del mercado
  4. La lógica de la estrategia es clara: los criterios para juzgar las tendencias y los intervalos son claros, lo que facilita el ajuste óptimo
  5. La imagen es muy buena: el color de fondo distingue el estado del mercado, lo cual es muy intuitivo.

Riesgo estratégico

  1. Signales de atraso: Indicadores como las medias móviles tienen un cierto atraso y pueden perder el mejor punto de entrada
  2. Riesgo de brechas falsas: Brin podría emitir señales falsas en un mercado convulso
  3. Sensibilidad de los parámetros: los parámetros establecidos, como el valor de los umbrales ADX y el multiplicador ATR, pueden afectar el rendimiento de la estrategia.
  4. Riesgo de cambio de mercado: puede generar señales erróneas durante la transición entre tendencias y turbulencias
  5. Riesgo de pérdidas de la amplitud: el stop ATR de un multiplicador fijo puede ser excesivo en períodos de alta volatilidad

Dirección de optimización de la estrategia

  1. Introducción de análisis de tráfico: añadir un factor de tráfico en la confirmación de la señal para mejorar la fiabilidad de la señal
  2. Optimización del estado del mercado: se puede considerar cambiar el ADX a depreciación dinámica o combinarlo con otros indicadores
  3. Mecanismos de detención de pérdidas: introducción de tracking stop o ajuste dinámico de los múltiplos ATR en función de la volatilidad
  4. Aumentar el filtro de tiempo: agregar restricciones de período de negociación para evitar períodos de baja liquidez
  5. Mejora en el mecanismo de confirmación de señales: se puede considerar la inclusión de análisis de la configuración de precios para mejorar la calidad de la señal

Resumir

La estrategia se adapta a diferentes entornos de mercado mediante la identificación dinámica de la situación del mercado y el correspondiente cambio de estrategia. La estrategia tiene una buena utilidad a través de la combinación de múltiples indicadores técnicos y un mecanismo de control de riesgo dinámico. Sin embargo, se debe tener en cuenta el riesgo de signos de atraso y falsas brechas, por lo que se recomienda realizar pruebas completas y optimización de parámetros en el entorno real.

Código Fuente de la Estrategia
/*backtest
start: 2024-09-01 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Trend vs Range Trading - Fully Fixed for v6", overlay=true)

// 🔹 Moving Averages (SMA 50 & 200)
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)

// 🔹 Proper ADX Calculation (With Corrected ta.dmi() Parameters)
dmiLength = 14
adxSmoothing = 14
[dmiPlus, dmiMinus, adx] = ta.dmi(dmiLength, adxSmoothing)

// 🔹 Bollinger Bands Calculation (Fixed for v6)
bb_length = 20
bb_mult = 2.0
bb_basis = ta.sma(close, bb_length)
bb_dev = ta.stdev(close, bb_length)
bb_upper = bb_basis + (bb_mult * bb_dev)
bb_lower = bb_basis - (bb_mult * bb_dev)

// 🔹 Additional Indicators (RSI & MACD)
rsi = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// 🔹 ATR for Stop Loss & Take Profit
atr = ta.atr(14)
stop_loss_mult = 1.5  // Stop Loss Multiplier
take_profit_mult = 3.0  // Take Profit Multiplier

// 🔹 Trend vs Range Market Detection
is_trending = adx > 25

// 🔹 Trend Following Strategy (SMA Cross & Confirmation)
long_condition_trend = is_trending and ta.crossover(sma50, sma200) and rsi > 50 and macdLine > signalLine
short_condition_trend = is_trending and ta.crossunder(sma50, sma200) and rsi < 50 and macdLine < signalLine

// 🔹 Range Trading Strategy (Bollinger Bands & RSI Confirmation)
long_condition_range = not is_trending and ta.crossover(close, bb_lower) and rsi < 40
short_condition_range = not is_trending and ta.crossunder(close, bb_upper) and rsi > 60

// 🔹 Stop Loss & Take Profit Calculations
long_stop_loss = close - (atr * stop_loss_mult)
long_take_profit = close + (atr * take_profit_mult)
short_stop_loss = close + (atr * stop_loss_mult)
short_take_profit = close - (atr * take_profit_mult)

// 🔹 Execute Trades (With Stop Loss & Take Profit)
if long_condition_trend
    strategy.entry("Long_Trend", strategy.long)
    strategy.exit("Exit_Long_Trend", from_entry="Long_Trend", stop=long_stop_loss, limit=long_take_profit)

if short_condition_trend
    strategy.entry("Short_Trend", strategy.short)
    strategy.exit("Exit_Short_Trend", from_entry="Short_Trend", stop=short_stop_loss, limit=short_take_profit)

if long_condition_range
    strategy.entry("Long_Range", strategy.long)
    strategy.exit("Exit_Long_Range", from_entry="Long_Range", stop=long_stop_loss, limit=long_take_profit)

if short_condition_range
    strategy.entry("Short_Range", strategy.short)
    strategy.exit("Exit_Short_Range", from_entry="Short_Range", stop=short_stop_loss, limit=short_take_profit)

// 🔹 Visual Indicators & Background Color (Trend vs Range)
bgcolor(is_trending ? color.green : color.blue)

// 🔹 Plot Moving Averages & Bollinger Bands
plot(sma50, color=color.blue, title="SMA 50")
plot(sma200, color=color.red, title="SMA 200")
plot(bb_upper, color=color.green, title="BB Upper")
plot(bb_lower, color=color.orange, title="BB Lower")