OBV CSI [mado]
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © madoqa
//@version=4
study(title="OBV CSI[mado]", shorttitle="OBV CSI[mado]", scale=scale.right, precision=2)

hline(50)
hline(30)
hline(70)


pos1 = input(5, title="label position 1")
pos2 = input(20, title="label position 2")

eurusd = security("EURUSD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
eurgbp = security("EURGBP", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))

euraud = security("EURAUD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
eurjpy = security("EURJPY", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
eurcad = security("EURAUD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
eurchf = security("EURCHF", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
eurnzd = security("EURNZD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
usdjpy = security("USDJPY", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
usdcad = security("USDAUD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
usdchf = security("USDCHF", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
gbpusd = security("GBPUSD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
gbpaud = security("GBPAUD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
gbpjpy = security("GBPJPY", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
gbpcad = security("GBPCAD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
gbpchf = security("GBPCHF", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
gbpnzd = security("GBPNZD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
audusd = security("AUDUSD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
audnzd = security("AUDNZD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
audjpy = security("AUDJPY", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
audcad = security("AUDCAD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
audchf = security("AUDCHF", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
cadjpy = security("CADJPY", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
cadchf = security("CADCHF", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
chfjpy = security("CHFJPY", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
nzdusd = security("NZDUSD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
nzdchf = security("NZDCHF", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
nzdjpy = security("NZDJPY", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))
nzdcad = security("NZDCAD", timeframe.period, rsi(cum(change(close) > 0 ? +volume : change(close)-1 < 0 ? -volume : 0 * volume), 14))

eur = (eurusd + eurgbp + euraud + eurjpy + eurcad + eurchf + eurnzd) / 7
usd = (100 - audusd + 100 - gbpusd + 100 - eurusd + usdjpy + usdcad + usdchf + 100 - 
   nzdusd) / 7
gbp = (gbpusd + 100 - eurgbp + gbpaud + gbpjpy + gbpcad + gbpchf) / 7
aud = (audusd + 100 - gbpaud + 100 - euraud + audjpy + audcad + audchf + audnzd) / 7
chf = (100 - usdchf + 100 - gbpchf + 100 - audchf + chfjpy + 100 - cadchf + 100 - 
   eurchf + 100 - nzdchf) / 7
jpy = (100 - usdjpy + 100 - gbpjpy + 100 - audjpy + 100 - chfjpy + 100 - cadjpy + 100 - 
   eurjpy + 100 - nzdjpy) / 7
cad = (100 - usdcad + 100 - gbpcad + 100 - audcad + cadchf + cadjpy + 100 - eurcad + 
   100 - nzdcad) / 7
nzd = (nzdusd + 100 - gbpnzd + 100 - audnzd + nzdchf + nzdjpy + 100 - eurnzd + nzdcad) / 
   7

eu = eur - usd
eg = eur - gbp
ea = eur - aud
ech = eur - chf
ej = eur - jpy
eca = eur - cad
en = eur - nzd

plot(eur, color=color.blue)
plot(usd, color=color.yellow)
plot(gbp, color=color.aqua)
plot(aud, color=color.green)
plot(chf, color=color.orange)
plot(jpy, color=color.white)
plot(cad, color=color.red)
plot(nzd, color=color.black)


eur1 = eur > usd ? 1 : 0
eur2 = eur > gbp ? 1 : 0
eur3 = eur > aud ? 1 : 0
eur4 = eur > chf ? 1 : 0
eur5 = eur > jpy ? 1 : 0
eur6 = eur > cad ? 1 : 0
eur7 = eur > nzd ? 1 : 0
eurp = (eur1 + eur2 + eur3 + eur4 + eur5 + eur6 + eur7) * pos1 + pos2

usd1 = usd > eur ? 1 : 0
usd2 = usd > gbp ? 1 : 0
usd3 = usd > aud ? 1 : 0
usd4 = usd > chf ? 1 : 0
usd5 = usd > jpy ? 1 : 0
usd6 = usd > cad ? 1 : 0
usd7 = usd > nzd ? 1 : 0
usdp = (usd1 + usd2 + usd3 + usd4 + usd5 + usd6 + usd7) * pos1 + pos2

gbp1 = gbp > usd ? 1 : 0
gbp2 = gbp > eur ? 1 : 0
gbp3 = gbp > aud ? 1 : 0
gbp4 = gbp > chf ? 1 : 0
gbp5 = gbp > jpy ? 1 : 0
gbp6 = gbp > cad ? 1 : 0
gbp7 = gbp > nzd ? 1 : 0
gbpp = (gbp1 + gbp2 + gbp3 + gbp4 + gbp5 + gbp6 + gbp7) * pos1 + pos2

aud1 = aud > usd ? 1 : 0
aud2 = aud > eur ? 1 : 0
aud3 = aud > gbp ? 1 : 0
aud4 = aud > chf ? 1 : 0
aud5 = aud > jpy ? 1 : 0
aud6 = aud > cad ? 1 : 0
aud7 = aud > nzd ? 1 : 0
audp = (aud1 + aud2 + aud3 + aud4 + aud5 + aud6 + aud7) * pos1 + pos2

chf1 = chf > usd ? 1 : 0
chf2 = chf > eur ? 1 : 0
chf3 = chf > gbp ? 1 : 0
chf4 = chf > aud ? 1 : 0
chf5 = chf > jpy ? 1 : 0
chf6 = chf > cad ? 1 : 0
chf7 = chf > nzd ? 1 : 0
chfp = (chf1 + chf2 + chf3 + chf4 + chf5 + chf6 + chf7) * pos1 + pos2

jpy1 = jpy > usd ? 1 : 0
jpy2 = jpy > eur ? 1 : 0
jpy3 = jpy > gbp ? 1 : 0
jpy4 = jpy > aud ? 1 : 0
jpy5 = jpy > chf ? 1 : 0
jpy6 = jpy > cad ? 1 : 0
jpy7 = jpy > nzd ? 1 : 0
jpyp = (jpy1 + jpy2 + jpy3 + jpy4 + jpy5 + jpy6 + jpy7) * pos1 + pos2

cad1 = cad > usd ? 1 : 0
cad2 = cad > eur ? 1 : 0
cad3 = cad > gbp ? 1 : 0
cad4 = cad > aud ? 1 : 0
cad5 = cad > chf ? 1 : 0
cad6 = cad > jpy ? 1 : 0
cad7 = cad > nzd ? 1 : 0
cadp = (cad1 + cad2 + cad3 + cad4 + cad5 + cad6 + cad7) * pos1 + pos2

nzd1 = nzd > usd ? 1 : 0
nzd2 = nzd > eur ? 1 : 0
nzd3 = nzd > gbp ? 1 : 0
nzd4 = nzd > aud ? 1 : 0
nzd5 = nzd > chf ? 1 : 0
nzd6 = nzd > jpy ? 1 : 0
nzd7 = nzd > cad ? 1 : 0
nzdp = (nzd1 + nzd2 + nzd3 + nzd4 + nzd5 + nzd6 + nzd7) * pos1 + pos2

plotshape(nzdp, text='NZD', style=shape.labeldown, location=location.absolute, color=color.black, textcolor=color.white, offset=3, show_last=1)
plotshape(audp, text='AUD', style=shape.labeldown, location=location.absolute, color=color.green, textcolor=color.white, offset=3, show_last=1)
plotshape(chfp, text='CHF', style=shape.labeldown, location=location.absolute, color=color.orange, textcolor=color.white, offset=3, show_last=1)
plotshape(jpyp, text='JPY', style=shape.labeldown, location=location.absolute, color=color.white, textcolor=color.black, offset=3, show_last=1)
plotshape(cadp, text='CAD', style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white, offset=3, show_last=1)
plotshape(eurp, text='EUR', style=shape.labeldown, location=location.absolute, color=color.blue, textcolor=color.white, offset=3, show_last=1)
plotshape(usdp, text='USD', style=shape.labeldown, location=location.absolute, color=color.yellow, textcolor=color.black, offset=3, show_last=1)
plotshape(gbpp, text='GBP', style=shape.labeldown, location=location.absolute, color=color.aqua, textcolor=color.black, offset=3, show_last=1)

