
RSI Moving Average Crossover Trend Strategy는 RSI 지표의 평균 교차 신호를 사용하여 트렌드를 판단하고 거래 신호를 보내는 전략이다. 이 전략은 동시에 가격의 EMA와 결합되어 가격이 EMA보다 높을 때만 구매 신호를 발송한다.
이 전략의 핵심 지표는 RSI이며, RSI의 EMA와 SMA의 두 중간선을 계산한다. RSI의 EMA가 SMA보다 높고 가격이 EMA보다 높을 때만 구매 신호가 발송된다. RSI의 EMA가 SMA보다 낮을 때 판매 신호가 발송되어 트렌드 추적이 실시된다.
RSI 지표는 시장의 과매매 현상을 효과적으로 반영할 수 있다. RSI 지표에서 70을 넘으면 시장 과매매로 간주되고, 30을 넘으면 과매매로 간주된다. 이 전략은 RSI 지표의 추세와 전환점을 발견하기 위해 EMA와 SMA 두 개의 이동 평균을 사용합니다. EMA 라인은 최신 가격 변화에 더 민감하며, SMA 라인은 오래된 데이터에 더 의존하며, 둘은 조합을 형성할 수 있다.
RSI의 EMA가 상승하기 시작하면, 시장이 평준화되는 징후가 나타나고, SMA를 사용하여 방향을 확인합니다. SMA가 상승하기 시작하면, RSI가 상승 추세에 명확하게 들어간다는 것을 나타냅니다. 이 때 전략은 가격보다 높은 EMA를 전제로 구매 신호를 발송하여 추세를 추적합니다.
이것은 트렌드를 추적하는 전략으로, 중장선 방향의 기회를 효과적으로 잡을 수 있습니다. 단일 지표에 비해 RSI의 EMA와 SMA를 사용하여 교차 검증을 형성하여 잘못된 신호를 줄이고 안정성을 강화합니다.
이 전략은 또한 가격의 EMA를 결합하여 가격 상승 추세에서만 구매를 보장하고, 변동의 위험을 피하여 수익률을 높인다.
이 전략은 주로 RSI 지표에 기반하며, RSI가 잘못된 신호를 생성하면 이 전략도 잘못된 신호를 발산합니다. 또한, RSI 지표는 과매매 현상을 판단하는 데 더 적합하며, 중장선 추세를 판단하는 데에는 약간의 지연성이 있습니다.
이 전략은 또한 일정 기간의 지연이 존재하며, 특히 RSI의 EMA와 SMA의 평균값이 평평화되면 신호 지연이 발생합니다. 이 기간 동안에도 손실이 발생할 위험이 있습니다.
RSI를 최적화하여 더 적합한 매개 변수를 선택하여 판단 효과를 높이는 것을 고려할 수 있습니다.
손실이 어느 정도 되면 포지션을 철회하여 위험을 효과적으로 제어하는 스톱 로직을 추가하는 것을 고려할 수 있다.
다른 시간 주기에서의 파라미터 설정을 테스트할 수 있고, 파라미터를 최적화하여 전략이 더 많은 품종과 더 많은 주기에서 안정적으로 작동할 수 있다.
RSI 평행선 교차 트렌드 전략은 RSI 지표를 사용하여 트렌드 방향을 판단하고 교차 검증을하는 간단한 전략이다. 가격 EMA와 결합하여 상승 추세에서 방향성 기회를 잡을 수 있다. 이 전략은 중장선 보유에 적합한 안정성이 높지만 특정 후퇴 위험을 예방하는 데 주의를 기울여야 한다.
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Created by Sv3nla 5-Jan-2021
strategy(title="Sv3nla RSI EMA SMA Strat", shorttitle="Sv3nla RSI EMA SMA Strat", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === BACKTEST RANGE ===
FromMonth = input(defval = 5, title = "From Month", minval = 1)
FromDay = input(defval = 1, title = "From Day", minval = 1)
FromYear = input(defval = 2015, title = "From Year", minval = 2015)
ToMonth = input(defval = 1, title = "To Month", minval = 1)
ToDay = input(defval = 1, title = "To Day", minval = 1)
ToYear = input(defval = 9999, title = "To Year", minval = 2022)
// syminfo.mintick = 0.01$ for BTCUSDT
testPeriod() => true
//INPUTS
rsilen = input(defval = 16, minval=1, title="RSILength")
RSIemaLen = input(defval = 12, minval=1, title="RSI EMA Length")
RSIsmaLen2 = input(defval = 29, minval=1, title="RSI SMA Length2")
length = input(defval = 8, minval=1, title="EMA price Length")
// RSI
RSIsrc = close
RSIup = rma(max(change(RSIsrc), 0), rsilen)
RSIdown = rma(-min(change(RSIsrc), 0), rsilen)
rsi = RSIdown == 0 ? 100 : RSIup == 0 ? 0 : 100 - 100 / (1 + RSIup / RSIdown)
emavalue=ema(rsi,RSIemaLen)
smavalue=sma(rsi,RSIsmaLen2)
//EMA
ema=ema(close,length)
//PLOT
plot(ema(rsi, RSIemaLen), color=color.yellow, linewidth=2, title="EMA", transp=0)
plot(sma(rsi, RSIsmaLen2), color=color.aqua, linewidth=2, title="SMA", transp=0)
//ORDERS
if (testPeriod())
strategy.entry("long",strategy.long, comment="RSIEMA", when=(emavalue > smavalue and close>ema))
strategy.close(id="long", when=(emavalue < smavalue))
// Colour background when in a trade and 50 horizontal line
backgroundColour = (strategy.position_size > 0) ? color.green : na
bgcolor(color=backgroundColour, transp=85)
hline(50, color=color.yellow)