0% found this document useful (0 votes)
24 views6 pages

Signal Channel Trading Indicator Code

usd

Uploaded by

sahraman819
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)
24 views6 pages

Signal Channel Trading Indicator Code

usd

Uploaded by

sahraman819
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

//@version=5

indicator('Signal Channel', overlay=true, format=[Link], precision=12,


max_bars_back=300)

//////////////////////
///@FGHtrading///////
/////////////////////

//[Link]

///[Link]

///[Link]

method1 = [Link]('Median', options=['EMA', 'Median', 'SMA'])


length1 = input(12)
mult1 = [Link](1, minval=0, maxval=1)

method2 = [Link]('Median', options=['EMA', 'Median', 'SMA'])


length2 = input(27)
mult2 = [Link](1, minval=0, maxval=1)

method3 = [Link]('Median', options=['EMA', 'Median', 'SMA'])


length3 = input(56)
mult3 = [Link](1, minval=0, maxval=1)
//----
Avg(x, length, method) =>
sma_1 = [Link](x, length)
ema_1 = [Link](x, length)
percentile_linear_interpolation_1 = ta.percentile_linear_interpolation(x,
length, 50)
method == 'SMA' ? sma_1 : method == 'EMA' ? ema_1 :
percentile_linear_interpolation_1
//----
a1 = [Link](length1) - [Link](close, open)
b1 = [Link](close, open) - [Link](length1)
c1 = [Link](close, open) + a1 * mult1
d1 = [Link](close, open) - b1 * mult1

a2 = [Link](length2) - [Link](close, open)


b2 = [Link](close, open) - [Link](length2)
c2 = [Link](close, open) + a2 * mult2
d2 = [Link](close, open) - b2 * mult2

a3 = [Link](length3) - [Link](close, open)


b3 = [Link](close, open) - [Link](length3)
c3 = [Link](close, open) + a3 * mult3
d3 = [Link](close, open) - b3 * mult3
//----
e1 = Avg(c1, length1, method1)
f1 = Avg(d1, length1, method1)
g1 = 0
cross_1 = [Link](close, f1)
g1 := [Link](close, e1) ? 1 : cross_1 ? 0 : nz(g1[1])
e2 = Avg(c2, length2, method2)
f2 = Avg(d2, length2, method2)
g2 = 0
cross_2 = [Link](close, f2)
g2 := [Link](close, e2) ? 1 : cross_2 ? 0 : nz(g2[1])

e3 = Avg(c3, length3, method3)


f3 = Avg(d3, length3, method3)
g3 = 0
cross_3 = [Link](close, f3)
g3 := [Link](close, e3) ? 1 : cross_3 ? 0 : nz(g3[1])
//---
hilo1 = g1 * f1 + (1 - g1) * e1
css1 = g1 == 1 ? [Link] : [Link]
plot(hilo1, color=css1, style=plot.style_line, show_last=1, linewidth=1,
trackprice=true)

hilo2 = g2 * f2 + (1 - g2) * e2
css2 = g2 == 1 ? [Link] : [Link]
plot(hilo2, color=css2, style=plot.style_line, show_last=1, linewidth=1,
trackprice=true)

hilo3 = g3 * f3 + (1 - g3) * e3
css3 = g3 == 1 ? [Link] : [Link]
plot(hilo3, color=css3, style=plot.style_line, show_last=1, linewidth=1,
trackprice=true)

//end of this part

upperMult = input(title='Upper Deviation', defval=2)


lowerMult = input(title='Lower Deviation', defval=-2)

useUpperDev = input(title='Use Upper Deviation', defval=true)


useLowerDev = input(title='Use Lower Deviation', defval=true)
showPearson = input(title='Show Pearson\'s R', defval=true)
extendLines = input(title='Extend Lines', defval=false)

len = input(title='Count', defval=100)


src = input(title='Source', defval=close)

extend = extendLines ? [Link] : [Link]

calcSlope(src, len) =>


if not [Link] or len <= 1
[float(na), float(na), float(na)]
else
sumX = 0.0
sumY = 0.0
sumXSqr = 0.0
sumXY = 0.0
for i = 0 to len - 1 by 1
val = src[i]
per = i + 1.0
sumX := sumX + per
sumY := sumY + val
sumXSqr := sumXSqr + per * per
sumXY := sumXY + val * per
sumXY
slope = (len * sumXY - sumX * sumY) / (len * sumXSqr - sumX * sumX)
average = sumY / len
intercept = average - slope * sumX / len + slope
[slope, average, intercept]

[s, aLR, i] = calcSlope(src, len)

startPrice = i + s * (len - 1)
endPrice = i
var line baseLineLR = na

if na(baseLineLR) and not na(startPrice)


