0% found this document useful (0 votes)
41 views16 pages

ICT HTF Candles Indicator Script

The document is a script for a trading indicator called 'ICT HTF Candles (Ken)' designed for use in TradingView. It defines various data structures for candles, imbalances, and settings, allowing users to customize the display of high time frame candles on their charts. The script includes input options for time frames, colors, and label settings, enabling traders to visualize market data effectively.

Uploaded by

kennedymulife3
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)
41 views16 pages

ICT HTF Candles Indicator Script

The document is a script for a trading indicator called 'ICT HTF Candles (Ken)' designed for use in TradingView. It defines various data structures for candles, imbalances, and settings, allowing users to customize the display of high time frame candles on their charts. The script includes input options for time frames, colors, and label settings, enabling traders to visualize market data effectively.

Uploaded by

kennedymulife3
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

// Prev Published: 1008

// Curr Published: 1046


//@version=6
indicator('ICT HTF Candles (Ken)', overlay = true, max_boxes_count = 500,
max_lines_count = 500, max_labels_count = 500, max_bars_back = 5000)

type Candle
float o
float c
float h
float l
int o_time
int o_idx
int c_idx
int h_idx
int l_idx
string dow
box body
line wick_up
line wick_down
label dow_label

type Trace
line o
line c
line h
line l
label o_l
label c_l
label h_l
label l_l

type Imbalance
box b
int idx

type CandleSettings
bool show
string htf
int max_display

type Settings
int max_sets
color bull_body
color bull_border
color bull_wick
color bear_body
color bear_border
color bear_wick
int offset
int buffer
int htf_buffer
int width
bool use_custom_daily
string custom_daily
bool daily_name
bool trace_show
color trace_o_color
string trace_o_style
int trace_o_size
color trace_c_color
string trace_c_style
int trace_c_size
color trace_h_color
string trace_h_style
int trace_h_size
color trace_l_color
string trace_l_style
int trace_l_size
string trace_anchor
bool label_show
color label_color
string label_size
string label_position
string label_alignment
bool fvg_show
color fvg_color
bool vi_show
color vi_color
bool htf_label_show
color htf_label_color
string htf_label_size
bool htf_timer_show
color htf_timer_color
string htf_timer_size
color dow_color
string dow_size

type CandleSet
array<Candle> candles
array<Imbalance> imbalances
CandleSettings settings
label tfNameTop
label tfNameBottom
label tfTimerTop
label tfTimerBottom

type Helper
string name = 'Helper'

Settings settings = [Link]()

var CandleSettings SettingsHTF1 = [Link]()


var CandleSettings SettingsHTF2 = [Link]()
var CandleSettings SettingsHTF3 = [Link]()
var CandleSettings SettingsHTF4 = [Link]()
var CandleSettings SettingsHTF5 = [Link]()
var CandleSettings SettingsHTF6 = [Link]()

var array<Candle> candles_1 = [Link]<Candle>(0)


var array<Candle> candles_2 = [Link]<Candle>(0)
var array<Candle> candles_3 = [Link]<Candle>(0)
var array<Candle> candles_4 = [Link]<Candle>(0)
var array<Candle> candles_5 = [Link]<Candle>(0)
var array<Candle> candles_6 = [Link]<Candle>(0)
var array<Imbalance> imbalances_1 = [Link]<Imbalance>()
var array<Imbalance> imbalances_2 = [Link]<Imbalance>()
var array<Imbalance> imbalances_3 = [Link]<Imbalance>()
var array<Imbalance> imbalances_4 = [Link]<Imbalance>()
var array<Imbalance> imbalances_5 = [Link]<Imbalance>()
var array<Imbalance> imbalances_6 = [Link]<Imbalance>()

var CandleSet htf1 = [Link]()


[Link] := SettingsHTF1
[Link] := candles_1
[Link] := imbalances_1

var CandleSet htf2 = [Link]()


[Link] := SettingsHTF2
[Link] := candles_2
[Link] := imbalances_2

var CandleSet htf3 = [Link]()


[Link] := SettingsHTF3
[Link] := candles_3
[Link] := imbalances_3

