이 전략은 RSI 지표와 그 이동 평균의 교차를 거래 신호로 사용하며, 일반적인 모멘텀 지표 전략에 속한다. 그것의 핵심 원칙은 RSI 지표와 RSI의 단순한 이동 평균 SMA_RSI 사이의 차이를 추적하고, 그 다음이 차이의 간단한 이동 평균 SMA_RSI2를 계산하는 것이다. SMA_RSI2가 임계점을 넘을 때, 긴 거리로 가자. 임계점을 넘을 때, 포지션을 닫는다.
이 전략은 3개의 매개 변수를 사용하여 RSI 지표와 서로 다른 기간의 두 가지 간단한 이동 평균을 계산합니다. 먼저, 기간 길이와 함께 정규 RSI 지표를 계산합니다. 그 다음 RSI의 length2 기간 간단한 이동 평균 SMA_RSI를 계산합니다. 마지막으로, RSI와 SMA_RSI 사이의 차이 델타를 계산하고, 그 다음 델타의 length3 기간 간단한 이동 평균 SMA_RSI2를 계산합니다. SMA_RSI2가 사용자 정의 임계값을 넘으면 긴 거래를하십시오. SMA_RSI2가 임계값을 넘으면 포지션을 닫습니다.
따라서, RSI 지표 이동 평균의 교차를 기반으로 한 거래 신호 전략이 형성됩니다. SMA_RSI2는 차이 델타의 이동 평균이기 때문에 RSI 지표의 추진력과 트렌드 변화를 반영하여 RSI 지표 자체의 본질을 파악 할 수 있습니다.
이 전략은 RSI 지표와 이동 평균의 장점을 결합하여 가격 추세를 따르고 소음으로 오해하는 것을 피합니다. 차이 델타를 계산하고 부드럽게 만드는 아이디어는 더 명확한 거래 신호를 생성합니다. 전반적으로이 전략은 더 작은 드로다운과 더 안정적인 이익을 가지고 있습니다.
구체적인 장점은 다음과 같습니다.
또한 이 전략에는 다음과 같은 위험 요소가 있습니다.
다음과 같은 측면에서는 개선이 가능합니다.
이 전략은 비교적 간단하고 보편적입니다. 델타 수학적 연산을 통해 RSI 지표 자체의 실용성을 높이고 크로스오버를 사용하여 판단함으로써 좋은 드라우다운 컨트롤을 가지고 있으며 매우 실용적인 모멘텀 지표 전략입니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy ("RSI&SMA", overlay=false ) startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0) end = timestamp((9999), (1), (1), 0, 0) _testPeriod() => true length = input(3, minval=1, title = "RSI period") length2 = input(21, minval=1, title = "RSI SMA-1") length3 = input(13, minval=1, title = "RSI SMA-2") threshold = input(0,step=0.5, title="Threshold") filter = input(false, title="Use filter?") up = rma (max (change (close), 0), length) down = rma (-min (change (close), 0), length) RSI = down == 0? 100: up == 0? 0: 100-100 / (1 + up / down) SMA_RSI = sma(RSI, length2) delta = RSI-SMA_RSI SMA_RSI2 = sma(delta, length3) Long = crossover(SMA_RSI2, threshold) Short = crossunder(SMA_RSI2, threshold) plot(threshold, color=color.silver) plot(SMA_RSI2, color= SMA_RSI2 > 0 ? color.blue : color.purple) //plot(SMA_RSI, color=color.green) //plot(delta, color=color.red) long_condition = Long and (filter ? close > ema(close, 200) : true) and _testPeriod() strategy.entry('BUY', strategy.long, when=long_condition) short_condition = Short strategy.close('BUY', when=short_condition)