Files
xPineScript/xOscillators/x-saherelm.impulse.macd.pine
T
2024-01-25 04:07:49 +03:30

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:
// -------
// - []
//////////////////////////////////////////////////////