Thanks to visit codestin.com
Credit goes to www.scribd.com

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

(ParkF) 11223

Uploaded by

boscojb666
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)
14 views11 pages

(ParkF) 11223

Uploaded by

boscojb666
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("[_ParkF]MFI+", max_bars_back=1500, overlay=false)

// MFI
// inpu
mfig = 'MFI'
len = input.int(title="Length", defval=14, minval=1, maxval=2000, group=mfig)
msrc = hlc3
ad = true
mf = ta.mfi(msrc, len)
overbought=hline(80, title="Overbought", color=color.new(#b2b5be, 50),
linestyle=hline.style_solid, linewidth=4)
oversold=hline(20, title="Oversold", color=color.new(#b2b5be, 50),
linestyle=hline.style_solid, linewidth=4)
fill(overbought, oversold, color=color.rgb(126, 87, 194, 90), title="Background")

// mfi function
pine_mf(msrc, len) =>
u = math.max(msrc - msrc[1], 0)
d = math.max(msrc[1] - msrc, 0)
rs = ta.mfi(u, len) / ta.mfi(d, len)
res = 100.0 - 100.0 / (1 + rs)
res
pine_mfi(msrc, len) =>
b = 1 / len
sum = 0.0
sum := na(sum[1]) ? ta.sma(msrc, len) : b * msrc + (1 - b) * nz(sum[1])
u = math.max(msrc - msrc[1], 0)
d = math.max(msrc[1] - msrc, 0)
b = 1 / len
muh = b * math.max(high - close[1], 0) + (1 - b) * ta.mfi(u, len)[1]
mdh = (1 - b) * ta.mfi(d, len)[1]
mul = (1 - b) * ta.mfi(u, len)[1]
mdl = b * math.max(close[1] - low, 0) + (1 - b) * ta.mfi(d, len)[1]
function(mf, len) =>
f = -math.pow(math.abs(math.abs(mf - 50) - 50), 1 + math.pow(len / 14, 0.618) -
1) / math.pow(50, math.pow(len / 14, 0.618) - 1) + 50
mfiadvanced = if mf > 50
f + 50
else
-f + 50
mfiadvanced
mfiha = 100.0 - 100.0 / (1 + muh / mdh)
mfila = 100.0 - 100.0 / (1 + mul / mdl)
mfia = ta.mfi(msrc, len)
mfih = if ad
function(mfiha, len)
else
mfiha
mfil = if ad
function(mfila, len)
else
mfila

// candle
plotcandle(mf[1], mfih, mfil, mf, 'MFI_Candle', color=ta.change(mf) > 0 ? #ffffff :
#000000, wickcolor=#000000, bordercolor=#2a2e39, display=display.none)
plot(mf, 'MFI_Line', color=ta.change(mf) > 0 ? color.black : color.black,
linewidth=2)

// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]


// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //

// mfi divergence
// input
rb = input(2, 'Pivots Rightbars', group=mfig)
lb = input(15, 'Pivots Leftbars for Pivots', group=mfig)
sph = input(close, 'Bearish Divs_Pivot Source', group=mfig)
spl = input(close, 'Bullish Divs_Pivot Source', group=mfig)
lvl = input.int(5, 'Lookback Level_Divs', options=[1, 2, 3, 4, 5], group=mfig)
div_col = input.color(color.orange, 'Divergence Line Color', group=mfig)

// pivot
ph = ta.pivothigh(sph, lb, rb)
pl = ta.pivotlow(spl, lb, rb)

hi0 = ta.valuewhen(ph, sph[rb], 0)


hi1 = ta.valuewhen(ph, sph[rb], 1)
hi2 = ta.valuewhen(ph, sph[rb], 2)
hi3 = ta.valuewhen(ph, sph[rb], 3)
hi4 = ta.valuewhen(ph, sph[rb], 4)
hi5 = ta.valuewhen(ph, sph[rb], 5)

lo0 = ta.valuewhen(pl, spl[rb], 0)


lo1 = ta.valuewhen(pl, spl[rb], 1)
lo2 = ta.valuewhen(pl, spl[rb], 2)
lo3 = ta.valuewhen(pl, spl[rb], 3)
lo4 = ta.valuewhen(pl, spl[rb], 4)
lo5 = ta.valuewhen(pl, spl[rb], 5)

lox0 = ta.valuewhen(pl, bar_index[rb], 0)


lox1 = ta.valuewhen(pl, bar_index[rb], 1)
lox2 = ta.valuewhen(pl, bar_index[rb], 2)
lox3 = ta.valuewhen(pl, bar_index[rb], 3)
lox4 = ta.valuewhen(pl, bar_index[rb], 4)
lox5 = ta.valuewhen(pl, bar_index[rb], 5)

hix0 = ta.valuewhen(ph, bar_index[rb], 0)


hix1 = ta.valuewhen(ph, bar_index[rb], 1)
hix2 = ta.valuewhen(ph, bar_index[rb], 2)
hix3 = ta.valuewhen(ph, bar_index[rb], 3)
hix4 = ta.valuewhen(ph, bar_index[rb], 4)
hix5 = ta.valuewhen(ph, bar_index[rb], 5)

mfi = ta.mfi(close, len)

rh0 = ta.valuewhen(ph, mf[rb], 0)


rh1 = ta.valuewhen(ph, mf[rb], 1)
rh2 = ta.valuewhen(ph, mf[rb], 2)
rh3 = ta.valuewhen(ph, mf[rb], 3)
rh4 = ta.valuewhen(ph, mf[rb], 4)
rh5 = ta.valuewhen(ph, mf[rb], 5)
rl0 = ta.valuewhen(pl, mf[rb], 0)
rl1 = ta.valuewhen(pl, mf[rb], 1)
rl2 = ta.valuewhen(pl, mf[rb], 2)
rl3 = ta.valuewhen(pl, mf[rb], 3)
rl4 = ta.valuewhen(pl, mf[rb], 4)
rl5 = ta.valuewhen(pl, mf[rb], 5)

// bull & bear divergence logic


bull_div_1= lo0<lo1
and rl1<rl0
bull_div_2= lo0<lo1 and lo0<lo2
and rl2<rl0 and rl2<rl1 and lvl>=2
bull_div_3= lo0<lo1 and lo0<lo2 and lo0<lo3
and rl3<rl0 and rl3<rl1 and rl3<rl2 and lvl>=3
bull_div_4= lo0<lo1 and lo0<lo2 and lo0<lo3 and lo0<lo4
and rl4<rl0 and rl4<rl1 and rl4<rl2 and rl4<rl3 and lvl>=4
bull_div_5= lo0<lo1 and lo0<lo2 and lo0<lo3 and lo0<lo4 and lo0<lo5
and rl5<rl0 and rl5<rl1 and rl5<rl2 and rl5<rl3 and rl5<rl4 and lvl>=5

bear_div_1= hi0>hi1
and rh1>rh0
bear_div_2= hi0>hi1 and hi0>hi2
and rh2>rh0 and rh2>rh1 and lvl>=2
bear_div_3= hi0>hi1 and hi0>hi2 and hi0>hi3
and rh3>rh0 and rh3>rh1 and rh3>rh2 and lvl>=3
bear_div_4= hi0>hi1 and hi0>hi2 and hi0>hi3 and hi0>hi4
and rh4>rh0 and rh4>rh1 and rh4>rh2 and rh4>rh3 and lvl>=4
bear_div_5= hi0>hi1 and hi0>hi2 and hi0>hi3 and hi0>hi4 and hi0>hi5
and rh5>rh0 and rh5>rh1 and rh5>rh2 and rh5>rh3 and rh5>rh4 and lvl>=5

new_bull1= bull_div_1 and not bull_div_1[1]


new_bull2= bull_div_2 and not bull_div_2[1]
new_bull3= bull_div_3 and not bull_div_3[1]
new_bull4= bull_div_4 and not bull_div_4[1]
new_bull5= bull_div_5 and not bull_div_5[1]

new_bear1= bear_div_1 and not bear_div_1[1]


new_bear2= bear_div_2 and not bear_div_2[1]
new_bear3= bear_div_3 and not bear_div_3[1]
new_bear4= bear_div_4 and not bear_div_4[1]
new_bear5= bear_div_5 and not bear_div_5[1]

recall(x) =>
ta.barssince(not na(x))

// bull divergence line plot


rbull1 = line(na)
rbull1 := new_bull1 and not new_bull2 and not new_bull3 and not new_bull4 and not
new_bull5 ? line.new(lox0, rl0, lox1, rl1, color=div_col, width=2) : na
rbull2 = line(na)
rbull2 := new_bull2 and not new_bull3 and not new_bull4 and not new_bull5 ?
line.new(lox0, rl0, lox2, rl2, color=div_col, width=2) : na
rbull3 = line(na)
rbull3 := new_bull3 and not new_bull4 and not new_bull5 ? line.new(lox0, rl0, lox3,
rl3, color=div_col, width=2) : na
rbull4 = line(na)
rbull4 := new_bull4 and not new_bull5 ? line.new(lox0, rl0, lox4, rl4,
color=div_col, width=2) : na
rbull5 = line(na)
rbull5 := new_bull5 ? line.new(lox0, rl0, lox5, rl5, color=div_col, width=2) : na

xbull21 = ta.valuewhen(recall(rbull2) == 0, bar_index, 0) -


ta.valuewhen(recall(rbull1) == 0, bar_index, 0)
xbull31 = ta.valuewhen(recall(rbull3) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull1) == 0, bar_index, 0)
xbull41 = ta.valuewhen(recall(rbull4) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull1) == 0, bar_index, 0)
xbull51 = ta.valuewhen(recall(rbull5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull1) == 0, bar_index, 0)
xbull32 = ta.valuewhen(recall(rbull3) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull2) == 0, bar_index, 0)
xbull42 = ta.valuewhen(recall(rbull4) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull2) == 0, bar_index, 0)
xbull52 = ta.valuewhen(recall(rbull5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull2) == 0, bar_index, 0)
xbull43 = ta.valuewhen(recall(rbull4) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull3) == 0, bar_index, 0)
xbull53 = ta.valuewhen(recall(rbull5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull3) == 0, bar_index, 0)
xbull54 = ta.valuewhen(recall(rbull5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbull4) == 0, bar_index, 0)

