Attachments forums

List of attachments posted on this forum.


All files on forums: 163091

Re: RSI Indicators for MT4

RplusT, Thu Aug 19, 2021 11:51 am

This experimental study attempts to translate Relative Strength Index ( RSI ) threshold levels of oversold/overbought and bull/bear zones as probable Price Support and Resistance levels.
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}}")
All files in topic