You are on page 1of 15

//@version=4

study("Levels", shorttitle = "Levels", overlay = true)

[daily_time, daily_open] = security(syminfo.tickerid, 'D', [time, open], lookahead


= barmerge.lookahead_on)
[dailyh_time, dailyh_open] = security(syminfo.tickerid, 'D', [time[1], high[1]],
lookahead = barmerge.lookahead_on)
[dailyl_time, dailyl_open] = security(syminfo.tickerid, 'D', [time[1], low[1]],
lookahead = barmerge.lookahead_on)

[weekly_time, weekly_open] = security(syminfo.tickerid, 'W', [time, open],


lookahead = barmerge.lookahead_on)
[weeklyh_time, weeklyh_open] = security(syminfo.tickerid, 'W', [time[1], high[1]],
lookahead = barmerge.lookahead_on)
[weeklyl_time, weeklyl_open] = security(syminfo.tickerid, 'W', [time[1], low[1]],
lookahead = barmerge.lookahead_on)

[monthly_time, monthly_open] = security(syminfo.tickerid, 'M', [time, open],


lookahead = barmerge.lookahead_on)
[monthlyh_time, monthlyh_open] = security(syminfo.tickerid, 'M', [time[1],
high[1]], lookahead = barmerge.lookahead_on)
[monthlyl_time, monthlyl_open] = security(syminfo.tickerid, 'M', [time[1], low[1]],
lookahead = barmerge.lookahead_on)

[intra_time, intra_open] = security(syminfo.tickerid, '240', [time, open],


lookahead = barmerge.lookahead_on)
[intrah_time, intrah_open] = security(syminfo.tickerid, '240', [time[1], high[1]],
lookahead = barmerge.lookahead_on)
[intral_time, intral_open] = security(syminfo.tickerid, '240', [time[1], low[1]],
lookahead = barmerge.lookahead_on)
//------------------------------ Inputs -------------------------------

var is_daily_enabled = input(defval = true, title = "Daily Open", type =


input.bool, group = "Daily")
var is_dailyh_enabled = input(defval = true, title = "Previous Daily High", type =
input.bool, group = "Daily")
var is_dailyl_enabled = input(defval = true, title = "Previous Daily Low", type =
input.bool, group = "Daily", inline = "DHL")
var is_dailym_enabled = input(defval = false, title = "Previous Daily Mid", type =
input.bool, group = "Daily", inline = "DHL")

var is_weekly_enabled = input(defval = true, title = "Weekly Open", type =


input.bool, group = "Weekly")
var is_weeklyh_enabled = input(defval = true, title = "Previous Weekly High", type
= input.bool, group = "Weekly", inline = "WHL")
var is_weeklyl_enabled = input(defval = true, title = "Previous Weekly Low", type =
input.bool, group = "Weekly", inline = "WHL")

var is_monthly_enabled = input(defval = true, title = "Monthly Open", type =


input.bool, group = "Monthly")
var is_monthlyh_enabled = input(defval = true, title = "Previous Monthly High",
type = input.bool, group = "Monthly", inline = "WHL")
var is_monthlyl_enabled = input(defval = true, title = "Previous Monthly Low", type
= input.bool, group = "Monthly", inline = "WHL")

var is_intra_enabled = input(defval = false, title = "4H Open", type = input.bool,


group = "4H")
var is_intrah_enabled = input(defval = false, title = "Previous 4H High", type =
input.bool, group = "4H", inline = "4HL")
var is_intral_enabled = input(defval = false, title = "Previous 4H Low", type =
input.bool, group = "4H", inline = "4HL")
var is_intram_enabled = input(defval = false, title = "Previous 4H Mid", type =
input.bool, group = "4H", inline = "4HL")

transpa = color.new(color.white,80)
transpa2 = color.new(color.white,20)

DailyColor1 = input(title="Daily Color1", type = input.color, defval = transpa,


group = "Daily")
DailyColor = input(title="Daily Color", type = input.color, defval = transpa2,
group = "Daily")
WeeklyColor = input(title="Weekly Color", type = input.color, defval = transpa2,
group = "Weekly")
MonthlyColor = input(title="Monthly Color", type = input.color, defval = transpa2,
group = "Monthly")
IntraColor = input(title="4H Color", type = input.color, defval = transpa2, group
= "4H")

