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)
Script de código aberto
Em verdadeiro espírito do TradingView, o criador deste script o tornou de código aberto, para que os traders possam revisar e verificar sua funcionalidade. Parabéns ao autor! Embora você possa usá-lo gratuitamente, lembre-se de que a republicação do código está sujeita às nossas Regras da Casa.
Aviso legal
As informações e publicações não se destinam a ser, e não constituem, conselhos ou recomendações financeiras, de investimento, comerciais ou de outro tipo fornecidos ou endossados pela TradingView. Leia mais nos Termos de Uso.
Script de código aberto
Em verdadeiro espírito do TradingView, o criador deste script o tornou de código aberto, para que os traders possam revisar e verificar sua funcionalidade. Parabéns ao autor! Embora você possa usá-lo gratuitamente, lembre-se de que a republicação do código está sujeita às nossas Regras da Casa.
Aviso legal
As informações e publicações não se destinam a ser, e não constituem, conselhos ou recomendações financeiras, de investimento, comerciais ou de outro tipo fornecidos ou endossados pela TradingView. Leia mais nos Termos de Uso.