RSI 격차 거래 전략

저자:차오장, 날짜: 2024-01-23 11:08:48
태그:

img

전반적인 설명

RSI 분산 거래 전략은 RSI 지표와 가격 사이의 분리를 분석하여 잘못된 가격 기회를 포착합니다. 분리가 나타나면 길거나 짧습니다.

전략 논리

이 전략은 RSI가 가격과 다른 경우의 가치-가격의 차이에 기반합니다. RSI는 힘을 반영하고 가격은 수요-공급 관계를 반영합니다. 두 가지가 다른 경우 중재에 대한 시장의 잘못된 가격을 나타냅니다.

특히, 정기적인 상승성 오차는 RSI가 더 높은 낮은 곳을 형성하고 가격이 낮은 곳을 인쇄할 때 발생합니다. 이것은 시장이 표면적으로 약해 보이지만 실제로 반등을 위해 내부적으로 힘을 얻고 있음을 보여줍니다. RSI가 가격에서 벗어나 50 라인 이상으로 넘으면 반등을 잡을 수있는 기회를 제공합니다.

규칙적인 하향 분차는 RSI가 낮은 최고치를 만들 때 가격이 더 높은 최고치를 형성 할 때 발생합니다. 이것은 시장이 외부에서 강해 보이지만 내부적으로 약점 신호를 보여주고 있음을 시사합니다. RSI가 가격에서 분차하고 50 라인 이하로 떨어지면 짧은 측면에서 이익을 얻을 수 있습니다.

장점

  1. 가치-가격 차이로 인한 시장 가격 오류를 포착합니다
  2. 이윤률을 향상시킵니다.
  3. 모든 종류의 차이를 구별하는 더 많은 기회를 포함합니다.

위험 분석

  1. 가짜 분차는 특별한 시장 조건에서 발생할 수 있습니다.
  2. 50선을 깨는 것은 상대적으로 낮은 성공률을 가지고, 최적화 할 수 있습니다
  3. 잘못된 방향을 선택하면 큰 손실이 발생할 수 있습니다.

최적화 방향

  1. 더 높은 정확성을 위해 RSI 매개 변수를 최적화
  2. 다른 지표의 신호를 결합하여 오차를 확인합니다.
  3. 거래당 손실을 통제하기 위한 장기 및 단위 거래의 위험/이익을 평가합니다

요약

RSI 분산 전략은 가치와 가격 신호 사이의 분리를 분석함으로써 시장의 오차 가격을 조정합니다. 이의 장점은 트렌드 역전 기회를 적시에 잡는 데 있으며 위험은 분산 인식의 정확성에서 발생합니다. 지속적인 최적화로 라이브 거래에서 꾸준한 이익을 얻을 수 있습니다.


/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Divergence Indicator")
len = input.int(title="RSI Period", minval=1, defval=14)
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=true)
bearColor = color.red
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 = ta.rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#2962FF)
hline(50, title="Middle Line", color=#787B86, linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", color=#787B86, linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", color=#787B86, linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=color.rgb(33, 150, 243, 90))

plFound = na(ta.pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(ta.pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
	bars = ta.barssince(cond == true)
	rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low

oscHL = osc[lbR] > ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low

priceLL = low[lbR] < ta.valuewhen(plFound, low[lbR], 1) 
// bull : 상승 Condition : 조건
bullCond = plotBull and priceLL and oscHL and plFound // 상승다이버전스?
strategy.entry("상승 다이버전스 진입", strategy.long, when = bullCond)
strategy.close("상승 다이버전스 진입", when = ta.crossover(osc, 50)) 
plot(
     plFound ? osc[lbR] : na,
     offset=-lbR,
     title="Regular Bullish",
     linewidth=2,
     color=(bullCond ? bullColor : noneColor)
     )

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

//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low

oscLL = osc[lbR] < ta.valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low

priceHL = low[lbR] > ta.valuewhen(plFound, low[lbR], 1)
hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound
// strategy.entry("히든 상승 다이버전스 진입", strategy.long, when = hiddenBullCond)
// strategy.close("히든 상승 다이버전스 진입", when = ta.crossover(osc, 50))
plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor)
	 )

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

//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High

oscLH = osc[lbR] < ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High

priceHH = high[lbR] > ta.valuewhen(phFound, high[lbR], 1)
// bear : 하락 
bearCond = plotBear and priceHH and oscLH and phFound
// strategy.entry("하락 다이버전스 진입", strategy.short, when = bearCond)
// strategy.close("하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor)
	 )

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

//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High

oscHH = osc[lbR] > ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High

priceLH = high[lbR] < ta.valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound
// strategy.entry("히든 하락 다이버전스 진입", strategy.short, when = hiddenBearCond)
// strategy.close("히든 하락 다이버전스 진입", when = ta.crossunder(osc, 50)) 
plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor)
	 )

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

더 많은