Diabolicus

Volume Weighted Market Mean [Dia]

Calculate a volume weighted market mean price across various exchanges.
Indicator shows mean values of high, low and ohcl/4, weighted by corresponding volume.
- Optional: display of simple arithmetic mean of prices
- Optional: additional price lines for single exchanges.
- EMA smoothing of results
Skrypt open-source

Zgodnie z prawdziwym duchem TradingView, autor tego skryptu opublikował go jako open-source, aby traderzy mogli go zrozumieć i zweryfikować. Brawo dla autora! Możesz używać go za darmo, ale ponowne wykorzystanie tego kodu w publikacji jest regulowane przez Dobre Praktyki. Możesz go oznaczyć jako ulubione, aby użyć go na wykresie.

Wyłączenie odpowiedzialności

Informacje i publikacje przygotowane przez TradingView lub jego użytkowników, prezentowane na tej stronie, nie stanowią rekomendacji ani porad handlowych, inwestycyjnych i finansowych i nie powinny być w ten sposób traktowane ani wykorzystywane. Więcej informacji na ten temat znajdziesz w naszym Regulaminie.

Chcesz użyć tego skryptu na wykresie?
study(title="Volume Weighted Market Mean [Dia]", shorttitle="VWMM_Dia", overlay=true)
// 141113 v1.0
// https://www.tradingview.com/script/dVXD7lus-Exchange-Comparison-Diabolicus/
// 150907 v2.0 (now volume weighted)
// Calculate a volume weighted market mean price across various exchanges.
// Indicator shows mean values of high, low and ohcl/4, weighted by corresponding volume.
// - Optional: display of simple arithmetic mean of prices
// - Optional: additional price lines for single exchanges.
// - EMA smoothing of results
//
mean_ema = input(2,title="Mean Values EMA Smoothing")
s_pm = input(1, title="Show simple arithmetic mean?")
sing = input(0, title="Show Single Exchanges?")
s_okcs = input(1, title="Show OKCoin Spot?")
s_okc1 = input(1, title="Show OKCoin 1W Future?")
s_okc2 = input(1, title="Show OKCoin 2W Future?")
s_okc3 = input(1, title="Show OKCoin 3M Future?")
s_stamp = input(1, title="Show Bitstamp?")
s_bfx = input(1, title="Show Bitfinex?")
s_btce = input(1, title="Show BTC-E?")
s_kraken = input(1, title="Show Kraken?")

sym_hl4(s)=>security(s,period,ohlc4)
sym_h(s)=>security(s,period,high)
sym_l(s)=>security(s,period,low)
sym_v(s)=>security(s,period,volume)

// load exchange rates
eurusd = sym_hl4("FX:EURUSD")
usdcnh = sym_hl4("FX:USDCNH")

// adjust for base currency other than USD
base = ticker == "XBTEUR" ? 2 : ticker == "BTCEUR" ? 2 : ticker == "BTCCNY" ? 3 : 1

basefactor = base==2 ? 1/eurusd : base==3 ? usdcnh : 1


