RSI 지표를 기반으로 한 단기 거래 전략


생성 날짜: 2024-01-17 11:49:15 마지막으로 수정됨: 2024-01-17 11:49:15
복사: 1 클릭수: 673
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI 지표를 기반으로 한 단기 거래 전략

개요

이 전략은 상대적으로 강한 지수 ((RSI) 지표를 기반으로 한 단선 거래 전략을 설계했으며, 주로 15 분 시간 프레임 내의 거래에 사용됩니다. 이 전략은 RSI 지표를 계산하여 시장이 초과 오버를 초과하는지 판단하여 구매 및 판매 신호를 발송합니다. RSI 지표 상에서 낮은 30을 통과하면 구매 신호가 발생하고 RSI 지표 아래에서 높은 70을 통과하면 판매 신호가 발생합니다. 이 전략은 짧은 범위의 거래에 적합하며, 중간의 변동을 포착하여 이익을 얻을 수 있습니다.

전략 원칙

RSI 지표는 일정 기간 동안 가격 상승과 하락의 비율을 계산하여 시장이 과매매되거나 과매매되는지 판단하는 기술 분석 도구입니다. RSI 지표의 값은 0에서 100 사이의 범위입니다. 값이 30 이하는 자산이 과매매되는 현상을 나타냅니다. 값이 70 이상은 자산이 과매매되는 현상을 나타냅니다.

이 전략은 RSI 지표 파라미터를 14주기, 초소매선 70과 초소매선 30으로 설정한다. RSI가 아래에서 30을 통과하면 구매 신호가 발생하며, 이는 시장이 초소매에서 상위권으로 이동하는 것을 의미합니다. RSI가 위에서 아래로 70을 통과하면 판매 신호가 발생하여 시장이 상위권에서 상위권으로 이동하는 것을 의미합니다.

우위 분석

이 전략의 가장 큰 장점은 규칙이 간단하고 명확하며 이해하기 쉽고 구현된다는 것입니다. 상대적 강도 지수는 매우 고전적인 양적 지표이며, 시장의 과매매 현상을 판단하는 데 널리 사용됩니다. 전략 자체는 시장의 미래 추세와 가격 목표를 예측 할 필요가 없으며, RSI 지표 신호를 따라가는 것 만으로 전략 최적화 난이도를 줄입니다.

또 다른 장점은 전략의 적응성이 강하다는 것입니다. 이 전략은 모든 품종과 모든 시간 프레임에 적용할 수 있으며, 특히 중간과 짧은 선의 간격 진동을 포착하는 데 적합합니다. 또한, 전략은 단지 세 개의 파라미터를 최적화해야합니다.

위험 분석

이 전략의 가장 큰 위험은 포지션 보유 시간이 불확실하다는 것입니다. 시장에서 장기간 과매매 또는 과매매가 발생하면 전략 포지션 기간이 너무 길어지고 더 큰 손실을 초래할 수 있습니다. 이 경우 위험을 통제하기 위해 적시에 손실을 중지해야합니다.

또 다른 위험은 거래 빈도가 너무 높을 수 있다는 것입니다. 시장이 RSI 오버 바이 오버 셀 라인 근처에서 오르락 내리락 할 때, 종종 구매 및 판매 신호를 유발하여 거래 수수료와 슬라이드 비용을 증가시킵니다. 이것은 무의미한 거래를 줄이기 위해 오버 바이 오버 셀 간격을 확장하여 적절한 매개 변수를 조정해야합니다.

최적화 방향

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

  1. 최적의 RSI 변수, 조정 주기 변수 및 오버 바이 오버 세일 라인 포지션을 사용하여 최적의 변수 조합을 찾습니다.

  2. 정지수지 전략을 추가하고, 합리적인 정지수지 및 정지수지를 설정합니다.

  3. 필터링 조건을 추가하여 무의미한 거래를 피하십시오. 예를 들어, 최소 변동幅, 거래량 필터 등을 설정하십시오.

  4. 자금 사용률을 최적화하고, 동적 포지션 컨트롤을 설정

  5. 다른 지표와 결합하여 전략적 안정성을 높이는 방법

요약하다

이 전략은 RSI 지표를 기반으로 간단한 실용적인 단선 거래 전략을 설계했다. 전략 신호 규칙은 명확하고, 실행하기 쉬운, 자본 활용도가 높으며, 중간의 단선 캡처 시장의 과매매 과매매 현상을 위해 적합하다. 지속적인 테스트 및 최적화를 통해 이 전략은 매우 안정적이고 신뢰할 수있는 정량 거래 시스템으로 될 수 있다.

전략 소스 코드
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Strategy", overlay=true)
length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
sl_inp = input(10.0, title='Stop Loss %')/100
tp_inp = input(1.0, title='Take Profit %')/100

haOpen = 0.0
haOpen := haOpen[1]
 
st_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
price = close
vrsi = rsi(price, length)
co = crossover(vrsi, overSold)
cu = crossunder(vrsi, overBought)
strategy.initial_capital =50000
orderSize = ((strategy.initial_capital * 1) / close)
if (not na(vrsi))
	if (co)
		strategy.order("RsiLE", strategy.long, orderSize, take_level, st_level, comment="RsiLE")
	if (cu)
		strategy.close("RsiLE")//strategy.entry("RsiSE", strategy.short, qty=orderSize, comment="RsiSE")

plotshape(not na(vrsi) and co and haOpen == 0.0, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="buy label", text="BUY", textcolor=color.white)
plotshape(not na(vrsi) and co and haOpen == 1.0, style=shape.labelup, location=location.belowbar, color=color.orange, size=size.tiny, title="buy label", text="INC", textcolor=color.white)
plotshape(not na(vrsi) and cu and haOpen == 1.0, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="sell label", text="SELL", textcolor=color.white)

if (not na(vrsi))
	if (co)
	    haOpen := 1.0
	if (cu)
	    haOpen := 0.0
//strategy.exit("Stop Loss/TP","RsiLE", stop=stop_level, limit=take_level)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)