JayRogers

MTF Standard Deviation Bands Medley

Description:
  • A veritable banquet of MA basis calculations to choose from.
  • 3 separate sets of bands to tinker with.
  • Optional toggle-able time resolution.
  • Optional breakout shapes with their own separate multiplier.
  • A fart, some love and kisses. ...and I may have dribbled a bit. Sorry.

Go on. Have a tinker. You know you want to.
Remove from Favorite Scripts Add to Favorite Scripts
//@version=2

study(title="MTF Standard Deviation Bands Medley", shorttitle="SDBM", overlay=true)

// Revision:    1
// Author:      JayRogers
//
// Description:
//  - A veritable banquet of MA basis calculations to choose from.
//  - 3 seperate sets of bands to tinker with.
//  - Optional breakout shapes with their own seperate multiplier.
//  - A fart, some love and kisses. ...and I may have dribbled a bit. Sorry.

// - INPUTS START
useRes  = input(defval=false, title="Use Fixed Resolution?")
setRes  = input(defval="15", title="Select Resolution", type=resolution)
maType  = input(defval="VWMA", title="Basis Calculation: SMA, EMA, WMA, VWMA, SMMA, DEMA, TEMA, HullMA, LSMA ( case sensitive )", type=string)
maSrc   = input(defval=close, title="Source", type=source)
maLen   = input(defval=20, title="Period", minval=1)
maOff   = input(defval=0, title="Offset", minval=0)
multA   = input(defval=2, title="Deviation A", minval=0, step=0.05)
multB   = input(defval=2.5, title="Deviation B", minval=0, step=0.05)
multC   = input(defval=3, title="Deviation C", minval=0, step=0.05)
showB   = input(defval=false, title="Disable Bands B?")
showC   = input(defval=false, title="Disable Bands C?")
multBr  = input(defval=3.5, title="Breakout Deviation", minval=0, step=0.05)
highBr  = input(defval=high, title="Break Up Source", type=source)
lowBr   = input(defval=low, title="Break Down Source", type=source)
showBr  = input(defval=false, title="Enable Breakout Markers?")
lsmaOff = input(defval=4, title="Offset for LSMA", minval=0)
// - INPUTS END

// - FUNCTIONS
// Returns chosen MA input calculation, default to SMA if blank or typo.
variant(type, src, len, lsma) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v3 = wma(src, len)                                                  // Weighted
    v4 = vwma(src, len)                                                 // Volume Weighted
    v5 = na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len    // Smoothed
    v6 = 2 * v2 - ema(v2, len)                                          // Double Exponential
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)               // Triple Exponential
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))   // Hull
    v9 = linreg(src, len, lsma)                                         // Least Squares
    type=="EMA"?v2 : type=="WMA"?v3 : type=="VWMA"?v4 : type=="SMMA"?v5 : type=="DEMA"?v6 : type=="TEMA"?v7 : type=="HullMA"?v8 : type=="LSMA"?v9 : v1
// Return selected resolution series, or use current
reso(exp, use, res) => use ? security(tickerid, res, exp) : exp
// - FUNCTIONS END

// - SERIES VARIABLES
// Basis and deviation
basis       = reso(variant(maType, maSrc[maOff], maLen, lsmaOff), useRes, setRes)
devA        = multA * reso(stdev(maSrc, maLen), useRes, setRes)
devB        = multB * reso(stdev(maSrc, maLen), useRes, setRes)
devC        = multC * reso(stdev(maSrc, maLen), useRes, setRes)
// Breakouts
devBreak    = multBr * reso(stdev(maSrc, maLen), useRes, setRes)
highBreak   = showBr and highBr >= (basis + devBreak)
lowBreak    = showBr and lowBr <= (basis - devBreak)
// - SERIES VARIABLES END

// - PLOTTING
// Basis
plot(basis, title="basis", color=#999999, linewidth=2, transp=50)
// Upper bands
plot(basis + devA, title="Upper Band A", color=#006666, linewidth=2, transp=50)
plot(showB ? na : (basis + devB), title="Upper Band B", color=#009999, linewidth=2, transp=50)
plot(showC ? na : (basis + devC), title="Upper Band C", color=#00CCCC, linewidth=2, transp=50)
// Lower bands
plot(basis - devA, title="Lower band A", color=#006666, linewidth=2, transp=50)
plot(showB ? na : (basis - devB), title="Lower band B", color=#009999, linewidth=2, transp=50)
plot(showC ? na : (basis - devC), title="Lower band C", color=#00CCCC, linewidth=2, transp=50)
// Breakout shapes
plotshape(highBreak, title="High Break", style=shape.diamond, location=location.abovebar, size=size.tiny, color=#FF0000, transp=50)
plotshape(lowBreak, title="Low Break", style=shape.diamond, location=location.belowbar, size=size.tiny, color=#00FF00, transp=50)
// - PLOTTING END
Ideas Scripts Chart
United States
United Kingdom
India
España
Italia
Brasil
Россия
Türkiye
日本
한국
Home Stock Screener Economic Calendar How It Works Chart Features House Rules Moderators For the WEB Widgets Stock Charting Library Priority Support Feature Request Blog & News FAQ Help & Wiki Twitter
Private Messages Chat Ideas Published Followers Following Priority Support Public Profile Profile Settings Billing Sign Out