OPEN-SOURCE SCRIPT
TIME BOX

//version=5
indicator("Time box", overlay=true)
// 데이터 호출
[d_high, d_low] = request.security(syminfo.tickerid, 'D', [high[1], low[1]], lookahead=barmerge.lookahead_on)
[h8_high, h8_low] = request.security(syminfo.tickerid, '480', [high[1], low[1]], lookahead=barmerge.lookahead_on)
[h4_high, h4_low] = request.security(syminfo.tickerid, '240', [high[1], low[1]], lookahead=barmerge.lookahead_on)
[h1_high, h1_low] = request.security(syminfo.tickerid, '60', [high[1], low[1]], lookahead=barmerge.lookahead_on)
// 중간값 계산
d_mid = (d_high + d_low) / 2
h8_mid = (h8_high + h8_low) / 2
h4_mid = (h4_high + h4_low) / 2
h1_mid = (h1_high + h1_low) / 2
// 사용자 옵션
group_daily = "───── 일봉 설정🕛─────"
show_dbox = input.bool(true, "일봉 박스 보이기", group=group_daily)
dbox_color = input.color(color.new(#f5f0f0, 90), "일봉 박스 배경색", group=group_daily)
dborder_color = input.color(color.rgb(248, 248, 248), "일봉 박스 테두리색", group=group_daily)
show_dmid = input.bool(true, "일봉 중간선 보이기", group=group_daily)
dmid_color = input.color(color.rgb(255, 255, 255), "일봉 중간선 색상", group=group_daily)
group_8h = "───── 8시간봉 설정🕗 ─────"
show_h8box = input.bool(true, "8H 박스 보이기", group=group_8h)
h8box_color = input.color(color.new(#e59696, 95), "8H 박스 배경색", group=group_8h)
h8border_color = input.color(color.rgb(235, 207, 207), "8H 박스 테두리색", group=group_8h)
show_h8mid = input.bool(true, "8H 중간선 보이기", group=group_8h)
h8mid_color = input.color(color.red, "8H 중간선 색상", group=group_8h)
group_4h = "───── 4시간봉 설정🕓 ─────"
show_h4box = input.bool(true, "4H 박스 보이기", group=group_4h)
h4box_color = input.color(color.new(#fac104, 95), "4H 박스 배경색", group=group_4h)
h4border_color = input.color(color.rgb(252, 235, 7), "4H 박스 테두리색", group=group_4h)
show_h4mid = input.bool(true, "4H 중간선 보이기", group=group_4h)
h4mid_color = input.color(color.yellow, "4H 중간선 색상", group=group_4h)
group_1h = "───── 1시간봉 설정🕐─────"
show_h1box = input.bool(true, "1H 박스 보이기", group=group_1h)
h1box_color = input.color(color.new(#fd0303, 95), "1H 박스 배경색", group=group_1h)
h1border_color = input.color(color.rgb(250, 5, 5), "1H 박스 테두리색", group=group_1h)
show_h1mid = input.bool(true, "1H 중간선 보이기", group=group_1h)
h1mid_color = input.color(color.rgb(255, 2, 2, 1), "1H 중간선 색상", group=group_1h)
// 박스 및 선 선언
var box dBox = na, var line dMidLine = na
var box h8Box = na, var line h8MidLine = na
var box h4Box = na, var line h4MidLine = na
var box h1Box = na, var line h1MidLine = na
// 박스 생성함수
f_drawBox(res, high, low, bgcol, bcol) =>
startTime = request.security(syminfo.tickerid, res, time[1], lookahead=barmerge.lookahead_on)
endTime = request.security(syminfo.tickerid, res, time, lookahead=barmerge.lookahead_on)
box.new(startTime, high, endTime, low, bgcolor=bgcol, border_color=bcol, extend=extend.right, xloc=xloc.bar_time)
// 중간선 생성함수
f_drawMid(res, mid, col) =>
startTime = request.security(syminfo.tickerid, res, time[1], lookahead=barmerge.lookahead_on)
endTime = request.security(syminfo.tickerid, res, time, lookahead=barmerge.lookahead_on)
line.new(startTime, mid, endTime, mid, color=col, style=line.style_dashed, extend=extend.right, xloc=xloc.bar_time)
// 타임프레임 변경 감지
newDay = ta.change(time('D'))
new8H = ta.change(time('480'))
new4H = ta.change(time('240'))
new1H = ta.change(time('60'))
if newDay
if not na(dBox)
box.delete(dBox)
if not na(dMidLine)
line.delete(dMidLine)
if show_dbox
dBox := f_drawBox('D', d_high, d_low, dbox_color, dborder_color)
if show_dmid
dMidLine := f_drawMid('D', d_mid, dmid_color)
if new8H
if not na(h8Box)
box.delete(h8Box)
if not na(h8MidLine)
line.delete(h8MidLine)
if show_h8box
h8Box := f_drawBox('480', h8_high, h8_low, h8box_color, h8border_color)
if show_h8mid
h8MidLine := f_drawMid('480', h8_mid, h8mid_color)
if new4H
if not na(h4Box)
box.delete(h4Box)
if not na(h4MidLine)
line.delete(h4MidLine)
if show_h4box
h4Box := f_drawBox('240', h4_high, h4_low, h4box_color, h4border_color)
if show_h4mid
h4MidLine := f_drawMid('240', h4_mid, h4mid_color)
if new1H
if not na(h1Box)
box.delete(h1Box)
if not na(h1MidLine)
line.delete(h1MidLine)
if show_h1box
h1Box := f_drawBox('60', h1_high, h1_low, h1box_color, h1border_color)
if show_h1mid
h1MidLine := f_drawMid('60', h1_mid, h1mid_color)
// 타임프레임 라벨 추가 함수 (이전 라벨 자동 삭제 추가)
var label dLabel = na
var label h8Label = na
var label h4Label = na
var label h1Label = na
f_drawLabel(yloc, txt, txt_color) =>
label.new(bar_index, yloc, txt, xloc=xloc.bar_index, color=color.new(color.white, 100), style=label.style_none, textcolor=txt_color, size=size.small)
// 새 박스 생성 시 이전 라벨 삭제 및 현재 박스에만 라벨 표시
if newDay and show_dbox
if not na(dLabel)
label.delete(dLabel)
dLabel := f_drawLabel(d_high, 'Daily', dborder_color)
if new8H and show_h8box
if not na(h8Label)
label.delete(h8Label)
h8Label := f_drawLabel(h8_high, '8H', h8border_color)
if new4H and show_h4box
if not na(h4Label)
label.delete(h4Label)
h4Label := f_drawLabel(h4_high, '4H', h4border_color)
if new1H and show_h1box
if not na(h1Label)
label.delete(h1Label)
h1Label := f_drawLabel(h1_high, '1H', h1border_color)
indicator("Time box", overlay=true)
// 데이터 호출
[d_high, d_low] = request.security(syminfo.tickerid, 'D', [high[1], low[1]], lookahead=barmerge.lookahead_on)
[h8_high, h8_low] = request.security(syminfo.tickerid, '480', [high[1], low[1]], lookahead=barmerge.lookahead_on)
[h4_high, h4_low] = request.security(syminfo.tickerid, '240', [high[1], low[1]], lookahead=barmerge.lookahead_on)
[h1_high, h1_low] = request.security(syminfo.tickerid, '60', [high[1], low[1]], lookahead=barmerge.lookahead_on)
// 중간값 계산
d_mid = (d_high + d_low) / 2
h8_mid = (h8_high + h8_low) / 2
h4_mid = (h4_high + h4_low) / 2
h1_mid = (h1_high + h1_low) / 2
// 사용자 옵션
group_daily = "───── 일봉 설정🕛─────"
show_dbox = input.bool(true, "일봉 박스 보이기", group=group_daily)
dbox_color = input.color(color.new(#f5f0f0, 90), "일봉 박스 배경색", group=group_daily)
dborder_color = input.color(color.rgb(248, 248, 248), "일봉 박스 테두리색", group=group_daily)
show_dmid = input.bool(true, "일봉 중간선 보이기", group=group_daily)
dmid_color = input.color(color.rgb(255, 255, 255), "일봉 중간선 색상", group=group_daily)
group_8h = "───── 8시간봉 설정🕗 ─────"
show_h8box = input.bool(true, "8H 박스 보이기", group=group_8h)
h8box_color = input.color(color.new(#e59696, 95), "8H 박스 배경색", group=group_8h)
h8border_color = input.color(color.rgb(235, 207, 207), "8H 박스 테두리색", group=group_8h)
show_h8mid = input.bool(true, "8H 중간선 보이기", group=group_8h)
h8mid_color = input.color(color.red, "8H 중간선 색상", group=group_8h)
group_4h = "───── 4시간봉 설정🕓 ─────"
show_h4box = input.bool(true, "4H 박스 보이기", group=group_4h)
h4box_color = input.color(color.new(#fac104, 95), "4H 박스 배경색", group=group_4h)
h4border_color = input.color(color.rgb(252, 235, 7), "4H 박스 테두리색", group=group_4h)
show_h4mid = input.bool(true, "4H 중간선 보이기", group=group_4h)
h4mid_color = input.color(color.yellow, "4H 중간선 색상", group=group_4h)
group_1h = "───── 1시간봉 설정🕐─────"
show_h1box = input.bool(true, "1H 박스 보이기", group=group_1h)
h1box_color = input.color(color.new(#fd0303, 95), "1H 박스 배경색", group=group_1h)
h1border_color = input.color(color.rgb(250, 5, 5), "1H 박스 테두리색", group=group_1h)
show_h1mid = input.bool(true, "1H 중간선 보이기", group=group_1h)
h1mid_color = input.color(color.rgb(255, 2, 2, 1), "1H 중간선 색상", group=group_1h)
// 박스 및 선 선언
var box dBox = na, var line dMidLine = na
var box h8Box = na, var line h8MidLine = na
var box h4Box = na, var line h4MidLine = na
var box h1Box = na, var line h1MidLine = na
// 박스 생성함수
f_drawBox(res, high, low, bgcol, bcol) =>
startTime = request.security(syminfo.tickerid, res, time[1], lookahead=barmerge.lookahead_on)
endTime = request.security(syminfo.tickerid, res, time, lookahead=barmerge.lookahead_on)
box.new(startTime, high, endTime, low, bgcolor=bgcol, border_color=bcol, extend=extend.right, xloc=xloc.bar_time)
// 중간선 생성함수
f_drawMid(res, mid, col) =>
startTime = request.security(syminfo.tickerid, res, time[1], lookahead=barmerge.lookahead_on)
endTime = request.security(syminfo.tickerid, res, time, lookahead=barmerge.lookahead_on)
line.new(startTime, mid, endTime, mid, color=col, style=line.style_dashed, extend=extend.right, xloc=xloc.bar_time)
// 타임프레임 변경 감지
newDay = ta.change(time('D'))
new8H = ta.change(time('480'))
new4H = ta.change(time('240'))
new1H = ta.change(time('60'))
if newDay
if not na(dBox)
box.delete(dBox)
if not na(dMidLine)
line.delete(dMidLine)
if show_dbox
dBox := f_drawBox('D', d_high, d_low, dbox_color, dborder_color)
if show_dmid
dMidLine := f_drawMid('D', d_mid, dmid_color)
if new8H
if not na(h8Box)
box.delete(h8Box)
if not na(h8MidLine)
line.delete(h8MidLine)
if show_h8box
h8Box := f_drawBox('480', h8_high, h8_low, h8box_color, h8border_color)
if show_h8mid
h8MidLine := f_drawMid('480', h8_mid, h8mid_color)
if new4H
if not na(h4Box)
box.delete(h4Box)
if not na(h4MidLine)
line.delete(h4MidLine)
if show_h4box
h4Box := f_drawBox('240', h4_high, h4_low, h4box_color, h4border_color)
if show_h4mid
h4MidLine := f_drawMid('240', h4_mid, h4mid_color)
if new1H
if not na(h1Box)
box.delete(h1Box)
if not na(h1MidLine)
line.delete(h1MidLine)
if show_h1box
h1Box := f_drawBox('60', h1_high, h1_low, h1box_color, h1border_color)
if show_h1mid
h1MidLine := f_drawMid('60', h1_mid, h1mid_color)
// 타임프레임 라벨 추가 함수 (이전 라벨 자동 삭제 추가)
var label dLabel = na
var label h8Label = na
var label h4Label = na
var label h1Label = na
f_drawLabel(yloc, txt, txt_color) =>
label.new(bar_index, yloc, txt, xloc=xloc.bar_index, color=color.new(color.white, 100), style=label.style_none, textcolor=txt_color, size=size.small)
// 새 박스 생성 시 이전 라벨 삭제 및 현재 박스에만 라벨 표시
if newDay and show_dbox
if not na(dLabel)
label.delete(dLabel)
dLabel := f_drawLabel(d_high, 'Daily', dborder_color)
if new8H and show_h8box
if not na(h8Label)
label.delete(h8Label)
h8Label := f_drawLabel(h8_high, '8H', h8border_color)
if new4H and show_h4box
if not na(h4Label)
label.delete(h4Label)
h4Label := f_drawLabel(h4_high, '4H', h4border_color)
if new1H and show_h1box
if not na(h1Label)
label.delete(h1Label)
h1Label := f_drawLabel(h1_high, '1H', h1border_color)
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.