이 전략은
이 전략의 핵심 지표는 상대적 강도 지표 (RSI) 이다. RSI 지표는 현재 증권 가격이 과대평가되거나 과대평가되었는지 여부를 결정하기 위해 일정 기간 동안의 평균 상승과 하락을 비교한다. 계산 공식은:
RSI = 100 - 100 / (1 + UP / DOWN)
여기서 UP는 지난 n 일 동안의 종료 가격 상승의 평균 진폭이며, DOWN는 지난 n 일 동안의 종료 가격 하락의 평균 진폭입니다. 인덱스는 0-100 간격 사이에서 변동합니다. 70 이상은 과소매 구역이고 30 이하는 과소매 구역입니다.
이 전략은 RSI 매개 변수 Length=14을 설정하여 14일 폐쇄 가격에 기초하여 RSI를 계산합니다. 그리고 과잉 판매 라인 Rsvalue=40을 설정합니다. 즉, RSI가 40 이하인 경우 과잉 판매로 결정됩니다. 하루의 RSI가 40 이하인 경우 구매 창이 열리고, 과잉 판매 영역에서 점유가 점차적으로 구축되며, 최종 종료 시간은 종료 시간을 초과한 후 판매로 설정됩니다.
이 전략의 가장 큰 장점은 시장의 타이밍을 결정하기 위해 RSI 지표를 사용하여 낮은 가격의 포착이 실현된다는 것입니다. RSI가 40 이하일 때, 그것은 이전 하락이 너무 크고 리바운드 가능성이 있음을 의미하는 과반 판매 상태입니다. 이 시점에서 더 나은 비용을 얻기 위해 점진적으로 위치를 구축하십시오. RSI가 70 이상일 때, 그것은 과반 구매 상태에 있으며, 이는 시장이 정점에 도달하고 지위가 감소 할 수 있음을 의미합니다.
또한, 전략은 점유율을 줄이기 위해 점유율 조성 접근 방식을 채택합니다. 건설 창은 점유율의 최고 지점이며 최종 폐쇄 시간은 장기 투자 달성을위한 지점의 최저 지점으로 사용됩니다.
이 전략은 주로 RSI 기술 지표에 의존하며, 이는 약간의 지연을 가지고 있습니다. 특히 시장이 갑자기 변할 때 RSI는 시간 내에 반응할 수 없을 수 있습니다. 이 시점에서 포지션을 구축하기 위해 RSI 지표를 맹목적으로 따르는 것은 제한된 이익 또는 증가 손실로 이어질 수 있습니다.
또한, 전략은 확률적 거래 신호를 제공합니다. RSI가 40 이하일지라도, 리바운드의 100% 가능성이 있다는 것을 의미하지 않습니다. 포지션을 구축한 후 가격이 새로운 최저치를 달성 할 확률도 있습니다. 이 시점에서 최대 손실을 제어하기 위해 좋은 스톱 로스 전략이 필요합니다.
이 전략은 다음 영역에서 최적화 될 수 있습니다.
포트폴리오 거래를 위해 여러 주식을 결합하십시오. 단일 주식은 특정 사건에 더 쉽게 영향을 받지만 포트폴리오는 개별 주식 위험을 다양화 할 수 있습니다.
더 많은 위험을 제어하기 위해 스톱 로스 전략을 추가하십시오. 예를 들어, 가격이 계속 떨어지면 스톱 로스 출구를 위해 후속 스톱 로스를 추가하십시오.
포지션 구축 전략을 최적화하십시오. 예를 들어, 전체 포지션 설정보다는 초 간격에서 점진적인 포지션 구축을 위해 시간 가중 된 평균 가격을 사용하십시오.
다른 지표와 결합하여 모멘텀 지표, 이동 평균 등과 같은 신호를 필터하여 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")