Indicators Overview
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © safeuse97

//@version=5
indicator('Indicators Overview', overlay=true)

////////////
// INPUTS //

// SMA
rsi_len = input.int(  14, title = "RSI Length",     group = "Indicators")
rsi_os  = input.float(40, title = "RSI Overbought", group = "Indicators")
rsi_ob  = input.float(60, title = "RSI Oversold",   group = "Indicators")


// SuperTrend
sup_atr_len = input.int(   10, "Supertrend ATR Length", group = 'Indicators')
sup_factor  = input.float(2.0, "Supertrend Factor",     group = 'Indicators')


/////////////
// SYMBOLS // 

u01 = input.bool(true,  title = "", group = 'Symbols', inline = 's01')
u02 = input.bool(true,  title = "", group = 'Symbols', inline = 's02')
u03 = input.bool(true,  title = "", group = 'Symbols', inline = 's03')
u04 = input.bool(true,  title = "", group = 'Symbols', inline = 's04')
u05 = input.bool(true,  title = "", group = 'Symbols', inline = 's05')
u06 = input.bool(true,  title = "", group = 'Symbols', inline = 's06')
u07 = input.bool(true,  title = "", group = 'Symbols', inline = 's07')
u08 = input.bool(true,  title = "", group = 'Symbols', inline = 's08')
u09 = input.bool(true,  title = "", group = 'Symbols', inline = 's09')
u10 = input.bool(true,  title = "", group = 'Symbols', inline = 's10')
u11 = input.bool(true,  title = "", group = 'Symbols', inline = 's11')
u12 = input.bool(true,  title = "", group = 'Symbols', inline = 's12')
u13 = input.bool(true,  title = "", group = 'Symbols', inline = 's13')
u14 = input.bool(true,  title = "", group = 'Symbols', inline = 's14')
u15 = input.bool(true,  title = "", group = 'Symbols', inline = 's15')



s01 = input.symbol('NIFTY',  group = 'Symbols', inline = 's01')
s02 = input.symbol('BANKNIFTY',  group = 'Symbols', inline = 's02')
s03 = input.symbol('HDFCBANK', group = 'Symbols', inline = 's03')
s04 = input.symbol('ICICIBANK',  group = 'Symbols', inline = 's04')
s05 = input.symbol('SBIN',  group = 'Symbols', inline = 's05')
s06 = input.symbol('AXISBANK',  group = 'Symbols', inline = 's06')
s07 = input.symbol('KOTAKBANK',   group = 'Symbols', inline = 's07')
s08 = input.symbol('INDUSINDBK',  group = 'Symbols', inline = 's08')
s09 = input.symbol('RELIANCE',  group = 'Symbols', inline = 's09')
s10 = input.symbol('INFY',  group = 'Symbols', inline = 's10')
s11 = input.symbol('HDFC',  group = 'Symbols', inline = 's11')
s12 = input.symbol('TCS',  group = 'Symbols', inline = 's12')
s13 = input.symbol('LT',  group = 'Symbols', inline = 's13')
s14 = input.symbol('BAJFINANCE',   group = 'Symbols', inline = 's14')
s15 = input.symbol('ITC',   group = 'Symbols', inline = 's15')


//////////////////
// CALCULATIONS //

// Get only symbol
only_symbol(s) => 
    array.get(str.split(s, ":"), 1)






screener_func() =>
    
    // RSI
    rsi = ta.rsi(close, rsi_len)
    
    //vwap
    vwap1=(ta.vwap>close)?1:0
     
    
    // Supertrend
    [sup_value, sup_dir] = ta.supertrend(sup_factor, sup_atr_len)
    
    [math.round_to_mintick(close), rsi, vwap1, sup_dir]

// Security call
[cl01, rsi01, vwap01, sup01] = request.security(s01, timeframe.period, screener_func())
[cl02, rsi02, vwap02, sup02] = request.security(s02, timeframe.period, screener_func())
[cl03, rsi03, vwap03, sup03] = request.security(s03, timeframe.period, screener_func())
[cl04, rsi04, vwap04, sup04] = request.security(s04, timeframe.period, screener_func())
[cl05, rsi05, vwap05, sup05] = request.security(s05, timeframe.period, screener_func())
[cl06, rsi06, vwap06, sup06] = request.security(s06, timeframe.period, screener_func())
[cl07, rsi07, vwap07, sup07] = request.security(s07, timeframe.period, screener_func())
[cl08, rsi08, vwap08, sup08] = request.security(s08, timeframe.period, screener_func())
[cl09, rsi09, vwap09, sup09] = request.security(s09, timeframe.period, screener_func())
[cl10, rsi10, vwap10, sup10] = request.security(s10, timeframe.period, screener_func())
[cl11, rsi11, vwap11, sup11] = request.security(s11, timeframe.period, screener_func())
[cl12, rsi12, vwap12, sup12] = request.security(s12, timeframe.period, screener_func())
[cl13, rsi13, vwap13, sup13] = request.security(s13, timeframe.period, screener_func())
[cl14, rsi14, vwap14, sup14] = request.security(s14, timeframe.period, screener_func())
[cl15, rsi15, vwap15, sup15] = request.security(s15, timeframe.period, screener_func())


////////////
// ARRAYS //

s_arr   = array.new_string(0)
u_arr   = array.new_bool(0)
cl_arr  = array.new_float(0)
rsi_arr = array.new_float(0)
vwap_arr = array.new_float(0)
sup_arr = array.new_float(0)

