RSI를 기반으로 한 장기 양적 전략


생성 날짜: 2024-02-05 13:51:01 마지막으로 수정됨: 2024-02-05 13:51:01
복사: 0 클릭수: 674
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI를 기반으로 한 장기 양적 전략

개요

이 전략은 Relative Strength Index 긴 라인량화 전략, RSI 긴 라인 전략이라고 불린다. 이 전략은 일정 기간 동안 가격 상승과 하락의 이동 평균을 계산하여 RSI 기술 지표를 구성하고 오버 바이 오버 세일 라인을 설정하여 시기를 판단한다. RSI가 설정된 오버 세일 라인을 넘어서면 단계적으로 포지션 구축 방법을 사용하여 긴 라인을 보유한다.

전략 원칙

이 전략의 핵심 지표는 상대적으로 강한 지수 (RSI) 이다. RSI 지표는 한 기간 동안의 평균 상승과 평균 하락을 비교하여 현재의 증권 가격이 과대 평가되거나 과소 평가되었는지 판단합니다.

RSI = 100 - 100 / (1 + UP / DOWN)

그 중 UP는 최근 n일 동안의 종결 가격 상승의 평균 정도이며, DOWN은 최근 n일 동안의 종결 가격 하락의 평균 정도이다. 지표는 0-100의 범위에서 흔들리며, 70 이상은 초매구역이며, 30 이하는 초매구역이다.

이 전략은 RSI 변수 Length=14을 설정하고, 14일 종결 가격에 따라 RSI를 계산한다. 그리고 oversold 라인 Rsvalue=40을 설정한다. 즉, RSI가 40보다 낮으면 oversold로 판단된다. 그날의 RSI가 40보다 낮으면, 구매 창을 열고, 점진적으로 포지션을 구축하는 전략을 취하고, 오버셀 영역에서 점진적으로 구매하고, 마지막 포지션 시간을 설정하고, 평정 포지션 시간을 초과한 후 모두 판매한다.

우위 분석

이 전략의 가장 큰 장점은 RSI 지표를 통해 시장을 판단하여 낮은 가격에 대한 포착이 이루어졌다는 것입니다. RSI가 40보다 낮으면 과매매 상태입니다.

또한, 전략은 단계적으로 포지션을 구축하는 방식을 취함으로써 단일 입입으로 인한 위험을 줄일 수 있다. 포지션을 구축하는 창은 포지션 높은 지점으로, 마지막 포지션 평소 시간은 포지션 낮은 지점으로, 긴 라인 투자를 실현한다.

위험 분석

이 전략은 주로 RSI라는 기술 지표에 의존하며, 약간의 지연성이 있다. 특히 시장 상황이 급격히 변할 때 RSI는 반응하지 않을 수 있다. 이 때 RSI 지표를 맹목적으로 따라 포지션을 구축하면 이익이 제한되거나 손실이 증가할 수 있다.

또한, 전략은 probabilistic의 거래 신호를 준다. RSI가 40보다 낮다고 하더라도 100%의 반발 가능성이 있다는 것을 의미하지 않는다. 포지션을 세운 후 가격이 다시 혁신할 낮은 확률도 존재한다. 이때는 최대 손실을 제어하기 위해 손실을 막는 전략을 설정해야 한다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 여러 주식을 결합하여 포트폴리오 거래를 한다. 단일 주식은 특정 사건에 영향을 받기 쉽지만 포트폴리오는 개별 주식의 위험을 분산시킨다.

  2. 스톱로스 전략에 참여하여 위험을 더욱 제어하십시오. 예를 들어, 추적 스톱을 추가하고, 가격이 계속 떨어지면 스톱 엑시트를 중단하십시오.

  3. 오버셀드 구역에서 사용된 시간 중화 평균 가격으로 점진적으로 창고를 구축하는 대신 창고 전체를 구축하는 등 창고 건설 전략을 최적화한다.

  4. 다른 지표의 필터링 신호와 결합하여 RSI를 맹목적으로 따르지 않도록하십시오.

요약하다

이 전략은 RSI 지표를 구축하여 오버 바이 오버 소드 구간을 판단하고 오버 소드 구간에서 점진적으로 다단계 포지션을 구축하고 마지막 평점 시간을 설정하여 긴 라인 보유를 실현합니다. 이 전략은 짧은 라인 거래에 비해 긴 라인 양적 투자 도구로 더 적합합니다. 이 전략의 장점은 낮은 가격 캡처 및 비용 제어이며, 지표 지연 및 신호 오도에 대한 위험입니다.

전략 소스 코드
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Relative Strength Index", shorttitle="RSI")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, title="Background")
Rsvalue = input(defval = 40, title = "RSvalue", minval = 20, maxval = 75)


FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2015, title = "From Year", minval = 999)
ToMonth   = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2022, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
booking   = timestamp(ToYear, ToMonth, ToDay, 23, 59)

window()  => time >= start and time <= finish ? true : false
endtrade() => time >= booking ? true : false


longCondition = rsi< Rsvalue

if (longCondition)
    strategy.entry("BUY", strategy.long)
    strategy.close("BUY")