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)
오픈 소스 스크립트
트레이딩뷰의 진정한 정신에 따라, 이 스크립트의 작성자는 이를 오픈소스로 공개하여 트레이더들이 기능을 검토하고 검증할 수 있도록 했습니다. 작성자에게 찬사를 보냅니다! 이 코드는 무료로 사용할 수 있지만, 코드를 재게시하는 경우 하우스 룰이 적용된다는 점을 기억하세요.
면책사항
해당 정보와 게시물은 금융, 투자, 트레이딩 또는 기타 유형의 조언이나 권장 사항으로 간주되지 않으며, 트레이딩뷰에서 제공하거나 보증하는 것이 아닙니다. 자세한 내용은 이용 약관을 참조하세요.
오픈 소스 스크립트
트레이딩뷰의 진정한 정신에 따라, 이 스크립트의 작성자는 이를 오픈소스로 공개하여 트레이더들이 기능을 검토하고 검증할 수 있도록 했습니다. 작성자에게 찬사를 보냅니다! 이 코드는 무료로 사용할 수 있지만, 코드를 재게시하는 경우 하우스 룰이 적용된다는 점을 기억하세요.
면책사항
해당 정보와 게시물은 금융, 투자, 트레이딩 또는 기타 유형의 조언이나 권장 사항으로 간주되지 않으며, 트레이딩뷰에서 제공하거나 보증하는 것이 아닙니다. 자세한 내용은 이용 약관을 참조하세요.