이 전략은 유동 평균 크로스오버와 상대적 강도 지수 (RSI) 를 결합한 트렌드 추후 전략이다. 이 전략은 단기 및 장기적인 유동 평균 크로스오버를 통해 시장 트렌드 방향을 결정하며, RSI를 유동 평균 필터로 사용하여 트렌드 강도를 확인하여 거래 신호의 신뢰성을 향상시킵니다. 이 전략은 또한 리스크 관리에 대한 비율 기반의 스톱 로스와 영리를 포함합니다.
이 전략은 9주기 및 21주기 간단한 이동 평균 (SMA) 을 주요 트렌드 지표로 사용합니다. 단기 MA가 장기 MA보다 높고 RSI가 50보다 높을 때 긴 신호가 생성되며 단기 MA가 장기 MA보다 낮고 RSI가 50보다 낮을 때 짧은 신호가 발생합니다. 이 설계는 거래 방향이 시장 트렌드와 동력 모두와 일치하는지 보장합니다. 시스템은 1%의 스톱 손실 및 2%의 영리 수준을 통해 위험-이익 비율을 제어합니다.
이 전략은 명확한 논리를 가진 잘 구조화된 트렌드를 따르는 전략이다. 그것은 MA 크로스오버를 통해 기본 트렌드 방향을 제공하고, RSI를 통해 모멘텀 확인을 제공하고, 완전한 거래 시스템을 형성하기 위해 리스크 관리 메커니즘과 결합한다. 지속적인 최적화와 조정을 통해 전략은 몇 가지 고유한 한계를 가지고 있지만, 다양한 시장 환경에서 안정적인 성능을 유지할 가능성이 있다. 성공의 열쇠는 매개 변수 최적화와 리스크 제어 실행에 있다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy") // --- Input Parameters --- shortMA = input.int(9, title="Short MA Period", minval=1) longMA = input.int(21, title="Long MA Period", minval=1) rsiLength = input.int(14, title="RSI Length", minval=1) rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100) rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50) stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100 takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100 // --- Calculate Moving Averages --- shortMA_value = ta.sma(close, shortMA) longMA_value = ta.sma(close, longMA) // --- Calculate RSI --- rsi_value = ta.rsi(close, rsiLength) // --- Buy and Sell Conditions --- longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50 shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50 // --- Plot Moving Averages --- plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA") plot(longMA_value, color=color.red, linewidth=2, title="Long MA") // --- Plot RSI (Optional) --- hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi_value, color=color.purple, title="RSI") // --- Strategy Execution --- if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // --- Risk Management (Stop Loss and Take Profit) --- longStopLoss = close * (1 - stopLossPercent) longTakeProfit = close * (1 + takeProfitPercent) shortStopLoss = close * (1 + stopLossPercent) shortTakeProfit = close * (1 - takeProfitPercent) // Set the stop loss and take profit for long and short positions strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)