커뮤니티

부탁합니다.

프로필 이미지
as8282
2025-11-16 23:19:45
121
글번호 228069
답변완료

트뷰 지표인데 예스로 부탁합니다.



indicator( overlay = true, max_lines_count = 500, max_bars_back = 500)

src = input(hlc3, title = 'source')

len = input.int(88, title = 'lenght', maxval = 500)

cr(x, y) =>

z = 0.0

weight = 0.0

for i = 0 to y - 1 by 1

z := z + x[i] * ((y - 1) / 2 + 1 - math.abs(i - (y - 1) / 2))

z

z / ((y + 1) / 2 * (y + 1) / 2)

cr = cr(src, 2 * len - 1)

width = 2

//plot(cr, color= #cf0202, linewidth=width,offset=-len+1)

var dizii = array.new_float(500)

for k = 0 to len - 1 by 1

sum = 0.0

for i = 0 to 2 * len - 2 - k by 1

sum := sum + (len - math.abs(len - 1 - k - i)) * src[i] / (len * len - k * (k + 1) / 2)

sum

array.set(dizii, k, sum)

mult = input.float(2.0, minval = 0.001, maxval = 50, title = 'StdDev')

dev = mult * ta.stdev(src, len)

nmid = ta.wma(src, len)

nupper = nmid + ta.wma(dev,len)

nlower = nmid - ta.wma(dev,len)

//plot(nmid)

//plot(nlower)

//plot(nupper)

upper = cr + cr(dev, 2 * len - 1)

lower = cr - cr(dev, 2 * len - 1)

cu = input.color(color.rgb(255, 137, 137), 'upper band color')

cl = input.color(color.rgb(137, 255, 97), 'lower band color')

plot(lower, color = cl, offset = 1 - len, linewidth = 2, display = display.pane)

plot(upper, color = cu, offset = 1 - len, linewidth = 2, display = display.pane)

dashed = input.bool(false)

transp = input.bool(true)

d = dashed ? 2 : 1

tra = transp ? 1 : 0

// extrapolation

var diz = array.new_float(500)

var lin = array.new_line()

var diz2 = array.new_float(500)

var lin2 = array.new_line(0)

// Extrapolation - dynamic lines that redraw every bar

if bar_index > len

// Önceki çizgileri sil (varsa)

if array.size(lin) > 0

for i = 0 to array.size(lin) - 1

line.delete(array.get(lin, i))

array.clear(lin)

if array.size(lin2) > 0

for i = 0 to array.size(lin2) - 1

line.delete(array.get(lin2, i))

array.clear(lin2)

// Yeni extrapolation hesapla

for k = 0 to len - 1 by 1

sum = 0.0

dv = 0.0

for i = 0 to 2 * len - 2 - k by 1

sum := sum + (len - math.abs(len - 1 - k - i)) * src[i] / (len * len - k * (k + 1) / 2)

dv := dv + (len - math.abs(len - 1 - k - i)) * dev[i] / (len * len - k * (k + 1) / 2)

array.set(diz, k, sum + dv)

array.set(diz2, k, sum - dv)

// Yeni çizgileri oluştur

for i = 0 to len / d - 2 by 1

l1 = line.new(

bar_index + i * d + 1 - len, array.get(diz, i * d),

bar_index + i * d + 2 - len, array.get(diz, i * d + 1),

width = width,

color = color.new(cu, tra * i * 95 / (len / d - 1))

)

array.push(lin, l1)

l2 = line.new(

bar_index + i * d + 1 - len, array.get(diz2, i * d),

bar_index + i * d + 2 - len, array.get(diz2, i * d + 1),

width = width,

color = color.new(cl, tra * i * 95 / (len / d - 1))

)

array.push(lin2, l2)

plot(array.get(diz, len - 1), color = color.new(cu, 100))

plot(array.get(diz2, len - 1), color = color.new(cl, 100))

//plot(array.get(dizii, len - 1), color = color.new(cl, 10))

alertcondition(ta.crossover(close, array.get(diz, len - 1)) or ta.crossunder(close, array.get(diz2, len - 1)), title = 'faytterro bands alert', message = 'warning! this is an early warning alert, not a buy or sell signal. Remember that the indicator repaints to a limited extent on the last bars.')

지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-11-17 15:45:17

안녕하세요 예스스탁입니다. 수식 내용상 적용시 시간이 많이 걸릴수 있습니다. input : len(88),mult(2.0); input : cu(Red),cl(Lime); input : dashed(false); input : transp(true); var : src(0),crr(0),k(0),sum(0),i(0),dev(0); var : nmid(0),nupper(0),nlower(0); var : upper(0),lower(0); Array : dizii[500](0); src = (h+l+c)/3; Function cr Numeric input : x(Numeric),y(Numeric); var : z(0),weight(0),i(0); z = 0.0; weight = 0.0; for i = 0 to y - 1 step 1 { z = z + x[i] * ((y - 1) / 2 + 1 -abs(i - (y - 1) / 2)); } cr = z / ((y + 1) / 2 * (y + 1) / 2); EndFunction crr = cr(src, 2 * len - 1); for k = 0 to len - 1 step 1 { sum = 0.0; for i = 0 to 2 * len - 2 - k step 1 { sum = sum + (len - abs(len - 1 - k - i)) * src[i] / (len * len - k * (k + 1) / 2); } dizii[k] = sum; } dev = mult * std(src, len); nmid = wma(src, len); nupper = nmid + wma(dev,len); nlower = nmid - wma(dev,len); upper = crr + cr(dev, 2 * len - 1); lower = crr - cr(dev, 2 * len - 1); plot1(lower,"lowr",cl); plot2(upper,"upper",cu); FixPlotShift(1,1 - len); FixPlotShift(2,1 - len); var : d(0),tra(0); d = iff(dashed , 2 , 1); tra = iff(transp , 1 , 0); Array : diz[500](0),lin[500](0),diz2[500](0),lin2[500](0); var : dv(0); if index > len Then { For i = 0 to 499 { TL_Delete(lin[i]); TL_Delete(lin2[i]); } for k = 0 to len - 1 step 1 { sum = 0.0; dv = 0.0; for i = 0 to 2 * len - 2 - k step 1 { sum = sum + (len - abs(len - 1 - k - i)) * src[i] / (len * len - k * (k + 1) / 2); dv = dv + (len - abs(len - 1 - k - i)) * dev[i] / (len * len - k * (k + 1) / 2); } diz[k] = sum + dv; diz2[k] = sum - dv; } for i = 0 to len / d - 2 step 1 { var1 = index + i * d + 1 - len; var2 = index + i * d + 2 - len; lin[i] = TL_new(sDate[Index-var1],sTime[Index-var1],diz[i*d],sDate[Index-var2],sTime[Index-var2],diz[i * d + 1]); TL_SetColor(lin[i],cu); var3 = index + i * d + 1 - len; var4 = index + i * d + 2 - len; lin2[i] = TL_new(sDate[Index-var3],sTime[Index-var3],diz2[i*d],sDate[Index-var4],sTime[Index-var4],diz2[i * d + 1]); TL_SetColor(lin2[i],cl); } } 즐거운 하루되세요