이 전략은 이중 RSI (관계 강도 지수) 지표에 기반한 적응형 거래 시스템이다. 이 전략은 다양한 시간 프레임의 RSI 지표를 결합하여 시장 추세와 거래 기회를 식별하고 통화 관리 및 위험 통제 메커니즘을 통해 거래 성과를 최적화합니다. 전략의 핵심 강점은 거래 안전을 유지하면서 수익성을 향상시키기 위해 다기간의 RSI 사이의 시너지입니다.
이 전략은 7주기 RSI 지표를 주요 거래 신호로 사용하고, 매일 RSI를 트렌드 필터로 결합합니다. 단기 RSI가 40을 넘고 매일 RSI가 55을 넘으면 긴 포지션이 시작됩니다. 포지션 중에 가격이 초기 엔트리 가격 이하로 떨어지면 시스템은 자동으로 평균 비용을 낮추기 위해 포지션에 추가합니다. RSI가 60을 넘어서서 아래로 넘으면 포지션이 닫습니다. 위험 통제를 위해 5%의 스톱 로스를 구현합니다. 전략에는 또한 총 자본과 미리 설정된 위험 비율을 기반으로 자동으로 포지션 크기를 계산하는 돈 관리 모듈이 포함되어 있습니다.
이 시스템은 기술 분석과 리스크 관리를 결합한 완전한 거래 시스템이다. 이 시스템은 멀티 페리오드 RSI 조율을 통해 거래 신호를 생성하면서 돈 관리 및 스톱-러스 메커니즘을 통해 위험을 제어한다. 이 전략은 트렌딩 시장에 적합하지만 실제 시장 조건에 따라 매개 변수 최적화를 필요로 한다. 이 시스템의 좋은 확장성은 추가 최적화에 대한 공간을 여긴다.
/*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