0% found this document useful (0 votes)
32 views11 pages

Cash Control V2-1

Uploaded by

songheal14
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)
32 views11 pages

Cash Control V2-1

Uploaded by

songheal14
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/ 11

//@version=5

indicator('CASH CONTROL V2', overlay=true)

src = input(ohlc4, 'Price Data')


length2 = input(24, 'Lookback Window (originally = 24)')
showcross = input(true, 'Show labels?')
k = input(true, 'Use Kahlman Smoother?')
gain = input.float(1., 'Gain for the Smoother', step=.001)
o = input(true, 'Offset by 1 candle?')

hma3(x, p) =>
per = p / 2
ta.wma(ta.wma(x, per / 3) * 3 - ta.wma(x, per / 2) - ta.wma(x, per), per)

kahlman(x, g) =>
kf = 0.0
dk = x - nz(kf[1], x)
smooth = nz(kf[1], x) + dk * math.sqrt(g * 2)
velo = 0.0
velo := nz(velo[1], 0) + g * dk
kf := smooth + velo
kf

a = k ? kahlman(ta.hma(src, length2), gain) : ta.hma(src, length2)


b = k ? kahlman(hma3(close, length2), gain) : hma3(close, length2)
c = b > a ? color.lime : color.red
long = b > a and b[1] < a[1]
short = a > b and a[1] < b[1]

fill(plot(a, color=c, linewidth=1, transp=75), plot(b, color=c, linewidth=1,


transp=75), color=c, transp=55)
plotshape(showcross and long ? a : na, location=location.belowbar,
style=shape.labelup, color=color.new(color.green, 0), size=size.tiny, text='',
textcolor=color.new(color.white, 0), offset=o ? -1 : 0)
plotshape(showcross and short ? a : na, location=location.abovebar,
style=shape.labeldown, color=color.new(color.red, 0), size=size.tiny, text='',
textcolor=color.new(color.white, 0), offset=o ? -1 : 0)

//Heikin Ashi Mumlar�n�n Hesaplanmas�na dair gereken kodlar \\

haopen = 0.0
haclose = (open + high + low + close) / 4
haopen := na(haopen[1]) ? (open + close) / 2 : (haopen[1] + haclose[1]) / 2
hahigh = math.max(high, math.max(haopen, haclose))
halow = math.min(low, math.min(haopen, haclose))

// Heikin Ashi Renkleri


hacolor = haclose > haopen ? color.lime : color.red

// Al ve Sat sinyalleri
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]

// Plot Komutlar�

//bgcolor(hacolor, title="Heikin Ashi Background Color")


barcolor(hacolor, title='> Bar Renkleri')
plotshape(turnGreen, title='> Al Sinyali Rengi', style=shape.labelup,
location=location.belowbar, color=color.new(color.lime, 0),
textcolor=color.new(color.white, 0), size=size.tiny, text='AL')
plotshape(turnRed, title='> Sat Sinyali Rengi', style=shape.labeldown,
location=location.abovebar, color=color.new(color.red, 0),
textcolor=color.new(color.white, 0), size=size.tiny, text='SAT')

alertcondition(turnGreen, 'Al Sinyali Ayarla', 'Al Sinyali Ayarla')


alertcondition(turnRed, 'Sat Sinyali Ayarla', 'Sat Sinyali Ayarla')

// EMA Kanal�

length = input(9)

e = ta.ema(close, length)
eu = ta.ema(high, length),
el = ta.ema(low, length)

plot(eu, color=color.new(color.orange, 1), linewidth=3)


plot(el, color=color.new(color.orange, 1), linewidth=3)

bull_color_normal = color.orange
bull_color_strong = color.orange
bear_color_normal = color.orange
bear_color_strong = color.orange
sidewise_color = color.blue

bull_f = high > eu and low > el


