0% found this document useful (0 votes)
266 views4 pages

Code

stock market code

Uploaded by

ujjawalsinghh90
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)
266 views4 pages

Code

stock market code

Uploaded by

ujjawalsinghh90
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/ 4

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.

0
at https://mozilla.org/MPL/2.0/
// © ChartPrime

//@version=5
indicator('Linear Regression Channel', overlay = true, max_lines_count = 3)

//
-----------------------------------------------------------------------------------

// 𝙐𝙎𝙀𝙍 𝙄𝙉𝙋𝙐𝙏𝙎
----------------------------------}

//
-----------------------------------------------------------------------------------
----------------------------------{
bool bands = input.bool(true, "Plot Linear Regression Bands", group =
"Settings Bands")

int window = input.int(150, "Length", group = "Settings Bands")


float devlen_b = input.float(3., "Deviation Linear Regression Bands",step=0.1,
group = "Settings Bands")

bool channel = input.bool(false, "Plot Linear Regression Channel", group =


"Settings Channel")
int window1 = input.int(150, "Channel Length", group = "Settings Channel")
float devlen1 = input.float(1., "Deviation Linear Regression Channel",step=0.1,
group = "Settings Channel")

bool channel1 = input.bool(false, "Plot Future Projection of linear regression",


group = "Future Projection Channel")
bool arr_dirc = input.bool(false, "Plot Arrow Direction", group = "Future
Projection Channel")
int window2 = input.int(50, "Length", group = "Future Projection Channel")
float devlen2 = input.float(1., "Deviation Future Projection Regression
Channel",step=0.1, group = "Future Projection Channel")

// Define colors for up, down, and mid lines


color col_dn = #f01313
color col_up = color.aqua
color col_mid = color.yellow
color gray = color.gray
color fg_col = chart.fg_color

// Regression Channel Arrays Line


var reglines = array.new_line(3)
var reglines_ = array.new_line(3)

//
-----------------------------------------------------------------------------------

// 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍 𝘾𝘼𝙇𝘾𝙐𝙇𝘼𝙏𝙄𝙊𝙉𝙎
----------------------------------}

//
-----------------------------------------------------------------------------------
----------------------------------{

//@function linear_regression
//@description Calculates linear regression coefficients for a given source and
window.
//@param src (series float) The data series on which linear regression is
calculated.
//@param window (int) The number of bars to use in the calculation.
//@returns the intercept slope, Deviation, end of the channel.
linear_regression(src, window) =>
sum_x = 0.0
sum_y = 0.0
sum_xy = 0.0
sum_x_sq = 0.0

// Calculate sums
for i = 0 to window - 1 by 1
sum_x += i + 1
sum_y += src[i]
sum_xy += (i + 1) * src[i]
sum_x_sq += math.pow(i + 1, 2)

// Calculate linear regression coefficients


slope = (window * sum_xy - sum_x * sum_y) / (window * sum_x_sq -
math.pow(sum_x, 2))
intercept = (sum_y - slope * sum_x) / window

y1 = intercept + slope * (window - 1)


dev = 0.0
for i = 0 to window - 1
dev := dev + math.pow(src[i] - (slope * (window - i) + intercept), 2)
dev := math.sqrt(dev/window)

[intercept, y1, dev, slope]

[y2, y1, dev, slope] = linear_regression(close, window)

[y2_, y1_, dev_, slope_] = linear_regression(close, window1)

[y2__, y1__, dev__, slope__] = linear_regression(close, window2)

// Linear Regression Channel Lines


series float mid = y2 + slope
series float upper = mid + ta.rma(high - low, window) * devlen_b
series float lower = mid - ta.rma(high - low, window) * devlen_b

// Returns True for window length period


isAllowed = (last_bar_index - bar_index < window1)

//
-----------------------------------------------------------------------------------

// 𝙑𝙄𝙎𝙐𝘼𝙇𝙄𝙕𝘼𝙏𝙄𝙊𝙉
----------------------------------}

//
-----------------------------------------------------------------------------------
----------------------------------{

// Plot upper, lower, and mid lines if channel is not enabled


p_u = plot(upper, color = bands and channel ? na : bands ? gray : na, linewidth =
2)
p_l = plot(lower, color = bands and channel ? na : bands ? gray : na, linewidth =
2)
p_m = plot(mid, color = bands and channel ? na : bands ? gray : na)
// Fill areas between upper/mid and lower/mid lines
fill(p_u, p_m, mid, upper, na, bands and channel ? na : bands ? color.new(col_up,
80) : na)
fill(p_m, p_l, lower, mid, bands and channel ? na : bands ? color.new(col_dn,
80) : na, na)

if barstate.islast and channel


for i = 0 to 2
array.set(reglines, i,
line.new(x1 = bar_index - (window1 - 1),
y1 = y1_ + dev_ * devlen1 * (i - 1),
x2 = bar_index,
y2 = y2_ + dev_ * devlen1 * (i - 1),
color = color.gray,
style = i % 2 == 1 ? line.style_dashed : line.style_solid,
width = 2,
extend = extend.none)
)

linefill.new(array.get(reglines, 1), array.get(reglines, 2), color =


color.new(col_up, 90))
linefill.new(array.get(reglines, 1), array.get(reglines, 0), color =
color.new(col_dn, 90))

if barstate.islast and channel1


for i = 0 to 2
array.set(reglines_, i,
line.new(x1 = bar_index - (window2 - 1),
y1 = y1__ + dev__ * devlen2 * (i - 1),
x2 = bar_index,
y2 = y2__ + dev__ * devlen2 * (i - 1),
color = color.gray,
style = i % 2 == 1 ? line.style_dotted : line.style_dashed,
width = 1,
extend = extend.right)
)

linefill.new(array.get(reglines_, 1), array.get(reglines_, 2), color =


color.new(col_up, 95))
linefill.new(array.get(reglines_, 1), array.get(reglines_, 0), color =
color.new(col_dn, 95))

if arr_dirc
l1 = label.new(chart.point.from_index(bar_index, hl2 > y2__ ? high : low),
text = hl2 > y2__ ? "⇗" : hl2 < y2__ ? "⇘" : "⇒",
textcolor = hl2 > y2__ ? col_up : hl2 < y2__ ? col_dn : gray,
color = color(na),
size = size.huge,
style = label.style_label_left
)
label.delete(l1[1])

// Bar Heat Map


b_c = (close - lower) / (upper - lower)
b_c := b_c > 1 ? 1 : b_c < 0 ? 0 : b_c
bar_color = channel ?
(isAllowed ?
(b_c <= 0.5 ? color.from_gradient(b_c, 0, 0.5, col_up, col_mid) :
color.from_gradient(b_c, 0.5, 1, col_mid, col_dn))
: na)
: (b_c >= 0.5 ? color.from_gradient(b_c, 0.5, 1, col_mid, col_up) :
color.from_gradient(b_c, 0, 0.5, col_dn, col_mid))

plotcandle(open, high, low, close,


title = "Bar HeatMap",
color = bar_color,
wickcolor = bar_color,
bordercolor = bar_color
)
barcolor(bar_color)

// Conditions for crossovers


condition1 = bands and channel ? na : bands ? ta.pivotlow(3, 3) and close < lower :
na
condition2 = bands and channel ? na : bands ? ta.pivothigh(3, 3) and close > upper:
na

// Plot markers for channel break outs


plotchar(condition1, "", "◆", size=size.tiny, location=location.belowbar, color =
col_up)
plotchar(condition2, "", "◆", size=size.tiny, location=location.abovebar, color =
col_dn)

//
-----------------------------------------------------------------------------------
----------------------------------}

You might also like