if new_bull2 and lo2 == ta.valuewhen(new_bull1, lo1, 0) and xbull21 >= 0


line.delete(rbull1[xbull21])
if new_bull3 and lo3 == ta.valuewhen(new_bull1, lo1, 0) and xbull31 >= 0
line.delete(rbull1[xbull31])
if new_bull4 and lo4 == ta.valuewhen(new_bull1, lo1, 0) and xbull41 >= 0
line.delete(rbull1[xbull41])
if new_bull5 and lo5 == ta.valuewhen(new_bull1, lo1, 0) and xbull51 >= 0
line.delete(rbull1[xbull51])
if new_bull3 and lo3 == ta.valuewhen(new_bull2, lo2, 0) and xbull32 >= 0
line.delete(rbull2[xbull32])
if new_bull4 and lo4 == ta.valuewhen(new_bull2, lo2, 0) and xbull42 >= 0
line.delete(rbull2[xbull42])
if new_bull5 and lo5 == ta.valuewhen(new_bull2, lo2, 0) and xbull52 >= 0
line.delete(rbull2[xbull52])
if new_bull4 and lo4 == ta.valuewhen(new_bull3, lo3, 0) and xbull43 >= 0
line.delete(rbull3[xbull43])
if new_bull5 and lo5 == ta.valuewhen(new_bull3, lo3, 0) and xbull53 >= 0
line.delete(rbull3[xbull53])
if new_bull5 and lo5 == ta.valuewhen(new_bull4, lo4, 0) and xbull54 >= 0
line.delete(rbull4[xbull54])

