Files
xPineScript/xIndicators/x-saherelm.ut.indicator.pine

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 ...
//