var show_tails = input(defval = false, title = "Show Tails", type = input.bool)

// var color_input = input(defval = "Gray",


// title = "Color",
// options = ["Aqua", "Black", "Blue", "Fuchsia", "Gray", "Green", "Lime",
"Maroon", "Navy", "Olive", "Purple", "Red", "Silver", "Teal", "White", "Yellow",
"Custom Orange"],
// type = input.string)

//------------------------------ Styling ------------------------------

//------------------------------------------------------
// var user_color = color_input == "Aqua" ? color.aqua :
// color_input == "Black" ? color.black :
// color_input == "Blue" ? color.blue :
// color_input == "Fuchsia" ? color.fuchsia :
// color_input == "Green" ? color.green :
// color_input == "Lime" ? color.lime :
// color_input == "Maroon" ? color.maroon :
// color_input == "Navy" ? color.navy :
// color_input == "Olive" ? color.olive :
// color_input == "Purple" ? color.purple :
// color_input == "Red" ? color.red :
// color_input == "Silver" ? color.silver :
// color_input == "Teal" ? color.teal :
// color_input == "White" ? color.white :
// color_input == "Yellow" ? color.yellow :
// color_input == "Custom Orange" ? #ffb347:
// #ffb347
//
var DEFAULT_LINE_WIDTH = 1
var DEFAULT_TAIL_WIDTH = 1
// var DEFAULT_LINE_COLOR = user_color
// var DEFAULT_LABEL_COLOR = user_color
// var DEFAULT_TAIL_COLOR = user_color
var DEFAULT_LABEL_SIZE = size.small
var DEFAULT_LABEL_STYLE = label.style_none
var DEFAULT_TAIL_STYLE = line.style_dotted
var DEFAULT_EXTEND_RIGHT = 80

var daily_line_color = DailyColor1


var daily_line_width = DEFAULT_LINE_WIDTH
var daily_label_color = DailyColor
var daily_label_size = DEFAULT_LABEL_SIZE
var daily_label_style = DEFAULT_LABEL_STYLE
var daily_tail_width = DEFAULT_LINE_WIDTH
var daily_tail_color = DailyColor
var daily_tail_style = DEFAULT_TAIL_STYLE
var daily_extend_right = DEFAULT_EXTEND_RIGHT

var dailyh_line_color = DailyColor1


var dailyh_line_width = DEFAULT_LINE_WIDTH
var dailyh_label_color = DailyColor
var dailyh_label_size = DEFAULT_LABEL_SIZE
var dailyh_label_style = DEFAULT_LABEL_STYLE
var dailyh_tail_width = DEFAULT_LINE_WIDTH
var dailyh_tail_color = DailyColor
var dailyh_tail_style = DEFAULT_TAIL_STYLE
var dailyh_extend_right = DEFAULT_EXTEND_RIGHT

var dailyl_line_color = DailyColor1


var dailyl_line_width = DEFAULT_LINE_WIDTH
var dailyl_label_color = DailyColor
var dailyl_label_size = DEFAULT_LABEL_SIZE
var dailyl_label_style = DEFAULT_LABEL_STYLE
var dailyl_tail_width = DEFAULT_LINE_WIDTH
var dailyl_tail_color = DailyColor
var dailyl_tail_style = DEFAULT_TAIL_STYLE
var dailyl_extend_right = DEFAULT_EXTEND_RIGHT

var weekly_line_color = DailyColor1


var weekly_line_width = DEFAULT_LINE_WIDTH
var weekly_label_color = WeeklyColor
var weekly_label_size = DEFAULT_LABEL_SIZE
var weekly_label_style = DEFAULT_LABEL_STYLE
var weekly_tail_width = DEFAULT_LINE_WIDTH
var weekly_tail_color = WeeklyColor
var weekly_tail_style = DEFAULT_TAIL_STYLE
var weekly_extend_right = DEFAULT_EXTEND_RIGHT

