Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 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