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

Sistema de negociación de rango adaptativo basado en indicadores RSI duales

El autor:¿ Qué pasa?, Fecha: 2024-12-13 11:57:17
Las etiquetas:Indicador de riesgoSLTPEn el caso de losEl ATRRR

img

Resumen general

Esta estrategia es un sistema de trading adaptativo basado en indicadores duales de RSI (Relative Strength Index). Combina indicadores de RSI de diferentes plazos para identificar tendencias de mercado y oportunidades de trading mientras optimiza el rendimiento de trading a través de mecanismos de gestión de dinero y control de riesgos.

Principios de estrategia

La estrategia utiliza un indicador de RSI de 7 períodos como la señal de negociación principal, combinada con un RSI diario como un filtro de tendencia. Una posición larga se inicia cuando el RSI de corto período se rompe por encima de 40 y el RSI diario está por encima de 55. Si el precio cae por debajo del precio de entrada inicial durante una posición, el sistema se suma automáticamente a la posición para reducir el costo promedio. Las posiciones se cierran cuando el RSI se rompe por debajo de 60. Se implementa un stop-loss del 5% para controlar el riesgo. La estrategia también incluye un módulo de gestión de dinero que calcula automáticamente los tamaños de las posiciones en función del capital total y las proporciones de riesgo preestablecidas.

Ventajas estratégicas

  1. La combinación de RSI multiperíodo mejora la fiabilidad de la señal
  2. El mecanismo de mediación de posiciones adaptativo reduce efectivamente los costes de tenencia
  3. Sistema integral de gestión de fondos que ajusta las posiciones en función de la preferencia de riesgo
  4. Protección fija de stop-loss que controla estrictamente el riesgo por operación
  5. Considera que los costes de negociación son necesarios para unas condiciones comerciales más realistas

Riesgos estratégicos

  1. Los indicadores RSI pueden generar señales falsas en mercados volátiles
  2. El mecanismo de mediación de posiciones puede dar lugar a pérdidas significativas en tendencias bajistas continuas
  3. El porcentaje fijo de stop loss puede ser demasiado conservador en períodos de alta volatilidad
  4. Los costes de negociación pueden afectar significativamente a los rendimientos durante las operaciones frecuentes
  5. La ejecución de la estrategia requiere suficiente liquidez

Direcciones de optimización

  1. Incorporar indicadores de volatilidad (como ATR) para el ajuste dinámico de pérdidas de parada
  2. Añadir filtros de fuerza de tendencia para reducir las señales falsas en los mercados variados
  3. Optimizar la lógica de promedio de posición con ajustes dinámicos basados en la volatilidad del mercado
  4. Incluir las confirmaciones de los indicadores de riesgo de los plazos adicionales
  5. Desarrollar un sistema adaptativo de dimensionamiento de la posición

Resumen de las actividades

Este es un sistema de trading completo que combina análisis técnico y gestión de riesgos. Genera señales de trading a través de la coordinación de RSI de varios períodos mientras controla el riesgo a través de la gestión de dinero y mecanismos de stop-loss. La estrategia es adecuada para mercados de tendencia pero requiere optimización de parámetros basada en las condiciones reales del mercado.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Dual RSI with Rebuy Logic + Capital, Commission, and Stop Loss", overlay=true)

// Parameter
rsi_length = input.int(7, title="RSI Length")
daily_rsi_length = input.int(7, title="Daily RSI Length")
capital = input.float(10000, title="Initial Capital", minval=0)  // Kapital
risk_per_trade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=1.0)  // Risikogröße in Prozent
commission = input.float(0.1, title="Commission (%)", minval=0, maxval=100)  // Kommission in Prozent
stop_loss_pct = input.float(5, title="Stop Loss (%)", minval=0.1, maxval=100)  // Stop-Loss in Prozent

// Ordergröße berechnen
risk_amount = capital * risk_per_trade
order_size = risk_amount / close  // Größe der Order basierend auf Risikogröße und Preis

// Daily RSI
day_rsi = request.security(syminfo.tickerid, "D", ta.rsi(close, daily_rsi_length), lookahead=barmerge.lookahead_on)

// RSI auf aktuellem Timeframe
rsi = ta.rsi(close, rsi_length)

// Kauf- und Verkaufsbedingungen
buy_condition = rsi[1] < 40 and rsi > rsi[1] and day_rsi > 55
sell_condition = rsi[1] > 60 and rsi < rsi[1]

// Variablen, um den Preis des ersten Kaufs zu speichern
var float first_buy_price = na
var bool is_position_open = false

// Kauf-Logik
if buy_condition
    if not is_position_open
        // Initiales Kaufsignal
        strategy.entry("Buy", strategy.long, qty=1)
        first_buy_price := close
        is_position_open := true
    else if close < first_buy_price
        // Rebuy-Signal, nur wenn Preis niedriger als erster Kaufpreis
        strategy.entry("Rebuy", strategy.long, qty=1)

// Verkaufs-Logik
if sell_condition and is_position_open
    strategy.close("Buy")
    strategy.close("Rebuy")
    first_buy_price := na  // Zurücksetzen des Kaufpreises
    is_position_open := false

// Stop-Loss-Bedingung
if is_position_open
    // Stop-Loss-Preis berechnen (5% unter dem Einstiegspreis)
    stop_loss_price = first_buy_price * (1 - stop_loss_pct / 100)
    
    // Stop-Loss für "Buy" und "Rebuy" festlegen
    strategy.exit("Stop Loss Buy", from_entry="Buy", stop=stop_loss_price)
    strategy.exit("Stop Loss Rebuy", from_entry="Rebuy", stop=stop_loss_price)

// Performance-Metriken berechnen (mit Kommission)
gross_profit = strategy.netprofit / capital * 100
commission_cost = commission / 100 * strategy.closedtrades
net_profit = gross_profit - commission_cost

// Debug-Plots
plot(first_buy_price, title="First Buy Price", color=color.blue, linewidth=1)
plotchar(buy_condition, title="Buy Condition", char='B', location=location.abovebar, color=color.green)
plotchar(sell_condition, title="Sell Condition", char='S', location=location.belowbar, color=color.red)

// Debugging für Performance



Relacionados

Más.