0% found this document useful (0 votes)
12 views

Time

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

Time

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

//@version=5

indicator('Time Timing Thriving ', 'Time Timing Thriving', overlay=true,


max_lines_count=200, max_boxes_count=200, max_labels_count=200, max_bars_back=500,
explicit_plot_zorder=true)

import boitoki/Utilities/3 as util

///////////////
// Groups
///////////////
gema = '//Other Settings'
g0 = '//Session Settings//'
g1_01 = '// ♯1 SESSION //'
g1_02 = '// ♯2 SESSION //'
g1_03 = '// ♯3 SESSION //'
g1_04 = '// ♯4 SESSION //'
g1_05 = '// ♯5 SESSION //'
g1_06 = '// ♯6 SESSION //'
g1_07 = '// ♯7 SESSION //'
g1_08 = '// ♯8 SESSION //'
g1_09 = '// ♯9 SESSION //'
g1_10 = '// ♯10 SESSION //'
g4 = '// BOX TYPE //'

bool showPrev = input(true, 'Day open price',group = gema,inline='dopen')


dopenColor = input.color(#0521fa, '',group = gema, inline='dopen')
daily_open(x) =>
trigger = na(time('D')) or ta.change(time('D'))
ta.valuewhen(trigger, open, x)

plot(showPrev ? daily_open(0):na, 'Daily Open', dopenColor, 1, plot.style_circles)


len1 = input.int(9, minval=1, title='EMA 1', group = gema, inline = 'ema1')
len2 = input.int(18, minval=1, title='EMA 2',group = gema,inline='ema2')
len3 = input.int(21, minval=1, title='EMA 3', group = gema, inline = 'ema3')
len4 = input.int(89, minval=1, title='EMA 4', group = gema, inline = 'ema4')
len5 = input.int(200, minval=1, title='EMA 5', group = gema, inline = 'ema5')
ema1color = input.color(#fa0505, '',group = gema, inline = 'ema1')
ema2color = input.color(#d905fa, '',group = gema, inline = 'ema2')
ema3color = input.color(#03e935, '',group = gema, inline = 'ema3')
ema4color = input.color(#1505fa, '',group = gema, inline = 'ema4')
ema5color = input.color(#0ad6fa, '',group = gema, inline = 'ema5')

// Calculate EMAs
ema1 = ta.ema(close, len1)
ema2 = ta.ema(close, len2)
ema3 = ta.ema(close, len3)
ema4 = ta.ema(close, len4)
ema5 = ta.ema(close, len5)
// EMA Plots
plot(ema1, title='EMA 1', style=plot.style_line, linewidth=1, color=ema1color)
plot(ema2, title='EMA 2', style=plot.style_line, linewidth=1, color=ema2color)
plot(ema3, title='EMA 3', style=plot.style_line, linewidth=1, color=ema3color)
plot(ema4, title='EMA 4', style=plot.style_line, linewidth=1, color=ema4color)
plot(ema5, title='EMA 5', style=plot.style_line, linewidth=1, color=ema5color)

sib = input(true, title="Show Inside Bars?", group=gema)


isbcolor_up = input(color.new(color.green, 0), title="Inside Bar Up Color",
group=gema)
isbcolor_down = input(color.new(color.red, 0), title="Inside Bar Down Color",
group=gema)

sob = input(true, title="Show Outside Bars?", group=gema)


osbcolor_up = input(color.new(color.blue, 0), title="Outside Bar Up Color",
group=gema)
osbcolor_down = input(color.new(color.purple, 0), title="Outside Bar Down Color",
group=gema)

insideBar() =>
sib and high <= high[1] and low >= low[1] ? 1 : 0

outsideBar() =>
sob and (high > high[1] and low < low[1]) ? 1 : 0

barcolor(insideBar() and close > open ? isbcolor_up : insideBar() ? isbcolor_down :


na)
barcolor(outsideBar() and close > open ? osbcolor_up : outsideBar() ? osbcolor_down
: na)

///////////////
// Defined
///////////////
MAX_BARS = 500

option_yes = 'Yes'
option_no = '× No'
option_border_style1 = '────'
option_border_style2 = '- - - - - -'
option_border_style3 = '•••••••••'

TRANSPARENT = color.new(color.black, 100)

///////////////
// Methods
///////////////
method clear (array<string> id, int _min = 0) =>
if array.size(id) > _min
array.pop(id)

method clear (array<float> id, int _min = 0) =>


if array.size(id) > _min
array.pop(id)

///////////////
// Types
///////////////

// Candle
type Candle
box[] body
line[] wick

method create(Candle this) =>


this.body := array.new<box>()
this.wick := array.new<line>()
this
// Data
type Session
string sess
string tz
string name
color colour
color lbcolour
box[] boxes
int session

Candle candle

method create (Session this) =>


this.boxes := array.new<box>()
this.candle := Candle.new().create()

this

method session (Session this) =>


time("1", this.sess, this.tz)

///////////////
// Functions
///////////////

f_border_style (_style) =>


switch _style
option_border_style1 => line.style_solid
option_border_style2 => line.style_dashed
option_border_style3 => line.style_dotted
=> _style

f_get_started (_session) => na(_session[1]) and _session

f_get_ended (_session) => na(_session) and _session[1]

f_set_box_right (_box, _x) =>


if box.get_right(_box) != _x
box.set_right(_box, _x)
///////////////
// Inputs
///////////////
// Timezone

i_tz = input.string('GMT+7', title='Timezone', options=['GMT-


11', 'GMT-10', 'GMT-9', 'GMT-8', 'GMT-7', 'GMT-6', 'GMT-5', 'GMT-4', 'GMT-3', 'GMT-
2', 'GMT-1', 'GMT+0', 'GMT+1', 'GMT+2', 'GMT+3', 'GMT+330', 'GMT+4', 'GMT+430',
'GMT+5', 'GMT+530', 'GMT+6', 'GMT+7', 'GMT+8', 'GMT+9', 'GMT+10', 'GMT+11',
'GMT+12'], group=g0)
i_history_period = input.int(1, 'History', minval=0, group=g0)
i_show = i_history_period > 0
i_lookback = 12 * 60
text_size = input.string('small', 'Subtitle Size', options=['tiny',
'small', 'normal', 'large', 'huge', 'auto'], group=g0)
text_Hali = input.string('center', 'Subtitle Alignment',
options=['center', 'left', 'right'], group=g0)
// Show & Styles
i_sess_border_style = f_border_style(input.string(option_border_style2, 'Box
Type', options=[option_border_style1, option_border_style2, option_border_style3],
group=g0, inline='box_style'))
i_sess_border_width = input.int(1, '', minval=0, group=g0, inline='box_style')
i_sess_box_background = input.bool(true, 'Box Background color', group=g0,
inline='box_style_options')
i_sess_bgopacitys = input.int(84, 'Box Background opacity',
minval=0,maxval=100, group=g0)

// Sessions
i_show_sess1 = input.bool(true, 'Session 1 ', group=g1_01,
inline='session1_1') and i_show
i_sess1_label = input.string('08h30', '', group=g1_01,
inline='session1_1')
i_sess1_color = input.color(#66D9EF, 'Box color', group=g1_01,
inline='session1_1')
i_sess1_labelColor = input.color(#FFFFFF, 'Text color', group=g1_01,
inline='session1_1')
i_sess1 = input.session('0830-0831', 'Time', group=g1_01)
i_sess1_max = input.int(300,'Max box size', group=g1_01)

i_show_sess2 = input.bool(true, 'Session 2 ', group=g1_02,


inline='session2_1') and i_show
i_sess2_label = input.string('16h30', '', group=g1_02,
inline='session2_1')
i_sess2_color = input.color(#FD971F,'Box color', group=g1_02,
inline='session2_1')
i_sess2_labelColor = input.color(#FFFFFF, 'Text color', group=g1_02,
inline='session2_1')
i_sess2 = input.session('1630-1631', 'Time', group=g1_02)
i_sess2_max = input.int(300,'Max box size', group=g1_02)

i_show_sess3 = input.bool(true, 'Session 3 ', group=g1_03,


inline='session3_1') and i_show
i_sess3_label = input.string('20h30', '', group=g1_03,
inline='session3_1')
i_sess3_color = input.color(#ae81ff,'Box color', group=g1_03,
inline='session3_1')
i_sess3_labelColor = input.color(#FFFFFF, 'Text color', group=g1_03,
inline='session3_1')
i_sess3 = input.session('2030-2031', 'Time', group=g1_03)
i_sess3_max = input.int(300,'Max box size', group=g1_03)

i_show_sess4 = input.bool(true, 'Session 4 ', group=g1_04,


inline='session4_1') and i_show
i_sess4_label = input.string('21h30', '', group=g1_04,
inline='session4_1')
i_sess4_color = input.color(#07b354, 'Box color', group=g1_04,
inline='session4_1')
i_sess4_labelColor = input.color(#FFFFFF, 'Text color', group=g1_04,
inline='session4_1')
i_sess4 = input.session('2130-2131', 'Time', group=g1_04)
i_sess4_max = input.int(300,'Max box size', group=g1_04)
i_show_sess5 = input.bool(true, 'Session 5 ', group=g1_05,
inline='session5_1') and i_show
i_sess5_label = input.string('22h30', '', group=g1_05,
inline='session5_1')
i_sess5_color = input.color(#1081FF, 'Box color', group=g1_05,
inline='session5_1')
i_sess5_labelColor = input.color(#FFFFFF,'Text color', group=g1_05,
inline='session5_1')
i_sess5 = input.session('2230-2231', 'Time', group=g1_05)
i_sess5_max = input.int(300,'Max box size', group=g1_05)

i_show_sess6 = input.bool(true, 'Session 5 ', group=g1_06,


inline='session6_1') and i_show
i_sess6_label = input.string('22h30', '', group=g1_06,
inline='session6_1')
i_sess6_color = input.color(#1081FF, 'Box color', group=g1_06,
inline='session6_1')
i_sess6_labelColor = input.color(#FFFFFF,'Text color', group=g1_06,
inline='session6_1')
i_sess6 = input.session('2230-2231', 'Time', group=g1_06)
i_sess6_max = input.int(300,'Max box size', group=g1_06)

i_show_sess7 = input.bool(true, 'Session 5 ', group=g1_07,


inline='session7_1') and i_show
i_sess7_label = input.string('22h30', '', group=g1_07,
inline='session7_1')
i_sess7_color = input.color(#1081FF, 'Box color', group=g1_07,
inline='session7_1')
i_sess7_labelColor = input.color(#FFFFFF,'Text color', group=g1_07,
inline='session7_1')
i_sess7 = input.session('2230-2231', 'Time', group=g1_07)
i_sess7_max = input.int(300,'Max box size', group=g1_07)

i_show_sess8 = input.bool(true, 'Session 5 ', group=g1_08,


inline='session8_1') and i_show
i_sess8_label = input.string('22h30', '', group=g1_08,
inline='session8_1')
i_sess8_color = input.color(#1081FF, 'Box color', group=g1_08,
inline='session8_1')
i_sess8_labelColor = input.color(#FFFFFF,'Text color', group=g1_08,
inline='session8_1')
i_sess8 = input.session('2230-2231', 'Time', group=g1_08)
i_sess8_max = input.int(300,'Max box size', group=g1_08)

i_show_sess9 = input.bool(true, 'Session 5 ', group=g1_09,


inline='session9_1') and i_show
i_sess9_label = input.string('22h30', '', group=g1_09,
inline='session9_1')
i_sess9_color = input.color(#1081FF, 'Box color', group=g1_09,
inline='session9_1')
i_sess9_labelColor = input.color(#FFFFFF,'Text color', group=g1_09,
inline='session9_1')
i_sess9 = input.session('2230-2231', 'Time', group=g1_09)
i_sess9_max = input.int(300,'Max box size', group=g1_09)

i_show_sess10 = input.bool(true, 'Session 5 ', group=g1_10,


inline='session10_1') and i_show
i_sess10_label = input.string('22h30', '', group=g1_10,
inline='session10_1')
i_sess10_color = input.color(#1081FF, 'Box color', group=g1_10,
inline='session10_1')
i_sess10_labelColor = input.color(#FFFFFF,'Text color', group=g1_10,
inline='session10_1')
i_sess10 = input.session('2230-2231', 'Time', group=g1_10)
i_sess10_max = input.int(300,'Max box size', group=g1_10)

// ------------------------
// ------------------------
// Drawing
// ------------------------
draw (_show, Session data, max_box_size) =>
session = data.session()
col = data.colour
lbcolor = data.lbcolour
name = data.name
var box my_box = na
is_started = f_get_started(session)
if _show and is_started
my_box := box.new(bar_index, low, bar_index, high, col,
i_sess_border_width, i_sess_border_style, bgcolor=color.new(col,
i_sess_box_background ? i_sess_bgopacitys : 100),text = name,text_size = text_size,
text_halign = text_Hali, text_color = lbcolor)
array.push(data.boxes, my_box)

util.clear_boxes(data.boxes, i_history_period)
f_set_box_right(my_box, bar_index + max_box_size)
[session]

string tz = (i_tz == option_no or i_tz == '') ? na : i_tz


var sess1_data = Session.new(i_sess1, tz, i_sess1_label, i_sess1_color,
i_sess1_labelColor).create()
var sess2_data = Session.new(i_sess2, tz, i_sess2_label, i_sess2_color,
i_sess2_labelColor).create()
var sess3_data = Session.new(i_sess3, tz, i_sess3_label, i_sess3_color,
i_sess3_labelColor).create()
var sess4_data = Session.new(i_sess4, tz, i_sess4_label, i_sess4_color,
i_sess4_labelColor).create()
var sess5_data = Session.new(i_sess5, tz, i_sess5_label, i_sess5_color,
i_sess5_labelColor).create()
var sess6_data = Session.new(i_sess6, tz, i_sess6_label, i_sess6_color,
i_sess6_labelColor).create()
var sess7_data = Session.new(i_sess7, tz, i_sess7_label, i_sess7_color,
i_sess7_labelColor).create()
var sess8_data = Session.new(i_sess8, tz, i_sess8_label, i_sess8_color,
i_sess8_labelColor).create()
var sess9_data = Session.new(i_sess9, tz, i_sess9_label, i_sess9_color,
i_sess9_labelColor).create()
var sess10_data = Session.new(i_sess10, tz, i_sess10_label, i_sess10_color,
i_sess10_labelColor).create()
if timeframe.period=='1'
[is_sess1] = draw(i_show_sess1, sess1_data,i_sess1_max)
[is_sess2] = draw(i_show_sess2, sess2_data,i_sess2_max)
[is_sess3] = draw(i_show_sess3, sess3_data,i_sess3_max)
[is_sess4] = draw(i_show_sess4, sess4_data,i_sess4_max)
[is_sess5] = draw(i_show_sess5, sess5_data,i_sess5_max)
[is_sess6] = draw(i_show_sess6, sess6_data,i_sess6_max)
[is_sess7] = draw(i_show_sess7, sess7_data,i_sess7_max)
[is_sess8] = draw(i_show_sess8, sess8_data,i_sess8_max)
[is_sess9] = draw(i_show_sess9, sess9_data,i_sess9_max)
[is_sess10] = draw(i_show_sess10, sess10_data,i_sess10_max)

You might also like