Could this be translated into an MT4 Indicator?
Code: Select all
//@version=4
study('RSI Support & Resistance by DGT', 'RSI S&R ʙʏ DGT ☼☾', true)
i_source = input("Price (close)", 'Source', options = ["Price (close)", "On Balance Volume (OBV)"], inline = 'RSI', group = 'RSI Settings')
i_length = input(14, ' Length' , minval=1 , inline = 'RSI', group = 'RSI Settings')
i_obThreshold = input(70, 'Overboght', minval=50, maxval=100, inline = 'Thresh1', group = 'Threshold Settings')
i_bullZone = input(60, 'Bull Zone', minval=50, maxval=65 , inline = 'Thresh1', group = 'Threshold Settings')
i_bearZone = input(40, 'Bear Zone', minval=35, maxval=50 , inline = 'Thresh2', group = 'Threshold Settings')
i_osThreshold = input(30, 'Oversold' , minval=1 , maxval=50 , inline = 'Thresh2', group = 'Threshold Settings')
i_owcb = input(true , 'RSI Weighted Colored Bars' , group = 'Optional')
i_obos = input(false, 'RSI Overbought/Oversold Marks', group = 'Optional')
i_fill = input(true , 'Backgroud of Bull/Bear Zones' , group = 'Optional')
// Functions ════════════════════════════════════════════════════════════════════════════════════ //
f_getPrice(_osc, _thresh, _cross) =>
avgHigh = avg(high, close)
avgLow = avg(low , close)
var return = 0.
if _cross == 'over' or _cross == 'both'
if crossover(_osc, _thresh)
return := avgHigh
if _cross == 'under' or _cross == 'both'
if crossunder(_osc, _thresh)
return := avgLow
return
// -Calculations ════════════════════════════════════════════════════════════════════════════════ //
oscillator = rsi(i_source == "Price (close)" ? close : obv, i_length)
crossover_overbought = f_getPrice(oscillator, i_obThreshold, 'over' )
crossunder_overbought = f_getPrice(oscillator, i_obThreshold, 'under')
bullZone = f_getPrice(oscillator, i_bullZone , 'both' )
bearZone = f_getPrice(oscillator, i_bearZone , 'both' )
crossover_oversold = f_getPrice(oscillator, i_osThreshold, 'over' )
crossunder_oversold = f_getPrice(oscillator, i_osThreshold, 'under')
// -Plotting ════════════════════════════════════════════════════════════════════════════════════ //
plot_crossover_overbought = plot(crossover_overbought > 0 ? crossover_overbought : na, 'Crossover Overbought' , crossover_overbought == crossover_overbought[1] ? color.green : na, 2)
plot_crossunder_overbought = plot(crossunder_overbought > 0 ? crossunder_overbought : na, 'Crossunder Overbought', crossunder_overbought == crossunder_overbought[1] ? color.green : na, 1, plot.style_cross)
plot_bullZone = plot(bullZone > 0 ? bullZone : na, 'Cross Bull Zone' , bullZone == bullZone[1] ? color.green : na, 1)
fill(plot_crossover_overbought, plot_bullZone, i_fill ? color.green : na)
plotshape(i_obos and oscillator > i_obThreshold, "Price Bars in Overbought Zone", shape.triangledown, location.abovebar, color.red, size=size.tiny)
plot_bearZone = plot(bearZone > 0 ? bearZone : na, 'Cross Bear Zone' , bearZone == bearZone[1] ? color.red : na, 1)
plot_crossover_oversold = plot(crossover_oversold > 0 ? crossover_oversold : na, 'Crossover Oversold' , crossover_oversold == crossover_oversold[1] ? color.red : na, 1, plot.style_cross)
plot_crossunder_oversold = plot(crossunder_oversold > 0 ? crossunder_oversold : na, 'Crossunder Oversold', crossunder_oversold == crossunder_oversold[1] ? color.red : na, 2)
fill(plot_crossunder_oversold, plot_bearZone, i_fill ? color.red : na)
plotshape(i_obos and oscillator < i_osThreshold, "Price Bars in Oversold Zone", shape.triangleup, location.belowbar, color.green, size=size.tiny)
barcolor(i_owcb ? oscillator > i_obThreshold or oscillator < i_osThreshold ? close < open ? #910000 : #006400 :
oscillator > i_bearZone and oscillator < i_bullZone ? close < open ? color.orange : #7FFFD4 : na : na, title="RSI Weighted Colored Bars")
// -Alerts ════════════════════════════════════════════════════════════════════════════════════ //
alertcondition(crossover (close, crossover_overbought), "Crossover Previous Overbought", "Crossover Previous Overbought\n{{exchange}}:{{ticker}}->\nPrice = {{close}},\nTime = {{time}}")
alertcondition(crossunder(close, crossunder_oversold ), "Crossunder Previous Oversold" , "Crossunder Previous Oversold\n{{exchange}}:{{ticker}}->\nPrice = {{close}},\nTime = {{time}}")