111 lines
3.5 KiB
Plaintext
111 lines
3.5 KiB
Plaintext
///////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center Impulse MACD Oscillator
|
|
// -------------------------------------------------
|
|
// saherelm implementation of above oscillator ...
|
|
//
|
|
// Maintainer:
|
|
// ------------
|
|
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
|
//
|
|
//////////////////////////////////////////////////////
|
|
|
|
//
|
|
//@version=5
|
|
indicator(title="SaherElm Impulse MACD Oscillator", shorttitle = "XS_IMPMACD_OSC", overlay = false)
|
|
|
|
//
|
|
// START Inputs ....
|
|
//
|
|
//
|
|
IMPMACDLengthMA = input.int(defval = 34, title = "LenghtMA")
|
|
IMPMACDLengthSignal = input.int(defval = 9, title = "Length Signal")
|
|
IMPMACDEbc = input.bool(defval = false, title = "Enable bar colors")
|
|
|
|
//
|
|
IMPMACDShowSignals = input.bool(defval = false, title = "Show Signals", group = "Signals")
|
|
IMPMACDShowLongSignals = input.bool(defval = true, title = "Show Long Signals", group = "Signals")
|
|
IMPMACDShowShortSignals = input.bool(defval = true, title = "Show Show Signals", group = "Signals")
|
|
//
|
|
// END Inputs ....
|
|
//
|
|
|
|
//
|
|
// START Functions ....
|
|
//
|
|
calc_smma(src, len) =>
|
|
float result = na
|
|
rSma = ta.sma(src, len)
|
|
result := na(result[1]) ? rSma : (result[1] * (len - 1) + src) / len
|
|
result
|
|
|
|
calc_zlema(src, length) =>
|
|
ema1 = ta.ema(src, length)
|
|
ema2 = ta.ema(ema1, length)
|
|
d = ema1 - ema2
|
|
result = ema1+d
|
|
result
|
|
//
|
|
// END Functions ....
|
|
//
|
|
|
|
//
|
|
// START Calculations ....
|
|
//
|
|
//
|
|
var bullishColor = color.lime
|
|
var bearishColor = color.red
|
|
|
|
//
|
|
IMPMACDSrc = hlc3
|
|
IMPMACDHi = calc_smma(high, IMPMACDLengthMA)
|
|
IMPMACDLo = calc_smma(low, IMPMACDLengthMA)
|
|
IMPMACDNi = calc_zlema(IMPMACDSrc, IMPMACDLengthMA)
|
|
|
|
//
|
|
IMPMACDMd = (IMPMACDNi > IMPMACDHi) ? (IMPMACDNi - IMPMACDHi) : (IMPMACDNi < IMPMACDLo) ? (IMPMACDNi - IMPMACDLo) : 0.0
|
|
IMPMACDSb = ta.sma(IMPMACDMd, IMPMACDLengthSignal)
|
|
IMPMACDSh = IMPMACDMd - IMPMACDSb
|
|
|
|
//
|
|
IMPMACDIsBullish = (ta.crossunder(IMPMACDSb, IMPMACDMd) or ta.crossunder(IMPMACDSb[1], IMPMACDMd) or ta.crossunder(IMPMACDSb[2], IMPMACDMd)) and IMPMACDMd < 0 and IMPMACDSh > 0.1 and IMPMACDSb < IMPMACDMd and IMPMACDMd < -0.6
|
|
IMPMACDIsBearish = (ta.crossover(IMPMACDSb, IMPMACDMd) or ta.crossover(IMPMACDSb[1], IMPMACDMd) or ta.crossover(IMPMACDSb[2], IMPMACDMd)) and IMPMACDMd > 0 and IMPMACDSh < -0.1 and IMPMACDSb > IMPMACDMd and IMPMACDMd > 0.6
|
|
|
|
//
|
|
IMPMACDMdc = IMPMACDSrc > IMPMACDNi ? IMPMACDSrc > IMPMACDHi ? color.lime : color.green : IMPMACDSrc < IMPMACDLo ? color.red : color.red
|
|
//
|
|
// END Calculations ....
|
|
//
|
|
|
|
//
|
|
// START Plots ....
|
|
//
|
|
//
|
|
plot(series = 0, color = color.gray, linewidth = 1, title = "MidLine")
|
|
plot(series = IMPMACDMd, color = IMPMACDMdc, linewidth = 2, title = "ImpulseMACD", style = plot.style_columns)
|
|
plot(series = IMPMACDSh, color = color.yellow, linewidth = 2, title = "ImpulseHisto", style = plot.style_histogram)
|
|
plot(IMPMACDSb, color = color.maroon, linewidth = 2, title = "ImpulseMACDCDSignal")
|
|
|
|
//
|
|
barcolor(IMPMACDEbc ? IMPMACDMdc : na)
|
|
|
|
//
|
|
plotshape(series = IMPMACDShowSignals and IMPMACDShowLongSignals and IMPMACDIsBullish ? IMPMACDMd : na, title = "Bullish Signals", color = color.rgb(36, 206, 206), style = shape.arrowup, location = location.absolute, size = size.normal)
|
|
plotshape(series = IMPMACDShowSignals and IMPMACDShowShortSignals and IMPMACDIsBearish ? IMPMACDMd : na, title = "Bearish Signals", color = color.rgb(49, 39, 134), style = shape.arrowdown, location = location.absolute, size = size.normal)
|
|
//
|
|
// END Plots ....
|
|
//
|
|
|
|
//
|
|
// START Alerts ...
|
|
//
|
|
//
|
|
// END Alerts ...
|
|
//
|
|
|
|
//////////////////////////////////////////////////////
|
|
// TODOS:
|
|
// -------
|
|
// - []
|
|
//////////////////////////////////////////////////////
|