커뮤니티

부탁합니다

프로필 이미지
as8282
2022-09-23 11:31:11
1059
글번호 162460
답변완료
아래 글 올렸었는데...제가 수식은 꽝이라..ㅜ 다시한번 부탁드립니다. 예스 수식으로 부탁합니다. // input lrg = 'Linear Regression' linreg1 = input(true, 'Longterm Linear Regression On / Off', group=lrg) linreg2 = input(true, 'Shorterm Linear Regression On / Off', group=lrg) periodTrend = input.int(100, 'Longterm Linear Regression Period', minval=4, group=lrg) periodTrend2 = input.int(25, 'Shorterm Linear Regression Period', minval=4, group=lrg) deviationsAmnt = input.float(2, 'Deviation', minval=0.1, step=0.1, group=lrg) estimatorType = input.string('Unbiased', 'Estimator', options=['Biased', 'Unbiased'], group=lrg) var extendType = input.string('Right', 'Extend', options=['Right', 'Segment'], group=lrg) == 'Right' ? extend.right : extend.none // drawline configuration drawLine(X1, Y1, X2, Y2, ExtendType, Color, LineStyle) => var line Line = na Line := linreg1 ? line.new(X1, Y1, X2, Y2, xloc.bar_index, ExtendType, Color, LineStyle, width=2) : na line.delete(Line[1]) drawLine2(X1, Y1, X2, Y2, ExtendType, Color, LineStyle) => var line Line = na Line := linreg2 ? line.new(X1, Y1, X2, Y2, xloc.bar_index, ExtendType, Color, LineStyle, width=2) : na line.delete(Line[1]) rsdcr2(PeriodMinusOne, Deviations, Estimate) => var period = PeriodMinusOne + 1 var devDenominator = Estimate == 'Unbiased' ? PeriodMinusOne : period Ex = 0.0 Ex2 = 0.0 Exy = 0.0 Ey = 0.0 for i = 0 to PeriodMinusOne by 1 closeI = nz(rsia[i]) Ex := Ex + i Ex2 := Ex2 + i * i Exy := Exy + closeI * i Ey := Ey + closeI Ey ExEx = Ex * Ex slope = Ex2 == ExEx ? 0.0 : (period * Exy - Ex * Ey) / (period * Ex2 - ExEx) linearRegression = (Ey - slope * Ex) / period intercept = linearRegression + bar_index * slope deviation = 0.0 for i = 0 to PeriodMinusOne by 1 deviation := deviation + math.pow(nz(rsia[i]) - (intercept - bar_index[i] * slope), 2.0) deviation deviation := Deviations * math.sqrt(deviation / devDenominator) correlate = ta.correlation(rsia, bar_index, period) r2 = math.pow(correlate, 2.0) [linearRegression, slope, deviation, correlate, r2] periodMinusOne = periodTrend - 1 [linReg, slope, deviation, correlate, r2] = rsdcr2(periodMinusOne, deviationsAmnt, estimatorType) endPointBar = bar_index - periodTrend + 1 endPointY = linReg + slope * periodMinusOne endPointBar2 = bar_index - periodTrend2 + 1 // drawline plot drawLine(endPointBar, endPointY + deviation, bar_index, linReg + deviation, extendType, #e91e63, line.style_solid) drawLine(endPointBar, endPointY, bar_index, linReg, extendType, #e91e63, line.style_dotted) drawLine(endPointBar, endPointY - deviation, bar_index, linReg - deviation, extendType, #e91e63, line.style_solid) drawLine2(endPointBar2, endPointY + deviation, bar_index, linReg + deviation, extendType, color.blue, line.style_solid) drawLine2(endPointBar2, endPointY, bar_index, linReg, extendType, color.blue, line.style_dotted) drawLine2(endPointBar2, endPointY - deviation, bar_index, linReg - deviation, extendType, color.blue, line.style_solid)
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-09-23 14:32:02

