RSI 기반의 양적 거래 전략

저자:차오장, 날짜: 2023-12-06 17:17:16
태그:

img

전반적인 설명

이 전략은 듀얼 타임프레임 RSI 리버설 (Dual Timeframe RSI Reversal) 이라고 불린다. 이 전략은 상대적 강도 지표 (RSI) 를 기반으로 한 양적 거래 전략이다. 이 전략은 가격 역전 기회를 포착하여 낮은 가격과 높은 가격으로 구매하는 것을 목표로 구매 및 판매 신호를 생성하기 위해 서로 다른 기간을 가진 두 개의 RSI를 사용합니다.

전략 논리

이 전략은 빠른 기간 RSI (55일 기본값) 와 느린 기간 RSI (126일 기본값) 을 비교하여 거래 신호를 구성합니다. 빠른 기간 RSI가 느린 기간 RSI를 넘을 때 구매 신호가 생성됩니다. 빠른 기간 RSI가 느린 기간 RSI보다 떨어지면 판매 신호가 유발됩니다. 두 가지 다른 시간 프레임 사이의 상대적 강도를 비교함으로써 단기 및 장기 트렌드가 역전될 때 기회를 감지합니다.

포지션을 입력 한 후, 수익 목표 및 스톱 손실이 설정됩니다. 기본 수익 목표값은 엔트리 가격의 0.9배입니다. 기본 스톱 손실값은 엔트리 가격보다 3% 낮습니다. 역 신호가 활성화되면 포지션도 종료됩니다.

장점

  • 이중 RSI를 비교하여 단기 가격 반전을 파악합니다.
  • 이중 확인을 사용하여 잘못된 신호를 필터링
  • 스톱 로스로 단일 베팅의 손실 제한

위험성

  • 높은 변동성 중 빈번한 반전 신호
  • 손실 중지 너무 단단한, 쉽게 작은 변동에 의해 타격
  • 잘못 구성된 매개 변수와 함께 주요 반전을 놓치고

강화

  • 최적을 찾기 위해 더 많은 RSI 매개 변수 조합을 테스트
  • 거짓 신호를 필터링하기 위해 다른 표시기를 추가합니다.
  • 더 나은 수익성을 위해 동적 스톱 손실 및 수익률 비율

요약

듀얼 타임프레임 RSI 리버설 전략은 빠른 및 느린 RSI 기간 사이의 크로스오버를 비교하여 거래 신호를 생성합니다. 단기 가격 반전을 캡처하는 것을 목표로합니다. 리스크를 제한하기 위해 이익 및 스톱 손실 규칙이 설정됩니다. 이것은 거래 반전에 멀티 타임프레임 지표 비교를 사용하는 전형적인 전략입니다. 강화 영역에는 매개 변수 조정 및 위험 관리 규칙이 포함됩니다.


/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Relative Strength Index", shorttitle="RSI")
slen    = input(55, title="Short length")
llen    = input(126, title="Long length")
sup     = ema(max(change(close), 0), slen)
sdown   = ema(-min(change(close), 0), slen)
rsi1    = sdown == 0 ? 100 : sup == 0 ? 0 : 100 - (100 / (1 + sup / sdown))
lup     = ema(max(change(close), 0), llen)
ldown   = ema(-min(change(close), 0), llen)
rsi2    = ldown == 0 ? 100 : lup == 0 ? 0 : 100 - (100 / (1 + lup / ldown))
ob      = input(55, title="Overbought")
os      = input(45, title="Oversold")
tp      = input(.9, title="Take profit level %")*.01
sl      = input(3, title="Stoploss level %")*.01
mid     = avg(ob,os)
plot    (mid, color=#4f4f4f, transp=0)
hline   (ob, color=#4f4f4f)
hline   (os, color=#4f4f4f)
long    = crossover(rsi1,rsi2)
short   = crossunder(rsi1,rsi2)
vall    = valuewhen(long,close,0)
lexit1  = high>=(vall*tp)+vall
lexit2  = low<=vall-(vall*sl)
vals    = valuewhen(short,close,0)
sexit1  = low<=vals - (vals*tp)
sexit2  = high>=vals + (vals*sl)
bgcolor (color=long?lime:na,transp=50)
bgcolor (color=short?red:na, transp=50)
strategy.entry("Long", strategy.long, when=long)
strategy.close("Long", when=lexit1)
strategy.close("Long", when=lexit2)
strategy.close("Long", when=short)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Short", when=sexit1)
strategy.close("Short", when=sexit2)
strategy.close("Short", when=long)
plot    (rsi1, color=orange, transp=0,linewidth=1, title="Short period RSI")
plot    (rsi2, color=aqua  , transp=0,linewidth=1, title="Long period RSI")


더 많은