커뮤니티

부탁드립니다.

프로필 이미지
다올
2023-12-09 16:56:00
1169
글번호 174707
답변완료
변환 부탁 드립니다. 감기조심하세요 선형회귀 관련 캔들입니다. study("Linear Regression Channel", overlay = true, max_bars_back = 1000, max_lines_count = 300) src = input(defval = close, title = "Source") len = input(defval = 100, title = "Length", minval = 10) devlen = input(defval = 2., title = "Deviation", minval = 0.1, step = 0.1) extendit = input(defval = true, title = "Extend Lines") showfibo = input(defval = false, title = "Show Fibonacci Levels") showbroken = input(defval = true, title = "Show Broken Channel", inline = "brk") brokencol = input(defval = color.blue, title = "", inline = "brk") upcol = input(defval = color.lime, title = "Up/Down Trend Colors", inline = "trcols") dncol = input(defval = color.red, title = "", inline = "trcols") widt = input(defval = 2, title = "Line Width") var fibo_ratios = array.new_float(0) var colors = array.new_color(2) if barstate.isfirst array.unshift(colors, upcol) array.unshift(colors, dncol) array.push(fibo_ratios, 0.236) array.push(fibo_ratios, 0.382) array.push(fibo_ratios, 0.618) array.push(fibo_ratios, 0.786) get_channel(src, len)=> mid = sum(src, len) / len slope = linreg(src, len, 0) - linreg(src, len, 1) intercept = mid - slope * floor(len / 2) + ((1 - (len % 2)) / 2) * slope endy = intercept + slope * (len - 1) dev = 0.0 for x = 0 to len - 1 dev := dev + pow(src[x] - (slope * (len - x) + intercept), 2) dev := sqrt(dev/len) [intercept, endy, dev, slope] [y1_, y2_, dev, slope] = get_channel(src, len) outofchannel = (slope > 0 and close < y2_ - dev * devlen) ? 0 : (slope < 0 and close > y2_ + dev * devlen) ? 2 : -1 var reglines = array.new_line(3) var fibolines = array.new_line(4) for x = 0 to 2 if not showbroken or outofchannel != x or nz(outofchannel[1], -1) != -1 line.delete(array.get(reglines, x)) else line.set_color(array.get(reglines, x), color = brokencol) line.set_width(array.get(reglines, x), width = 2) line.set_style(array.get(reglines, x), style = line.style_dotted) line.set_extend(array.get(reglines, x), extend = extend.none) array.set(reglines, x, line.new(x1 = bar_index - (len - 1), y1 = y1_ + dev * devlen * (x - 1), x2 = bar_index, y2 = y2_ + dev * devlen * (x - 1), color = array.get(colors, round(max(sign(slope), 0))), style = x % 2 == 1 ? line.style_solid : line.style_dashed, width = widt, extend = extendit ? extend.right : extend.none)) if showfibo for x = 0 to 3 line.delete(array.get(fibolines, x)) array.set(fibolines, x, line.new(x1 = bar_index - (len - 1), y1 = y1_ - dev * devlen + dev * devlen * 2 * array.get(fibo_ratios, x), x2 = bar_index, y2 = y2_ - dev * devlen + dev * devlen * 2 * array.get(fibo_ratios, x), color = array.get(colors, round(max(sign(slope), 0))), style = line.style_dotted, width = widt, extend = extendit ? extend.right : extend.none)) var label sidelab = label.new(x = bar_index - (len - 1), y = y1_, text = "S", size = size.large) txt = slope > 0 ? slope > slope[1] ? "&#8657;" : "&#8663;" : slope < 0 ? slope < slope[1] ? "&#8659;" : "&#8664;" : "⇒" stl = slope > 0 ? slope > slope[1] ? label.style_label_up : label.style_label_upper_right : slope < 0 ? slope < slope[1] ? label.style_label_down : label.style_label_lower_right : label.style_label_right label.set_style(sidelab, stl) label.set_text(sidelab, txt) label.set_x(sidelab, bar_index - (len - 1)) label.set_y(sidelab, slope > 0 ? y1_ - dev * devlen : slope < 0 ? y1_ + dev * devlen : y1_) label.set_color(sidelab, slope > 0 ? upcol : slope < 0 ? dncol : color.blue) alertcondition(outofchannel, title='Channel Broken', message='Channel Broken') // direction trendisup = sign(slope) != sign(slope[1]) and slope > 0 trendisdown = sign(slope) != sign(slope[1]) and slope < 0 alertcondition(trendisup, title='Up trend', message='Up trend') alertcondition(trendisdown, title='Down trend', message='Down trend')
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-12-11 15:05:17

