Sistema de trading con filtrado compuesto RSI/ATR y cruce de medias móviles dobles basado en ajuste dinámico de volatilidad

MA RSI ATR RR SL TP SMA
Fecha de creación: 2025-02-21 11:58:43 Última modificación: 2025-02-21 11:58:43
Copiar: 1 Número de Visitas: 390
2
Seguir
319
Seguidores

Sistema de trading con filtrado compuesto RSI/ATR y cruce de medias móviles dobles basado en ajuste dinámico de volatilidad Sistema de trading con filtrado compuesto RSI/ATR y cruce de medias móviles dobles basado en ajuste dinámico de volatilidad

Descripción general de la estrategia

La estrategia es un sistema de complejidad de operaciones que combina el cruce de dos líneas medias, el RSI sobrecompra sobreventa y el filtro de fluctuación de la tasa ATR. El sistema utiliza medias móviles de corto y largo plazo para generar señales de operación, filtra el estado del mercado a través del indicador RSI, utiliza el indicador ATR para juzgar la volatilidad y combina el porcentaje de pérdidas y ganancias de riesgo para la gestión de la posición y el control del riesgo. La estrategia tiene una gran adaptabilidad y puede ajustar los parámetros de manera flexible según el entorno del mercado.

Principio de estrategia

La lógica central de la estrategia se basa en los siguientes aspectos:

  1. Generación de señales: utiliza el cruce de las medias móviles simples de los días 9 y 21 para capturar los cambios de tendencia. Cuando se produce una señal de multiplicación cuando se atraviesa la media a corto plazo y una señal de vacío cuando se atraviesa la media a largo plazo.
  2. Filtración de condiciones: El indicador RSI filtra las situaciones de sobreventa y sobrecompra para evitar la entrada en condiciones extremas del mercado. Al mismo tiempo, el indicador ATR se utiliza para garantizar que la volatilidad del mercado cumpla con las condiciones de la operación.
  3. Gestión de riesgos: se utiliza el porcentaje de pérdidas y pérdidas basado en el valor neto de la cuenta, se determina la posición de parada mediante el establecimiento de la proporción de ganancias y riesgos para obtener ganancias razonables al mismo tiempo que se cubre el riesgo.

Ventajas estratégicas

  1. El sistema es muy adaptable: las estrategias se pueden ajustar de manera flexible a las diferentes condiciones del mercado, mediante el uso de filtros RSI y ATR activados/inactivados.
  2. Control de riesgos: el porcentaje de pérdidas y la gestión de posiciones dinámicas controlan eficazmente el margen de riesgo de cada operación.
  3. Alta fiabilidad de las señales: Mediante múltiples mecanismos de filtración, se reduce el impacto de las señales falsas y se mejora la tasa de éxito de las operaciones.
  4. Los parámetros son muy ajustables: los parámetros se pueden ajustar de manera óptima según las características específicas del mercado.

Riesgo estratégico

  1. Riesgo de oscilación de los mercados: En los mercados de oscilación horizontal, el cruce de la línea media puede generar frecuentes falsas señales.
  2. Riesgo de retraso: Las medias móviles tienen un cierto retraso y pueden perder el mejor momento de entrada.
  3. Riesgo de optimización de parámetros: la optimización excesiva de parámetros puede causar una sobresaliente estrategia que afecte el rendimiento del disco.
  4. Dependencia del entorno del mercado: las estrategias funcionan mejor en mercados con una tendencia evidente, mientras que pueden ser menos efectivas en otros entornos.

Dirección de optimización de la estrategia

  1. Ajuste de parámetros dinámicos: puede ajustar automáticamente el ciclo de la línea media y el umbral del RSI según la volatilidad del mercado.
  2. Aumentar el filtro de intensidad de la tendencia: Introducir indicadores como DMI o ADX para evaluar la intensidad de la tendencia.
  3. Optimización de la parada de pérdidas: se puede considerar el uso de la parada de seguimiento o la parada dinámica basada en ATR.
  4. Mejorar la gestión de posiciones: introducir un sistema de gestión de posiciones dinámico basado en la volatilidad.

Resumir

La estrategia, mediante la combinación de varios indicadores técnicos, construye un sistema de negociación relativamente completo. La estrategia tiene un excelente rendimiento en mercados de tendencia y una buena capacidad de control de riesgo. La estrategia puede adaptarse a diferentes entornos de mercado mediante la configuración razonable de los parámetros y la adición de las condiciones de filtración necesarias.

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

//@version=5
strategy("Simplified MA Crossover Strategy with Disable Options", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Inputs
shortLength = input.int(9, title="Short MA Length", minval=1)
longLength = input.int(21, title="Long MA Length", minval=1)

// RSI Filter
enableRSI = input.bool(true, title="Enable RSI Filter")
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)

// ATR Filter
enableATR = input.bool(true, title="Enable ATR Filter")
atrLength = input.int(14, title="ATR Length", minval=1)
minATR = input.float(0.005, title="Minimum ATR Threshold", minval=0)

// Risk Management
stopLossPerc = input.float(0.5, title="Stop Loss (%)", minval=0.1) / 100
riskRewardRatio = input.float(2, title="Risk-Reward Ratio", minval=1)
riskPercentage = input.float(2, title="Risk Percentage", minval=0.1) / 100

// Indicators
shortMA = ta.sma(close, shortLength)
longMA = ta.sma(close, longLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)

// Conditions
longCondition = ta.crossover(shortMA, longMA)
shortCondition = ta.crossunder(shortMA, longMA)

// Apply RSI Filter (if enabled)
if (enableRSI)
    longCondition := longCondition and rsi < rsiOverbought
    shortCondition := shortCondition and rsi > rsiOversold

// Apply ATR Filter (if enabled)
if (enableATR)
    longCondition := longCondition and atr > minATR
    shortCondition := shortCondition and atr > minATR

// Risk Management
positionSize = strategy.equity * riskPercentage / (stopLossPerc * close)
takeProfitLevel = strategy.position_avg_price * (1 + stopLossPerc * riskRewardRatio)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPerc)

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=takeProfitLevel, stop=stopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Short", limit=strategy.position_avg_price * (1 - stopLossPerc * riskRewardRatio), stop=strategy.position_avg_price * (1 + stopLossPerc))

// Plotting
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(atr, color=color.orange, title="ATR")
plotshape(series=longCondition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")