Diese Strategie ist ein anpassungsfähiges Handelssystem, das auf doppelten RSI-Indikatoren (Relative Strength Index) basiert. Es kombiniert RSI-Indikatoren aus verschiedenen Zeitrahmen, um Markttrends und Handelschancen zu identifizieren und gleichzeitig die Handelsleistung durch Geldmanagement und Risikokontrollmechanismen zu optimieren.
Die Strategie verwendet einen 7-Perioden-RSI-Indikator als primäres Handelssignal, kombiniert mit einem täglichen RSI als Trendfilter. Eine Long-Position wird eingeleitet, wenn der kurzfristige RSI über 40 bricht und der tägliche RSI über 55 liegt. Wenn der Preis während einer Position unter den ursprünglichen Einstiegspreis fällt, fügt das System automatisch zur Position hinzu, um die durchschnittlichen Kosten zu senken. Positionen werden geschlossen, wenn der RSI unter 60 bricht. Für die Risikokontrolle wird ein Stop-Loss von 5% implementiert. Die Strategie enthält auch ein Geldmanagement-Modul, das automatisch Positionsgrößen auf der Grundlage des Gesamtkapitals und vorgegebenen Risikorezipien berechnet.
Das ist ein komplettes Handelssystem, das technische Analyse und Risikomanagement kombiniert. Es erzeugt Handelssignale durch mehrjährige RSI-Koordination und kontrolliert das Risiko durch Geldmanagement und Stop-Loss-Mechanismen. Die Strategie eignet sich für Trendmärkte, erfordert jedoch eine Optimierung der Parameter basierend auf den tatsächlichen Marktbedingungen. Die gute Erweiterbarkeit des Systems lässt Raum für weitere Optimierungen.
/*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