Chiến lược này là một hệ thống giao dịch thích nghi dựa trên các chỉ số RSI kép (Relative Strength Index). Nó kết hợp các chỉ số RSI từ các khung thời gian khác nhau để xác định xu hướng thị trường và cơ hội giao dịch trong khi tối ưu hóa hiệu suất giao dịch thông qua các cơ chế quản lý tiền và kiểm soát rủi ro.
Chiến lược này sử dụng chỉ số RSI 7 giai đoạn làm tín hiệu giao dịch chính, kết hợp với chỉ số RSI hàng ngày làm bộ lọc xu hướng. Một vị trí dài được bắt đầu khi chỉ số RSI ngắn hạn vượt quá 40 và chỉ số RSI hàng ngày vượt quá 55. Nếu giá giảm xuống dưới giá nhập cảnh ban đầu trong một vị trí, hệ thống sẽ tự động thêm vào vị trí để giảm chi phí trung bình. Các vị trí được đóng khi chỉ số RSI vượt quá 60. Một stop-loss 5% được thực hiện để kiểm soát rủi ro. Chiến lược cũng bao gồm một mô-đun quản lý tiền bạc tự động tính toán kích thước vị trí dựa trên tổng vốn và tỷ lệ rủi ro đặt trước.
Đây là một hệ thống giao dịch hoàn chỉnh kết hợp phân tích kỹ thuật và quản lý rủi ro. Nó tạo ra các tín hiệu giao dịch thông qua sự phối hợp RSI đa giai đoạn trong khi kiểm soát rủi ro thông qua quản lý tiền và cơ chế dừng lỗ. Chiến lược này phù hợp với thị trường xu hướng nhưng đòi hỏi tối ưu hóa tham số dựa trên điều kiện thị trường thực tế.
/*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