var monthly_line_color = DailyColor1


var monthly_line_width = DEFAULT_LINE_WIDTH
var monthly_label_color = MonthlyColor
var monthly_label_size = DEFAULT_LABEL_SIZE
var monthly_label_style = DEFAULT_LABEL_STYLE
var monthly_tail_width = DEFAULT_LINE_WIDTH
var monthly_tail_color = MonthlyColor
var monthly_tail_style = DEFAULT_TAIL_STYLE
var monthly_extend_right = DEFAULT_EXTEND_RIGHT

var intra_line_color = DailyColor1


var intra_line_width = DEFAULT_LINE_WIDTH
var intra_label_color = IntraColor
var intra_label_size = DEFAULT_LABEL_SIZE
var intra_label_style = DEFAULT_LABEL_STYLE
var intra_tail_width = DEFAULT_LINE_WIDTH
var intra_tail_color = IntraColor
var intra_tail_style = DEFAULT_TAIL_STYLE
var intra_extend_right = DEFAULT_EXTEND_RIGHT

var intrah_line_color = DailyColor1


var intrah_line_width = DEFAULT_LINE_WIDTH
var intrah_label_color = IntraColor
var intrah_label_size = DEFAULT_LABEL_SIZE
var intrah_label_style = DEFAULT_LABEL_STYLE
var intrah_tail_width = DEFAULT_LINE_WIDTH
var intrah_tail_color = IntraColor
var intrah_tail_style = DEFAULT_TAIL_STYLE
var intrah_extend_right = DEFAULT_EXTEND_RIGHT

var intral_line_color = DailyColor1


var intral_line_width = DEFAULT_LINE_WIDTH
var intral_label_color = IntraColor
var intral_label_size = DEFAULT_LABEL_SIZE
var intral_label_style = DEFAULT_LABEL_STYLE
var intral_tail_width = DEFAULT_LINE_WIDTH
var intral_tail_color = IntraColor
var intral_tail_style = DEFAULT_TAIL_STYLE
var intral_extend_right = DEFAULT_EXTEND_RIGHT
var intram_extend_right = DEFAULT_EXTEND_RIGHT

//------------------------------ Plotting ------------------------------

var can_show_daily = is_daily_enabled and timeframe.isintraday


var can_show_weekly = is_weekly_enabled and not timeframe.isweekly and not
timeframe.ismonthly
var can_show_monthly = is_monthly_enabled and not timeframe.ismonthly

get_limit_right(bars) =>
timenow + (time - time[1]) * bars

// the following code doesn't need to be processed on every candle


if barstate.islast
is_weekly_open = dayofweek == dayofweek.monday
is_monthly_open = dayofmonth == 1
can_draw_daily = (is_weekly_enabled ? not is_weekly_open : true) and
(is_monthly_enabled ? not is_monthly_open : true)
can_draw_weekly = is_monthly_enabled ? not (is_monthly_open and
is_weekly_open) : true
can_draw_intra = is_intra_enabled
can_draw_intrah = is_intrah_enabled
can_draw_intral = is_intral_enabled
can_draw_intram = is_intram_enabled

//////////////////////////////////////////////////////////////////////////////////
if can_draw_intra
intra_limit_right = get_limit_right(intra_extend_right)

