OPEN-SOURCE SCRIPT

내 스크립트

61
//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)

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.