커뮤니티

부탁합니다.

프로필 이미지
as8282
2025-11-16 23:19:45
65
글번호 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); } } 즐거운 하루되세요