RSI 추세 반전 전략


생성 날짜: 2023-10-23 17:04:13 마지막으로 수정됨: 2023-10-23 17:04:13
복사: 0 클릭수: 686
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI 추세 반전 전략

개요

RSI 트렌드 반전 전략은 RSI 지표 반전 신호를 사용하여 잠재적인 트렌드 반전 지점을 판단하고, 더 많은 공백을 넣습니다. 이 전략은 가격 반전과 RSI 반전을 결합하여 가짜 반전 신호를 효과적으로 필터링 할 수 있습니다.

전략 원칙

이 전략은 RSI의 반전 신호와 가격의 반전 신호를 바탕으로 조합 판단을 하고 있으며, 크게 4가지로 구분된다:

  1. 정규 다면 반전: RSI가 높은 하위점을 형성할 때 (RSI 트렌드가 위아래로 반전하는 것을 의미하며), 가격이 낮은 하위점을 형성할 때 (가격 트렌드가 아래아래로 반전하는 것을 의미하며), 정규 다면 반전 신호를 생성한다.

  2. 숨겨진 다면 반전: RSI가 낮은 낮은 지점을 형성했을 때 (RSI 트렌드가 상향에서 아래로 계속되는 것을 의미하지만) 가격이 높은 낮은 지점을 형성했을 때 (가격 트렌드가 하향에서 위로 돌아가는 것을 의미하며) 숨겨진 다면 반전 신호를 생성한다.

  3. 정규 공백 반전: RSI가 낮은 고점을 형성할 때 (RSI 트렌드가 아래에서 위로 반전하는 것을 의미하며), 가격이 높은 고점을 형성할 때 (가격 트렌드가 위에서 아래로 반전하는 것을 의미하며), 정규 공백 반전 신호를 생성한다.

  4. 숨겨진 공백 반전: RSI가 높은 고점을 형성할 때 (RSI 트렌드가 계속 하향으로 올라간다는 의미), 하지만 가격이 낮은 고점을 형성할 때 (가격 트렌드가 상향으로 내려간다는 의미), 숨겨진 공백 반전 신호를 생성한다.

이렇게 하면 RSI 지표 반전과 가격 반전을 결합하여 거래 신호를 발산 할 수 있으며, RSI 지표 또는 가격 반전만으로 발생하는 잘못된 신호를 효과적으로 피할 수 있으며, 전략의 안정성을 강화 할 수 있습니다.

우위 분석

RSI 트렌드 반전 전략은 다음과 같은 장점이 있습니다.

  1. RSI 지표와 가격 반전 신호를 결합하면 가짜 반전 신호를 효과적으로 필터링하여 신호 품질을 향상시킬 수 있습니다. RSI 지표는 혼자서는 반전점을 완전히 신뢰할 수 없습니다. 가격 흐름 반전과 함께 검증해야합니다.

  2. 숨겨진 다중 머리 형태와 숨겨진 허공 형태를 식별하십시오. 이러한 숨겨진 형태는 더 강력한 가격 추세를 예고하는 경우가 많으며, 추세 기회를 일찍 잡을 수 있습니다.

  3. RSI 매개 변수와 회귀 주기는 사용자 정의 가능하며, 시장에 따라 조정할 수 있으며, 실용적으로 유연하다.

  4. 지표 형태와 신호를 시각화하여 시장 상태를 직관적으로 판단한다.

  5. 전략 논리는 간결하고 명확하며, 이해하기 쉬운 구현으로, 양적 거래 전략에 적합하다.

위험 분석

RSI 트렌드 반전 전략에는 다음과 같은 위험도 있습니다.

  1. RSI 반전이 가격 반동과 결합되어 많은 가짜 신호를 필터링 할 수 있지만 여전히 잘못된 판단이 발생할 수 있습니다. 지표는 결국 가격의 통계적 측정이며 전적으로 의존 할 수 없습니다.

  2. 숨겨진 다중 머리와 숨겨진 빈 머리의 형태는 쉽게 식별할 수 없으며, 이러한 기회를 놓칠 수 있으며, 약간의 경험 판단이 필요합니다.

  3. 회전주기 파라미터를 잘못 설정하면 회전 시점을 놓치거나 판단이 늦어질 수 있다. 다른 시장에 따라 주기 파라미터를 조정해야 한다.

  4. 상반기 회전 후 계속 하락하여 손실이 확대되는 것을 방지하기 위해 상반기 회전 후 계속 하락하는 것을 방지하기 위해 상반기 회전 전략과 함께 사용되도록 해야 합니다.

최적화 변수, 엄격한 상쇄, 숨겨진 반전 등의 방법을 통해 위험을 제어할 수 있다.

최적화 방향

RSI 트렌드 반전 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. RSI 매개 변수를 조정하여 RSI 주기 매개 변수에 대한 다양한 시장의 민감성을 테스트하여 최적의 매개 변수를 찾습니다.

  2. 회귀 주기의 파라미터를 최적화하여 회귀 시점을 포착하고 가짜 신호를 방지하는 요구를 균형을 잡습니다.

  3. 거래량을 증가시키는 통계적 분석, 예를 들어 대량 하락으로 인해 가격이 반전되는 거래량은 식별에서 벗어난다.

  4. 다른 지표 신호와 결합하여, 예를 들어 MACD, 브린 밴드 등으로 판단 정확도를 높인다.

  5. 손실을 막기 위한 전략이 추가된다. 가격의 새로운 최고/최저를 돌파한 후에 손실을 막기 위해 설정할 수 있다.

  6. 피드백 결과에 따라 전략 논리를 수정하고, 수익 요인을 향상한다. 예를 들어, 포지션 개설 조건 논리 관계를 조정하고, 최적의 거래 전략을 찾는다.

요약하다

RSI 트렌드 반전 전략은 RSI 지표 반전과 가격 반전을 조합하여 잠재적인 트렌드 전환점을 식별합니다. RSI의 트렌드 판단 능력을 효과적으로 활용하면서 가격 움직임의 가짜 신호를 필터링합니다. 이 전략의 논리는 간단하고 명확하며 쉽게 구현 할 수 있습니다.

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

//@version=4
//study(title="Divergence Indicator", format=format.price)
strategy(title="RSI Divergence Indicator", overlay=false,pyramiding=1, default_qty_value=2,   default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD)

len = input(title="RSI Period", minval=1, defval=5)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)

bearColor = color.purple
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)

osc = rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#8D1699)
hline(50, title="Middle Line", linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90)

plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc, lbL, lbR)) ? false : true

_inRange(cond) =>
    bars = barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish

// Osc: Higher Low
oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low
priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)

bullCond = plotBull and priceLL and oscHL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish",
	 linewidth=2,
	 color=(bullCond ? bullColor : noneColor),
	 transp=0
	 )


plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bullish

// Osc: Lower Low
oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low
priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)

hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

longCondition=bullCond or hiddenBullCond
//? osc[lbR] : na  
//hiddenBullCond
strategy.entry(id="RSIDivLE", long=true,  when=longCondition)


//------------------------------------------------------------------------------
// Regular Bearish

// Osc: Lower High
oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High
priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)

bearCond = plotBear and priceHH and oscLH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor),
	 transp=0
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bearish

// Osc: Higher High
oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High
priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )
longCloseCondition=crossover(osc,75) or bearCond
strategy.close(id="RSIDivLE",  when=longCloseCondition)