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.
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.
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