// Add Symbols 
array.push(s_arr, only_symbol(s01))
array.push(s_arr, only_symbol(s02))
array.push(s_arr, only_symbol(s03))
array.push(s_arr, only_symbol(s04))
array.push(s_arr, only_symbol(s05))
array.push(s_arr, only_symbol(s06))
array.push(s_arr, only_symbol(s07))
array.push(s_arr, only_symbol(s08))
array.push(s_arr, only_symbol(s09))
array.push(s_arr, only_symbol(s10))
array.push(s_arr, only_symbol(s11))
array.push(s_arr, only_symbol(s12))
array.push(s_arr, only_symbol(s13))
array.push(s_arr, only_symbol(s14))
array.push(s_arr, only_symbol(s15))


///////////
// FLAGS //

array.push(u_arr, u01)
array.push(u_arr, u02)
array.push(u_arr, u03)
array.push(u_arr, u04)
array.push(u_arr, u05)
array.push(u_arr, u06)
array.push(u_arr, u07)
array.push(u_arr, u08)
array.push(u_arr, u09)
array.push(u_arr, u10)
array.push(u_arr, u11)
array.push(u_arr, u12)
array.push(u_arr, u13)
array.push(u_arr, u14)
array.push(u_arr, u15)

///////////
// CLOSE //

array.push(cl_arr, cl01)
array.push(cl_arr, cl02)
array.push(cl_arr, cl03)
array.push(cl_arr, cl04)
array.push(cl_arr, cl05)
array.push(cl_arr, cl06)
array.push(cl_arr, cl07)
array.push(cl_arr, cl08)
array.push(cl_arr, cl09)
array.push(cl_arr, cl10)
array.push(cl_arr, cl11)
array.push(cl_arr, cl12)
array.push(cl_arr, cl13)
array.push(cl_arr, cl14)
array.push(cl_arr, cl15)


/////////
// RSI //

array.push(rsi_arr, rsi01)
array.push(rsi_arr, rsi02)
array.push(rsi_arr, rsi03)
array.push(rsi_arr, rsi04)
array.push(rsi_arr, rsi05)
array.push(rsi_arr, rsi06)
array.push(rsi_arr, rsi07)
array.push(rsi_arr, rsi08)
array.push(rsi_arr, rsi09)
array.push(rsi_arr, rsi10)
array.push(rsi_arr, rsi11)
array.push(rsi_arr, rsi12)
array.push(rsi_arr, rsi13)
array.push(rsi_arr, rsi14)
array.push(rsi_arr, rsi15)


/////////
//VWAP//

array.push(vwap_arr,vwap01)
array.push(vwap_arr,vwap02)
array.push(vwap_arr,vwap03)
array.push(vwap_arr,vwap04)
array.push(vwap_arr,vwap05)
array.push(vwap_arr,vwap06)
array.push(vwap_arr,vwap07)
array.push(vwap_arr,vwap08)
array.push(vwap_arr,vwap09)
array.push(vwap_arr,vwap10)
array.push(vwap_arr,vwap11)
array.push(vwap_arr,vwap12)
array.push(vwap_arr,vwap13)
array.push(vwap_arr,vwap14)
array.push(vwap_arr,vwap15)



////////////////
// SUPERTREND //

array.push(sup_arr, sup01)
array.push(sup_arr, sup02)
array.push(sup_arr, sup03)
array.push(sup_arr, sup04)
array.push(sup_arr, sup05)
array.push(sup_arr, sup06)
array.push(sup_arr, sup07)
array.push(sup_arr, sup08)
array.push(sup_arr, sup09)
array.push(sup_arr, sup10)
array.push(sup_arr, sup11)
array.push(sup_arr, sup12)
array.push(sup_arr, sup13)
array.push(sup_arr, sup14)
array.push(sup_arr, sup15)

///////////
// PLOTS //

var tbl = table.new(position.top_right, 6, 41, frame_color=#151715, frame_width=1, border_width=2, border_color=color.new(color.white, 100))

if barstate.islast

    table.cell(tbl, 0, 0, 'Symbol',     text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
    table.cell(tbl, 1, 0, 'Price',      text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
    table.cell(tbl, 2, 0, 'RSI',        text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
    table.cell(tbl, 3, 0, 'VWAP',       text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
    table.cell(tbl, 4, 0, 'Supertrend', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)

    for i = 0 to 14
        if array.get(u_arr, i)
        
            rsi_col  = array.get(rsi_arr, i) > rsi_ob    ? color.green   : array.get(rsi_arr, i) < rsi_os ? color.red : #aaaaaa 
            
            vwap_text = array.get(vwap_arr, i) < 1 ? "Up"      : "Down"
            vwap_col  = array.get(vwap_arr, i) < 1 ? color.green: color.red
           
            sup_text = array.get(sup_arr, i) > 0 ? "Down"      : "Up"
            sup_col  = array.get(sup_arr, i) > 0 ? color.red : color.green
            
            table.cell(tbl, 0, i + 1, array.get(s_arr, i),                                 text_halign = text.align_left,   bgcolor = color.gray, text_color = color.white, text_size = size.small)
            table.cell(tbl, 1, i + 1, str.tostring(array.get(cl_arr, i)),                  text_halign = text.align_center, bgcolor = #aaaaaa,    text_color = color.white, text_size = size.small)
            table.cell(tbl, 2, i + 1, str.tostring(array.get(rsi_arr, i), "#.##"),         text_halign = text.align_center, bgcolor = rsi_col,    text_color = color.white, text_size = size.small)
            table.cell(tbl, 3, i + 1, str.tostring(vwap_text),                             text_halign = text.align_center, bgcolor = vwap_col,    text_color = color.white, text_size = size.small)
            table.cell(tbl, 4, i + 1, sup_text,                                            text_halign = text.align_center, bgcolor = sup_col,    text_color = color.white, text_size = size.small)
