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)
Mã nguồn mở
Theo đúng tinh thần TradingView, người tạo ra tập lệnh này đã biến tập lệnh thành mã nguồn mở để các nhà giao dịch có thể xem xét và xác minh công năng. Xin dành lời khen tặng cho tác giả! Mặc dù bạn có thể sử dụng miễn phí, nhưng lưu ý nếu đăng lại mã, bạn phải tuân theo Quy tắc nội bộ của chúng tôi.
Thông báo miễn trừ trách nhiệm
Thông tin và ấn phẩm không có nghĩa là và không cấu thành, tài chính, đầu tư, kinh doanh, hoặc các loại lời khuyên hoặc khuyến nghị khác được cung cấp hoặc xác nhận bởi TradingView. Đọc thêm trong Điều khoản sử dụng.
Mã nguồn mở
Theo đúng tinh thần TradingView, người tạo ra tập lệnh này đã biến tập lệnh thành mã nguồn mở để các nhà giao dịch có thể xem xét và xác minh công năng. Xin dành lời khen tặng cho tác giả! Mặc dù bạn có thể sử dụng miễn phí, nhưng lưu ý nếu đăng lại mã, bạn phải tuân theo Quy tắc nội bộ của chúng tôi.
Thông báo miễn trừ trách nhiệm
Thông tin và ấn phẩm không có nghĩa là và không cấu thành, tài chính, đầu tư, kinh doanh, hoặc các loại lời khuyên hoặc khuyến nghị khác được cung cấp hoặc xác nhận bởi TradingView. Đọc thêm trong Điều khoản sử dụng.