RSI 지표에 기반한 단기 거래 전략

저자:차오장, 날짜: 2024-01-17 11:49:15
태그:

img

전반적인 설명

이 전략은 상대적 강도 지표 (RSI) 지표에 기반한 단기 거래 전략을 설계하며, 주로 15분 시간 프레임에서 거래합니다. 이 전략은 시장이 과소매 또는 과소매인지 판단하기 위해 RSI 지표를 계산하여 구매 및 판매 신호를 생성합니다. RSI 지표가 30의 하위 지점을 넘을 때 구매 신호를 생성하고 RSI 지표가 70의 상위 지점을 넘을 때 판매 신호를 생성합니다. 이 전략은 중간 변동으로부터 이익을 얻기 위해 단기 범위 거래에 적합합니다.

전략 논리

RSI 지표는 특정 기간 동안 가격 상승 추세와 하락 추세의 비율을 계산하는 기술 분석 도구로 시장이 과소매 또는 과소매인지 결정합니다. RSI 지표 값은 0에서 100까지 다양합니다. 30 이하의 값은 자산이 과소매되고 70 이상의 값은 자산이 과소매되었다는 것을 나타냅니다.

이 전략은 RSI 지표 매개 변수를 14 기간, 과잉 구매 라인 70, 과잉 판매 라인 30로 설정합니다. RSI가 아래에서 30을 넘을 때 구매 신호가 생성됩니다. 이는 시장이 과잉 판매에서 상승으로 전환한다는 것을 의미합니다. RSI가 위에서 70을 넘을 때 판매 신호가 생성됩니다. 이는 시장이 상승에서 하락으로 전환한다는 것을 의미합니다. 신호를 받은 후 전략은 단기 거래에서 이익을 얻기 위해 전체 계정 자금의 1x 레버리지로 방향적인 긴 또는 짧은 위치를 취합니다.

이점 분석

이 전략의 가장 큰 장점은 규칙이 간단하고 명확하고 이해하기 쉽고 구현하기 쉽다는 것입니다. 상대적 강도 지수는 매우 고전적인 수치 지표이며 시장의 과반 구매 및 과반 판매 상황을 판단하는 데 널리 사용됩니다. 전략 자체는 미래의 시장 추세와 가격 목표를 예측할 필요가 없습니다. 단지 전략 최적화의 어려움을 줄이는 RSI 지표 신호를 따르십시오.

또 다른 장점은 전략이 강한 적응력을 가지고 있다는 것입니다. 이 전략은 중·단기간에 범위 오스실레이션을 잡기 위해 특히 적합한 모든 종류와 시간 틀에 적용 될 수 있습니다. 또한 전략은 RSI 기간, 과잉 구매 라인 및 과잉 판매 라인 3 개의 매개 변수만을 최적화해야합니다. 매개 변수 공간이 작아서 최상의 매개 변수 조합을 찾기 위해 테스트하고 최적화하기가 쉽습니다.

위험 분석

이 전략의 가장 큰 위험은 보유 기간이 불확실하다는 것입니다. 시장이 장기간 과잉 구매 또는 과잉 판매 상황을 경험하면 전략 포지션의 과도하게 긴 보유 기간과 더 큰 손실로 이어질 것입니다. 이 시점에서 위험을 제어하기 위해 적절한 시간 중지 손실이 필요합니다.

또 다른 위험은 거래 빈도가 너무 높을 수 있다는 것입니다. 시장이 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)

더 많은