OPEN-SOURCE SCRIPT
내 스크립트

//version=5
indicator('RSI+BB+이격도', overlay=false)
// 매개변수 초기화
src = input(title='Source', defval=close) // 계산에 대한 가격 유형 설정
for_rsi = input(title='RSI_period', defval=14) // RSI 기간
for_ma = input(title='Basis_BB', defval=20) // BB 내 MA 기간
for_mult = input.float(title='Stdev', defval=2, minval=1, maxval=5) // BB의 표준 편차 수
for_sigma = input.float(title='Dispersion', defval=0.1, minval=0.01, maxval=1) // MA 주변 이격도
// 스크립트의 작업 조건
current_rsi = ta.rsi(src, for_rsi) // RSI 표시기의 현재 위치
basis = ta.ema(current_rsi, for_ma)
dev = for_mult * ta.stdev(current_rsi, for_ma)
upper = basis + dev
lower = basis - dev
disp_up = basis + (upper - lower) * for_sigma // RSI가 통과해야 하는 이동 영역의 최소 허용 임계값(상단)
disp_down = basis - (upper - lower) * for_sigma // RSI가 극복해야 하는 이동 영역의 최소 허용 임계값(하단)
color_rsi = current_rsi >= disp_up ? color.rgb(0, 255, 132) : current_rsi <= disp_down ? color.rgb(255, 0, 0) : #ffea00 // BB 내 위치에 따른 RSI의 현재 색상
short_l1 = input(5, title='Short - L1')
short_l2 = input(20, title='Short - L2')
short_l3 = input(15, title='Short - L3')
long_l1 = input(20, title='Long - L1')
long_l2 = input(15, title='Long - L2')
shortTermXtrender = ta.rsi(ta.ema(close, short_l1) - ta.ema(close, short_l2), short_l3) - 50
longTermXtrender = ta.rsi(ta.ema(close, long_l1), long_l2) - 50
shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
t3(src, len) =>
xe1_1 = ta.ema(src, len)
xe2_1 = ta.ema(xe1_1, len)
xe3_1 = ta.ema(xe2_1, len)
xe4_1 = ta.ema(xe3_1, len)
xe5_1 = ta.ema(xe4_1, len)
xe6_1 = ta.ema(xe5_1, len)
b_1 = 0.7
c1_1 = -b_1 * b_1 * b_1
c2_1 = 3 * b_1 * b_1 + 3 * b_1 * b_1 * b_1
c3_1 = -6 * b_1 * b_1 - 3 * b_1 - 3 * b_1 * b_1 * b_1
c4_1 = 1 + 3 * b_1 + b_1 * b_1 * b_1 + 3 * b_1 * b_1
nT3Average_1 = c1_1 * xe6_1 + c2_1 * xe5_1 + c3_1 * xe4_1 + c4_1 * xe3_1
nT3Average_1
maShortTermXtrender = t3(shortTermXtrender, 5)
colShortTermXtrender = maShortTermXtrender > maShortTermXtrender[1] ? color.lime : color.red
plotshape(maShortTermXtrender > maShortTermXtrender[1] and maShortTermXtrender[1] < maShortTermXtrender[2] ? maShortTermXtrender : na, location=location.bottom, style=shape.circle, color=color.new(color.lime, 10), size=size.tiny)
plotshape(maShortTermXtrender < maShortTermXtrender[1] and maShortTermXtrender[1] > maShortTermXtrender[2] ? maShortTermXtrender : na, location=location.top, style=shape.circle, color=color.new(color.red, 10), size=size.tiny)
longXtrenderCol = longTermXtrender > 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
macollongXtrenderCol = longTermXtrender > longTermXtrender[1] ? color.lime : color.red
// 단기 추세 이동 평균을 기반으로 한 롱 및 숏 신호에 대한 경고 조건
alertcondition(maShortTermXtrender > maShortTermXtrender[1] and maShortTermXtrender[1] < maShortTermXtrender[2], title='매수추세감지', message='잠재적 매수 포지션 이격도 보고 진입.')
alertcondition(maShortTermXtrender < maShortTermXtrender[1] and maShortTermXtrender[1] > maShortTermXtrender[2], title='매도추세감지', message='잠재적 매도 포지션 이격도 보고 진입.')
left = input.int(5, "left")
right = input.int(5, "right")
// 1. 지표
osc = ta.rsi(close, 14)
plot(osc, linewidth = 2)
// 2. 피봇 찾기 (상승div-피봇로우, 하락div-피봇하이)
pivotlow = ta.pivotlow(osc, left, right)
pivothigh = ta.pivothigh(osc, left, right)
is_pivotlow = not na(pivotlow)
is_pivothigh = not na(pivothigh)
// 3. 다이버전스 찾기
// 상승 다이버전스
prev_pivotlow = ta.valuewhen(is_pivotlow, pivotlow, 1)
osc_higher_low = is_pivotlow ? pivotlow > prev_pivotlow : false
prev_low = ta.valuewhen(is_pivotlow, low[right], 1)
price_lower_low = is_pivotlow ? low[right] < prev_low : false
is_regular_bullish_divergence = osc_higher_low and price_lower_low
plotshape(is_regular_bullish_divergence ? is_pivotlow : na, offset = -right, title="상승 다이버전스", text = "Bull", style = shape.labelup, color = color.green, textcolor = color.white, location = location.bottom)
plot(is_pivotlow ? pivotlow : na, color = is_regular_bullish_divergence ? color.green : na, offset = -right, linewidth = 2)
// 히든 상승다이버전스
osc_lower_low = is_pivotlow ? pivotlow < prev_pivotlow : false
price_higher_low = is_pivotlow ? low[right] > prev_low : false
is_hidden_bullish_divergence = osc_lower_low and price_higher_low
plotshape(is_hidden_bullish_divergence ? is_pivotlow : na, offset = -right, title="히든 상승 다이버전스", text = "H Bull", style = shape.labelup, color = color.green, textcolor = color.white, location = location.bottom)
plot(is_pivotlow ? pivotlow : na, color = is_hidden_bullish_divergence ? color.green : na, offset = -right, linewidth = 2)
// 하락다이버전스
prev_pivothigh = ta.valuewhen(is_pivothigh, pivothigh, 1)
osc_lower_high = is_pivothigh ? pivothigh < prev_pivothigh : false
prev_high = ta.valuewhen(is_pivothigh, high[right], 1)
price_higher_high = is_pivothigh ? high[right] > prev_high : false
is_regular_bearish_divergence = osc_lower_high and price_higher_high
plotshape(is_regular_bearish_divergence ? is_pivothigh : na, offset = -right, title="하락 다이버전스", text = "Bear", style = shape.labeldown, color = color.red, textcolor = color.white, location = location.top)
plot(is_pivothigh ? pivothigh : na, color = is_regular_bearish_divergence ? color.red : na, offset = -right, linewidth = 2)
// 히든 하락 다이버전스
osc_higher_high = is_pivothigh ? pivothigh > prev_pivothigh : false
price_lower_high = is_pivothigh ? high[right] < prev_high : false
is_hidden_bearish_divergence = osc_higher_high and price_lower_high
plotshape(is_hidden_bearish_divergence ? is_pivothigh : na, offset = -right, title="히든 하락 다이버전스", text = "H Bear", style = shape.labeldown, color = color.red, textcolor = color.white, location = location.top)
plot(is_pivothigh ? pivothigh : na, color = is_hidden_bearish_divergence ? color.red : na, offset = -right, linewidth = 2)
// RSI 영역에 대한 추가 줄 및 채우기
h1 = hline(70, color=#d4d4d4, linestyle=hline.style_dotted, linewidth=1)
h2 = hline(50, color=#d4d4d4, linestyle=hline.style_dotted, linewidth=1)
h3 = hline(30, color=#d4d4d4, linestyle=hline.style_dotted, linewidth=1)
rsiPlot = plot(ta.rsi(close,14), "RSI", color=na, editable = false, display = display.none)
midLinePlot = plot(50, color = na, editable = false, display = display.none)
fill(rsiPlot, midLinePlot, 100, 70, top_color = color.new(#ff0000, 0), bottom_color = color.new(#ff0000, 100), title = "Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 30, 0, top_color = color.new(#48ff00, 100), bottom_color = color.new(#66ff00, 0), title = "Oversold Gradient Fill")
// 사용자 입력값
lengthBB1 = input.int(20, title='BB1', minval=1)
lengthBB2 = input.int(4, title='BB2', minval=1)
multBB1 = input.float(2, title='BB1', minval=0.1)
multBB2 = input.float(4, title='BB2', minval=0.1)
lengthMA = input.int(20, title='MA Length', minval=1)
// 볼린저 밴드 계산
basisBB1 = ta.sma(close, lengthBB1)
upperBB1 = basisBB1 + multBB1 * ta.stdev(close, lengthBB1)
lowerBB1 = basisBB1 - multBB1 * ta.stdev(close, lengthBB1)
basisBB2 = ta.sma(open, lengthBB2)
upperBB2 = basisBB2 + multBB2 * ta.stdev(open, lengthBB2)
lowerBB2 = basisBB2 - multBB2 * ta.stdev(open, lengthBB2)
// 이동평균선 추가
maClose = ta.sma(close, lengthMA)
// 표시할 조건 정의
showAboveTriangle = high >= upperBB1 and high >= upperBB2
showBelowTriangle = low <= lowerBB1 and low <= lowerBB2
showAboveTriangle1 = high >= upperBB2
showBelowTriangle1 = low <= lowerBB2
// 상단에 역삼각형 표시 (빨간색)
plotshape(series=showAboveTriangle, title='더블비 매도', color=color.rgb(255, 0, 0), style=shape.triangledown, text='DS', textcolor= color.white,size=size.small, location=location.top)
// 하단에 삼각형 표시 (초록색)
plotshape(series=showBelowTriangle, title='더블비 매수', color=color.rgb(4, 253, 12), style=shape.triangleup, text='DB', textcolor= color.white,size=size.small, location=location.bottom)
// 알림 및 트리거 조건
rsi_Green = ta.crossover(current_rsi, disp_up)
rsi_Red = ta.crossunder(current_rsi, disp_down)
alertcondition(condition=rsi_Green, title='이격도 밴드 매수', message='이격도 밴드 매수')
alertcondition(condition=rsi_Red, title='이격도 밴드 매도', message='이격도 밴드 매도')
rsi_Red1 = ta.crossover(current_rsi, lower)
rs9_Green1 = ta.crossunder(current_rsi, upper)
// 매수 매도 표시기
plotshape(rsi_Red1,color=color.green, style=shape.cross, location=location.bottom, size=size.small, title='(매수) signal')
plotshape(rs9_Green1,color= color.red, style=shape.cross, location=location.top, size=size.small, title='(매도) signal')
// 삼각형 표시된 위치에 알람 설정
alertcondition(showAboveTriangle, title='더블비 매도감지', message='더블비 매도감지')
alertcondition(showBelowTriangle, title='더블비 매수감지', message='더블비 매수감지')
// 결과 및 색상 지정
plot(basis, color=color.new(#080808, 0))
plot(upper, color=color.new(#00fff0, 0), linewidth=2)
plot(lower, color=color.new(#00fff0, 0), linewidth=2)
s1 = plot(disp_up, color=color.new(color.white, 0))
s2 = plot(disp_down, color=color.new(color.white, 0))
fill(s1, s2, color=color.new(color.white, 80))
plot(current_rsi, color=color_rsi, linewidth=2)
indicator('RSI+BB+이격도', overlay=false)
// 매개변수 초기화
src = input(title='Source', defval=close) // 계산에 대한 가격 유형 설정
for_rsi = input(title='RSI_period', defval=14) // RSI 기간
for_ma = input(title='Basis_BB', defval=20) // BB 내 MA 기간
for_mult = input.float(title='Stdev', defval=2, minval=1, maxval=5) // BB의 표준 편차 수
for_sigma = input.float(title='Dispersion', defval=0.1, minval=0.01, maxval=1) // MA 주변 이격도
// 스크립트의 작업 조건
current_rsi = ta.rsi(src, for_rsi) // RSI 표시기의 현재 위치
basis = ta.ema(current_rsi, for_ma)
dev = for_mult * ta.stdev(current_rsi, for_ma)
upper = basis + dev
lower = basis - dev
disp_up = basis + (upper - lower) * for_sigma // RSI가 통과해야 하는 이동 영역의 최소 허용 임계값(상단)
disp_down = basis - (upper - lower) * for_sigma // RSI가 극복해야 하는 이동 영역의 최소 허용 임계값(하단)
color_rsi = current_rsi >= disp_up ? color.rgb(0, 255, 132) : current_rsi <= disp_down ? color.rgb(255, 0, 0) : #ffea00 // BB 내 위치에 따른 RSI의 현재 색상
short_l1 = input(5, title='Short - L1')
short_l2 = input(20, title='Short - L2')
short_l3 = input(15, title='Short - L3')
long_l1 = input(20, title='Long - L1')
long_l2 = input(15, title='Long - L2')
shortTermXtrender = ta.rsi(ta.ema(close, short_l1) - ta.ema(close, short_l2), short_l3) - 50
longTermXtrender = ta.rsi(ta.ema(close, long_l1), long_l2) - 50
shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
t3(src, len) =>
xe1_1 = ta.ema(src, len)
xe2_1 = ta.ema(xe1_1, len)
xe3_1 = ta.ema(xe2_1, len)
xe4_1 = ta.ema(xe3_1, len)
xe5_1 = ta.ema(xe4_1, len)
xe6_1 = ta.ema(xe5_1, len)
b_1 = 0.7
c1_1 = -b_1 * b_1 * b_1
c2_1 = 3 * b_1 * b_1 + 3 * b_1 * b_1 * b_1
c3_1 = -6 * b_1 * b_1 - 3 * b_1 - 3 * b_1 * b_1 * b_1
c4_1 = 1 + 3 * b_1 + b_1 * b_1 * b_1 + 3 * b_1 * b_1
nT3Average_1 = c1_1 * xe6_1 + c2_1 * xe5_1 + c3_1 * xe4_1 + c4_1 * xe3_1
nT3Average_1
maShortTermXtrender = t3(shortTermXtrender, 5)
colShortTermXtrender = maShortTermXtrender > maShortTermXtrender[1] ? color.lime : color.red
plotshape(maShortTermXtrender > maShortTermXtrender[1] and maShortTermXtrender[1] < maShortTermXtrender[2] ? maShortTermXtrender : na, location=location.bottom, style=shape.circle, color=color.new(color.lime, 10), size=size.tiny)
plotshape(maShortTermXtrender < maShortTermXtrender[1] and maShortTermXtrender[1] > maShortTermXtrender[2] ? maShortTermXtrender : na, location=location.top, style=shape.circle, color=color.new(color.red, 10), size=size.tiny)
longXtrenderCol = longTermXtrender > 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
macollongXtrenderCol = longTermXtrender > longTermXtrender[1] ? color.lime : color.red
// 단기 추세 이동 평균을 기반으로 한 롱 및 숏 신호에 대한 경고 조건
alertcondition(maShortTermXtrender > maShortTermXtrender[1] and maShortTermXtrender[1] < maShortTermXtrender[2], title='매수추세감지', message='잠재적 매수 포지션 이격도 보고 진입.')
alertcondition(maShortTermXtrender < maShortTermXtrender[1] and maShortTermXtrender[1] > maShortTermXtrender[2], title='매도추세감지', message='잠재적 매도 포지션 이격도 보고 진입.')
left = input.int(5, "left")
right = input.int(5, "right")
// 1. 지표
osc = ta.rsi(close, 14)
plot(osc, linewidth = 2)
// 2. 피봇 찾기 (상승div-피봇로우, 하락div-피봇하이)
pivotlow = ta.pivotlow(osc, left, right)
pivothigh = ta.pivothigh(osc, left, right)
is_pivotlow = not na(pivotlow)
is_pivothigh = not na(pivothigh)
// 3. 다이버전스 찾기
// 상승 다이버전스
prev_pivotlow = ta.valuewhen(is_pivotlow, pivotlow, 1)
osc_higher_low = is_pivotlow ? pivotlow > prev_pivotlow : false
prev_low = ta.valuewhen(is_pivotlow, low[right], 1)
price_lower_low = is_pivotlow ? low[right] < prev_low : false
is_regular_bullish_divergence = osc_higher_low and price_lower_low
plotshape(is_regular_bullish_divergence ? is_pivotlow : na, offset = -right, title="상승 다이버전스", text = "Bull", style = shape.labelup, color = color.green, textcolor = color.white, location = location.bottom)
plot(is_pivotlow ? pivotlow : na, color = is_regular_bullish_divergence ? color.green : na, offset = -right, linewidth = 2)
// 히든 상승다이버전스
osc_lower_low = is_pivotlow ? pivotlow < prev_pivotlow : false
price_higher_low = is_pivotlow ? low[right] > prev_low : false
is_hidden_bullish_divergence = osc_lower_low and price_higher_low
plotshape(is_hidden_bullish_divergence ? is_pivotlow : na, offset = -right, title="히든 상승 다이버전스", text = "H Bull", style = shape.labelup, color = color.green, textcolor = color.white, location = location.bottom)
plot(is_pivotlow ? pivotlow : na, color = is_hidden_bullish_divergence ? color.green : na, offset = -right, linewidth = 2)
// 하락다이버전스
prev_pivothigh = ta.valuewhen(is_pivothigh, pivothigh, 1)
osc_lower_high = is_pivothigh ? pivothigh < prev_pivothigh : false
prev_high = ta.valuewhen(is_pivothigh, high[right], 1)
price_higher_high = is_pivothigh ? high[right] > prev_high : false
is_regular_bearish_divergence = osc_lower_high and price_higher_high
plotshape(is_regular_bearish_divergence ? is_pivothigh : na, offset = -right, title="하락 다이버전스", text = "Bear", style = shape.labeldown, color = color.red, textcolor = color.white, location = location.top)
plot(is_pivothigh ? pivothigh : na, color = is_regular_bearish_divergence ? color.red : na, offset = -right, linewidth = 2)
// 히든 하락 다이버전스
osc_higher_high = is_pivothigh ? pivothigh > prev_pivothigh : false
price_lower_high = is_pivothigh ? high[right] < prev_high : false
is_hidden_bearish_divergence = osc_higher_high and price_lower_high
plotshape(is_hidden_bearish_divergence ? is_pivothigh : na, offset = -right, title="히든 하락 다이버전스", text = "H Bear", style = shape.labeldown, color = color.red, textcolor = color.white, location = location.top)
plot(is_pivothigh ? pivothigh : na, color = is_hidden_bearish_divergence ? color.red : na, offset = -right, linewidth = 2)
// RSI 영역에 대한 추가 줄 및 채우기
h1 = hline(70, color=#d4d4d4, linestyle=hline.style_dotted, linewidth=1)
h2 = hline(50, color=#d4d4d4, linestyle=hline.style_dotted, linewidth=1)
h3 = hline(30, color=#d4d4d4, linestyle=hline.style_dotted, linewidth=1)
rsiPlot = plot(ta.rsi(close,14), "RSI", color=na, editable = false, display = display.none)
midLinePlot = plot(50, color = na, editable = false, display = display.none)
fill(rsiPlot, midLinePlot, 100, 70, top_color = color.new(#ff0000, 0), bottom_color = color.new(#ff0000, 100), title = "Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 30, 0, top_color = color.new(#48ff00, 100), bottom_color = color.new(#66ff00, 0), title = "Oversold Gradient Fill")
// 사용자 입력값
lengthBB1 = input.int(20, title='BB1', minval=1)
lengthBB2 = input.int(4, title='BB2', minval=1)
multBB1 = input.float(2, title='BB1', minval=0.1)
multBB2 = input.float(4, title='BB2', minval=0.1)
lengthMA = input.int(20, title='MA Length', minval=1)
// 볼린저 밴드 계산
basisBB1 = ta.sma(close, lengthBB1)
upperBB1 = basisBB1 + multBB1 * ta.stdev(close, lengthBB1)
lowerBB1 = basisBB1 - multBB1 * ta.stdev(close, lengthBB1)
basisBB2 = ta.sma(open, lengthBB2)
upperBB2 = basisBB2 + multBB2 * ta.stdev(open, lengthBB2)
lowerBB2 = basisBB2 - multBB2 * ta.stdev(open, lengthBB2)
// 이동평균선 추가
maClose = ta.sma(close, lengthMA)
// 표시할 조건 정의
showAboveTriangle = high >= upperBB1 and high >= upperBB2
showBelowTriangle = low <= lowerBB1 and low <= lowerBB2
showAboveTriangle1 = high >= upperBB2
showBelowTriangle1 = low <= lowerBB2
// 상단에 역삼각형 표시 (빨간색)
plotshape(series=showAboveTriangle, title='더블비 매도', color=color.rgb(255, 0, 0), style=shape.triangledown, text='DS', textcolor= color.white,size=size.small, location=location.top)
// 하단에 삼각형 표시 (초록색)
plotshape(series=showBelowTriangle, title='더블비 매수', color=color.rgb(4, 253, 12), style=shape.triangleup, text='DB', textcolor= color.white,size=size.small, location=location.bottom)
// 알림 및 트리거 조건
rsi_Green = ta.crossover(current_rsi, disp_up)
rsi_Red = ta.crossunder(current_rsi, disp_down)
alertcondition(condition=rsi_Green, title='이격도 밴드 매수', message='이격도 밴드 매수')
alertcondition(condition=rsi_Red, title='이격도 밴드 매도', message='이격도 밴드 매도')
rsi_Red1 = ta.crossover(current_rsi, lower)
rs9_Green1 = ta.crossunder(current_rsi, upper)
// 매수 매도 표시기
plotshape(rsi_Red1,color=color.green, style=shape.cross, location=location.bottom, size=size.small, title='(매수) signal')
plotshape(rs9_Green1,color= color.red, style=shape.cross, location=location.top, size=size.small, title='(매도) signal')
// 삼각형 표시된 위치에 알람 설정
alertcondition(showAboveTriangle, title='더블비 매도감지', message='더블비 매도감지')
alertcondition(showBelowTriangle, title='더블비 매수감지', message='더블비 매수감지')
// 결과 및 색상 지정
plot(basis, color=color.new(#080808, 0))
plot(upper, color=color.new(#00fff0, 0), linewidth=2)
plot(lower, color=color.new(#00fff0, 0), linewidth=2)
s1 = plot(disp_up, color=color.new(color.white, 0))
s2 = plot(disp_down, color=color.new(color.white, 0))
fill(s1, s2, color=color.new(color.white, 80))
plot(current_rsi, color=color_rsi, linewidth=2)
Script open-source
In pieno spirito TradingView, il creatore di questo script lo ha reso open-source, in modo che i trader possano esaminarlo e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricorda che la ripubblicazione del codice è soggetta al nostro Regolamento.
Declinazione di responsabilità
Le informazioni ed i contenuti pubblicati non costituiscono in alcun modo una sollecitazione ad investire o ad operare nei mercati finanziari. Non sono inoltre fornite o supportate da TradingView. Maggiori dettagli nelle Condizioni d'uso.
Script open-source
In pieno spirito TradingView, il creatore di questo script lo ha reso open-source, in modo che i trader possano esaminarlo e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricorda che la ripubblicazione del codice è soggetta al nostro Regolamento.
Declinazione di responsabilità
Le informazioni ed i contenuti pubblicati non costituiscono in alcun modo una sollecitazione ad investire o ad operare nei mercati finanziari. Non sono inoltre fornite o supportate da TradingView. Maggiori dettagli nelle Condizioni d'uso.