Search

MFI Divergence indicator for TradingView

//@version=4

// tradingview built-in divergence indicator modified for MFI by

//Subhadip Nandy www.quantgym.org

study(title="MFI Divergence Indicator v2", format=format.price, resolution="")

len = input(title="MFI Period", minval=1, defval=10)

src = input(title="MFI Source", defval=close)

lbR = input(title="Pivot Lookback Right", defval=5)

lbL = input(title="Pivot Lookback Left", defval=5)

rangeUpper = input(title="Max of Lookback Range", defval=60)

rangeLower = input(title="Min of Lookback Range", defval=5)

plotBull = input(title="Plot Bullish", defval=true)

plotHiddenBull = input(title="Plot Hidden Bullish", defval=false)

plotBear = input(title="Plot Bearish", defval=true)

plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)

bearColor = color.red

bullColor = color.green

hiddenBullColor = color.new(color.green, 80)

hiddenBearColor = color.new(color.red, 80)

textColor = color.white

noneColor = color.new(color.white, 100)

osc = mfi(src, len)


plot(osc, title="MFI", linewidth=2, color=#2962FF)

hline(50, title="Middle Line", color=#787B86, linestyle=hline.style_dotted)

obLevel = hline(80, title="Overbought", color=#787B86, linestyle=hline.style_dotted)

osLevel = hline(20, title="Oversold", color=#787B86, linestyle=hline.style_dotted)

fill(obLevel, osLevel, title="Background", color=color.rgb(33, 150, 243, 90))


plFound = na(pivotlow(osc, lbL, lbR)) ? false : true

phFound = na(pivothigh(osc, lbL, lbR)) ? false : true

_inRange(cond) =>

bars = barssince(cond == true)

rangeLower <= bars and bars <= rangeUpper


//------------------------------------------------------------------------------

// Regular Bullish

// Osc: Higher Low


oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])


// Price: Lower Low


priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)

bullCond = plotBull and priceLL and oscHL and plFound


plot(

plFound ? osc[lbR] : na,

offset=-lbR,

title="Regular Bullish",

linewidth=2,

color=(bullCond ? bullColor : noneColor)

)


plotshape(

bullCond ? osc[lbR] : na,

offset=-lbR,

title="Regular Bullish Label",

text=" Bull ",

style=shape.labelup,

location=location.absolute,

color=bullColor,

textcolor=textColor

)


//------------------------------------------------------------------------------

// Hidden Bullish

// Osc: Lower Low


oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])


// Price: Higher Low


priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)

hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound


plot(

plFound ? osc[lbR] : na,

offset=-lbR,

title="Hidden Bullish",

linewidth=2,

color=(hiddenBullCond ? hiddenBullColor : noneColor)

)


plotshape(

hiddenBullCond ? osc[lbR] : na,

offset=-lbR,

title="Hidden Bullish Label",

text=" H Bull ",

style=shape.labelup,

location=location.absolute,

color=bullColor,

textcolor=textColor

)


//------------------------------------------------------------------------------

// Regular Bearish

// Osc: Lower High


oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])


// Price: Higher High


priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)


bearCond = plotBear and priceHH and oscLH and phFound


plot(

phFound ? osc[lbR] : na,

offset=-lbR,

title="Regular Bearish",

linewidth=2,

color=(bearCond ? bearColor : noneColor)

)


plotshape(

bearCond ? osc[lbR] : na,

offset=-lbR,

title="Regular Bearish Label",

text=" Bear ",

style=shape.labeldown,

location=location.absolute,

color=bearColor,

textcolor=textColor

)


//------------------------------------------------------------------------------

// Hidden Bearish

// Osc: Higher High


oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])


// Price: Lower High


priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)


hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound


plot(

phFound ? osc[lbR] : na,

offset=-lbR,

title="Hidden Bearish",

linewidth=2,

color=(hiddenBearCond ? hiddenBearColor : noneColor)

)


plotshape(

hiddenBearCond ? osc[lbR] : na,

offset=-lbR,

title="Hidden Bearish Label",

text=" H Bear ",

style=shape.labeldown,

location=location.absolute,

color=bearColor,

textcolor=textColor

)

7,478 views0 comments

Recent Posts

See All