bear_f = high < eu and low < el
sidewise_f = not bull_f and not bear_f
b_color = bull_f ? bull_color_normal : bear_f ? bear_color_normal : sidewise_f ?
sidewise_color : na
d_color = bull_f ? low > eu ? bull_color_strong : b_color : bear_f ? high < el ?
bear_color_strong : b_color : b_color

// destek ve diren�ler

left = 50
right = 25
quick_right = 5 // Used to try and detect a more recent significant swing.

pivot_high = ta.pivothigh(high, left, right)


pivot_lows = ta.pivotlow(low, left, right)

quick_pivot_high = ta.pivothigh(high, left, quick_right)


quick_pivot_lows = ta.pivotlow(low, left, quick_right)

level1 = ta.valuewhen(quick_pivot_high, high[quick_right], 0)


level2 = ta.valuewhen(quick_pivot_lows, low[quick_right], 0)
level3 = ta.valuewhen(pivot_high, high[right], 0)
level4 = ta.valuewhen(pivot_lows, low[right], 0)
level5 = ta.valuewhen(pivot_high, high[right], 1)
level6 = ta.valuewhen(pivot_lows, low[right], 1)
level7 = ta.valuewhen(pivot_high, high[right], 2)
level8 = ta.valuewhen(pivot_lows, low[right], 2)

level1_col = close >= level2 ? color.green : color.red


level2_col = close >= level2 ? color.green : color.red
level3_col = close >= level3 ? color.green : color.red
level4_col = close >= level4 ? color.green : color.red
level5_col = close >= level5 ? color.green : color.red
level6_col = close >= level6 ? color.green : color.red
level7_col = close >= level7 ? color.green : color.red
level8_col = close >= level8 ? color.green : color.red

plot(level1, style=plot.style_circles, color=level1_col, show_last=1, linewidth=3,


trackprice=true)
plot(level2, style=plot.style_circles, color=level2_col, show_last=1, linewidth=3,
trackprice=true)
plot(level3, style=plot.style_circles, color=level3_col, show_last=1, linewidth=3,
trackprice=true)
plot(level4, style=plot.style_circles, color=level4_col, show_last=1, linewidth=3,
trackprice=true)
plot(level5, style=plot.style_circles, color=level5_col, show_last=1, linewidth=3,
trackprice=true)
plot(level6, style=plot.style_circles, color=level6_col, show_last=1, linewidth=3,
trackprice=true)
plot(level7, style=plot.style_circles, color=level7_col, show_last=1, linewidth=3,
trackprice=true)
plot(level8, style=plot.style_circles, color=level8_col, show_last=1, linewidth=3,
trackprice=true)

//pivotlar
AUTO = 'Otomatik'
DAILY = 'G�nl�k'
WEEKLY = 'Haftal�k'
MONTHLY = 'Ayl�k'
QUARTERLY = '6 Ayl�k'
YEARLY = 'Y�ll�k'
BIYEARLY = '�ki y�ll�k'
TRIYEARLY = '3 Y�ll�k'
QUINQUENNIAL = 'Quinquennial'

TRADITIONAL = 'Traditional'
FIBONACCI = 'Fibonacci'
WOODIE = 'Woodie'
CLASSIC = 'Classic'
DEMARK = 'DM'
CAMARILLA = 'Camarilla'

kind = input.string(title='Type', defval='Fibonacci', options=[TRADITIONAL,


FIBONACCI, WOODIE, CLASSIC, DEMARK, CAMARILLA])
pivot_time_frame = input.string(title='Pivots Timeframe', defval=AUTO,
options=[AUTO, DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY, BIYEARLY, TRIYEARLY,
QUINQUENNIAL])
look_back = input.int(title='Number of Pivots Back', defval=15, minval=1,
maxval=5000)
is_daily_based = input.bool(title='Use Daily-based Values', defval=true,
tooltip='When this option is unchecked, Pivot Points will use intraday data while
calculating on intraday charts. If Extended Hours are displayed on the chart, they
will be taken into account during the pivot level calculation. If intraday OHLC
values are different from daily-based values (normal for stocks), the pivot levels
will also differ.')

show_labels = input.bool(title='Show Labels', defval=true, inline='labels')


position_labels = input.string('Left', '', options=['Left', 'Right'],
inline='labels')

var DEF_COLOR = #2986CC


var arr_time = array.new_int()
var p = array.new_float()
p_show = input.bool(true, 'P? ? ? ? ? ? ? ?', inline='P')
p_color = input.color(DEF_COLOR, '', inline='P')

var r1 = array.new_float()
var s1 = array.new_float()
s1r1_show = input.bool(true, 'S1/R1', inline='S1/R1')
s1r1_color = input.color(DEF_COLOR, '', inline='S1/R1')

var r2 = array.new_float()
var s2 = array.new_float()
s2r2_show = input.bool(true, 'S2/R2', inline='S2/R2')
s2r2_color = input.color(DEF_COLOR, '', inline='S2/R2')

var r3 = array.new_float()
var s3 = array.new_float()
s3r3_show = input.bool(true, 'S3/R3', inline='S3/R3')
s3r3_color = input.color(DEF_COLOR, '', inline='S3/R3')

var r4 = array.new_float()
var s4 = array.new_float()
s4r4_show = input.bool(true, 'S4/R4', inline='S4/R4')
s4r4_color = input.color(DEF_COLOR, '', inline='S4/R4')

var r5 = array.new_float()
var s5 = array.new_float()
s5r5_show = input.bool(true, 'S5/R5', inline='S5/R5')
s5r5_color = input.color(DEF_COLOR, '', inline='S5/R5')

pivotX_open = float(na)
pivotX_open := nz(pivotX_open[1], open)
pivotX_high = float(na)
pivotX_high := nz(pivotX_high[1], high)
pivotX_low = float(na)
pivotX_low := nz(pivotX_low[1], low)
pivotX_prev_open = float(na)
pivotX_prev_open := nz(pivotX_prev_open[1])
pivotX_prev_high = float(na)
pivotX_prev_high := nz(pivotX_prev_high[1])
pivotX_prev_low = float(na)
pivotX_prev_low := nz(pivotX_prev_low[1])
pivotX_prev_close = float(na)
pivotX_prev_close := nz(pivotX_prev_close[1])

get_pivot_resolution() =>
resolution = 'M'
if pivot_time_frame == AUTO
if timeframe.isintraday
resolution := timeframe.multiplier <= 15 ? 'D' : 'W'
resolution
else if timeframe.isweekly or timeframe.ismonthly
resolution := '12M'
resolution
else if pivot_time_frame == DAILY
resolution := 'D'
resolution
else if pivot_time_frame == WEEKLY
resolution := 'W'
resolution
else if pivot_time_frame == MONTHLY
resolution := 'M'
resolution
else if pivot_time_frame == QUARTERLY
resolution := '3M'
resolution
else if pivot_time_frame == YEARLY or pivot_time_frame == BIYEARLY or
pivot_time_frame == TRIYEARLY or pivot_time_frame == QUINQUENNIAL
resolution := '12M'
resolution
resolution

var lines = array.new_line()


var labels = array.new_label()

draw_line(i, pivot, col) =>


if array.size(arr_time) > 1
array.push(lines, line.new(array.get(arr_time, i), array.get(pivot, i),
array.get(arr_time, i + 1), array.get(pivot, i), color=col, xloc=xloc.bar_time))

draw_label(i, y, txt, txt_color) =>


if show_labels
offset = '? ? ? ? ?'
labels_align_str_left = position_labels == 'Left' ? txt + offset : offset +
txt
x = position_labels == 'Left' ? array.get(arr_time, i) :
array.get(arr_time, i + 1)
array.push(labels, label.new(x=x, y=y, text=labels_align_str_left,
textcolor=txt_color, style=label.style_label_center, color=#00000000,
xloc=xloc.bar_time))

traditional() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
array.push(p, pivotX_Median)
array.push(r1, pivotX_Median * 2 - pivotX_prev_low)
array.push(s1, pivotX_Median * 2 - pivotX_prev_high)
array.push(r2, pivotX_Median + 1 * (pivotX_prev_high - pivotX_prev_low))
array.push(s2, pivotX_Median - 1 * (pivotX_prev_high - pivotX_prev_low))
array.push(r3, pivotX_Median * 2 + pivotX_prev_high - 2 * pivotX_prev_low)
array.push(s3, pivotX_Median * 2 - (2 * pivotX_prev_high - pivotX_prev_low))
array.push(r4, pivotX_Median * 3 + pivotX_prev_high - 3 * pivotX_prev_low)
array.push(s4, pivotX_Median * 3 - (3 * pivotX_prev_high - pivotX_prev_low))
array.push(r5, pivotX_Median * 4 + pivotX_prev_high - 4 * pivotX_prev_low)
array.push(s5, pivotX_Median * 4 - (4 * pivotX_prev_high - pivotX_prev_low))

fibonacci() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Median)
array.push(r1, pivotX_Median + 0.382 * pivot_range)
array.push(s1, pivotX_Median - 0.382 * pivot_range)
array.push(r2, pivotX_Median + 0.618 * pivot_range)
array.push(s2, pivotX_Median - 0.618 * pivot_range)
array.push(r3, pivotX_Median + 1 * pivot_range)
array.push(s3, pivotX_Median - 1 * pivot_range)

woodie() =>
pivotX_Woodie_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_open * 2) /
4
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Woodie_Median)
array.push(r1, pivotX_Woodie_Median * 2 - pivotX_prev_low)
array.push(s1, pivotX_Woodie_Median * 2 - pivotX_prev_high)
array.push(r2, pivotX_Woodie_Median + 1 * pivot_range)
array.push(s2, pivotX_Woodie_Median - 1 * pivot_range)

pivot_point_r3 = pivotX_prev_high + 2 * (pivotX_Woodie_Median -


pivotX_prev_low)
pivot_point_s3 = pivotX_prev_low - 2 * (pivotX_prev_high -
pivotX_Woodie_Median)
array.push(r3, pivot_point_r3)
array.push(s3, pivot_point_s3)
array.push(r4, pivot_point_r3 + pivot_range)
array.push(s4, pivot_point_s3 - pivot_range)

classic() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Median)
array.push(r1, pivotX_Median * 2 - pivotX_prev_low)
array.push(s1, pivotX_Median * 2 - pivotX_prev_high)
array.push(r2, pivotX_Median + 1 * pivot_range)
array.push(s2, pivotX_Median - 1 * pivot_range)
array.push(r3, pivotX_Median + 2 * pivot_range)
array.push(s3, pivotX_Median - 2 * pivot_range)
array.push(r4, pivotX_Median + 3 * pivot_range)
array.push(s4, pivotX_Median - 3 * pivot_range)

demark() =>
pivotX_Demark_X = pivotX_prev_high + pivotX_prev_low * 2 + pivotX_prev_close
if pivotX_prev_close == pivotX_prev_open
pivotX_Demark_X := pivotX_prev_high + pivotX_prev_low + pivotX_prev_close *
2
pivotX_Demark_X
if pivotX_prev_close > pivotX_prev_open
pivotX_Demark_X := pivotX_prev_high * 2 + pivotX_prev_low +
pivotX_prev_close
pivotX_Demark_X
array.push(p, pivotX_Demark_X / 4)
array.push(r1, pivotX_Demark_X / 2 - pivotX_prev_low)
array.push(s1, pivotX_Demark_X / 2 - pivotX_prev_high)

camarilla() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Median)
array.push(r1, pivotX_prev_close + pivot_range * 1.1 / 12.0)
array.push(s1, pivotX_prev_close - pivot_range * 1.1 / 12.0)
array.push(r2, pivotX_prev_close + pivot_range * 1.1 / 6.0)
array.push(s2, pivotX_prev_close - pivot_range * 1.1 / 6.0)
array.push(r3, pivotX_prev_close + pivot_range * 1.1 / 4.0)
array.push(s3, pivotX_prev_close - pivot_range * 1.1 / 4.0)
array.push(r4, pivotX_prev_close + pivot_range * 1.1 / 2.0)
array.push(s4, pivotX_prev_close - pivot_range * 1.1 / 2.0)

resolution = get_pivot_resolution()

[sec_open, sec_high, sec_low, sec_close] = request.security(syminfo.tickerid,


resolution, [open, high, low, close], lookahead=barmerge.lookahead_on)
sec_open_gaps_on = request.security(syminfo.tickerid, resolution, open,
gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_on)

var number_of_years = 0
is_change_years = false
var custom_years_resolution = pivot_time_frame == BIYEARLY or pivot_time_frame ==
TRIYEARLY or pivot_time_frame == QUINQUENNIAL
if custom_years_resolution and ta.change(time(resolution))
number_of_years += 1
if pivot_time_frame == BIYEARLY and number_of_years % 2 == 0
is_change_years := true
number_of_years := 0
number_of_years
else if pivot_time_frame == TRIYEARLY and number_of_years % 3 == 0
is_change_years := true
number_of_years := 0
number_of_years
else if pivot_time_frame == QUINQUENNIAL and number_of_years % 5 == 0
is_change_years := true
number_of_years := 0
number_of_years

var is_change = false


var uses_current_bar = timeframe.isintraday and kind == WOODIE
var change_time = int(na)
is_time_change = ta.change(time(resolution)) and not custom_years_resolution or
is_change_years
if is_time_change
change_time := time
change_time

if not uses_current_bar and is_time_change or uses_current_bar and not


na(sec_open_gaps_on)
if is_daily_based
pivotX_prev_open := sec_open[1]
pivotX_prev_high := sec_high[1]
pivotX_prev_low := sec_low[1]
pivotX_prev_close := sec_close[1]
pivotX_open := sec_open
pivotX_high := sec_high
pivotX_low := sec_low
pivotX_low
else
pivotX_prev_high := pivotX_high
pivotX_prev_low := pivotX_low
pivotX_prev_open := pivotX_open
pivotX_open := open
pivotX_high := high
pivotX_low := low
pivotX_prev_close := close[1]
pivotX_prev_close

if barstate.islast and not is_change and array.size(arr_time) > 0


array.set(arr_time, array.size(arr_time) - 1, change_time)
else
array.push(arr_time, change_time)

if kind == TRADITIONAL
traditional()
else if kind == FIBONACCI
fibonacci()
else if kind == WOODIE
woodie()
else if kind == CLASSIC
classic()
else if kind == DEMARK
demark()
else if kind == CAMARILLA
camarilla()

if array.size(arr_time) > look_back


if array.size(arr_time) > 0
array.shift(arr_time)
if array.size(p) > 0 and p_show
array.shift(p)
if array.size(r1) > 0 and s1r1_show
array.shift(r1)
if array.size(s1) > 0 and s1r1_show
array.shift(s1)
if array.size(r2) > 0 and s2r2_show
array.shift(r2)
if array.size(s2) > 0 and s2r2_show
array.shift(s2)
if array.size(r3) > 0 and s3r3_show
array.shift(r3)
if array.size(s3) > 0 and s3r3_show
array.shift(s3)
if array.size(r4) > 0 and s4r4_show
array.shift(r4)
if array.size(s4) > 0 and s4r4_show
array.shift(s4)
if array.size(r5) > 0 and s5r5_show
array.shift(r5)
if array.size(s5) > 0 and s5r5_show
array.shift(s5)
is_change := true
is_change
else
if is_daily_based
pivotX_high := math.max(pivotX_high, sec_high)
pivotX_low := math.min(pivotX_low, sec_low)
pivotX_low
else
pivotX_high := math.max(pivotX_high, high)
pivotX_low := math.min(pivotX_low, low)
pivotX_low
if barstate.islast and array.size(arr_time) > 0 and is_change
is_change := false
if array.size(arr_time) > 2 and custom_years_resolution
last_pivot_time = array.get(arr_time, array.size(arr_time) - 1)
prev_pivot_time = array.get(arr_time, array.size(arr_time) - 2)
estimate_pivot_time = last_pivot_time - prev_pivot_time
array.push(arr_time, last_pivot_time + estimate_pivot_time)
else
array.push(arr_time, time_close(resolution))

for i = 0 to array.size(lines) - 1 by 1
if array.size(lines) > 0
line.delete(array.shift(lines))
if array.size(lines) > 0
label.delete(array.shift(labels))

for i = 0 to array.size(arr_time) - 2 by 1
if array.size(p) > 0 and p_show
draw_line(i, p, p_color)
draw_label(i, array.get(p, i), 'P', p_color)
if array.size(r1) > 0 and s1r1_show
draw_line(i, r1, s1r1_color)
draw_label(i, array.get(r1, i), 'R1', s1r1_color)
if array.size(s1) > 0 and s1r1_show
draw_line(i, s1, s1r1_color)
draw_label(i, array.get(s1, i), 'S1', s1r1_color)
if array.size(r2) > 0 and s2r2_show
draw_line(i, r2, s2r2_color)
draw_label(i, array.get(r2, i), 'R2', s2r2_color)
if array.size(s2) > 0 and s2r2_show
draw_line(i, s2, s2r2_color)
draw_label(i, array.get(s2, i), 'S2', s2r2_color)
if array.size(r3) > 0 and s3r3_show
draw_line(i, r3, s3r3_color)
draw_label(i, array.get(r3, i), 'R3', s3r3_color)
if array.size(s3) > 0 and s3r3_show
draw_line(i, s3, s3r3_color)
draw_label(i, array.get(s3, i), 'S3', s3r3_color)
if array.size(r4) > 0 and s4r4_show
draw_line(i, r4, s4r4_color)
draw_label(i, array.get(r4, i), 'R4', s4r4_color)
if array.size(s4) > 0 and s4r4_show
draw_line(i, s4, s4r4_color)
draw_label(i, array.get(s4, i), 'S4', s4r4_color)
if array.size(r5) > 0 and s5r5_show
draw_line(i, r5, s5r5_color)
draw_label(i, array.get(r5, i), 'R5', s5r5_color)
if array.size(s5) > 0 and s5r5_show
draw_line(i, s5, s5r5_color)
draw_label(i, array.get(s5, i), 'S5', s5r5_color)

// TRENDLINE // trend line

//###### FUNCTIONS ##################################//


truncate(number, decimals) =>
factor = math.pow(10, decimals)
int(number * factor) / factor

nround(x) =>
n = math.round(x / syminfo.mintick) * syminfo.mintick
n

chosenColor(c_) =>
c_ == 'aqua' ? #00FFFFff : c_ == 'blue' ? #0040FFff : c_ == 'fuchsia' ?
color.rgb(218, 251, 0) : c_ == 'gray' ? #808080ff : c_ == 'green' ? #008000ff : c_
== 'lime' ? #00FF00ff : c_ == 'maroon' ? #800000ff : c_ == 'navy' ? #000099ff : c_
== 'olive' ? #808000ff : c_ == 'orange' ? #FF8000ff : c_ == 'purple' ? #8000FFff :
c_ == 'red' ? #ff0000ff : c_ == 'silver' ? #C0C0C0ff : c_ == 'teal' ? #008080ff :
c_ == 'white' ? #FFFFFFff : #00000000

//###### DRAW TREND CHANNEL#########################//


period = input.int(100, 'Period', minval=3)
deviations = input.float(2.0, 'Deviation(s)', minval=0.1, step=0.1)
extendType = input.string('Right', 'Extend Method', options=['Right', 'None']) ==
'None' ? extend.none : extend.right
periodMinusOne = period - 1
Ex = 0.0
Ey = 0.0
Ex2 = 0.0
Exy = 0.0
for i = 0 to periodMinusOne by 1
closeI = nz(close[i])
Ex += i
Ey += closeI
Ex2 += i * i
Exy += closeI * i
Exy
ExEx = Ex * Ex
slope = Ex2 == ExEx ? 0.0 : (period * Exy - Ex * Ey) / (period * Ex2 - ExEx)
linearRegression = (Ey - slope * Ex) / period
intercept = linearRegression + bar_index * slope
deviation = 0.0
for i = 0 to periodMinusOne by 1
deviation += math.pow(nz(close[i]) - (intercept - slope * bar_index[i]), 2.0)
deviation
deviation := deviations * math.sqrt(deviation / periodMinusOne)
startingPointY = linearRegression + slope * periodMinusOne

//####### DRAWING LINES SECTION ####


var line upperChannelLine = na
var line medianChannelLine = na
var line lowerChannelLine = na
line.delete(upperChannelLine[1])
line.delete(medianChannelLine[1])
line.delete(lowerChannelLine[1])

// added color inputs


upperLineColor = input.string(title='Upper Channel Color', defval='fuchsia',
options=['aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon',
'navy', 'olive', 'orange', 'purple', 'red', 'silver', 'teal', 'white', 'yellow'])
middleLineColor = input.string(title='Middle Channel Color', defval='orange',
options=['aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon',
'navy', 'olive', 'orange', 'purple', 'red', 'silver', 'teal', 'white', 'yellow'])
lowerChannelColor = input.string(title='Lower Channel Color', defval='fuchsia',
options=['aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon',
'navy', 'olive', 'orange', 'purple', 'red', 'silver', 'teal', 'white', 'yellow'])
// draw channels
upperChannelLine := line.new(bar_index - period + 1, startingPointY + deviation,
bar_index, linearRegression + deviation, xloc.bar_index, extendType,
chosenColor(upperLineColor), line.style_solid, 3)
medianChannelLine := line.new(bar_index - period + 1, startingPointY, bar_index,
linearRegression, xloc.bar_index, extendType, chosenColor(middleLineColor),
line.style_solid, 1)
lowerChannelLine := line.new(bar_index - period + 1, startingPointY - deviation,
bar_index, linearRegression - deviation, xloc.bar_index, extendType,
chosenColor(lowerChannelColor), line.style_solid, 3)

disp_panels = input(true, title='Display info panels?')


linear_label_off = input.int(0, title='linear label offset', minval=0)
linear_label_size = input.string(size.normal, options=[size.tiny, size.small,
size.normal, size.large, size.huge], title='linear label size')
pos_x = timenow + math.round(ta.change(time) * linear_label_off)
pos_y_upper = nround(linearRegression + deviation)
candle_look_back = input.int(defval=3, title='Look back', minval=1, maxval=5,
step=1)
pos_y_upper_previous = nround(linearRegression[candle_look_back] +
deviation[candle_look_back])
// pos_y_middle = nround(linearRegression) // doesn't need midde line
pos_y_lower = truncate(nround(linearRegression - deviation), 5)
pos_y_lower_previous = nround(linearRegression[candle_look_back] -
deviation[candle_look_back])

// to memorize entries

//####### ALERT PANEL SECTION ####


ready_to_sell = ta.crossover(close, pos_y_upper_previous)
ready_to_buy = ta.crossunder(close, pos_y_lower_previous)

You might also like