커뮤니티

검색식 요청 드립니다.

프로필 이미지
느와르
2025-10-23 11:46:05
118
글번호 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); } 즐거운 하루되세요