// bear divergence line plot


rbear1 = line(na)
rbear1 := new_bear1 and not new_bear2 and not new_bear3 and not new_bear4 and not
new_bear5 ? line.new(hix0, rh0, hix1, rh1, color=div_col, width=2) : na
rbear2 = line(na)
rbear2 := new_bear2 and not new_bear3 and not new_bear4 and not new_bear5 ?
line.new(hix0, rh0, hix2, rh2, color=div_col, width=2) : na
rbear3 = line(na)
rbear3 := new_bear3 and not new_bear4 and not new_bear5 ? line.new(hix0, rh0, hix3,
rh3, color=div_col, width=2) : na
rbear4 = line(na)
rbear4 := new_bear4 and not new_bear5 ? line.new(hix0, rh0, hix4, rh4,
color=div_col, width=2) : na
rbear5 = line(na)
rbear5 := new_bear5 ? line.new(hix0, rh0, hix5, rh5, color=div_col, width=2) : na
xbear21 = ta.valuewhen(recall(rbear2) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear1) == 0, bar_index, 0)
xbear31 = ta.valuewhen(recall(rbear3) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear1) == 0, bar_index, 0)
xbear41 = ta.valuewhen(recall(rbear4) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear1) == 0, bar_index, 0)
xbear51 = ta.valuewhen(recall(rbear5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear1) == 0, bar_index, 0)
xbear32 = ta.valuewhen(recall(rbear3) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear2) == 0, bar_index, 0)
xbear42 = ta.valuewhen(recall(rbear4) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear2) == 0, bar_index, 0)
xbear52 = ta.valuewhen(recall(rbear5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear2) == 0, bar_index, 0)
xbear43 = ta.valuewhen(recall(rbear4) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear3) == 0, bar_index, 0)
xbear53 = ta.valuewhen(recall(rbear5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear3) == 0, bar_index, 0)
xbear54 = ta.valuewhen(recall(rbear5) == 0, bar_index, 0) -
ta.valuewhen(recall(rbear4) == 0, bar_index, 0)

