NWEv 3
NWEv 3
var ln = array.new_line(0)
var ln2 = array.new_line(0)
//Style
upCss = input.color(color.teal, 'Colors', inline = 'inline1', group = 'Style')
dnCss = input.color(color.red, '', inline = 'inline1', group = 'Style')
upCss2 = input.color(color.blue, 'Colors', inline = 'inline2', group = 'Style')
dnCss2 = input.color(color.orange, '', inline = 'inline2', group = 'Style')
//-----------------------------------------------------------------------------}
//Functions
//-----------------------------------------------------------------------------{
//Gaussian window
gauss(x, h) => math.exp(-(math.pow(x, 2)/(h * h * 2)))
n = bar_index
//-----------------------------------------------------------------------------}
//End point method
//-----------------------------------------------------------------------------{
var coefs = array.new_float(0)
var den = 0.
var coefs2 = array.new_float(0)
var den2 = 0.
out = 0.
out2 = 0.
if not repaint
for i = 0 to 249
out += src[i] * coefs.get(i)
out2 += src[i] * coefs2.get(i)
out /= den
mae = ta.sma(math.abs(src - out), 249) * mult
upper = out + mae
lower = out - mae
out2 /= den2
mae2 = ta.sma(math.abs(src - out2), 249) * mult2
upper2 = out2 + mae2
lower2 = out2 - mae2
//-----------------------------------------------------------------------------}
//Compute and display NWE
//-----------------------------------------------------------------------------{
float y2 = na
float y1 = na
float y22 = na
float y12 = na
nwe = array.new<float>(0)
nwe2 = array.new<float>(0)
if barstate.islast and repaint
sae = 0.
sae2 = 0.
//Compute and set NWE point
for i = 0 to math.min(249,n - 1)
sum = 0.
sumw = 0.
sum2 = 0.
sumw2 = 0.
//Compute weighted mean
for j = 0 to math.min(249,n - 1)
w = gauss(i - j, h)
sum += src[j] * w
sumw += w
w2 = gauss(i - j, h2)
sum2 += src[j] * w2
sumw2 += w2
y2 := sum / sumw
sae += math.abs(src[i] - y2)
nwe.push(y2)
//if src[i] > nwe2.get(i) + sae2 and src[i+1] < nwe2.get(i) + sae2
// label.new(n-i, src[i], '▼', color = color(na), style =
label.style_label_down, textcolor = dnCss, textalign = text.align_center)
//if src[i] < nwe2.get(i) - sae2 and src[i+1] > nwe.get(i) - sae2
// label.new(n-i, src[i], '▲', color = color(na), style =
label.style_label_up, textcolor = upCss, textalign = text.align_center)
y1 := nwe.get(i)
y12 := nwe2.get(i)
//-----------------------------------------------------------------------------}
//Dashboard
//-----------------------------------------------------------------------------{
var tb = table.new(position.top_right, 1, 1
, bgcolor = #1e222d
, border_color = #373a46
, border_width = 1
, frame_color = #373a46
, frame_width = 1)
if repaint
tb.cell(0, 0, 'Repainting Mode Enabled', text_color = color.white, text_size =
size.small)
//-----------------------------------------------------------------------------}
//Plot
//-----------------------------------------------------------------------------}
plot(repaint ? na : out + mae, 'Upper', upCss)
plot(repaint ? na : out - mae, 'Lower', dnCss)
plot(repaint ? na : out2 + mae2, 'Upper', upCss2)
plot(repaint ? na : out2 - mae2, 'Lower', dnCss2)
//Crossing Arrows
plotshape(ta.crossunder(close, out - mae) ? low : na, "Crossunder", shape.labelup,
location.absolute, color(na), 0 , text = '▲', textcolor = upCss, size = size.tiny)
plotshape(ta.crossover(close, out + mae) ? high : na, "Crossover", shape.labeldown,
location.absolute, color(na), 0 , text = '▼', textcolor = dnCss, size = size.tiny)
//
===================================================================================
=================================================================================//
show_line_1(x) =>
input.bool(true, '⫸ Show Close line', group = 'On/Off') ? x : na
show_line_2(x) =>
input.bool(false, '⫸ Show High/Low lines', group = 'On/Off') ? x : na
show_fill(x) =>
input.bool(true, '⫸ Show fill', group = 'On/Off') ? x : na
show_highlight(x) =>
input.bool(true, '⫸ Show highlight', group = 'On/Off') ? x : na
// Calculations
f(x) =>
switch ma_type
'ALMA' => ta.alma(x, ma_period, alma_offset, alma_sigma)
'HMA' => ta.hma(x, ma_period)
'SMA' => ta.sma(x, ma_period)
'SWMA' => ta.swma(x)
'VWMA' => ta.vwma(x, ma_period)
'WMA' => ta.vwma(x, ma_period)
'ZLEMA' => ta.ema(x + x - x[math.floor((ma_period - 1) / 2)], ma_period)
=> ta.ema(x, ma_period)
ma_heikinashi_open = f(request.security(ticker.heikinashi(syminfo.tickerid),
timeframe.period, open))
ma_heikinashi_close = f(request.security(ticker.heikinashi(syminfo.tickerid),
timeframe.period, close))
ma_heikinashi_high = f(request.security(ticker.heikinashi(syminfo.tickerid),
timeframe.period, high))
ma_heikinashi_low = f(request.security(ticker.heikinashi(syminfo.tickerid),
timeframe.period, low))
//
===================================================================================
=================================//