이 전략은 상대적 강도 지수 (RSI) 기술 지표에 기반하여 자산의 과소매 및 과소매 조건을 분석하여 거래 결정을 내린다. RSI가 과소매 한계 이하로 떨어지면 구매 신호가 발생하고 RSI가 과소매 한계 이상으로 상승하면 판매 신호가 발생한다. 또한, 전략은 비율 기반의 영업 및 손실 중지 메커니즘을 사용하여 일정한 이익과 손실 비율을 설정하여 위험을 제어하고 수익을 잠금합니다. 전략은 단기 시장 변동을 포착하고 트렌드가 역전되면 즉시 포지션을 닫는 것을 목표로하며 안정적인 수익을 달성합니다.
수익을 취하고 손실을 멈추는 비율을 기반으로 한 RSI 기반 거래 전략은 과소득과 과소득의 시장 조건을 포착하고, 고정된 비율의 수익을 취하고 손실을 멈추는 메커니즘과 결합하여, 트렌드가 역전될 때 즉각적으로 포지션을 폐쇄하여 안정적인 수익을 달성합니다. 전략의 원리는 간단하고 이해하기 쉽습니다. 통제 가능한 위험과 강력한 적응력이 있습니다. 그러나 매개 변수 민감성, 오스실레이션 시장에서 낮은 성능 및 트렌드 조정 위험과 같은 문제에도 직면합니다. 매개 변수를 동적으로 조정하고, 트렌드 필터를 도입하고, 수익을 취하고 손실을 멈추는 메커니즘을 최적화하고, 포지션 사이징을 통합하고, 다른 지표와 결합하여 변화하는 시장 환경에 더 잘 적응하기 위해 전략의 안정성과 수익성을 향상시킬 수 있습니다.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Strategy with Adjustable TP and SL", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=100000, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.1) // RSI settings rsiPeriod = input.int(14, title="RSI Period") rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100) rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50) // Fixed TP and SL settings takeProfitPct = input.float(20, title="Take Profit Percentage", step=0.1) / 100 stopLossPct = input.float(5, title="Stop Loss Percentage", step=0.1) / 100 // Calculate RSI rsiValue = ta.rsi(close, rsiPeriod) // Plot RSI hline(rsiOverbought, "RSI Overbought", color=color.red) hline(rsiOversold, "RSI Oversold", color=color.green) plot(rsiValue, title="RSI", color=color.purple) // Entry conditions buyCondition = ta.crossunder(rsiValue, rsiOversold) sellCondition = ta.crossover(rsiValue, rsiOverbought) // Calculate stop loss and take profit prices var float entryPrice = na var float stopLossLevel = na var float takeProfitLevel = na if (buyCondition) entryPrice := close stopLossLevel := entryPrice * (1 - stopLossPct) takeProfitLevel := entryPrice * (1 + takeProfitPct) strategy.entry("Buy", strategy.long) // Close positions when TP or SL is hit if (strategy.position_size > 0) if (close <= stopLossLevel) strategy.close("Buy", comment="Stop Loss Hit") if (close >= takeProfitLevel) strategy.close("Buy", comment="Take Profit Hit") // Close positions when RSI crosses above overbought level if (sellCondition) strategy.close("Buy", comment="RSI Overbought") // Optional: Add alerts alertcondition(buyCondition, title="Buy Alert", message="RSI crossed below oversold level") alertcondition(sellCondition, title="Sell Alert", message="RSI crossed above overbought level")