if new_bear2 and hi2 == ta.valuewhen(new_bear1, hi1, 0) and xbear21 >= 0


line.delete(rbear1[xbear21])
if new_bear3 and hi3 == ta.valuewhen(new_bear1, hi1, 0) and xbear31 >= 0
line.delete(rbear1[xbear31])
if new_bear4 and hi4 == ta.valuewhen(new_bear1, hi1, 0) and xbear41 >= 0
line.delete(rbear1[xbear41])
if new_bear5 and hi5 == ta.valuewhen(new_bear1, hi1, 0) and xbear51 >= 0
line.delete(rbear1[xbear51])
if new_bear3 and hi3 == ta.valuewhen(new_bear2, hi2, 0) and xbear32 >= 0
line.delete(rbear2[xbear32])
if new_bear4 and hi4 == ta.valuewhen(new_bear2, hi2, 0) and xbear42 >= 0
line.delete(rbear2[xbear42])
if new_bear5 and hi5 == ta.valuewhen(new_bear2, hi2, 0) and xbear52 >= 0
line.delete(rbear2[xbear52])
if new_bear4 and hi4 == ta.valuewhen(new_bear3, hi3, 0) and xbear43 >= 0
line.delete(rbear3[xbear43])
if new_bear5 and hi5 == ta.valuewhen(new_bear3, hi3, 0) and xbear53 >= 0
line.delete(rbear3[xbear53])
if new_bear5 and hi5 == ta.valuewhen(new_bear4, hi4, 0) and xbear54 >= 0
line.delete(rbear4[xbear54])

