Strategi ini adalah sistem perdagangan adaptif berdasarkan indikator RSI ganda (Relative Strength Index). Ini menggabungkan indikator RSI dari kerangka waktu yang berbeda untuk mengidentifikasi tren pasar dan peluang perdagangan sambil mengoptimalkan kinerja perdagangan melalui manajemen uang dan mekanisme kontrol risiko. Kekuatan inti dari strategi terletak pada sinergi antara RSI multi-periode untuk meningkatkan profitabilitas sambil menjaga keamanan perdagangan.
Strategi ini menggunakan indikator RSI 7 periode sebagai sinyal perdagangan utama, dikombinasikan dengan RSI harian sebagai filter tren. Posisi panjang dimulai ketika RSI jangka pendek melanggar di atas 40 dan RSI harian di atas 55. Jika harga turun di bawah harga masuk awal selama posisi, sistem secara otomatis menambahkan ke posisi untuk menurunkan biaya rata-rata. Posisi ditutup ketika RSI melanggar di bawah dari di atas 60. Stop-loss 5% diimplementasikan untuk pengendalian risiko. Strategi ini juga mencakup modul manajemen uang yang secara otomatis menghitung ukuran posisi berdasarkan total modal dan rasio risiko yang telah ditetapkan sebelumnya.
Ini adalah sistem perdagangan lengkap yang menggabungkan analisis teknis dan manajemen risiko. Ini menghasilkan sinyal perdagangan melalui koordinasi RSI multi-periode sambil mengendalikan risiko melalui manajemen uang dan mekanisme stop-loss. Strategi ini cocok untuk pasar tren tetapi membutuhkan optimasi parameter berdasarkan kondisi pasar yang sebenarnya.
/*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