114 lines
2.9 KiB
Plaintext
114 lines
2.9 KiB
Plaintext
///////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center XUT Indicator
|
|
// ---------------------------------------------
|
|
// saherelm implementation of above indicator ...
|
|
//
|
|
// Maintainer:
|
|
// ------------
|
|
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
|
//
|
|
//////////////////////////////////////////////////////
|
|
|
|
//
|
|
//@version=5
|
|
indicator(title="SaherElm XUT Indicator", shorttitle = "XUT_IND", overlay = true)
|
|
|
|
//
|
|
// START Inputs ....
|
|
//
|
|
sensitivity = input(2, title = "Key Vaule. 'This changes the sensitivity'")
|
|
atrPeriod = input(10, title = "ATR Period")
|
|
maPeriod = input.int(50, minval=1, title="MA Period")
|
|
//
|
|
// END Inputs ....
|
|
//
|
|
|
|
//
|
|
// START Functions ....
|
|
//
|
|
ma(source, length, type) =>
|
|
switch type
|
|
"SMA" => ta.sma(source, length)
|
|
"EMA" => ta.ema(source, length)
|
|
"SMMA (RMA)" => ta.rma(source, length)
|
|
"WMA" => ta.wma(source, length)
|
|
"VWMA" => ta.vwma(source, length)
|
|
//
|
|
// END Functions ....
|
|
//
|
|
|
|
//
|
|
// START Calculations ....
|
|
//
|
|
//
|
|
src = close
|
|
maMethod = "SMA"
|
|
maSmoothingLength = 5
|
|
|
|
//
|
|
// Ma Calculations ...
|
|
out = ta.sma(src, maPeriod)
|
|
maSmoothingLine = ma(out, maSmoothingLength, maMethod)
|
|
|
|
//
|
|
xATR = ta.atr(atrPeriod)
|
|
nLoss = sensitivity * xATR
|
|
|
|
//
|
|
xATRTrailingStop = 0.0
|
|
xATRTrailingStop := (src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0)) ? math.max(nz(xATRTrailingStop[1]) , src - nLoss) : (src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0)) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : (src > nz(xATRTrailingStop[1], 0)) ? src - nLoss : src + nLoss
|
|
|
|
//
|
|
pos = 0
|
|
pos := (src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0)) ? 1 : (src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0)) ? -1 : nz(pos[1], 0)
|
|
|
|
//
|
|
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
|
|
|
|
//
|
|
ema = ta.ema(src,1)
|
|
above = ta.crossover(ema, xATRTrailingStop)
|
|
below = ta.crossover(xATRTrailingStop, ema)
|
|
|
|
//
|
|
buy = src > xATRTrailingStop and above
|
|
sell = src < xATRTrailingStop and below
|
|
|
|
//
|
|
barbuy = src > xATRTrailingStop
|
|
barsell = src < xATRTrailingStop
|
|
//
|
|
// END Calculations ....
|
|
//
|
|
|
|
//
|
|
// START Plots ....
|
|
//
|
|
//
|
|
// MA Plots ...
|
|
plot(out, color=color.blue, title="MA", offset=0)
|
|
plot(maSmoothingLine, title="Smoothing Line", color=#f37f20, offset=0, display=display.none)
|
|
|
|
//
|
|
// UT Plots ...
|
|
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, size = size.tiny)
|
|
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, size = size.tiny)
|
|
|
|
//
|
|
barcolor(barbuy ? color.green : na)
|
|
barcolor(barsell ? color.red : na)
|
|
|
|
//
|
|
alertcondition(buy, "UT Long", "UT Long")
|
|
alertcondition(sell, "UT Short", "UT Short")
|
|
//
|
|
// END Plots ....
|
|
//
|
|
|
|
//
|
|
// START Alerts ...
|
|
//
|
|
// END Alerts ...
|
|
//
|