// s = spot
// p = price
// 1 = 1W future
// 1 = 2W future
// 1 = 3M future
// v = volume
// Exchange pairs must be normalized to USD, so multiply by EURUSD or divide by USDCNH respectively
okc_sp = sym_hl4("OKCOIN:BTCUSD") * basefactor
okc_sh = sym_h("OKCOIN:BTCUSD") * basefactor
okc_sl = sym_l("OKCOIN:BTCUSD") * basefactor
okc_sv = sym_v("OKCOIN:BTCUSD") * basefactor
okc_1p = sym_hl4("OKCOIN:BTCUSD1W") * basefactor
okc_1h = sym_h("OKCOIN:BTCUSD1W") * basefactor
okc_1l = sym_l("OKCOIN:BTCUSD1W") * basefactor
okc_1v = sym_v("OKCOIN:BTCUSD1W") * basefactor
okc_2p = sym_hl4("OKCOIN:BTCUSD2W") * basefactor
okc_2h = sym_h("OKCOIN:BTCUSD2W") * basefactor
okc_2l = sym_l("OKCOIN:BTCUSD2W") * basefactor
okc_2v = sym_v("OKCOIN:BTCUSD2W") * basefactor
okc_3p = sym_hl4("OKCOIN:BTCUSD3M") * basefactor
okc_3h = sym_h("OKCOIN:BTCUSD3M") * basefactor
okc_3l = sym_l("OKCOIN:BTCUSD3M") * basefactor
okc_3v = sym_v("OKCOIN:BTCUSD3M") * basefactor
stamp_sp = sym_hl4("BITSTAMP:BTCUSD") * basefactor
stamp_sh = sym_h("BITSTAMP:BTCUSD") * basefactor
stamp_sl = sym_l("BITSTAMP:BTCUSD") * basefactor
stamp_sv = sym_v("BITSTAMP:BTCUSD") * basefactor
bfx_sp = sym_hl4("BITFINEX:BTCUSD") * basefactor
bfx_sh = sym_h("BITFINEX:BTCUSD") * basefactor
bfx_sl = sym_l("BITFINEX:BTCUSD") * basefactor
bfx_sv = sym_v("BITFINEX:BTCUSD") * basefactor
btce_sp = sym_hl4("BTCE:BTCUSD") * basefactor
btce_sh = sym_h("BTCE:BTCUSD") * basefactor
btce_sl = sym_l("BTCE:BTCUSD") * basefactor
btce_sv = sym_v("BTCE:BTCUSD") * basefactor
kraken_sp = sym_hl4("KRAKEN:XBTEUR") * eurusd * basefactor
kraken_sh = sym_h("KRAKEN:XBTEUR") * eurusd * basefactor
kraken_sl = sym_l("KRAKEN:XBTEUR") * eurusd * basefactor
kraken_sv = sym_v("KRAKEN:XBTEUR") * eurusd * basefactor

//calculate cumulative volume
cum_v =(okc_sv+okc_1v+okc_2v+okc_3v+stamp_sv+bfx_sv+btce_sv+kraken_sv)

// calculate volume weighted mean
mean = (okc_sp*okc_sv+okc_1p*okc_1v+okc_2p*okc_2v+okc_3p*okc_3v+stamp_sp*stamp_sv+bfx_sp*bfx_sv+btce_sp*btce_sv+kraken_sp*kraken_sv)/cum_v
mean_h = (okc_sh*okc_sv+okc_1h*okc_1v+okc_2h*okc_2v+okc_3h*okc_3v+stamp_sh*stamp_sv+bfx_sh*bfx_sv+btce_sh*btce_sv+kraken_sh*kraken_sv)/cum_v
mean_l = (okc_sl*okc_sv+okc_1l*okc_1v+okc_2l*okc_2v+okc_3l*okc_3v+stamp_sl*stamp_sv+bfx_sl*bfx_sv+btce_sl*btce_sv+kraken_sl*kraken_sv)/cum_v

// calculate price weighted mean for comparison
mean_2 = (okc_sp+okc_1p+okc_2p+okc_3p+stamp_sp+bfx_sp+btce_sp+kraken_sp) / 8

// plot single exchanges
plot(sing and s_okcs ? okc_sp : na,color=#0000BB)
plot(sing and s_okc1 ? okc_1p : na,color=#3333BB)
plot(sing and s_okc2 ? okc_2p : na,color=#6666BB)
plot(sing and s_okc3 ? okc_3p : na,color=#9999BB)
plot(sing and s_stamp ? stamp_sp : na,color=#00BB00)
plot(sing and s_bfx ? bfx_sp : na,color=#BB6600)
plot(sing and s_btce ? btce_sp : na,color=#66BB00)
plot(sing and s_kraken ? kraken_sp : na,color=#00FF66)

// plot mean values
mean_vw = plot(ema(mean,mean_ema),color=red,linewidth=2)
mean_high = plot(ema(mean_h,mean_ema),color=red)
mean_low = plot(ema(mean_l,mean_ema),color=red)
fill(mean_high, mean_low, color=red, transp=80)
mean_pw = plot(s_pm ? ema(mean_2,mean_ema) : na,color=yellow,linewidth=2)