안녕하세요 예스스탁입니다. 해당 언어에 능숙하지 않아 올려주신 내용은 변환을 해드리기 어렵습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > as8282 님이 쓴 글입니다. > 제목 : 부탁합니다 > 아래 글 올렸었는데...제가 수식은 꽝이라..ㅜ 다시한번 부탁드립니다. 예스 수식으로 부탁합니다. // input lrg = 'Linear Regression' linreg1 = input(true, 'Longterm Linear Regression On / Off', group=lrg) linreg2 = input(true, 'Shorterm Linear Regression On / Off', group=lrg) periodTrend = input.int(100, 'Longterm Linear Regression Period', minval=4, group=lrg) periodTrend2 = input.int(25, 'Shorterm Linear Regression Period', minval=4, group=lrg) deviationsAmnt = input.float(2, 'Deviation', minval=0.1, step=0.1, group=lrg) estimatorType = input.string('Unbiased', 'Estimator', options=['Biased', 'Unbiased'], group=lrg) var extendType = input.string('Right', 'Extend', options=['Right', 'Segment'], group=lrg) == 'Right' ? extend.right : extend.none // drawline configuration drawLine(X1, Y1, X2, Y2, ExtendType, Color, LineStyle) => var line Line = na Line := linreg1 ? line.new(X1, Y1, X2, Y2, xloc.bar_index, ExtendType, Color, LineStyle, width=2) : na line.delete(Line[1]) drawLine2(X1, Y1, X2, Y2, ExtendType, Color, LineStyle) => var line Line = na Line := linreg2 ? line.new(X1, Y1, X2, Y2, xloc.bar_index, ExtendType, Color, LineStyle, width=2) : na line.delete(Line[1]) rsdcr2(PeriodMinusOne, Deviations, Estimate) => var period = PeriodMinusOne + 1 var devDenominator = Estimate == 'Unbiased' ? PeriodMinusOne : period Ex = 0.0 Ex2 = 0.0 Exy = 0.0 Ey = 0.0 for i = 0 to PeriodMinusOne by 1 closeI = nz(rsia[i]) Ex := Ex + i Ex2 := Ex2 + i * i Exy := Exy + closeI * i Ey := Ey + closeI Ey ExEx = Ex * Ex slope = Ex2 == ExEx ? 0.0 : (period * Exy - Ex * Ey) / (period * Ex2 - ExEx) linearRegression = (Ey - slope * Ex) / period intercept = linearRegression + bar_index * slope deviation = 0.0 for i = 0 to PeriodMinusOne by 1 deviation := deviation + math.pow(nz(rsia[i]) - (intercept - bar_index[i] * slope), 2.0) deviation deviation := Deviations * math.sqrt(deviation / devDenominator) correlate = ta.correlation(rsia, bar_index, period) r2 = math.pow(correlate, 2.0) [linearRegression, slope, deviation, correlate, r2] periodMinusOne = periodTrend - 1 [linReg, slope, deviation, correlate, r2] = rsdcr2(periodMinusOne, deviationsAmnt, estimatorType) endPointBar = bar_index - periodTrend + 1 endPointY = linReg + slope * periodMinusOne endPointBar2 = bar_index - periodTrend2 + 1 // drawline plot drawLine(endPointBar, endPointY + deviation, bar_index, linReg + deviation, extendType, #e91e63, line.style_solid) drawLine(endPointBar, endPointY, bar_index, linReg, extendType, #e91e63, line.style_dotted) drawLine(endPointBar, endPointY - deviation, bar_index, linReg - deviation, extendType, #e91e63, line.style_solid) drawLine2(endPointBar2, endPointY + deviation, bar_index, linReg + deviation, extendType, color.blue, line.style_solid) drawLine2(endPointBar2, endPointY, bar_index, linReg, extendType, color.blue, line.style_dotted) drawLine2(endPointBar2, endPointY - deviation, bar_index, linReg - deviation, extendType, color.blue, line.style_solid)