안녕하세요 예스스탁입니다. 올려주신 내용은 변환해 드리기 어렵습니다. 해당 언어에 익숙하지 않아 함수 및 내용 파악에 시간이 많이 소모됩니다. 업무상 일정이상 시간이 요구되는 내용은 처기가 어렵습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 다올 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 변환 부탁 드립니다. 감기조심하세요 선형회귀 관련 캔들입니다. study("Linear Regression Channel", overlay = true, max_bars_back = 1000, max_lines_count = 300) src = input(defval = close, title = "Source") len = input(defval = 100, title = "Length", minval = 10) devlen = input(defval = 2., title = "Deviation", minval = 0.1, step = 0.1) extendit = input(defval = true, title = "Extend Lines") showfibo = input(defval = false, title = "Show Fibonacci Levels") showbroken = input(defval = true, title = "Show Broken Channel", inline = "brk") brokencol = input(defval = color.blue, title = "", inline = "brk") upcol = input(defval = color.lime, title = "Up/Down Trend Colors", inline = "trcols") dncol = input(defval = color.red, title = "", inline = "trcols") widt = input(defval = 2, title = "Line Width") var fibo_ratios = array.new_float(0) var colors = array.new_color(2) if barstate.isfirst array.unshift(colors, upcol) array.unshift(colors, dncol) array.push(fibo_ratios, 0.236) array.push(fibo_ratios, 0.382) array.push(fibo_ratios, 0.618) array.push(fibo_ratios, 0.786) get_channel(src, len)=> mid = sum(src, len) / len slope = linreg(src, len, 0) - linreg(src, len, 1) intercept = mid - slope * floor(len / 2) + ((1 - (len % 2)) / 2) * slope endy = intercept + slope * (len - 1) dev = 0.0 for x = 0 to len - 1 dev := dev + pow(src[x] - (slope * (len - x) + intercept), 2) dev := sqrt(dev/len) [intercept, endy, dev, slope] [y1_, y2_, dev, slope] = get_channel(src, len) outofchannel = (slope > 0 and close < y2_ - dev * devlen) ? 0 : (slope < 0 and close > y2_ + dev * devlen) ? 2 : -1 var reglines = array.new_line(3) var fibolines = array.new_line(4) for x = 0 to 2 if not showbroken or outofchannel != x or nz(outofchannel[1], -1) != -1 line.delete(array.get(reglines, x)) else line.set_color(array.get(reglines, x), color = brokencol) line.set_width(array.get(reglines, x), width = 2) line.set_style(array.get(reglines, x), style = line.style_dotted) line.set_extend(array.get(reglines, x), extend = extend.none) array.set(reglines, x, line.new(x1 = bar_index - (len - 1), y1 = y1_ + dev * devlen * (x - 1), x2 = bar_index, y2 = y2_ + dev * devlen * (x - 1), color = array.get(colors, round(max(sign(slope), 0))), style = x % 2 == 1 ? line.style_solid : line.style_dashed, width = widt, extend = extendit ? extend.right : extend.none)) if showfibo for x = 0 to 3 line.delete(array.get(fibolines, x)) array.set(fibolines, x, line.new(x1 = bar_index - (len - 1), y1 = y1_ - dev * devlen + dev * devlen * 2 * array.get(fibo_ratios, x), x2 = bar_index, y2 = y2_ - dev * devlen + dev * devlen * 2 * array.get(fibo_ratios, x), color = array.get(colors, round(max(sign(slope), 0))), style = line.style_dotted, width = widt, extend = extendit ? extend.right : extend.none)) var label sidelab = label.new(x = bar_index - (len - 1), y = y1_, text = "S", size = size.large) txt = slope > 0 ? slope > slope[1] ? "&#8657;" : "&#8663;" : slope < 0 ? slope < slope[1] ? "&#8659;" : "&#8664;" : "⇒" stl = slope > 0 ? slope > slope[1] ? label.style_label_up : label.style_label_upper_right : slope < 0 ? slope < slope[1] ? label.style_label_down : label.style_label_lower_right : label.style_label_right label.set_style(sidelab, stl) label.set_text(sidelab, txt) label.set_x(sidelab, bar_index - (len - 1)) label.set_y(sidelab, slope > 0 ? y1_ - dev * devlen : slope < 0 ? y1_ + dev * devlen : y1_) label.set_color(sidelab, slope > 0 ? upcol : slope < 0 ? dncol : color.blue) alertcondition(outofchannel, title='Channel Broken', message='Channel Broken') // direction trendisup = sign(slope) != sign(slope[1]) and slope > 0 trendisdown = sign(slope) != sign(slope[1]) and slope < 0 alertcondition(trendisup, title='Up trend', message='Up trend') alertcondition(trendisdown, title='Down trend', message='Down trend')