OPEN-SOURCE SCRIPT

TIME BOX

71
//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)

Thông báo miễn trừ trách nhiệm

Thông tin và các ấn phẩm này không nhằm mục đích, và không cấu thành, lời khuyên hoặc khuyến nghị về tài chính, đầu tư, giao dịch hay các loại khác do TradingView cung cấp hoặc xác nhận. Đọc thêm tại Điều khoản Sử dụng.