var CandleSet htf4 = [Link]()


[Link] := SettingsHTF4
[Link] := candles_4
[Link] := imbalances_4

var CandleSet htf5 = [Link]()


[Link] := SettingsHTF5
[Link] := candles_5
[Link] := imbalances_5

var CandleSet htf6 = [Link]()


[Link] := SettingsHTF6
[Link] := candles_6
[Link] := imbalances_6

//
+----------------------------------------------------------------------------------
--------------------------+//
//+--- Settings
---+//
//
+----------------------------------------------------------------------------------
--------------------------+//

string group_style = "Styling ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"


string group_label = "Label Settings ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
string group_imbalance = "Imbalance ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
string group_trace = "Trace ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

[Link] := [Link](true, 'HTF 1 ', inline = 'htf1')


htf_1 = [Link]('5', '', inline = 'htf1')
[Link] := htf_1
[Link].max_display := [Link](10, '', inline = 'htf1')

[Link] := [Link](true, 'HTF 2 ', inline = 'htf2')


htf_2 = [Link]('15', '', inline = 'htf2')
[Link] := htf_2
[Link].max_display := [Link](10, '', inline = 'htf2')

[Link] := [Link](true, 'HTF 3 ', inline = 'htf3')


htf_3 = [Link]('60', '', inline = 'htf3')
[Link] := htf_3
[Link].max_display := [Link](10, '', inline = 'htf3')

[Link] := [Link](true, 'HTF 4 ', inline = 'htf4')


htf_4 = [Link]('240', '', inline = 'htf4')
[Link] := htf_4
[Link].max_display := [Link](10, '', inline = 'htf4')

[Link] := [Link](true, 'HTF 5 ', inline = 'htf5')


htf_5 = [Link]('1D', '', inline = 'htf5')
[Link] := htf_5
[Link].max_display := [Link](10, '', inline = 'htf5')

[Link] := [Link](true, 'HTF 6 ', inline = 'htf6')


htf_6 = [Link]('1W', '', inline = 'htf6')
[Link] := htf_6
[Link].max_display := [Link](10, '', inline = 'htf6')