baseLineLR := [Link](bar_index - len + 1, startPrice, bar_index, endPrice,
width=1, extend=extend, color=#52d7ff)
baseLineLR
else
line.set_xy1(baseLineLR, bar_index - len + 1, startPrice)
line.set_xy2(baseLineLR, bar_index, endPrice)
na

calcDev(src, len, slope, average, intercept) =>


upDev = 0.0
dnDev = 0.0
stdDevAcc = 0.0
dsxx = 0.0
dsyy = 0.0
dsxy = 0.0

periods = len - 1

daY = intercept + slope * periods / 2


val = intercept

for i = 0 to periods by 1
price = high[i] - val
if price > upDev
upDev := price
upDev

price := val - low[i]


if price > dnDev
dnDev := price
dnDev

price := src[i]
dxt = price - average
dyt = val - daY

price := price - val


stdDevAcc := stdDevAcc + price * price
dsxx := dsxx + dxt * dxt
dsyy := dsyy + dyt * dyt
dsxy := dsxy + dxt * dyt
val := val + slope
val

stdDev = [Link](stdDevAcc / (periods == 0 ? 1 : periods))


pearsonR = dsxx == 0 or dsyy == 0 ? 0 : dsxy / [Link](dsxx * dsyy)
[stdDev, pearsonR, upDev, dnDev]

[stdDev, pearsonR, upDev, dnDev] = calcDev(src, len, s, aLR, i)

upperStartPrice = startPrice + (useUpperDev ? upperMult * stdDev : upDev)


upperEndPrice = endPrice + (useUpperDev ? upperMult * stdDev : upDev)
var line upper = na

lowerStartPrice = startPrice + (useLowerDev ? lowerMult * stdDev : -dnDev)


lowerEndPrice = endPrice + (useLowerDev ? lowerMult * stdDev : -dnDev)
var line lower = na

if na(upper) and not na(upperStartPrice)


upper := [Link](bar_index - len + 1, upperStartPrice, bar_index,
upperEndPrice, width=1, extend=extend, color=#0000ff)
upper
else
line.set_xy1(upper, bar_index - len + 1, upperStartPrice)
line.set_xy2(upper, bar_index, upperEndPrice)
na

if na(lower) and not na(lowerStartPrice)


lower := [Link](bar_index - len + 1, lowerStartPrice, bar_index,
lowerEndPrice, width=1, extend=extend, color=#0000ff)
lower
else
line.set_xy1(lower, bar_index - len + 1, lowerStartPrice)
line.set_xy2(lower, bar_index, lowerEndPrice)
na

// Pearson's R
var label r = na
transparent = [Link]([Link], 100)
[Link](r[1])

emaEnergy = [Link](true, "EMA Energy")


sensitivity = [Link](2.8, "Sensitivity (0.5 - 10)", 0.5, 10, step=0.1)
keltner_length = input(10, "Keltner Channel Length")
atrPeriod = input(10, "ATR Length")
factor = [Link](3.5, "Factor", step = 0.01)

// Keltner Channel function


keltner_channel(src, length) =>
ma = [Link](src, length)
rangec = high - low
upper = ma + rangec
lower = ma - rangec
[upper, lower]

// Modified Supertrend function using Keltner Channel


supertrend(_src, factor, atrLen, kel_length) =>
[upperKeltner, lowerKeltner] = keltner_channel(_src, kel_length)
rangec = upperKeltner - lowerKeltner
upperBand = _src + factor * rangec
lowerBand = _src - factor * rangec
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ?
lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ?
upperBand : prevUpperBand
int direction = na
float superTrend = na
prevSuperTrend = superTrend[1]

if na(rangec[1])
direction := 1
else if prevSuperTrend == prevUpperBand
direction := close > upperBand ? -1 : 1
else
direction := close < lowerBand ? 1 : -1
superTrend := direction == -1 ? lowerBand : upperBand
[superTrend, direction]

// Colors
green = #2BBC4D, red = #C51D0B
emaEnergyColor(ma) => emaEnergy ? (close >= ma ? green : red) : na

color1 = [Link](#26a69a, 25)


color2 = [Link](#ef5350, 25)
color3 = [Link](#43ff43, 25)
color4 = [Link](#ff0d0d, 25)
color5 = [Link](#ffff00, 25)
color6 = [Link](#00ff00, 25)
color7 = [Link]([Link], 0)
color8 = [Link](#353535, 0)
color9 = [Link](#24e828, 25)
color10 = [Link](#ff357e, 25)
color11 = [Link]([Link], 25)
color12 = [Link]([Link], 25)

[supertrend, direction] = supertrend(close, sensitivity, 11, keltner_length)


bull = [Link](close, supertrend)
bear = [Link](close, supertrend)

y1 = low - ([Link](30) * 2)
y2 = high + ([Link](30) * 2)

buy = bull ? [Link](bar_index, y1, "BUY", xloc.bar_index, [Link], green,


label.style_label_up, [Link], [Link]) : na
sell = bear ? [Link](bar_index, y2, "SELL", xloc.bar_index, [Link], red,
label.style_label_down, [Link], [Link]) : na
[supertrends, directions] = [Link](factor, atrPeriod)
//bodyMiddle = plot((open + close) / 2, display=[Link])
// Trend Catcher Indicator (Example)
ema100 = [Link](close, 10)
ema200 = [Link](close, 20)
trendCatcher = [Link](ema100, ema200) ? 1 : [Link](ema100, ema200) ? -
1 : 0
trendColor = trendCatcher == 1 ? [Link](90, 23, 102) : na
//barcolor(trendColor)
// Colored candles
barcolor(color = close > supertrends ? [Link](102, 255, 0) : [Link](255, 0,
0))

You might also like