add some new indicator/oscillators ...
This commit is contained in:
@@ -0,0 +1,113 @@
|
|||||||
|
///////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// 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 ...
|
||||||
|
//
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
///////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// SaherElm IT Center STC Histogram
|
||||||
|
// ---------------------------------------------
|
||||||
|
// saherelm implementation of above oscillator ...
|
||||||
|
//
|
||||||
|
// Maintainer:
|
||||||
|
// ------------
|
||||||
|
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
||||||
|
//
|
||||||
|
//////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//
|
||||||
|
//@version=5
|
||||||
|
indicator(title="SaherElm STC Histogram", shorttitle = "XSTC_OSC", overlay = false)
|
||||||
|
|
||||||
|
//
|
||||||
|
// START Inputs ....
|
||||||
|
//
|
||||||
|
length = input(12, 'Length')
|
||||||
|
fastPeriod = input(26, 'FastLength')
|
||||||
|
slowPeriod = input(50, 'SlowLength')
|
||||||
|
//
|
||||||
|
// END Inputs ....
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// START Functions ....
|
||||||
|
//
|
||||||
|
AAAA(BBB, BBBB, BBBBB) =>
|
||||||
|
fastMA = ta.ema(BBB, BBBB)
|
||||||
|
slowMA = ta.ema(BBB, BBBBB)
|
||||||
|
AAAA = fastMA - slowMA
|
||||||
|
AAAA
|
||||||
|
|
||||||
|
AAAAA(EEEEEE, BBBB, BBBBB) =>
|
||||||
|
AAA = input(0.5)
|
||||||
|
var CCCCC = 0.0
|
||||||
|
var DDD = 0.0
|
||||||
|
var DDDDDD = 0.0
|
||||||
|
var EEEEE = 0.0
|
||||||
|
BBBBBB = AAAA(close, BBBB, BBBBB)
|
||||||
|
CCC = ta.lowest(BBBBBB, EEEEEE)
|
||||||
|
CCCC = ta.highest(BBBBBB, EEEEEE) - CCC
|
||||||
|
CCCCC := CCCC > 0 ? (BBBBBB - CCC) / CCCC * 100 : nz(CCCCC[1])
|
||||||
|
DDD := na(DDD[1]) ? CCCCC : DDD[1] + AAA * (CCCCC - DDD[1])
|
||||||
|
DDDD = ta.lowest(DDD, EEEEEE)
|
||||||
|
DDDDD = ta.highest(DDD, EEEEEE) - DDDD
|
||||||
|
DDDDDD := DDDDD > 0 ? (DDD - DDDD) / DDDDD * 100 : nz(DDDDDD[1])
|
||||||
|
EEEEE := na(EEEEE[1]) ? DDDDDD : EEEEE[1] + AAA * (DDDDDD - EEEEE[1])
|
||||||
|
EEEEE
|
||||||
|
//
|
||||||
|
// END Functions ....
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// START Calculations ....
|
||||||
|
//
|
||||||
|
maValue = AAAAA(length, fastPeriod, slowPeriod)
|
||||||
|
mColor = maValue > maValue[1] ? color.new(color.green, 20) : color.new(color.red, 20)
|
||||||
|
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// END Calculations ....
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// START Plots ....
|
||||||
|
//
|
||||||
|
//
|
||||||
|
plot(maValue, color = mColor, title = 'XSTC', linewidth = 2)
|
||||||
|
|
||||||
|
//
|
||||||
|
ul = plot(25, color=color.new(color.gray, 70))
|
||||||
|
ll = plot(75, color=color.new(color.gray, 70))
|
||||||
|
fill(ul, ll, color=color.new(color.gray, 96))
|
||||||
|
//
|
||||||
|
// END Plots ....
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// START Alerts ...
|
||||||
|
//
|
||||||
|
//
|
||||||
|
if maValue[3] <= maValue[2] and maValue[2] > maValue[1] and maValue > 75
|
||||||
|
alert("Red", alert.freq_once_per_bar)
|
||||||
|
|
||||||
|
//
|
||||||
|
if maValue[3] >= maValue[2] and maValue[2] < maValue[1] and maValue < 25
|
||||||
|
alert("Green", alert.freq_once_per_bar)
|
||||||
|
//
|
||||||
|
// END Alerts ...
|
||||||
|
//
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
//@version=4
|
||||||
|
study(title="UT Bot Alerts", overlay = true)
|
||||||
|
|
||||||
|
// Inputs
|
||||||
|
a = input(1, title = "Key Vaule. 'This changes the sensitivity'")
|
||||||
|
c = input(10, title = "ATR Period")
|
||||||
|
h = input(false, title = "Signals from Heikin Ashi Candles")
|
||||||
|
|
||||||
|
xATR = atr(c)
|
||||||
|
nLoss = a * xATR
|
||||||
|
|
||||||
|
src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close
|
||||||
|
|
||||||
|
xATRTrailingStop = 0.0
|
||||||
|
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
|
||||||
|
iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss),
|
||||||
|
iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
|
||||||
|
|
||||||
|
pos = 0
|
||||||
|
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
|
||||||
|
iff(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 = ema(src,1)
|
||||||
|
above = crossover(ema, xATRTrailingStop)
|
||||||
|
below = crossover(xATRTrailingStop, ema)
|
||||||
|
|
||||||
|
buy = src > xATRTrailingStop and above
|
||||||
|
sell = src < xATRTrailingStop and below
|
||||||
|
|
||||||
|
barbuy = src > xATRTrailingStop
|
||||||
|
barsell = src < xATRTrailingStop
|
||||||
|
|
||||||
|
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
|
||||||
|
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, 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")
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
//@version=5
|
||||||
|
indicator(title="Moving Average Simple", shorttitle="SMA", overlay=true, timeframe="", timeframe_gaps=true)
|
||||||
|
len = input.int(9, minval=1, title="Length")
|
||||||
|
src = input(close, title="Source")
|
||||||
|
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500, display = display.data_window)
|
||||||
|
out = ta.sma(src, len)
|
||||||
|
plot(out, color=color.blue, title="MA", offset=offset)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing", display = display.data_window)
|
||||||
|
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing", display = display.data_window)
|
||||||
|
|
||||||
|
smoothingLine = ma(out, smoothingLength, typeMA)
|
||||||
|
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
//@version=5
|
||||||
|
//[SHK] STC colored indicator
|
||||||
|
//https://www.tradingview.com/u/shayankm/
|
||||||
|
|
||||||
|
indicator(title='[SHK] Schaff Trend Cycle (STC)', shorttitle='STC', overlay=false)
|
||||||
|
EEEEEE = input(12, 'Length')
|
||||||
|
BBBB = input(26, 'FastLength')
|
||||||
|
BBBBB = input(50, 'SlowLength')
|
||||||
|
|
||||||
|
AAAA(BBB, BBBB, BBBBB) =>
|
||||||
|
fastMA = ta.ema(BBB, BBBB)
|
||||||
|
slowMA = ta.ema(BBB, BBBBB)
|
||||||
|
AAAA = fastMA - slowMA
|
||||||
|
AAAA
|
||||||
|
|
||||||
|
AAAAA(EEEEEE, BBBB, BBBBB) =>
|
||||||
|
AAA = input(0.5)
|
||||||
|
var CCCCC = 0.0
|
||||||
|
var DDD = 0.0
|
||||||
|
var DDDDDD = 0.0
|
||||||
|
var EEEEE = 0.0
|
||||||
|
BBBBBB = AAAA(close, BBBB, BBBBB)
|
||||||
|
CCC = ta.lowest(BBBBBB, EEEEEE)
|
||||||
|
CCCC = ta.highest(BBBBBB, EEEEEE) - CCC
|
||||||
|
CCCCC := CCCC > 0 ? (BBBBBB - CCC) / CCCC * 100 : nz(CCCCC[1])
|
||||||
|
DDD := na(DDD[1]) ? CCCCC : DDD[1] + AAA * (CCCCC - DDD[1])
|
||||||
|
DDDD = ta.lowest(DDD, EEEEEE)
|
||||||
|
DDDDD = ta.highest(DDD, EEEEEE) - DDDD
|
||||||
|
DDDDDD := DDDDD > 0 ? (DDD - DDDD) / DDDDD * 100 : nz(DDDDDD[1])
|
||||||
|
EEEEE := na(EEEEE[1]) ? DDDDDD : EEEEE[1] + AAA * (DDDDDD - EEEEE[1])
|
||||||
|
EEEEE
|
||||||
|
|
||||||
|
mAAAAA = AAAAA(EEEEEE, BBBB, BBBBB)
|
||||||
|
mColor = mAAAAA > mAAAAA[1] ? color.new(color.green, 20) : color.new(color.red, 20)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if mAAAAA[3] <= mAAAAA[2] and mAAAAA[2] > mAAAAA[1] and mAAAAA > 75
|
||||||
|
alert("Red", alert.freq_once_per_bar)
|
||||||
|
if mAAAAA[3] >= mAAAAA[2] and mAAAAA[2] < mAAAAA[1] and mAAAAA < 25
|
||||||
|
alert("Green", alert.freq_once_per_bar)
|
||||||
|
|
||||||
|
|
||||||
|
plot(mAAAAA, color=mColor, title='STC', linewidth=2)
|
||||||
|
|
||||||
|
ul = plot(25, color=color.new(color.gray, 70))
|
||||||
|
ll = plot(75, color=color.new(color.gray, 70))
|
||||||
|
fill(ul, ll, color=color.new(color.gray, 96))
|
||||||
|
|
||||||
Reference in New Issue
Block a user