plotshape(title='bull_div_1', series=new_bull1 ? 13 : na, style=shape.triangleup,


color=#089981, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bull_div_2', series=new_bull2 ? 13 : na, style=shape.triangleup,
color=#089981, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bull_div_3', series=new_bull3 ? 13 : na, style=shape.triangleup,
color=#089981, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bull_div_4', series=new_bull4 ? 13 : na, style=shape.triangleup,
color=#089981, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bull_div_5', series=new_bull5 ? 13 : na, style=shape.triangleup,
color=#089981, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bear_div_1', series=new_bear1 ? 87 : na, style=shape.triangledown,
color=#f23645, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bear_div_2', series=new_bear2 ? 87 : na, style=shape.triangledown,
color=#f23645, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bear_div_3', series=new_bear3 ? 87 : na, style=shape.triangledown,
color=#f23645, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bear_div_4', series=new_bear4 ? 87 : na, style=shape.triangledown,
color=#f23645, location=location.absolute, size=size.tiny, offset=-2)
plotshape(title='bear_div_5', series=new_bear5 ? 87 : na, style=shape.triangledown,
color=#f23645, location=location.absolute, size=size.tiny, offset=-2)

// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]


// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //

// linear regression
// input
lrg = 'Linear Regression'
linreg1 = input(true, 'Longterm Linear Regression On / Off', group=lrg)
periodTrend = input.int(100, 'Longterm Linear Regression Period', minval=4,
group=lrg)
linreg2 = input(true, 'Shorterm Linear Regression On / Off', group=lrg)
periodTrend2 = input.int(25, 'Shorterm Linear Regression Period', minval=4,
group=lrg)
deviationsAmnt = input.float(2, 'Deviation', minval=0.1, step=0.1, group=lrg)
estimatorType = input.string('Unbiased', 'Estimator', options=['Biased',
'Unbiased'], group=lrg)
var extendType = input.string('Right', 'Extend', options=['Right', 'Segment'],
group=lrg) == 'Right' ? extend.right : extend.none

// drawline configuration
drawLine(X1, Y1, X2, Y2, ExtendType, Color, LineStyle) =>
var line Line = na
Line := linreg1 ? line.new(X1, Y1, X2, Y2, xloc.bar_index, ExtendType, Color,
LineStyle, width=2) : na
line.delete(Line[1])
drawLine2(X1, Y1, X2, Y2, ExtendType, Color, LineStyle) =>
var line Line = na
Line := linreg2 ? line.new(X1, Y1, X2, Y2, xloc.bar_index, ExtendType, Color,
LineStyle, width=2) : na
line.delete(Line[1])

rsdcr2(PeriodMinusOne, Deviations, Estimate) =>


var period = PeriodMinusOne + 1
var devDenominator = Estimate == 'Unbiased' ? PeriodMinusOne : period
Ex = 0.0
Ex2 = 0.0
Exy = 0.0
Ey = 0.0
for i = 0 to PeriodMinusOne by 1
closeI = nz(mf[i])
Ex := Ex + i
Ex2 := Ex2 + i * i
Exy := Exy + closeI * i
Ey := Ey + closeI
Ey
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 := deviation + math.pow(nz(mf[i]) - (intercept - bar_index[i] *
slope), 2.0)
deviation
deviation := Deviations * math.sqrt(deviation / devDenominator)
correlate = ta.correlation(mf, bar_index, period)
r2 = math.pow(correlate, 2.0)
[linearRegression, slope, deviation, correlate, r2]

periodMinusOne = periodTrend - 1
[linReg, slope, deviation, correlate, r2] = rsdcr2(periodMinusOne, deviationsAmnt,
estimatorType)
endPointBar = bar_index - periodTrend + 1
endPointY = linReg + slope * periodMinusOne
endPointBar2 = bar_index - periodTrend2 + 1

// drawline plot
drawLine(endPointBar, endPointY + deviation, bar_index, linReg + deviation,
extendType, #e91e63, line.style_solid)
drawLine(endPointBar, endPointY, bar_index, linReg, extendType, #e91e63,
line.style_dotted)
drawLine(endPointBar, endPointY - deviation, bar_index, linReg - deviation,
extendType, #e91e63, line.style_solid)
drawLine2(endPointBar2, endPointY + deviation, bar_index, linReg + deviation,
extendType, color.blue, line.style_solid)
drawLine2(endPointBar2, endPointY, bar_index, linReg, extendType, color.blue,
line.style_dotted)
drawLine2(endPointBar2, endPointY - deviation, bar_index, linReg - deviation,
extendType, color.blue, line.style_solid)

// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]


// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF]
// [_ParkF] // [_ParkF] // [_ParkF] // [_ParkF] //

// TRENDLINES
// input
group3 = 'TREND LINES'
o = mf[1]
h = mfih
l = mfil
c = mf
log_chart = input(true, title='Use Log Chart', group=group3)
a_Color_Type = input.string(defval='Monochrome', title='Use Trendlines Color
Scheme', options=['Colored', 'Monochrome'], group=group3)

group4 = 'PRIMARY TRENDLINES'


a_Show_Primary = input(true, title='Primary Trendlines On / Off', group=group4)
a_len = input(20, title='Primary Lookback Length', group=group4)
a_Extensions = input.string(title='Primary Trendlines Extensions', defval='25',
options=["Infinate", "25", "50", "75", "100", "150", "200", "300", "400", "500",
"750", "1000"], group=group4)
a_width = input.int(2, title='Primary Line Width', minval=0, maxval=10,
group=group4)
a_LineStyle_Type = input.string(title='Primary Line Type', defval='Solid',
options=['Dashed', 'Dotted', 'Solid'], group=group4)
a_Line_Type = a_LineStyle_Type == 'Dashed' ? line.style_dashed : a_LineStyle_Type
== 'Dotted' ? line.style_dotted : line.style_solid
a_Rising_Upper_Falling_Lower = false

group5 = 'SECONDARY TRENDLINES'


b_Show_Secondary = input(true, title='Secondary Trendlines On / Off', group=group5)
b_len = input(10, title='Secondary Lookback Length', group=group5)
b_Extensions = input.string(title='Secondary Trendlines Extensions', defval='25',
options=["Infinate", "25", "50", "75", "100", "150", "200", "300", "400", "500",
"750", "1000"], group=group5)
b_LineStyle_Type = input.string(title='Secondary Line Type', defval='Dashed',
options=['Dashed', 'Dotted', 'Solid'], group=group5)
b_Line_Type = b_LineStyle_Type == 'Dashed' ? line.style_dashed : b_LineStyle_Type
== 'Dotted' ? line.style_dotted : line.style_solid
b_width = input.int(1, title='Secondary Line Width', minval=0, maxval=10,
group=group5)
b_Rising_Upper_Falling_Lower = false

group10 = 'TRENDLINES COLOR'


a_Line_Color = input.color(#ffffff, title="Primary Trendline Color", group=group10)
b_Line_Color = input.color(#ffffff, title="Secondary Trendline Color",
group=group10)

a_bar_time = time - time[1]


b_bar_time = time - time[1]

//primary trendline
// trendline extension
a_Extension_Multiplier=
a_Extensions=="25"? 1 :
a_Extensions=="50"? 2 :
a_Extensions=="75"? 3 :
a_Extensions=="100"? 4 :
a_Extensions=="150"? 6 :
a_Extensions=="200"? 8 :
a_Extensions=="300"? 12 :
a_Extensions=="400"? 16 :
a_Extensions=="500"? 20 :
a_Extensions=="750"? 30 :
a_Extensions=="1000"? 40 :
a_Extensions=="Infinate"? 0 : na

// trendline function
a_f_trendline(a__input_function, a__delay, a__only_up, a__extend) =>
var int a_Ax = 1
var int a_Bx = 1
var float a_By = 0
var float a_slope = 0
a_Ay = fixnan(a__input_function)
if ta.change(a_Ay) != 0
a_Ax := time[a__delay]
a_By := a_Ay[1]
a_Bx := a_Ax[1]
a_slope := log_chart ? (math.log(a_Ay) - math.log(a_By)) / (a_Ax - a_Bx) :
(a_Ay - a_By) / (a_Ax - a_Bx)
a_slope
else
a_Ax := a_Ax[1]
a_Bx := a_Bx[1]
a_By := a_By[1]
a_By
// draw trendline
var line a_trendline = na
var int a_Axbis = 0
var float a_Aybis = 0
var bool a__xtend = true
a_extension_time = a_Extension_Multiplier * a_bar_time * 25
a_Axbis := a_Ax + a_extension_time
a_Aybis := log_chart ? a_Ay * math.exp(a_extension_time * a_slope) : a_Ay +
a_extension_time * a_slope
if a_Extension_Multiplier != 0
a__xtend := false
a__xtend
if ta.change(a_Ay) != 0
a_line_color_Rising_Falling = a_slope * time < 0 ? a__only_up ?
a_Rising_Upper_Falling_Lower ? a_Color_Type == 'Colored' ? color.gray :
color.teal : na : a_Color_Type == 'Colored' ? #cf0a83 : color.teal : a__only_up ?
a_Color_Type == 'Colored' ? #027521 : color.teal : a_Rising_Upper_Falling_Lower ?
a_Color_Type == 'Colored' ? color.gray : color.teal : na
a_line_color_Not_Rising_Falling = a_slope * time < 0 ? a__only_up ? na :
a_Color_Type == 'Colored' ? #cf0a83 : color.teal : a__only_up ? a_Color_Type ==
'Colored' ? #027521 : color.teal : na
a_line_color = a_Show_Primary and not a_Rising_Upper_Falling_Lower ?
a_line_color_Not_Rising_Falling : a_Show_Primary and a_Rising_Upper_Falling_Lower ?
a_line_color_Rising_Falling : na
if not na(a_line_color)
a_trendline := line.new(a_Bx, a_By, a_Axbis, a_Aybis, xloc.bar_time,
extend=a__xtend ? extend.right : extend.none, color=a_Line_Color,
style=a_Line_Type, width=a_width)
a_trendline
[a_Bx, a_By, a_Axbis, a_Aybis, a_slope]

// calc pivot points


a_high_point = ta.pivothigh(c > o ? h : l, a_len, a_len / 2)
a_low_point = ta.pivotlow(c > o ? l : h, a_len, a_len / 2)

// call trendline function


[a_phx1, a_phy1, a_phx2, a_phy2, a_slope_high] = a_f_trendline(a_high_point,
a_len / 2, false, true)
[a_plx1, a_ply1, a_plx2, a_ply2, a_slope_low] = a_f_trendline(a_low_point, a_len /
2, true, true)

// secondary trendline
// trendline extension
b_Extension_Multiplier=
b_Extensions=="25"? 1 :
b_Extensions=="50"? 2 :
b_Extensions=="75"? 3 :
b_Extensions=="100"? 4 :
b_Extensions=="150"? 6 :
b_Extensions=="200"? 8 :
b_Extensions=="300"? 12 :
b_Extensions=="400"? 16 :
b_Extensions=="500"? 20 :
b_Extensions=="750"? 30 :
b_Extensions=="1000"? 40 :
b_Extensions=="Infinate"? 0 : na

// trendline function
b_f_trendline(b__input_function, b__delay, b__only_up, b__extend) =>
var int b_Ax = 1
var int b_Bx = 1
var float b_By = 0
var float b_slope = 0
b_Ay = fixnan(b__input_function)
if ta.change(b_Ay) != 0
b_Ax := time[b__delay]
b_By := b_Ay[1]
b_Bx := b_Ax[1]
b_slope := log_chart ? (math.log(b_Ay) - math.log(b_By)) / (b_Ax - b_Bx) :
(b_Ay - b_By) / (b_Ax - b_Bx)
b_slope
else
b_Ax := b_Ax[1]
b_Bx := b_Bx[1]
b_By := b_By[1]
b_By
// draw trendlines
var line b_trendline = na
var int b_Axbis = 0
var float b_Aybis = 0
var bool b__xtend = true
b_extension_time = b_Extension_Multiplier * b_bar_time * 25
b_Axbis := b_Ax + b_extension_time
b_Aybis := log_chart ? b_Ay * math.exp(b_extension_time * b_slope) : b_Ay +
b_extension_time * b_slope
if b_Extension_Multiplier != 0
b__xtend := false
b__xtend
if ta.change(b_Ay) != 0
b_line_color_Rising_Falling = b_slope * time < 0 ? b__only_up ?
b_Rising_Upper_Falling_Lower ? a_Color_Type == 'Colored' ? color.gray :
color.teal : na : a_Color_Type == 'Colored' ? color.red : color.teal : b__only_up ?
a_Color_Type == 'Colored' ? color.green : color.teal : b_Rising_Upper_Falling_Lower
? a_Color_Type == 'Colored' ? color.gray : color.teal : na
b_line_color_Not_Rising_Falling = b_slope * time < 0 ? b__only_up ? na :
a_Color_Type == 'Colored' ? color.red : color.teal : b__only_up ? a_Color_Type ==
'Colored' ? color.green : color.teal : na
b_line_color = b_Show_Secondary and not b_Rising_Upper_Falling_Lower ?
b_line_color_Not_Rising_Falling : b_Show_Secondary and b_Rising_Upper_Falling_Lower
? b_line_color_Rising_Falling : na
if not na(b_line_color)
b_trendline := line.new(b_Bx, b_By, b_Axbis, b_Aybis, xloc.bar_time,
extend=b__xtend ? extend.right : extend.none, color=b_Line_Color,
style=b_Line_Type, width=b_width)
b_trendline
[b_Bx, b_By, b_Axbis, b_Aybis, b_slope]

// calc pivot points


b_high_point = ta.pivothigh(c > o ? h : l, b_len, b_len / 2)
b_low_point = ta.pivotlow(c > o ? l : h, b_len, b_len / 2)

// call trendline function


[b_phx1, b_phy1, b_phx2, b_phy2, b_slope_high] = b_f_trendline(b_high_point,
b_len / 2, false, true)
[b_plx1, b_ply1, b_plx2, b_ply2, b_slope_low] = b_f_trendline(b_low_point, b_len /
2, true, true)
// plot
b_color_high = b_slope_high * time < 0 ? color.green : na
b_color_low = b_slope_low * time > 0 ? color.red : na

You might also like