SteemUSD + SBDUSD multi-exchange indicator

Please see source code for usage instructions
Show your appreciation at

Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.


The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.

Want to use this script on a chart?
// SteemUSD + SBDUSD multi-exchange experimental indicator
// Work in progress - Please send any feedback you have :)
study(title = "SteemUSD + SBDUSD multi-exchange indicator", shorttitle = "SteemUSD + SBDUSD multi-exchange indicator", overlay = false)

// Get user input on display preferences
displaysbd=input(title="Display SBD",type=bool,defval=true)
displaysteem=input(title="Display SteemUSD",type=bool,defval=true)
displayweeksteemavg=input(title="Display 1 week SteemUSD avg",type=bool,defval=true)
displayhalfweeksteemavg=input(title="Display half week SteemUSD avg",type=bool,defval=true)
displayexperimental=input(title="Display polosdbpeg*weeklyavgsteemusd [experiment]",type=bool,defval=true)

// Define all the BTC exchanges that matter
bitfinexbtcusd = security("BITFINEX:BTCUSD",period, close)
okcoinfutures3mbtcusd = security("OKCOIN:BTCUSD3M",period,high)
okcoinfutures1wbtcusd = security("OKCOIN:BTCUSD1W",period,close)
okcoinfutures2wbtcusd = security("OKCOIN:BTCUSD2W",period,close)
bitstampbtcusd = security("BITSTAMP:BTCUSD",period,close)
okcoincnyconvertedtobtcusd = security("OKCOIN:BTCCNY*CNYUSD",period,close)
btcebtcusd = security("BTCE:BTCUSD",period,low)

// Work out the average btc price
btctmptotal = bitfinexbtcusd+okcoinfutures3mbtcusd+okcoinfutures2wbtcusd+okcoinfutures1wbtcusd+bitstampbtcusd+okcoincnyconvertedtobtcusd+btcebtcusd
avgbtcusd = btctmptotal/7

// Define all the poloniex steem/sbd instruments - Tradingview needs to add bittrex..
polosteembtc = security("POLONIEX:STEEMBTC",period,close)
polosbdbtc = security("POLONIEX:SBDBTC",period, close)
polosbdpeg = (polosbdbtc*avgbtcusd)
// Not currently used but maybe handy for someone
//poloethbtc = security("POLONIEX:ETHBTC",period,close)
//poloethusd = (poloethbtc*avgbtcusd)
//poloetcbtc = security("POLONIEX:ETCBTC",period,close)
//poloetcusd = (poloetcbtc*avgbtcusd)

// Calculate the various possible SteemUSD rates
steemusdavg = (polosteembtc*avgbtcusd)
steemusd1 = (polosteembtc*bitfinexbtcusd)
steemusd2 = (polosteembtc*okcoinfutures3mbtcusd)
steemusd3 = (polosteembtc*okcoinfutures1wbtcusd)
steemusd4 = (polosteembtc*okcoinfutures2wbtcusd)
steemusd5 = (polosteembtc*bitstampbtcusd)
steemusd6 = (polosteembtc*okcoincnyconvertedtobtcusd)
steemusd7 = (polosteembtc*btcebtcusd)

//Color SteemUSD price + SBD average based on SBD's current usd value.
plotcolor = if polosbdpeg<1
    if polosbdpeg<0.9
        if polosbdpeg<0.8

// Get user input on how many periods = 1 week   - Need to work this out automatically if possible
//1weekhowmanyperiods=input(title="How many of the current period does it take to make 1 week - Default period is 1hr so 168 hrs is 1 week",type=integer,defval=168,minval=1,maxval=1000)

// Calculate average USD price of steem for last 7 days (168hrs)
weeklyavgperiods = 168
weeklyavgsteemusd = ema(steemusdavg,weeklyavgperiods)
// Half week EMA for detecting trend change
halfweeklyavgsteemusd = ema(steemusdavg,(weeklyavgperiods/2))

//Color SteemUSD weekly avg price : green = sell SBD , red = sell Steem (in theory, at the right price)
// If orange, take caution when using the delayed 1 week conversion process - Trend may be changing
plotcolor2 = if weeklyavgsteemusd>=halfweeklyavgsteemusd
    if steemusdavg<=halfweeklyavgsteemusd
// Plots SteemUSD with all of the different btc prices + avg
// Usual highest and lowest btc exchanges are marked aqua - other exchanges straying from these borders on higher timeframe could indicate a disturbance in the force 
plot(displaysteem and steemusd1 ? steemusd1 : na,color=plotcolor,linewidth=1,title="SteemUSD based on BitFinex")
p1 = plot(displaysteem and steemusd2 ? steemusd2 : na,color=aqua,linewidth=1,title="SteemUSD based on OKCoin 3 Month futures") // OKCoin 3 month futures would *normally* be highest price
plot(displaysteem and steemusd3 ? steemusd3 : na,color=plotcolor,linewidth=1,title="SteemUSD based on OKCoin 1 Week futures")
plot(displaysteem and steemusd4 ? steemusd4 : na,color=plotcolor,linewidth=1,title="SteemUSD based on OKCOIN 2 Week futures")
plot(displaysteem and steemusd5 ? steemusd5 : na,color=plotcolor,linewidth=1,title="SteemUSD based on Bitstamp")
plot(displaysteem and steemusd6 ? steemusd6 : na,color=plotcolor,linewidth=1,title="SteemUSD based on OKCoin CNY converted to USD")
p2 = plot(displaysteem and steemusd7 ? steemusd7 : na,color=aqua,linewidth=1,title="SteemUSD based on BTCE") // BTCE would *normally* be lowest price
plot(displaysteem and steemusdavg ? steemusdavg : na,color=plotcolor2,linewidth=1,style=cross,title="SteemUSD based on average BTC price")

// Fill in the background between usual highest and usual lowest price range - helps highlight outliers

// Plot SDB price

plot(displaysbd and polosbdpeg ? polosbdpeg : na,color=plotcolor,linewidth=2,title="Poloniex current sbd peg value")

// Markers for various SDB price points
//h1 = hline(1.1)
//h2 = hline(1)
//h3 = hline(0.9)
//h4 = hline(0.8)
//h5 = hline(0.7)
// Highlight background for SDB price points 

//1 SBD is convertable for $1usd worth of steem (based on 7 day avg, 7 days from triggering)
// Plot the weekly average steemusd price
plot(displayweeksteemavg and weeklyavgsteemusd ? weeklyavgsteemusd : na,color=plotcolor2,linewidth=2)
// Plot the half-weekly average steemusd price
plot(displayhalfweeksteemavg and halfweeklyavgsteemusd ? halfweeklyavgsteemusd : na,color=plotcolor2,linewidth=1)

// Experimental
plot(displayexperimental and experimental ? experimental : na,color=white,linewidth=1)