커뮤니티

검색식 요청 드립니다.

프로필 이미지
느와르
2025-10-23 11:46:05
76
글번호 227223
답변완료

안녕하세요 항상 빠른 답변 감사 드립니다.
아래 식을 종목 검색식으로 요청 드립니다.
그럼 좋은 하루 되세요
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/ // © LuxAlgo //@version=5 indicator("Range Detector [LuxAlgo]", "LuxAlgo - Range Detector", overlay = true, max_boxes_count = 500, max_lines_count = 500) //------------------------------------------------------------------------------ //Settings //-----------------------------------------------------------------------------{ length = input.int(20, 'Minimum Range Length', minval = 2) mult = input.float(1., 'Range Width', minval = 0, step = 0.1) atrLen = input.int(500, 'ATR Length', minval = 1) //Style upCss = input(#089981, 'Broken Upward', group = 'Style') dnCss = input(#f23645, 'Broken Downward', group = 'Style') unbrokenCss = input(#2157f3, 'Unbroken', group = 'Style') //-----------------------------------------------------------------------------} //Detect and highlight ranges //-----------------------------------------------------------------------------{ //Ranges drawings var box bx = na var line lvl = na //Extensions var float max = na var float min = na var os = 0 color detect_css = na n = bar_index atr = ta.atr(atrLen) * mult ma = ta.sma(close, length) count = 0 for i = 0 to length-1 count += math.abs(close[i] - ma) > atr ? 1 : 0 if count == 0 and count[1] != count //Test for overlap and change coordinates if n[length] <= bx.get_right() max := math.max(ma + atr, bx.get_top()) min := math.min(ma - atr, bx.get_bottom()) //Box new coordinates bx.set_top(max) bx.set_rightbottom(n, min) bx.set_bgcolor(color.new(unbrokenCss, 80)) //Line new coordinates avg = math.avg(max, min) lvl.set_y1(avg) lvl.set_xy2(n, avg) lvl.set_color(unbrokenCss) else max := ma + atr min := ma - atr //Set new box and level bx := box.new(n[length], ma + atr, n, ma - atr, na , bgcolor = color.new(unbrokenCss, 80)) lvl := line.new(n[length], ma, n, ma , color = unbrokenCss , style = line.style_dotted) detect_css := color.new(color.gray, 80) os := 0 else if count == 0 bx.set_right(n) lvl.set_x2(n) //Set color if close > bx.get_top() bx.set_bgcolor(color.new(upCss, 80)) lvl.set_color(upCss) os := 1 else if close < bx.get_bottom() bx.set_bgcolor(color.new(dnCss, 80)) lvl.set_color(dnCss) os := -1 //-----------------------------------------------------------------------------} //Plots //-----------------------------------------------------------------------------{ //Range detection bgcolor bgcolor(detect_css) plot(max, 'Range Top' , max != max[1] ? na : os == 0 ? unbrokenCss : os == 1 ? upCss : dnCss) plot(min, 'Range Bottom' , min != min[1] ? na : os == 0 ? unbrokenCss : os == 1 ? upCss : dnCss) //-----------------------------------------------------------------------------}

종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-10-23 17:56:10

안녕하세요 예스스탁입니다. input : length(20); input : mult(1); input : atrLen(500); input : upCss(Violet),dnCss(Teal),unbrokenCss(Blue); var : bx(Nan),lvl(Nan),mx(nan),mn(Nan),os(0),detect_css(nan); var : alpha(0),r(0),i(0),n(0),a(0),mav(0),count(0); n = index; alpha = 1 / atrLen; r = IFf(IsNan(r[1]) == true , ma(TrueRange, atrLen) , alpha * TrueRange + (1 - alpha) * r[1]); a = r * mult; mav = ma(close, length); count = 0; for i = 0 to length - 1 { count = count + IFF(abs(close[i] - mav) > a , 1 , 0); } var : LeftDate(0),Lefttime(0); var : BxRight(0),BxTop(0),BxBottom(0); var : avgv(0),vtl(0),tx(0); if count == 0 and count[1] != count Then { if n[length] <= bxRight Then { mx = max(mav + a, bxtop); mn = min(mav - a, bxBottom); bxtop = mx; bxBottom = mn; bxRight = Index; //Line new coordinates avgv = avg(mx, mn); } else { mx = mav + a; mn = mav - a; //Set new box and level LeftDate = sDate[length]; Lefttime = sTime[length]; bxtop = mav+a; bxRight = Index; bxBottom = mav-a; avgv = mav; detect_css = gray; os = 0; } } else if count == 0 Then { //Box_SetEnd(bx,sDate,sTime,bxBottom); //TL_SetEnd(lvl,sDate,sTime,avgv); } //Set color if close > bxtop Then { os = 1; } else if close < bxbottom Then { os = -1; } if CrossUp(C,mx) Then { Find(1); } 즐거운 하루되세요