En la carga de los recursos... Cargando...

Estrategia de impulso del RSI con doble media móvil cruzada con sistema de optimización de riesgo-recompensa

El autor:¿ Qué pasa?, Fecha: 2024-11-12 16:00:58
Las etiquetas:La SMAIndicador de riesgoEl ATRRR

img

Resumen general

Esta es una estrategia de negociación cuantitativa que combina doble cruce de promedios móviles, condiciones de sobrecompra / sobreventa de RSI y gestión de la relación riesgo-recompensación. La estrategia determina la dirección de la tendencia del mercado a través de cruces de promedios móviles a corto y largo plazo mientras utiliza el indicador RSI para identificar zonas de sobrecompra / sobreventa para un filtrado de señales comerciales más preciso. También integra configuraciones dinámicas de stop-loss basadas en ATR y un sistema de gestión de objetivos de ganancias de relación riesgo-recompensación fija.

Principios de estrategia

La estrategia emplea promedios móviles de 9 días y 21 días como base para la determinación de la tendencia, con el indicador RSI zonas sobrecompradas / sobrevendidas (35/65) para la confirmación de la señal. Las condiciones de entrada largas requieren el MA a corto plazo por encima del MA a largo plazo y el RSI en territorio sobrecomprado (por debajo de 35); la entrada corta requiere el MA a corto plazo por debajo del MA a largo plazo y el RSI en territorio sobrecomprado (por encima de 65).

Ventajas estratégicas

  1. El mecanismo de confirmación de múltiples señales mejora significativamente la fiabilidad del comercio
  2. Las opciones de suspensión de pérdidas dinámicas se adaptan a la volatilidad del mercado
  3. Las ayudas a la rentabilidad estable a largo plazo en función de la relación riesgo-beneficio fija
  4. El período mínimo de retención evita efectivamente el exceso de negociación
  5. El sistema de marcado visual facilita el seguimiento de la estrategia y el análisis de las pruebas de retroceso
  6. Cambios de color de fondo muestran de forma intuitiva el estado de la posición actual

Riesgos estratégicos

  1. El sistema de doble MA puede generar señales falsas en mercados variados
  2. El indicador RSI podría perder oportunidades comerciales en tendencias fuertes
  3. La relación riesgo-rendimiento fija puede carecer de flexibilidad en determinadas condiciones de mercado
  4. Las paradas de ATR pueden no responder lo suficientemente rápidamente a los picos de volatilidad
  5. El período mínimo de retención podría causar oportunidades de stop-loss perdidas

Direcciones para la optimización de la estrategia

  1. Introducir una selección adaptativa del período de media móvil basada en las condiciones del mercado
  2. Añadir filtros de intensidad de tendencia para mejorar la calidad de la señal
  3. Desarrollar un sistema dinámico de ajuste de la relación riesgo-beneficio para diferentes entornos de mercado
  4. Integrar indicadores de volumen para mejorar la fiabilidad de la señal
  5. Añadir un módulo de análisis de volatilidad de mercado para optimizar el tiempo de negociación
  6. Incorporar algoritmos de aprendizaje automático para la optimización de parámetros

Resumen de las actividades

Esta estrategia construye un sistema de negociación relativamente completo a través de la coordinación de múltiples indicadores técnicos. Se centra no solo en la calidad de la señal de entrada, sino también en la gestión de riesgos y el establecimiento de objetivos de ganancias.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("JakeJohn", overlay=true)

// Input parameters
smaShortLength = input(9, title="Short SMA Length")
smaLongLength = input(21, title="Long SMA Length")
lengthRSI = input(14, title="RSI Length")
rsiOverbought = input(65, title="RSI Overbought Level")
rsiOversold = input(35, title="RSI Oversold Level")
riskRewardRatio = input(2, title="Risk/Reward Ratio") // 2:1
atrMultiplier = input(1.5, title="ATR Multiplier") // Multiplier for ATR to set stop loss

// Calculate indicators
smaShort = ta.sma(close, smaShortLength)
smaLong = ta.sma(close, smaLongLength)
rsi = ta.rsi(close, lengthRSI)
atr = ta.atr(14)

// Entry conditions
longCondition = (smaShort > smaLong) and (rsi < rsiOversold) // Buy when short SMA is above long SMA and RSI is oversold
shortCondition = (smaShort < smaLong) and (rsi > rsiOverbought) // Sell when short SMA is below long SMA and RSI is overbought

// Variables for trade management
var float entryPrice = na
var float takeProfit = na
var int entryBarIndex = na

// Entry logic for long trades
if (longCondition and (strategy.position_size == 0))
    entryPrice := close
    takeProfit := entryPrice + (entryPrice - (entryPrice - (atr * atrMultiplier))) * riskRewardRatio
    strategy.entry("Buy", strategy.long)
    entryBarIndex := bar_index // Record the entry bar index
    label.new(bar_index, high, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Entry logic for short trades
if (shortCondition and (strategy.position_size == 0))
    entryPrice := close
    takeProfit := entryPrice - (entryPrice - (entryPrice + (atr * atrMultiplier))) * riskRewardRatio
    strategy.entry("Sell", strategy.short)
    entryBarIndex := bar_index // Record the entry bar index
    label.new(bar_index, low, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

// Manage trade duration and exit after a minimum of 3 hours
if (strategy.position_size != 0)
    // Check if the trade has been open for at least 3 hours (180 minutes)
    if (bar_index - entryBarIndex >= 180) // 3 hours in 1-minute bars
        if (strategy.position_size > 0)
            strategy.exit("Take Profit Long", from_entry="Buy", limit=takeProfit)
        else
            strategy.exit("Take Profit Short", from_entry="Sell", limit=takeProfit)

// Background colors for active trades
var color tradeColor = na
if (strategy.position_size > 0)
    tradeColor := color.new(color.green, 90) // Light green for long trades
else if (strategy.position_size < 0)
    tradeColor := color.new(color.red, 90) // Light red for short trades
else
    tradeColor := na // No color when no trade is active

bgcolor(tradeColor, title="Trade Background")

// Plotting position tools
if (strategy.position_size > 0)
    // Plot long position tool
    strategy.exit("TP Long", limit=takeProfit)
    
if (strategy.position_size < 0)
    // Plot short position tool
    strategy.exit("TP Short", limit=takeProfit)

// Plotting indicators
plot(smaShort, color=color.green, title="Short SMA", linewidth=2)
plot(smaLong, color=color.red, title="Long SMA", linewidth=2)

// Visual enhancements for RSI
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, color=color.blue, title="RSI", linewidth=2)

// Ensure there's at least one plot function
plot(close, color=color.black, title="Close Price", display=display.none) // Hidden plot for compliance


Relacionados

Más.