Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=4
- study(title="MACD", shorttitle="MACD")
- // Getting inputs
- fast_length = input(title="Fast Length", type=input.integer, defval=12)
- slow_length = input(title="Slow Length", type=input.integer, defval=26)
- src = input(title="Source", type=input.source, defval=close)
- signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
- sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
- sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
- // Plot colors
- col_grow_above = #26A69A
- col_grow_below = #FFCDD2
- col_fall_above = #B2DFDB
- col_fall_below = #EF5350
- col_macd = #0094ff
- col_signal = #ff6a00
- // Min/Max of signal to rescale is determined by its historical low/high.
- normalize(_src, _min, _max) =>
- // Normalizes series with unknown min/max using historical min/max.
- // _src: series to rescale.
- // _min: minimum value of rescaled series.
- // _max: maximum value of rescaled series.
- var _historicMin = 10e10
- var _historicMax = -10e10
- _historicMin := min(nz(_src, _historicMin), _historicMin)
- _historicMax := max(nz(_src, _historicMax), _historicMax)
- _min + (_max - _min) * (_src - _historicMin) / max(_historicMax - _historicMin, 10e-10)
- // Calculating
- fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
- slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
- macd_ = fast_ma - slow_ma
- macd = normalize(macd_, 0, 1)
- signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
- hist = macd - signal
- plot(hist+0.5, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0, histbase=0.5)
- plot(macd, title="MACD", color=col_macd, transp=0)
- plot(signal, title="Signal", color=col_signal, transp=0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement