커뮤니티

수식 부탁드립니다

프로필 이미지
사노소이
2025-06-19 05:02:02
165
글번호 191899
답변완료
지표식 부탁 드립니다. //@version=5 indicator('Linear Regression Bands', overlay = true, max_lines_count = 3) // ───────────────────────────── // USER INPUTS // ───────────────────────────── bool bands = input.bool(true, "Plot Linear Regression Bands") int window = input.int(100, "Length") float devlen_b = input.float(2.0, "Deviation Linear Regression Bands", step=0.1) // ───────────────────────────── // COLOR SETTINGS // ───────────────────────────── color col_dn = #f01313 color col_up = color.aqua color col_mid = color.yellow color gray = color.gray // ───────────────────────────── // LINEAR REGRESSION CALC // ───────────────────────────── linear_regression(src, window) => sum_x = 0.0 sum_y = 0.0 sum_xy = 0.0 sum_x_sq = 0.0 for i = 0 to window - 1 sum_x += i + 1 sum_y += src[i] sum_xy += (i + 1) * src[i] sum_x_sq += math.pow(i + 1, 2) slope = (window * sum_xy - sum_x * sum_y) / (window * sum_x_sq - math.pow(sum_x, 2)) intercept = (sum_y - slope * sum_x) / window y1 = intercept + slope * (window - 1) dev = 0.0 for i = 0 to window - 1 dev += math.pow(src[i] - (slope * (window - i) + intercept), 2) dev := math.sqrt(dev / window) [intercept, y1, dev, slope] // ───────────────────────────── // PLOT // ───────────────────────────── [y2, _, dev, slope] = linear_regression(close, window) mid = y2 + slope upper = mid + ta.rma(high - low, window) * devlen_b lower = mid - ta.rma(high - low, window) * devlen_b p_u = plot(bands ? upper : na, color = bands ? gray : na, linewidth = 2) p_l = plot(bands ? lower : na, color = bands ? gray : na, linewidth = 2) p_m = plot(bands ? mid : na, color = bands ? gray : na) fill(p_u, p_m, mid, upper, na, bands ? color.new(col_up, 80) : na) fill(p_m, p_l, lower, mid, bands ? color.new(col_dn, 80) : na, na)
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-06-19 13:45:01

안녕하세요 예스스탁입니다. input : window(100),devlen_b(2.0); var : sum_x(0),sum_y(0),sum_xy(0),sum_x_sq(0),i(0); var : slope(0),y2(0),y1(0),dev(0); var : mid(0),upper(0),lower(0),alpha(0),rmav(0); sum_x = 0.0; sum_y = 0.0; sum_xy = 0.0; sum_x_sq = 0.0; for i = 0 to window - 1 { sum_x = sum_x + i + 1; sum_y = sum_y + close[i]; sum_xy = sum_xy + (i + 1) * close[i]; sum_x_sq = sum_x_sq + pow(i + 1, 2); } slope = (window * sum_xy - sum_x * sum_y) / (window * sum_x_sq - pow(sum_x, 2)); y2 = (sum_y - slope * sum_x) / window; y1 = y2 + slope * (window - 1); dev = 0.0; for i = 0 to window - 1 { dev = dev + pow(close[i] - (slope * (window - i) + y2), 2); } dev = sqrt(dev / window); mid = y2 + slope; alpha = 1 / window ; rmav = IFf(IsNan(rmav[1]) == true, ma(H-L,window) , alpha * (H-L) + (1 - alpha) * IFf(isnan(rmav[1])==true,0,rmav[1])); upper = mid + rmav * devlen_b; lower = mid - rmav * devlen_b; Plot1(upper,"upper",Gray); Plot2(mid,"mid",Gray); Plot3(lower,"lower",Gray); 즐거운 하루되세요 > 사노소이 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다 > 지표식 부탁 드립니다. //@version=5 indicator('Linear Regression Bands', overlay = true, max_lines_count = 3) // ───────────────────────────── // USER INPUTS // ───────────────────────────── bool bands = input.bool(true, "Plot Linear Regression Bands") int window = input.int(100, "Length") float devlen_b = input.float(2.0, "Deviation Linear Regression Bands", step=0.1) // ───────────────────────────── // COLOR SETTINGS // ───────────────────────────── color col_dn = #f01313 color col_up = color.aqua color col_mid = color.yellow color gray = color.gray // ───────────────────────────── // LINEAR REGRESSION CALC // ───────────────────────────── linear_regression(src, window) => sum_x = 0.0 sum_y = 0.0 sum_xy = 0.0 sum_x_sq = 0.0 for i = 0 to window - 1 sum_x += i + 1 sum_y += src[i] sum_xy += (i + 1) * src[i] sum_x_sq += math.pow(i + 1, 2) slope = (window * sum_xy - sum_x * sum_y) / (window * sum_x_sq - math.pow(sum_x, 2)) intercept = (sum_y - slope * sum_x) / window y1 = intercept + slope * (window - 1) dev = 0.0 for i = 0 to window - 1 dev += math.pow(src[i] - (slope * (window - i) + intercept), 2) dev := math.sqrt(dev / window) [intercept, y1, dev, slope] // ───────────────────────────── // PLOT // ───────────────────────────── [y2, _, dev, slope] = linear_regression(close, window) mid = y2 + slope upper = mid + ta.rma(high - low, window) * devlen_b lower = mid - ta.rma(high - low, window) * devlen_b p_u = plot(bands ? upper : na, color = bands ? gray : na, linewidth = 2) p_l = plot(bands ? lower : na, color = bands ? gray : na, linewidth = 2) p_m = plot(bands ? mid : na, color = bands ? gray : na) fill(p_u, p_m, mid, upper, na, bands ? color.new(col_up, 80) : na) fill(p_m, p_l, lower, mid, bands ? color.new(col_dn, 80) : na, na)