if show_tails
var intra_tail = line.new(x1 = time,
x2 = intra_limit_right,
y1 = intra_open,
y2 = intra_open,
color = intra_tail_color,
style = intra_tail_style,
width = intra_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(intra_tail, time)
line.set_x2(intra_tail, intra_limit_right)
line.set_y1(intra_tail, intra_open)
line.set_y2(intra_tail, intra_open)

var intra_line = line.new(x1 = intra_time,


x2 = intra_limit_right,
y1 = intra_open,
y2 = intra_open,
color = intra_line_color,
width = intra_line_width,
xloc = xloc.bar_time)
var intra_label = label.new(x = intra_limit_right,
y = intra_open,
text = "4H OPEN "+ tostring(intra_open),
style = intra_label_style,
textcolor = intra_label_color,
size = intra_label_size,
xloc = xloc.bar_time)

line.set_x1(intra_line, intra_time)
line.set_x2(intra_line, intra_limit_right)
line.set_y1(intra_line, intra_open)
line.set_y2(intra_line, intra_open)
label.set_x(intra_label, intra_limit_right)
label.set_y(intra_label, intra_open)

//////////////////////////////////////////////////////////////////////////////////
//HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH HIGH
if can_draw_intrah
intrah_limit_right = get_limit_right(intrah_extend_right)

if show_tails
var intrah_tail = line.new(x1 = time,
x2 = intrah_limit_right,
y1 = intrah_open,
y2 = intrah_open,
color = intrah_tail_color,
style = intrah_tail_style,
width = intrah_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(intrah_tail, time)
line.set_x2(intrah_tail, intrah_limit_right)
line.set_y1(intrah_tail, intrah_open)
line.set_y2(intrah_tail, intrah_open)

var intrah_line = line.new(x1 = intrah_time,


x2 = intrah_limit_right,
y1 = intrah_open,
y2 = intrah_open,
color = intrah_line_color,
width = intrah_line_width,
xloc = xloc.bar_time)
var intrah_label = label.new(x = intrah_limit_right,
y = intrah_open,
text = "Previous 4H HIGH "+ tostring(intrah_open),
style = intrah_label_style,
textcolor = intrah_label_color,
size = intrah_label_size,
xloc = xloc.bar_time)

line.set_x1(intrah_line, intrah_time)
line.set_x2(intrah_line, intrah_limit_right)
line.set_y1(intrah_line, intrah_open)
line.set_y2(intrah_line, intrah_open)
label.set_x(intrah_label, intrah_limit_right)
label.set_y(intrah_label, intrah_open)

//////////////////////////////////////////////////////////////////////////////////
//LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW LOW
if can_draw_intral
intral_limit_right = get_limit_right(intral_extend_right)

if show_tails
var intral_tail = line.new(x1 = time,
x2 = intral_limit_right,
y1 = intral_open,
y2 = intral_open,
color = intral_tail_color,
style = intral_tail_style,
width = intral_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(intral_tail, time)
line.set_x2(intral_tail, intral_limit_right)
line.set_y1(intral_tail, intral_open)
line.set_y2(intral_tail, intral_open)

var intral_line = line.new(x1 = intral_time,


x2 = intral_limit_right,
y1 = intral_open,
y2 = intral_open,
color = intral_line_color,
width = intral_line_width,
xloc = xloc.bar_time)
var intral_label = label.new(x = intral_limit_right,
y = intral_open,
text = "Previous 4H LOW "+ tostring(intral_open),
style = intral_label_style,
textcolor = intral_label_color,
size = intral_label_size,
xloc = xloc.bar_time)

line.set_x1(intral_line, intral_time)
line.set_x2(intral_line, intral_limit_right)
line.set_y1(intral_line, intral_open)
line.set_y2(intral_line, intral_open)
label.set_x(intral_label, intral_limit_right)
label.set_y(intral_label, intral_open)

///////////////////////////////////////////////////////////////////////////////

if can_draw_intram
intram_limit_right = get_limit_right(intram_extend_right)
intram_time = intrah_time
intram_open = (intral_open + intrah_open ) / 2

var intram_line = line.new(x1 = intram_time,


x2 = intram_limit_right,
y1 = intram_open,
y2 = intram_open,
color = intral_line_color,
width = intral_line_width,
xloc = xloc.bar_time)
var intram_label = label.new(x = intram_limit_right,
y = intram_open,
text = "Previous 4H MID "+ tostring(intram_open),
style = intral_label_style,
textcolor = intral_label_color,
size = intral_label_size,
xloc = xloc.bar_time)
line.set_x1(intram_line, intram_time)
line.set_x2(intram_line, intram_limit_right)
line.set_y1(intram_line, intram_open)
line.set_y2(intram_line, intram_open)
label.set_x(intram_label, intram_limit_right)
label.set_y(intram_label, intram_open)
//

//////////////////////////////////////////////////////////////////////////////////
////////////////////////DAILY OPEN DAILY OPEN DAILY OPEN DAILY OPEN DAILY OPEN
DAILY OPEN DAILY OPEN

if can_show_daily and can_draw_daily


daily_limit_right = get_limit_right(daily_extend_right)

// draw tails before lines for better visual


if show_tails
var daily_tail = line.new(x1 = time,
x2 = daily_limit_right,
y1 = daily_open,
y2 = daily_open,
color = daily_tail_color,
style = daily_tail_style,
width = daily_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(daily_tail, time)
line.set_x2(daily_tail, daily_limit_right)
line.set_y1(daily_tail, daily_open)
line.set_y2(daily_tail, daily_open)

var daily_line = line.new(x1 = daily_time,


x2 = daily_limit_right,
y1 = daily_open,
y2 = daily_open,
color = daily_line_color,
width = daily_line_width,
xloc = xloc.bar_time)
var daily_label = label.new(x = daily_limit_right,
y = daily_open,
text = "dOpen "+ tostring(daily_open),
style = daily_label_style,
textcolor = daily_label_color,
size = daily_label_size,
xloc = xloc.bar_time)

line.set_x1(daily_line, daily_time)
line.set_x2(daily_line, daily_limit_right)
line.set_y1(daily_line, daily_open)
line.set_y2(daily_line, daily_open)
label.set_x(daily_label, daily_limit_right)
label.set_y(daily_label, daily_open)

//////////////////////////////////////////////////////////////////////////////////
//////////////////DAILY HIGH DAILY HIGH DAILY HIGH DAILY HIGH DAILY HIGH DAILY HIGH
DAILY HIGH

if is_dailyh_enabled
dailyh_limit_right = get_limit_right(dailyh_extend_right)

// draw tails before lines for better visual


if show_tails
var dailyh_tail = line.new(x1 = time,
x2 = dailyh_limit_right,
y1 = dailyh_open,
y2 = dailyh_open,
color = dailyh_tail_color,
style = dailyh_tail_style,
width = dailyh_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(dailyh_tail, time)
line.set_x2(dailyh_tail, dailyh_limit_right)
line.set_y1(dailyh_tail, dailyh_open)
line.set_y2(dailyh_tail, dailyh_open)

var dailyh_line = line.new(x1 = dailyh_time,


x2 = dailyh_limit_right,
y1 = dailyh_open,
y2 = dailyh_open,
color = dailyh_line_color,
width = dailyh_line_width,
xloc = xloc.bar_time)
var dailyh_label = label.new(x = dailyh_limit_right,
y = dailyh_open,
text = "pdHigh "+ tostring(dailyh_open),
style = dailyh_label_style,
textcolor = dailyh_label_color,
size = dailyh_label_size,
xloc = xloc.bar_time)

line.set_x1(dailyh_line, dailyh_time)
line.set_x2(dailyh_line, dailyh_limit_right)
line.set_y1(dailyh_line, dailyh_open)
line.set_y2(dailyh_line, dailyh_open)
label.set_x(dailyh_label, dailyh_limit_right)
label.set_y(dailyh_label, dailyh_open)

//////////////////////////////////////////////////////////////////////////////////
//////////////////DAILY LOW DAILY LOW DAILY LOW DAILY LOW DAILY LOW DAILY LOW DAILY
LOW DAILY LOW

if is_dailyl_enabled
dailyl_limit_right = get_limit_right(dailyl_extend_right)

// draw tails before lines for better visual


if show_tails
var dailyl_tail = line.new(x1 = time,
x2 = dailyl_limit_right,
y1 = dailyl_open,
y2 = dailyl_open,
color = dailyl_tail_color,
style = dailyl_tail_style,
width = dailyl_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(dailyl_tail, time)
line.set_x2(dailyl_tail, dailyl_limit_right)
line.set_y1(dailyl_tail, dailyl_open)
line.set_y2(dailyl_tail, dailyl_open)

var dailyl_line = line.new(x1 = dailyl_time,


x2 = dailyl_limit_right,
y1 = dailyl_open,
y2 = dailyl_open,
color = dailyl_line_color,
width = dailyl_line_width,
xloc = xloc.bar_time)
var dailyl_label = label.new(x = dailyl_limit_right,
y = dailyl_open,
text = "pdLow "+ tostring(dailyl_open),
style = dailyl_label_style,
textcolor = dailyl_label_color,
size = dailyl_label_size,
xloc = xloc.bar_time)

line.set_x1(dailyl_line, dailyl_time)
line.set_x2(dailyl_line, dailyl_limit_right)
line.set_y1(dailyl_line, dailyl_open)
line.set_y2(dailyl_line, dailyl_open)
label.set_x(dailyl_label, dailyl_limit_right)
label.set_y(dailyl_label, dailyl_open)
////////////////////////////////////////////////////////////////////////////////

if is_dailym_enabled
dailym_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
dailym_time = dailyh_time
dailym_open = (dailyl_open + dailyh_open ) / 2

var dailym_line = line.new(x1 = dailym_time,


x2 = dailym_limit_right,
y1 = dailym_open,
y2 = dailym_open,
color = dailyl_line_color,
width = dailyl_line_width,
xloc = xloc.bar_time)
var dailym_label = label.new(x = dailym_limit_right,
y = dailym_open,
text = "Previous Day MID "+ tostring(dailym_open),
style = dailyl_label_style,
textcolor = dailyl_label_color,
size = dailyl_label_size,
xloc = xloc.bar_time)
line.set_x1(dailym_line, dailym_time)
line.set_x2(dailym_line, dailym_limit_right)
line.set_y1(dailym_line, dailym_open)
line.set_y2(dailym_line, dailym_open)
label.set_x(dailym_label, dailym_limit_right)
label.set_y(dailym_label, dailym_open)
//

//////////////////////////////////////////////////////////////////////////////////

if can_show_weekly and can_draw_weekly


weekly_limit_right = get_limit_right(weekly_extend_right)

if show_tails
var weekly_tail = line.new(x1 = time,
x2 = weekly_limit_right,
y1 = weekly_open,
y2 = weekly_open,
color = weekly_tail_color,
style = weekly_tail_style,
width = weekly_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(weekly_tail, time)
line.set_x2(weekly_tail, weekly_limit_right)
line.set_y1(weekly_tail, weekly_open)
line.set_y2(weekly_tail, weekly_open)

var weekly_line = line.new(x1 = weekly_time,


x2 = weekly_limit_right,
y1 = weekly_open,
y2 = weekly_open,
color = weekly_line_color,
width = weekly_line_width,
xloc = xloc.bar_time)
var weekly_label = label.new(x = weekly_limit_right,
y = weekly_open,
text = "wOpen "+ tostring(weekly_open),
style = weekly_label_style,
textcolor = weekly_label_color,
size = monthly_label_size,
xloc = xloc.bar_time)

line.set_x1(weekly_line, weekly_time)
line.set_x2(weekly_line, weekly_limit_right)
line.set_y1(weekly_line, weekly_open)
line.set_y2(weekly_line, weekly_open)
label.set_x(weekly_label, weekly_limit_right)
label.set_y(weekly_label, weekly_open)

// the weekly open can be the daily open too (monday)


// only the weekly will be draw, in these case we update its label
if is_weekly_open and can_show_daily
label.set_text(weekly_label, "DO / WO " + tostring(weekly_open))

//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
WEEKLY HIGH WEEKLY HIGH WEEKLY HIGH

if is_weeklyh_enabled
weeklyh_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)

if show_tails
var weeklyh_tail = line.new(x1 = time,
x2 = weeklyh_limit_right,
y1 = weeklyh_open,
y2 = weeklyh_open,
color = weekly_tail_color,
style = weekly_tail_style,
width = weekly_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(weeklyh_tail, time)
line.set_x2(weeklyh_tail, weeklyh_limit_right)
line.set_y1(weeklyh_tail, weeklyh_open)
line.set_y2(weeklyh_tail, weeklyh_open)

var weeklyh_line = line.new(x1 = weeklyh_time,


x2 = weeklyh_limit_right,
y1 = weeklyh_open,
y2 = weeklyh_open,
color = weekly_line_color,
width = weekly_line_width,
xloc = xloc.bar_time)
var weeklyh_label = label.new(x = weeklyh_limit_right,
y = weeklyh_open,
text = "pwHigh "+ tostring(weeklyh_open),
style = weekly_label_style,
textcolor = weekly_label_color,
size = weekly_label_size,
xloc = xloc.bar_time)

line.set_x1(weeklyh_line, weeklyh_time)
line.set_x2(weeklyh_line, weeklyh_limit_right)
line.set_y1(weeklyh_line, weeklyh_open)
line.set_y2(weeklyh_line, weeklyh_open)
label.set_x(weeklyh_label, weeklyh_limit_right)
label.set_y(weeklyh_label, weeklyh_open)

//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
WEEKLY LOW WEEKLY LOW WEEKLY LOW

if is_weeklyl_enabled
weeklyl_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)

if show_tails
var weeklyl_tail = line.new(x1 = time,
x2 = weeklyl_limit_right,
y1 = weeklyl_open,
y2 = weeklyl_open,
color = weekly_tail_color,
style = weekly_tail_style,
width = weekly_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(weeklyl_tail, time)
line.set_x2(weeklyl_tail, weeklyl_limit_right)
line.set_y1(weeklyl_tail, weeklyl_open)
line.set_y2(weeklyl_tail, weeklyl_open)

var weeklyl_line = line.new(x1 = weekly_time,


x2 = weeklyl_limit_right,
y1 = weekly_open,
y2 = weekly_open,
color = weekly_line_color,
width = weekly_line_width,
xloc = xloc.bar_time)
var weeklyl_label = label.new(x = weeklyl_limit_right,
y = weeklyl_open,
text = "pwLow "+ tostring(weeklyl_open),
style = weekly_label_style,
textcolor = weekly_label_color,
size = weekly_label_size,
xloc = xloc.bar_time)

line.set_x1(weeklyl_line, weeklyl_time)
line.set_x2(weeklyl_line, weeklyl_limit_right)
line.set_y1(weeklyl_line, weeklyl_open)
line.set_y2(weeklyl_line, weeklyl_open)
label.set_x(weeklyl_label, weeklyl_limit_right)
label.set_y(weeklyl_label, weeklyl_open)

// the weekly open can be the daily open too (monday)


// only the weekly will be draw, in these case we update its label
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////
Monthly LOW LOW LOW

if is_monthlyl_enabled
monthlyl_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)

if show_tails
var monthlyl_tail = line.new(x1 = time,
x2 = monthlyl_limit_right,
y1 = monthlyl_open,
y2 = monthlyl_open,
color = monthly_tail_color,
style = monthly_tail_style,
width = monthly_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(monthlyl_tail, time)
line.set_x2(monthlyl_tail, monthlyl_limit_right)
line.set_y1(monthlyl_tail, monthlyl_open)
line.set_y2(monthlyl_tail, monthlyl_open)

var monthlyl_line = line.new(x1 = monthly_time,


x2 = monthlyl_limit_right,
y1 = monthlyl_open,
y2 = monthlyl_open,
color = monthly_line_color,
width = monthly_line_width,
xloc = xloc.bar_time)
var monthlyl_label = label.new(x = monthlyl_limit_right,
y = monthlyl_open,
text = "pmLow "+ tostring(monthly_open),
style = monthly_label_style,
textcolor = monthly_label_color,
size = monthly_label_size,
xloc = xloc.bar_time)

line.set_x1(monthlyl_line, monthlyl_time)
line.set_x2(monthlyl_line, monthlyl_limit_right)
line.set_y1(monthlyl_line, monthlyl_open)
line.set_y2(monthlyl_line, monthlyl_open)
label.set_x(monthlyl_label, monthlyl_limit_right)
label.set_y(monthlyl_label, monthlyl_open)

// the weekly open can be the daily open too (monday)


// only the weekly will be draw, in these case we update its label

//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
MONTHLY HIGH HIGH HIGH

if is_monthlyh_enabled
monthlyh_limit_right = get_limit_right(DEFAULT_EXTEND_RIGHT)
if show_tails
var monthlyh_tail = line.new(x1 = time,
x2 = monthlyh_limit_right,
y1 = monthlyh_open,
y2 = monthlyh_open,
color = monthly_tail_color,
style = monthly_tail_style,
width = monthly_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(monthlyh_tail, time)
line.set_x2(monthlyh_tail, monthlyh_limit_right)
line.set_y1(monthlyh_tail, monthlyh_open)
line.set_y2(monthlyh_tail, monthlyh_open)

var monthlyh_line = line.new(x1 = monthly_time,


x2 = monthlyh_limit_right,
y1 = monthlyh_open,
y2 = monthlyh_open,
color = monthly_line_color,
width = monthly_line_width,
xloc = xloc.bar_time)
var monthlyh_label = label.new(x = monthlyh_limit_right,
y = monthlyh_open,
text = "pmHigh "+ tostring(monthlyh_open),
style = monthly_label_style,
textcolor = monthly_label_color,
size = monthly_label_size,
xloc = xloc.bar_time)

line.set_x1(monthlyh_line, monthlyl_time)
line.set_x2(monthlyh_line, monthlyh_limit_right)
line.set_y1(monthlyh_line, monthlyh_open)
line.set_y2(monthlyh_line, monthlyh_open)
label.set_x(monthlyh_label, monthlyh_limit_right)
label.set_y(monthlyh_label, monthlyh_open)

// the weekly open can be the daily open too (monday)


// only the weekly will be draw, in these case we update its label

//////////////////////////////////////////////////////////////////////////////////

if can_show_monthly
monthly_limit_right = get_limit_right(monthly_extend_right)

if show_tails
var monthly_tail = line.new(x1 = time,
x2 = monthly_limit_right,
y1 = monthly_open,
y2 = monthly_open,
color = monthly_tail_color,
style = monthly_tail_style,
width = monthly_tail_width,
extend = extend.left,
xloc = xloc.bar_time)
line.set_x1(monthly_tail, time)
line.set_x2(monthly_tail, monthly_limit_right)
line.set_y1(monthly_tail, monthly_open)
line.set_y2(monthly_tail, monthly_open)

var monthlyLine = line.new(x1 = monthly_time,


x2 = monthly_limit_right,
y1 = monthly_open,
y2 = monthly_open,
color = monthly_line_color,
width = monthly_line_width,
xloc = xloc.bar_time)
var monthlyLabel = label.new(x = monthly_limit_right,
y = monthly_open, text = "mOpen "+ tostring(monthly_open),
style = monthly_label_style,
textcolor = monthly_label_color,
size = monthly_label_size,
xloc = xloc.bar_time)

line.set_x1(monthlyLine, monthly_time)
line.set_x2(monthlyLine, monthly_limit_right)
line.set_y1(monthlyLine, monthly_open)
line.set_y2(monthlyLine, monthly_open)
label.set_x(monthlyLabel, monthly_limit_right)
label.set_y(monthlyLabel, monthly_open)

// the monthly open can be the weekly open (monday 1st) and/or daily open
too
// only the monthly will be draw, in these case we update its label
if is_monthly_open
if can_show_daily
label.set_text(monthlyLabel, "DO / MO "+
tostring(monthly_open))
if is_weekly_open
if can_show_weekly
label.set_text(monthlyLabel, "WO / MO "+
tostring(monthly_open))
if can_show_daily and can_show_weekly
label.set_text(monthlyLabel, "DO / WO / MO "+
tostring(monthly_open))

// the start of the line is drew from the first week of the month
// if the first day of the weekly candle (monday) is the 2nd of the month
// we fix the start of the line position on the previous weekly candle
if timeframe.isweekly and dayofweek(monthly_time) != dayofweek.monday
line.set_x1(monthlyLine, monthly_time - (weekly_time - weekly_time[1]))

You might also like