이 전략은 시장의 트렌드 기회를 파악하기 위해 이동 평균 (MA), 상대 강도 지수 (RSI), 평균 진정한 범위 (ATR) 등의 기술적 분석 도구를 결합합니다. 이 전략은 트렌드 방향을 결정하기 위해 이중 이동 평균 크로스오버를 사용하고 거래 신호의 추진력 필터링을 위해 RSI 지표를 사용합니다. 또한 위험을 관리하기 위해 스톱 로스의 기초로 ATR을 사용합니다.
이 전략의 핵심은 다른 기간 (고속 및 느린) 을 가진 두 이동 평균의 교차를 사용하여 시장 트렌드를 식별하는 것입니다. 빠른 MA가 느린 MA보다 높을 때 상승 추세를 나타내고 전략은 긴 신호를 생성합니다. 반대로 빠른 MA가 느린 MA보다 낮을 때 하락 추세를 나타내고 전략은 짧은 신호를 생성합니다.
거래 신호의 신뢰성을 향상시키기 위해 전략은 RSI 지표를 모멘텀 필터로 도입합니다. 긴 포지션은 RSI가 특정 임계치 (예: 50) 이상일 때만 허용되며, 짧은 포지션은 RSI가 그 임계치 이하일 때만 허용됩니다. 이것은 옆 시장 또는 모멘텀이 부족할 때 거래를 피하는 데 도움이됩니다. 따라서 신호 품질을 향상시킵니다.
또한 전략은 스톱 로스 기준으로 ATR을 사용하며, 최근 기간 동안의 가격 변동에 따라 스톱 로스 수준을 동적으로 조정합니다. 이 적응 스톱 로스 접근 방식은 불분명한 트렌드 중에 빠른 스톱을 통해 마이너 다운을 제어 할 수 있으며, 강력한 트렌드 중에 더 많은 수익을 창출하여 전략 수익을 높일 수 있습니다.
이 전략은 트렌드 추적과 모멘텀 필터링을 효과적으로 결합하여 리스크를 관리하면서 시장의 트렌드 기회를 포착합니다. 전략 논리는 명확하고 구현하고 최적화하는 것이 쉽습니다. 그러나 실제 응용에서는 윙사 리스크와 매개 변수 리스크에주의를 기울여야합니다. 전략은 시장 특성과 개별 요구에 따라 유연하게 조정되고 최적화되어야합니다. 전반적으로 이것은 트렌드 포착과 리스크 통제를 모두 고려하는 균형 잡힌 전략으로 추가 탐구와 연습에 가치가 있습니다.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true) // Input variables fastLength = input(12, title="Fast MA Length") slowLength = input(26, title="Slow MA Length") signalLength = input(9, title="Signal Line Length") stopLossPct = input(1.0, title="Stop Loss %") / 100 rsiLength = input(14, title="RSI Length") rsiThreshold = input(50, title="RSI Threshold") // Moving averages fastMA = ta.sma(close, fastLength) slowMA = ta.sma(close, slowLength) // MACD [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength) // RSI rsi = ta.rsi(close, rsiLength) // Entry conditions with RSI filter bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold // Calculate stop loss levels longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct) shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct) // Execute trades strategy.entry("Long", strategy.long, when=bullishSignal) strategy.entry("Short", strategy.short, when=bearishSignal) strategy.exit("Exit Long", "Long", stop=longStopLoss) strategy.exit("Exit Short", "Short", stop=shortStopLoss) // Plotting signals plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal") plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal") // Plot MACD plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Plot RSI hline(rsiThreshold, "RSI Threshold", color=color.gray) plot(rsi, color=color.purple, title="RSI")