이 전략은 자동화 된 구매 및 판매를 달성하기 위해 이동 스톱 손실과 결합하여 RSI 표시를 기반으로 구매 신호 라인을 설정하고 판매 신호 라인을 설정합니다. RSI 표시가 구매 신호 라인보다 낮을 때 구매 신호를 보내고 RSI 표시가 판매 신호 라인보다 높을 때 판매 신호를 전송합니다. 동시에 수익을 잠금하고 위험을 제어하기 위해 이동 스톱 손실을 설정합니다.
이 전략은 주로 RSI 지표의 과반 구매 및 과반 판매 구역을 기반으로 입출시기를 결정합니다. 20 이하의 RSI는 과반 판매로 간주되며 80 이상은 과반 구매로 간주됩니다. 전략은 20, 18 및 14에서 세 개의 RSI 낮은 구매 신호 라인을 설정합니다. 종료 가격이 전날보다 높고 RSI 지표가 해당 구매 라인보다 낮을 때 구매 신호가 발급됩니다. 전략은 RSI 높은 판매 신호 라인을 83로 설정합니다. RSI 지표가이 판매 라인보다 높을 때 판매 신호가 발급됩니다. 또한, 전략은 또한 움직이는 스톱 손실을 설정합니다. 가격이 가격의 5% 이하로 떨어지면 손실 구매 판매를 중단합니다.
전체 전략은 RSI 지표의 과잉 구매 및 과잉 판매 구역을 통해 구매 및 판매의 타이밍을 판단하고 수익을 차단하고 위험을 제어하기 위해 스톱 로스를 설정합니다. 기술 지표에 기반한 전형적인 양적 거래 전략입니다.
이 전략의 장점은 다음과 같습니다.
전통적인, 널리 검증된 RSI 지표를 사용하여 거래 지점을 결정하고 과잉 구매 및 과잉 판매 기회를 효과적으로 파악합니다.
여러 구매 라인을 설정하면 다른 낮은 가격으로 분할 구매를 할 수 있으며 구매 비용을 줄일 수 있습니다.
손실을 통제하고 이익을 차단하기 위해 이동 스톱 손실을 구성하면 위험을 효과적으로 관리 할 수 있습니다.
전략 논리는 간단하고 명확하며, 이해하기 쉽고 수정 할 수 있으며 실시간 거래에서 쉽게 확인할 수 있습니다.
RSI 지표 매개 변수는 다양한 제품과 시장에 맞게 사용자 정의 및 조정 할 수 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
단일 지표에 의존하기 때문에 잘못된 신호가 발생할 수 있으며 RSI 지표 신호는 정확하지 않을 수 있습니다.
이윤을 취하는 전략은 없고 손실이 커질 위험이 있습니다.
특히 범주 시장에서는 과잉 구매 및 과잉 판매 구역 분할의 위험이 있습니다.
극단적인 시장 조건에서 가격은 스톱 로스 라인을 직접적으로 뚫고 손실을 멈추지 않을 수 있습니다.
해결책은 다음과 같습니다.
거짓 신호를 피하기 위해 여러 개의 표시기를 조합하십시오.
지역이나 SAR 같은 수익을 취하는 전략을 추가합니다.
RSI 매개 변수를 조정하여 과잉 구매/ 과잉 판매 영역을 좁히십시오.
필요한 경우 동적 스톱 손실 또는 수동 개입을 사용합니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
다른 지표를 결합하여 RSI + KDJ, RSI + MACD와 같은 잘못된 신호를 피하기 위해 지표 포트폴리오를 형성합니다.
트레일링 스톱 로스, 시간 기반 출구, 이동 출구 채널과 같은 수익을 취하는 전략을 추가합니다.
매개 변수 최적화, 다른 제품과 시간 프레임에 따라 RSI 매개 변수를 조정합니다.
전략 파생상품, 즉 역전 전략, 전략 확장.
잘못된 신호를 피하기 위해 구매/판매 구역을 적절히 좁혀라.
요약하자면, 이것은 구매/판매 신호를 설정하여 RSI 지표를 기반으로 한 전형적인 양적 거래 전략입니다. 전략은 간단하고 구현하기가 쉽습니다. 그러나 수익을 취하지 않는 높은 위험과 함께 단일 지표에 의존합니다. 우리는 매개 변수 조정, 전략 컴보, 수익을 취하는 메커니즘 등을 추가하여 추가로 개선 할 수 있습니다.
/*backtest start: 2023-12-17 00:00:00 end: 2024-01-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Buy/Sell Strategy", overlay=false) // Input for RSI period rsiPeriod = input(12, title="RSI Period") // Input for RSI levels rsiBuyLevel1 = 20 rsiBuyLevel2 = 18 rsiBuyLevel3 = 14 rsiSellLevel = input(83, title="RSI Sell Level") // Input for stop loss percentage stopLossPercent = input(5, title="Stop Percentage") // Calculate RSI rsiValue = ta.rsi(close, rsiPeriod) // Buy Conditions: RSI below buy levels buyCondition1 = close[1] > close and rsiValue <= rsiBuyLevel1 buyCondition2 = close[1] > close and rsiValue <= rsiBuyLevel2 buyCondition3 = close[1] > close and rsiValue <= rsiBuyLevel3 // Sell Conditions: RSI above sell level or stop loss sellCondition = (rsiValue > rsiSellLevel )//or ( close[1] < close * (1 - stopLossPercent / 100)) // Calculate position size based on 10% of current equity positionSize = strategy.equity * 0.8 / close // Plot RSI on the chart plot(rsiValue, title="RSI", color=color.blue) // Plot horizontal lines for buy and sell levels hline(rsiBuyLevel1, "Buy Level 1", color=color.green) hline(rsiBuyLevel2, "Buy Level 2", color=color.green) hline(rsiBuyLevel3, "Buy Level 3", color=color.green) hline(rsiSellLevel, "Sell Level", color=color.red) // Execute Buy and Sell orders with stop loss strategy.entry("Buy1", strategy.long, when = buyCondition1, qty = positionSize,stop=close * stopLossPercent / 100) strategy.entry("Buy2", strategy.long, when = buyCondition2, qty = positionSize,stop=close * stopLossPercent / 100) strategy.entry("Buy3", strategy.long, when = buyCondition3, qty = positionSize,stop=close * stopLossPercent / 100) strategy.close("Buy1", when = sellCondition) strategy.close("Buy2", when = sellCondition) strategy.close("Buy3", when = sellCondition)