커뮤니티

부탁드립니다.

프로필 이미지
다올
2023-07-17 18:57:53
1644
글번호 170693
답변완료
변형 부탁 드립니다. study("Consolidation Zones - Live", overlay = true, max_bars_back = 1100) prd = input(defval = 10, title="Loopback Period", minval = 2, maxval = 50) conslen = input(defval = 5, title="Min Consolidation Length", minval = 2, maxval = 20) paintcons = input(defval = true, title = "Paint Consolidation Area ") zonecol = input(defval = color.new(color.blue, 70), title = "Zone Color") float hb_ = highestbars(prd) == 0 ? high : na float lb_ = lowestbars(prd) == 0 ? low : na var int dir = 0 float zz = na float pp = na dir := iff(hb_ and na(lb_), 1, iff(lb_ and na(hb_), -1, dir)) if hb_ and lb_ if dir == 1 zz := hb_ else zz := lb_ else zz := iff(hb_, hb_, iff(lb_, lb_, na)) for x = 0 to 1000 if na(close) or dir != dir[x] break if zz[x] if na(pp) pp := zz[x] else if dir[x] == 1 and zz[x] > pp pp := zz[x] if dir[x] == -1 and zz[x] < pp pp := zz[x] var int conscnt = 0 var float condhigh = na var float condlow = na float H_ = highest(conslen) float L_ = lowest(conslen) var line upline = na var line dnline = na bool breakoutup = false bool breakoutdown = false if change(pp) if conscnt > conslen if pp > condhigh breakoutup := true if pp < condlow breakoutdown := true if conscnt > 0 and pp <= condhigh and pp >= condlow conscnt := conscnt + 1 else conscnt := 0 else conscnt := conscnt + 1 if conscnt >= conslen if conscnt == conslen condhigh := H_ condlow := L_ else line.delete(upline) line.delete(dnline) condhigh := max(condhigh, high) condlow := min(condlow, low) upline := line.new(bar_index, condhigh, bar_index - conscnt, condhigh, color = color.red, style = line.style_dashed) dnline := line.new(bar_index, condlow , bar_index - conscnt, condlow, color = color.lime, style = line.style_dashed) fill(plot(condhigh, color = na, style = plot.style_stepline), plot(condlow, color = na, style = plot.style_stepline), color = paintcons and conscnt > conslen ? zonecol : color.new(color.white, 100)) alertcondition(breakoutup, title='Breakout Up', message='Breakout Up') alertcondition(breakoutdown, title='Breakout Down', message='Breakout Down')
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-07-18 11:02:47

안녕하세요 예스스탁입니다. input : prd(10),conslen(5),paintcons(true),zonecol(blue); var : hb_(0),lb_(0),dir(0),zz(0),pp(0),x(0); hb_ = iff(nthhighestbar(1,h,prd) == 0 , high , 0); lb_ = iff(nthlowestbar(1,l,prd) == 0 , low , 0); zz = Nan; pp = Nan; dir = iff(nthhighestbar(1,h,prd) == 0, 1, iff(nthlowestbar(1,l,prd) == 0, -1, dir)); if hb_ > 0 and lb_ > 0 Then { if dir == 1 Then zz = hb_; else zz = lb_; } else { zz = iff(hb_ > 0, hb_, iff(lb_ > 0, lb_, nan)); } for x = 0 to 1000 { if dir != dir[x] Then { x = 1001; } if zz[x] Then { if IsNan(pp) == true Then { pp = zz[x]; } else { if dir[x] == 1 and zz[x] > pp Then pp = zz[x]; if dir[x] == -1 and zz[x] < pp Then pp = zz[x]; } } } var : conscnt(0),condhigh(0),condlow(0),H_(0),L_(0); H_ = highest(h,conslen); L_ = lowest(l,conslen); var : upline(0),dnline(0),breakoutup(false),breakoutdown(false); if pp != pp[1] Then { if conscnt > conslen Then { if pp > condhigh Then breakoutup = true; if pp < condlow then breakoutdown = true; } if conscnt > 0 and pp <= condhigh and pp >= condlow Then conscnt = conscnt + 1; else conscnt = 0; } else conscnt = conscnt + 1; if conscnt >= conslen Then { if conscnt == conslen Then { condhigh = H_; condlow = L_; upline = TL_New(sDate[conscnt],sTime[conscnt], condhigh, sDate,sTime, condhigh); TL_SetColor(upline,Red); dnline = TL_New(sDate[conscnt],sTime[conscnt], condlow , sDate,sTime, condlow); TL_SetColor(dnline,Blue); } else { condhigh = max(condhigh, high); condlow = min(condlow, low); } TL_SetEnd(upline,NextBarSdate,NextBarStime,condhigh); TL_SetEnd(dnline,NextBarSdate,NextBarStime,condlow); } 즐거운 하루되세요 > 다올 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 변형 부탁 드립니다. study("Consolidation Zones - Live", overlay = true, max_bars_back = 1100) prd = input(defval = 10, title="Loopback Period", minval = 2, maxval = 50) conslen = input(defval = 5, title="Min Consolidation Length", minval = 2, maxval = 20) paintcons = input(defval = true, title = "Paint Consolidation Area ") zonecol = input(defval = color.new(color.blue, 70), title = "Zone Color") float hb_ = highestbars(prd) == 0 ? high : na float lb_ = lowestbars(prd) == 0 ? low : na var int dir = 0 float zz = na float pp = na dir := iff(hb_ and na(lb_), 1, iff(lb_ and na(hb_), -1, dir)) if hb_ and lb_ if dir == 1 zz := hb_ else zz := lb_ else zz := iff(hb_, hb_, iff(lb_, lb_, na)) for x = 0 to 1000 if na(close) or dir != dir[x] break if zz[x] if na(pp) pp := zz[x] else if dir[x] == 1 and zz[x] > pp pp := zz[x] if dir[x] == -1 and zz[x] < pp pp := zz[x] var int conscnt = 0 var float condhigh = na var float condlow = na float H_ = highest(conslen) float L_ = lowest(conslen) var line upline = na var line dnline = na bool breakoutup = false bool breakoutdown = false if change(pp) if conscnt > conslen if pp > condhigh breakoutup := true if pp < condlow breakoutdown := true if conscnt > 0 and pp <= condhigh and pp >= condlow conscnt := conscnt + 1 else conscnt := 0 else conscnt := conscnt + 1 if conscnt >= conslen if conscnt == conslen condhigh := H_ condlow := L_ else line.delete(upline) line.delete(dnline) condhigh := max(condhigh, high) condlow := min(condlow, low) upline := line.new(bar_index, condhigh, bar_index - conscnt, condhigh, color = color.red, style = line.style_dashed) dnline := line.new(bar_index, condlow , bar_index - conscnt, condlow, color = color.lime, style = line.style_dashed) fill(plot(condhigh, color = na, style = plot.style_stepline), plot(condlow, color = na, style = plot.style_stepline), color = paintcons and conscnt > conslen ? zonecol : color.new(color.white, 100)) alertcondition(breakoutup, title='Breakout Up', message='Breakout Up') alertcondition(breakoutdown, title='Breakout Down', message='Breakout Down')