Oscillators Switch
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RozaniGhani-RG

//@version=5
indicator('Oscillators Switch', shorttitle ='OSC')

// 0. Tooltip
// 1. input.string
// 2. input.color
// 3. input.source
// 4. input.int
// 5. Dependencies : input.string and input.color
// 6. Dependencies : input.string, input.source and input.int
// 7. Plot

// ————————————————————————————————————————————————————————————————————————————— 0. Tooltip {
T0 = ' CMO : Chande Momentum Oscillator'
 + '\n RSI : Relative Strength Index'
 + '\n STO : Stochastic'
 + '\n TSI : True Strength Index'
 + '\n UO  : Ultimate Oscillator' 
// }
// ————————————————————————————————————————————————————————————————————————————— 1. input.string {
string i_s_osc = input.string('RSI', 'Oscillator', options = ['RSI', 'STO', 'UO', 'TSI', 'CMO'], tooltip = T0)
// }
// ————————————————————————————————————————————————————————————————————————————— 2. input.color {
i_c_cmo  = input.color(#2962FF, 'CMO',  inline = '1')
i_c_rsi  = input.color(#7E57C2, 'RSI ', inline = '2')
i_c_sto  = input.color(#2962FF, 'STO',  inline = '3')
i_c_tsi  = input.color(#2962FF, 'TSI ', inline = '4')
i_c_uo   = input.color(#F44336, 'UO ',  inline = '5')
// }
// ————————————————————————————————————————————————————————————————————————————— 3. input.source {
i_s_cmo  = input.source(close,  '',     inline = '1')
i_s_rsi  = input.source(close,  '',     inline = '2')
i_s_sto  = input.source(close,  '',     inline = '3')
i_s_tsi  = input.source(close,  '',     inline = '4')
i_s_uo   = input.source(hl2,    '',     inline = '5')
// }
// ————————————————————————————————————————————————————————————————————————————— 4. input.int {
i_i0_cmo = input.int(14,        '',     inline = '1')
i_i0_rsi = input.int(14,        '',     inline = '2')
i_i0_sto = input.int(14,        '',     inline = '3')
i_i0_tsi = input.int(25,        '',     inline = '4'), i_i1_tsi = input.int(13, '', inline = '4')
i_i0_uo  = input.int(5,         '',     inline = '5'), i_i1_uo  = input.int(34, '', inline = '5')
// }
// ————————————————————————————————————————————————————————————————————————————— 5. Dependencies : input.string and input.color {
color col = switch i_s_osc
	'CMO' => i_c_cmo
	'RSI' => i_c_rsi
	'STO' => i_c_sto
	'TSI' => i_c_tsi
	'UO'  => i_c_uo
// }
// ————————————————————————————————————————————————————————————————————————————— 6. Dependencies : input.string, input.source and input.int {
float osc = switch i_s_osc
	'CMO' => ta.cmo(  i_s_cmo, i_i0_cmo)
	'RSI' => ta.rsi(  i_s_rsi, i_i0_rsi)
	'STO' => ta.stoch(i_s_sto,     high,   low, i_i0_sto)
	'TSI' => ta.tsi(  i_s_tsi, i_i0_tsi,   i_i1_tsi)
	'UO'  => ta.sma(   i_s_uo,  i_i0_uo) - ta.sma(i_s_uo, i_i1_uo)
// }
// ————————————————————————————————————————————————————————————————————————————— 7. Plot {
plot(osc, color = col)
// }