settings.max_sets := [Link](6, 'Limit to next HTFs only', minval =


1, maxval = 6)
settings.use_custom_daily := [Link](false, 'Custom daily candle
open ', inline='customdaily')
settings.custom_daily := [Link]('Midnight', '',
options=['Midnight', '8:30', '9:30'], inline='customdaily')
settings.bull_body := [Link]([Link]([Link], 10),
'Body ', inline = 'body', group=group_style)
settings.bear_body := [Link]([Link]([Link], 10), '', inline
= 'body', group=group_style)
settings.bull_border := [Link]([Link]([Link], 10),
'Borders', inline = 'borders', group=group_style)
settings.bear_border := [Link]([Link]([Link], 10), '',
inline = 'borders', group=group_style)
settings.bull_wick := [Link]([Link]([Link], 10),
'Wick ', inline = 'wick', group=group_style)
settings.bear_wick := [Link]([Link]([Link], 10), '',
inline = 'wick', group=group_style)

[Link] := [Link](10, 'padding from current candles',


minval = 1, group=group_style)
[Link] := [Link](1, 'space between candles', minval =
1, maxval = 4, group=group_style)
settings.htf_buffer := [Link](10, 'space between Higher Timeframes',
minval = 1, maxval = 10, group=group_style)
[Link] := [Link](1, 'Candle Width', minval = 1, maxval
= 4, group=group_style) * 2

settings.htf_label_show := [Link](true, 'HTF Label ',


group=group_label, inline = 'HTFlabel')
settings.htf_label_color := [Link]([Link]([Link], 10), '',
group=group_label, inline = 'HTFlabel')
settings.htf_label_size := [Link]([Link], '', [[Link],
[Link], [Link], [Link], [Link]], group=group_label, inline =
'HTFlabel')
settings.label_position := [Link]("Both", 'Label Positions',
options=['Both', 'Top', 'Bottom'], group=group_label)
settings.label_alignment := [Link]("Align", "Label Alignment",
options=['Align', 'Follow Candles'], group=group_label)

settings.htf_timer_show := [Link](true, 'Remaining time ', inline


= 'timer', group=group_label)
settings.htf_timer_color := [Link]([Link]([Link], 10), '',
inline = 'timer', group=group_label)
settings.htf_timer_size := [Link]([Link], '', [[Link],
[Link], [Link], [Link], [Link]], group=group_label, inline =
'timer')

settings.daily_name := [Link](false, 'Interval Value ',


group=group_label, inline = 'dow')
settings.dow_color := [Link]([Link] , '', group=group_label,
inline = 'dow')
settings.dow_size := [Link]([Link], '', [[Link],
[Link], [Link], [Link], [Link]], group=group_label, inline = 'dow')

settings.fvg_show := [Link](true, 'Fair Value Gap ', group =


group_imbalance, inline = 'fvg')
settings.fvg_color := [Link]([Link]([Link], 80), '',
inline = 'fvg', group = group_imbalance)

settings.vi_show := [Link](true, 'Volume Imbalance', group =


group_imbalance, inline = 'vi')
settings.vi_color := [Link]([Link]([Link], 50), '', inline
= 'vi', group = group_imbalance)

settings.trace_show := [Link](false, 'Trace lines', group =


group_trace)
settings.trace_o_color := [Link]([Link]([Link], 50),
'Open ', inline = '1', group = group_trace)
settings.trace_o_style := [Link]('····', '', options = ['⎯⎯⎯',
'----', '····'], inline = '1', group = group_trace)
settings.trace_o_size := [Link](1, '', options = [1, 2, 3, 4], inline
= '1', group = group_trace)
settings.trace_c_color := [Link]([Link]([Link], 50),
'Close ', inline = '2', group = group_trace)
settings.trace_c_style := [Link]('····', '', options = ['⎯⎯⎯',
'----', '····'], inline = '2', group = group_trace)
settings.trace_c_size := [Link](1, '', options = [1, 2, 3, 4], inline
= '2', group = group_trace)
settings.trace_h_color := [Link]([Link]([Link], 50),
'High ', inline = '3', group = group_trace)
settings.trace_h_style := [Link]('····', '', options = ['⎯⎯⎯',
'----', '····'], inline = '3', group = group_trace)
settings.trace_h_size := [Link](1, '', options = [1, 2, 3, 4], inline
= '3', group = group_trace)
settings.trace_l_color := [Link]([Link]([Link], 50),
'Low ', inline = '4', group = group_trace)
settings.trace_l_style := [Link]('····', '', options = ['⎯⎯⎯',
'----', '····'], inline = '4', group = group_trace)
settings.trace_l_size := [Link](1, '', options = [1, 2, 3, 4], inline
= '4', group = group_trace)
settings.trace_anchor := [Link]('First Timeframe', 'Anchor to',
options = ['First Timeframe', 'Last Timeframe'], group = group_trace)
settings.label_show := [Link](false, 'Price Label ',
inline = 'label')
settings.label_color := [Link]([Link]([Link], 10), '',
inline = 'label')
settings.label_size := [Link]([Link], '', [[Link],
[Link], [Link], [Link], [Link]], inline = 'label')

//
+----------------------------------------------------------------------------------
--------------------------+//
//+--- Variables
---+//
//
+----------------------------------------------------------------------------------
--------------------------+//

Helper helper = [Link]()


var Trace trace = [Link]()
color color_transparent = #ffffff00

//
+----------------------------------------------------------------------------------
--------------------------+//
//+--- Internal Functions
---+//
//
+----------------------------------------------------------------------------------
--------------------------+//

method LineStyle(Helper helper, string style) =>


[Link] := style
out = switch style
'----' => line.style_dashed
'····' => line.style_dotted
=> line.style_solid
out

method DayofWeek(Helper helper, int index) =>


[Link] := 'DOW'
switch
index == 1 => 'M'
index == 2 => 'T'
index == 3 => 'W'
index == 4 => 'T'
index == 5 => 'F'
index == 6 => 'S'
index == 7 => 'S'
na(index) => ''

method ValidTimeframe(Helper helper, string HTF) =>


[Link] := HTF
if timeframe.in_seconds(HTF) >= timeframe.in_seconds('D') and
timeframe.in_seconds(HTF) > timeframe.in_seconds()
true
else
n1 = timeframe.in_seconds()
n2 = timeframe.in_seconds(HTF)
n3 = n1 % n2
n1 < n2 and [Link](n2 / n1) == n2 / n1
method RemainingTime(Helper helper, string HTF) =>
[Link] := HTF
if [Link]
timeRemaining = (time_close(HTF) - timenow) / 1000
days = [Link](timeRemaining / 86400)
hours = [Link]((timeRemaining - days * 86400) / 3600)
minutes = [Link]((timeRemaining - days * 86400 - hours * 3600) / 60)
seconds = [Link](timeRemaining - days * 86400 - hours * 3600 - minutes
* 60)

r = [Link](seconds, '00')
if minutes > 0 or hours > 0 or days > 0
r := [Link](minutes, '00') + ':' + r
r
if hours > 0 or days > 0
r := [Link](hours, '00') + ':' + r
r
if days > 0
r := [Link](days) + 'D ' + r
r
r
else
'n/a'

method HTFName(Helper helper, string HTF) =>


[Link] := 'HTFName'
formatted = HTF

seconds = timeframe.in_seconds(HTF)
if seconds < 60
formatted := [Link](seconds) + 's'
formatted
else if seconds / 60 < 60
formatted := [Link](seconds / 60) + 'm'
formatted
else if seconds / 60 / 60 < 24
formatted := [Link](seconds / 60 / 60) + 'H'
formatted
formatted

method HTFEnabled(Helper helper) =>


[Link] := 'HTFEnabled'
int enabled = 0
enabled := enabled + ([Link] ? 1 : 0)
enabled := enabled + ([Link] ? 1 : 0)
enabled := enabled + ([Link] ? 1 : 0)
enabled := enabled + ([Link] ? 1 : 0)
enabled := enabled + ([Link] ? 1 : 0)
enabled := enabled + ([Link] ? 1 : 0)
int last = [Link](enabled, settings.max_sets)

last

method CandleSetHigh(Helper helper, array<Candle> candles, float h) =>


[Link] := 'CandlesSetHigh'
float _h = h
if [Link](candles) > 0
for i = 0 to [Link](candles) - 1 by 1
Candle c = [Link](candles, i)
if c.h > _h
_h := c.h
_h
_h

method CandleSetLow(Helper helper, array<Candle> candles, float l) =>


[Link] := 'CandlesSetLow'
float _l = l
if [Link](candles) > 0
for i = 0 to [Link](candles) - 1 by 1
Candle c = [Link](candles, i)
if c.l < _l
_l := c.l
_l
_l

method CandlesHigh(Helper helper, array<Candle> candles) =>


[Link] := 'CandlesHigh'
h = 0.0
int cnt = 0
int last = [Link]()

if [Link] and [Link]([Link])


h := [Link]([Link], h)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
h := [Link]([Link], h)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
h := [Link]([Link], h)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
h := [Link]([Link], h)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
h := [Link]([Link], h)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
h := [Link]([Link], h)

if [Link](candles) > 0
for i = 0 to [Link](candles) - 1 by 1
Candle c = [Link](candles, i)
if c.h > h
h := c.h
h

method CandlesLow(Helper helper, array<Candle> candles, float h) =>


[Link] := 'CandlesLow'
l = h
int cnt = 0
int last = [Link]()
if [Link] and [Link]([Link])
l := [Link]([Link], l)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
l := [Link]([Link], l)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
l := [Link]([Link], l)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
l := [Link]([Link], l)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
l := [Link]([Link], l)
cnt := cnt + 1
if [Link] and [Link]([Link]) and cnt <
last
l := [Link]([Link], l)

if [Link](candles) > 0
for i = 0 to [Link](candles) - 1 by 1
Candle c = [Link](candles, i)
if c.l < l
l := c.l
l

method UpdateTime(CandleSet candleSet, int offset) =>


if settings.htf_timer_show and ([Link] or [Link])
string tmr = '(' + [Link]([Link]) + ')'

if not na([Link])
[Link].set_text(tmr)

if not na([Link])
[Link].set_text(tmr)
candleSet

method Reorder(CandleSet candleSet, int offset) =>


size = [Link]()

if size > 0
for i = size - 1 to 0 by 1
Candle candle = [Link](i)
t_buffer = offset + ([Link] + [Link]) * (size - i - 1)
box.set_left([Link], bar_index + t_buffer)
box.set_right([Link], bar_index + [Link] + t_buffer)
line.set_x1(candle.wick_up, bar_index + [Link] / 2 + t_buffer)
line.set_x2(candle.wick_up, bar_index + [Link] / 2 + t_buffer)
line.set_x1(candle.wick_down, bar_index + [Link] / 2 +
t_buffer)
line.set_x2(candle.wick_down, bar_index + [Link] / 2 +
t_buffer)

if settings.daily_name //and [Link] == '1D'


if not na(candle.dow_label)
candle.dow_label.set_y(candle.h)
candle.dow_label.set_x(bar_index + [Link] / 2 +
t_buffer)
candle.dow_label.set_text([Link])
else
candle.dow_label := [Link](bar_index + [Link] / 2 +
t_buffer, candle.h, [Link], color = color_transparent, textcolor =
settings.dow_color, style = label.style_label_down, size = settings.dow_size)

top = 0.0
bottom = 0.0

if settings.label_alignment == 'Align'
top := [Link]([Link])
bottom := [Link]([Link], top)
if settings.label_alignment == 'Follow Candles'
top := [Link]([Link], 0)
bottom := [Link]([Link], top)

left = bar_index + offset + ([Link] + [Link]) * (size - 1) / 2

if settings.htf_label_show
string lblt = [Link]([Link])
string lbll = lblt
if settings.htf_timer_show
lblt := lblt + '\n'
lbll := '\n' + lbll
if settings.daily_name
lblt := lblt + '\n'

string tmr = '(' + [Link]([Link]) + ')' +


(settings.daily_name ? '\n' : '')
if settings.label_position == 'Both' or settings.label_position == 'Top'

if not na([Link])
[Link].set_xy(left, top)
else
[Link] := [Link](left, top, lblt, color =
color_transparent, textcolor = settings.htf_label_color, style =
label.style_label_down, size = settings.htf_label_size)
if settings.htf_timer_show
if not na([Link])
[Link].set_xy(left, top)
else
[Link] := [Link](left, top, tmr, color =
color_transparent, textcolor = settings.htf_timer_color, style =
label.style_label_down, size = settings.htf_timer_size)

if settings.label_position == 'Both' or settings.label_position == 'Bottom'


if not na([Link])
[Link].set_xy(left, bottom)
else
[Link] := [Link](left, bottom, lbll, color =
color_transparent, textcolor = settings.htf_label_color, style =
label.style_label_up, size = settings.htf_label_size)
if settings.htf_timer_show
if settings.htf_timer_show
if not na([Link])
[Link].set_xy(left, bottom)
else
[Link] := [Link](left, bottom, tmr,
color = color_transparent, textcolor = settings.htf_timer_color, style =
label.style_label_up, size = settings.htf_timer_size)

candleSet

method FindImbalance(CandleSet candleSet) =>


if [Link] or [Link]
if [Link]() > 0
for i = [Link]() - 1 to 0 by 1
Imbalance del = [Link](i)
[Link](del.b)
[Link]()

if [Link]() > 3 and settings.fvg_show


for i = 0 to [Link]() - 3 by 1
candle1 = [Link](i)
candle2 = [Link](i + 2)
candle3 = [Link](i + 1)

if candle1.l > candle2.h and [Link](candle1.o, candle1.c) >


[Link](candle2.o, candle2.c)
Imbalance imb = [Link]()
imb.b := [Link](box.get_left([Link]), candle2.h,
box.get_right([Link]), candle1.l, bgcolor = settings.fvg_color, border_color
= color_transparent, xloc = xloc.bar_index)
[Link](imb)
if candle1.h < candle2.l and [Link](candle1.o, candle1.c) <
[Link](candle2.o, candle2.c)
Imbalance imb = [Link]()
imb.b := [Link](box.get_right([Link]), candle1.h,
box.get_left([Link]), candle2.l, bgcolor = settings.fvg_color, border_color =
color_transparent)
[Link](imb)
box temp = [Link]([Link])
[Link]([Link])
[Link] := temp
[Link]

if [Link]() > 2 and settings.vi_show


for i = 0 to [Link]() - 2 by 1
candle1 = [Link](i)
candle2 = [Link](i + 1)
if candle1.l < candle2.h and [Link](candle1.o, candle1.c) >
[Link](candle2.o, candle2.c)
Imbalance imb = [Link]()
imb.b := [Link](box.get_left([Link]),
[Link](candle1.o, candle1.c), box.get_right([Link]), [Link](candle2.o,
candle2.c), bgcolor = settings.vi_color, border_color = color_transparent)
[Link](imb)
if candle1.h > candle2.l and [Link](candle1.o, candle1.c) <
[Link](candle2.o, candle2.c)
Imbalance imb = [Link]()
imb.b := [Link](box.get_right([Link]),
[Link](candle2.o, candle2.c), box.get_left([Link]), [Link](candle1.o,
candle1.c), bgcolor = settings.vi_color, border_color = color_transparent)
[Link](imb)
candleSet

method Monitor(CandleSet candleSet) =>


HTFBarTime = time([Link], 'america/New_York')
isNewHTFCandle = [Link](HTFBarTime) > 0

if settings.use_custom_daily
int _830 = 0
if isNewHTFCandle
_830 := timestamp("America/New_York", year(time), month(time),
dayofmonth(time), 0, 0) + 30600000
if [Link] == '1D'
if settings.custom_daily == 'Midnight'
isNewHTFCandle := dayofweek(time, 'America/New_York') !=
dayofweek(time - (time - time[1]), 'America/New_York')
if settings.custom_daily == '8:30'
// Get 8:30 AM New York time for today
isNewHTFCandle := not na(time([Link], "0830-0831:123456",
'America/New_York')) and na(time([Link], "0830-0831:123456",
'America/New_York')[1])
if settings.custom_daily == '9:30'
// Get 9:30 AM New York time for today
isNewHTFCandle := not na(time([Link], "0930-0931:123456",
'America/New_York')) and na(time([Link], "0930-0931:123456",
'America/New_York')[1])
if isNewHTFCandle
Candle candle = [Link]()
candle.o := open
candle.c := close
candle.h := high
candle.l := low
candle.o_time := time
candle.o_idx := bar_index
candle.c_idx := bar_index
candle.h_idx := bar_index
candle.l_idx := bar_index
[Link] := switch
[Link] == '1D' =>
[Link](dayofweek(time_tradingday, "America/New_York"))
[Link]([Link]) < 60 =>
str.format_time(candle.o_time, 'm', 'America/New_York')
[Link]([Link]) >= 60 =>
str.format_time(candle.o_time, 'H', 'America/New_York')
[Link] == '1M' =>
str.format_time(candle.o_time, 'M', 'America/New_York')
=>
''
[Link]('dow: {1} |{0}|', [Link], [Link])
bull = candle.c > candle.o

[Link] := [Link](bar_index, [Link](candle.o, candle.c), bar_index +


2, [Link](candle.o, candle.c), bull ? settings.bull_border :
settings.bear_border, 1, bgcolor = bull ? settings.bull_body : settings.bear_body)
candle.wick_up := [Link](bar_index + 1, candle.h, bar_index,
[Link](candle.o, candle.c), color = bull ? settings.bull_wick :
settings.bear_wick)
candle.wick_down := [Link](bar_index + 1, [Link](candle.o, candle.c),
bar_index, candle.l, color = bull ? settings.bull_wick : settings.bear_wick)
[Link](candle)

if [Link]() > [Link].max_display


Candle delCandle = [Link]([Link])
[Link]([Link])
[Link](delCandle.wick_up)
[Link](delCandle.wick_down)
delCandle.dow_label.delete()

candleSet

method Update(CandleSet candleSet, int offset, bool showTrace) =>


if [Link]() > 0
Candle candle = [Link]()
candle.h_idx := high > candle.h ? bar_index : candle.h_idx
candle.h := high > candle.h ? high : candle.h
candle.l_idx := low < candle.l ? bar_index : candle.l_idx
candle.l := low < candle.l ? low : candle.l
candle.c := close
candle.c_idx := bar_index

bull = candle.c > candle.o

box.set_top([Link], candle.o)
box.set_bottom([Link], candle.c)
box.set_bgcolor([Link], bull ? settings.bull_body :
settings.bear_body)
box.set_border_color([Link], bull ? settings.bull_border :
settings.bear_border)
line.set_color(candle.wick_up, bull ? settings.bull_wick :
settings.bear_wick)
line.set_color(candle.wick_down, bull ? settings.bull_wick :
settings.bear_wick)
line.set_y1(candle.wick_up, candle.h)
line.set_y2(candle.wick_up, [Link](candle.o, candle.c))
line.set_y1(candle.wick_down, candle.l)
line.set_y2(candle.wick_down, [Link](candle.o, candle.c))

if [Link] or [Link]
[Link](offset)
if settings.trace_show and showTrace
if bar_index - candle.o_idx < 5000
if na(trace.o)
trace.o := [Link](candle.o_idx, candle.o,
box.get_left([Link]), candle.o, xloc = xloc.bar_index, color =
settings.trace_o_color, style = [Link](settings.trace_o_style), width =
settings.trace_o_size)
trace.o
else
line.set_xy1(trace.o, candle.o_idx, candle.o)
line.set_xy2(trace.o, box.get_left([Link]), candle.o)

if settings.label_show
if na(trace.o_l)
trace.o_l := [Link](box.get_right([Link]),
candle.o, [Link](candle.o), textalign = text.align_center, style =
label.style_label_left, size = settings.label_size, color = color_transparent,
textcolor = settings.label_color)
trace.o_l
else
label.set_xy(trace.o_l, box.get_right([Link]),
candle.o)
label.set_text(trace.o_l, [Link](candle.o))

if bar_index - candle.c_idx < 5000


if na(trace.c)
trace.c := [Link](candle.c_idx, candle.c,
box.get_left([Link]), candle.c, xloc = xloc.bar_index, color =
settings.trace_c_color, style = [Link](settings.trace_c_style), width =
settings.trace_c_size)
trace.c
else
line.set_xy1(trace.c, candle.c_idx, candle.c)
line.set_xy2(trace.c, box.get_left([Link]), candle.c)

if settings.label_show
if na(trace.c_l)
trace.c_l := [Link](box.get_right([Link]),
candle.c, [Link](candle.c), textalign = text.align_center, style =
label.style_label_left, size = settings.label_size, color = color_transparent,
textcolor = settings.label_color)
trace.c_l
else
label.set_xy(trace.c_l, box.get_right([Link]),
candle.c)
label.set_text(trace.c_l, [Link](candle.c))

if bar_index - candle.h_idx < 5000


if na(trace.h)
trace.h := [Link](candle.h_idx, candle.h,
line.get_x1(candle.wick_up), candle.h, xloc = xloc.bar_index, color =
settings.trace_h_color, style = [Link](settings.trace_h_style), width =
settings.trace_h_size)
trace.h
else
line.set_xy1(trace.h, candle.h_idx, candle.h)
line.set_xy2(trace.h, line.get_x1(candle.wick_up),
candle.h)

if settings.label_show
if na(trace.h_l)
trace.h_l := [Link](box.get_right([Link]),
candle.h, [Link](candle.h), textalign = text.align_center, style =
label.style_label_left, size = settings.label_size, color = color_transparent,
textcolor = settings.label_color)
trace.h_l
else
label.set_xy(trace.h_l, box.get_right([Link]),
candle.h)
label.set_text(trace.h_l, [Link](candle.h))

if bar_index - candle.l_idx < 5000


if na(trace.l)
trace.l := [Link](candle.l_idx, candle.l,
line.get_x1(candle.wick_down), candle.l, xloc = xloc.bar_index, color =
settings.trace_l_color, style = [Link](settings.trace_l_style), width =
settings.trace_l_size)
trace.l
else
line.set_xy1(trace.l, candle.l_idx, candle.l)
line.set_xy2(trace.l, line.get_x1(candle.wick_down),
candle.l)

if settings.label_show
if na(trace.l_l)
trace.l_l := [Link](box.get_right([Link]),
candle.l, [Link](candle.l), textalign = text.align_center, style =
label.style_label_left, size = settings.label_size, color = color_transparent,
textcolor = settings.label_color)
trace.l_l
else
label.set_xy(trace.l_l, box.get_right([Link]),
candle.l)
label.set_text(trace.l_l, [Link](candle.l))
candleSet

int cnt = 0
int last = [Link]()

int offset = [Link]


if [Link] and [Link]([Link])
bool showTrace = false
if settings.trace_anchor == 'First Timeframe'
showTrace := true
showTrace
if settings.trace_anchor == 'Last Timeframe' and settings.max_sets == 1
showTrace := true
showTrace
[Link](offset)
[Link]().Update(offset, showTrace).FindImbalance()
cnt := cnt + 1
offset := offset + (cnt > 0 ? [Link]() * [Link] +
([Link]() > 0 ? ([Link]() - 1) * [Link] : 0) +
settings.htf_buffer : 0)
offset
if [Link] and [Link]([Link]) and cnt < last
bool showTrace = false
if settings.trace_anchor == 'First Timeframe' and cnt == 0
showTrace := true
showTrace
if settings.trace_anchor == 'Last Timeframe' and cnt == last - 1
showTrace := true
showTrace
[Link](offset)
[Link]().Update(offset, showTrace).FindImbalance()
cnt := cnt + 1
offset := offset + (cnt > 0 ? [Link]() * [Link] +
([Link]() > 0 ? ([Link]() - 1) * [Link] : 0) +
settings.htf_buffer : 0)
offset
if [Link] and [Link]([Link]) and cnt < last
bool showTrace = false
if settings.trace_anchor == 'First Timeframe' and cnt == 0
showTrace := true
showTrace
if settings.trace_anchor == 'Last Timeframe' and cnt == last - 1
showTrace := true
showTrace
[Link](offset)
[Link]().Update(offset, showTrace).FindImbalance()
cnt := cnt + 1
offset := offset + (cnt > 0 ? [Link]() * [Link] +
([Link]() > 0 ? ([Link]() - 1) * [Link] : 0) +
settings.htf_buffer : 0)
offset
if [Link] and [Link]([Link]) and cnt < last
bool showTrace = false
if settings.trace_anchor == 'First Timeframe' and cnt == 0
showTrace := true
showTrace
if settings.trace_anchor == 'Last Timeframe' and cnt == last - 1
showTrace := true
showTrace
[Link](offset)
[Link]().Update(offset, showTrace).FindImbalance()
cnt := cnt + 1
offset := offset + (cnt > 0 ? [Link]() * [Link] +
([Link]() > 0 ? ([Link]() - 1) * [Link] : 0) +
settings.htf_buffer : 0)
offset
if [Link] and [Link]([Link]) and cnt < last
bool showTrace = false
if settings.trace_anchor == 'First Timeframe' and cnt == 0
showTrace := true
showTrace
if settings.trace_anchor == 'Last Timeframe' and cnt == last - 1
showTrace := true
showTrace
[Link](offset)
[Link]().Update(offset, showTrace).FindImbalance()
cnt := cnt + 1
offset := offset + (cnt > 0 ? [Link]() * [Link] +
([Link]() > 0 ? ([Link]() - 1) * [Link] : 0) +
settings.htf_buffer : 0)
offset
if [Link] and [Link]([Link]) and cnt < last
bool showTrace = false
if settings.trace_anchor == 'First Timeframe' and cnt == 0
showTrace := true
showTrace
if settings.trace_anchor == 'Last Timeframe'
showTrace := true
showTrace
[Link](offset)
[Link]().Update(offset, showTrace).FindImbalance()

You might also like