Standard Deviation.pine
Copy
// @version=5
// @License This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @Author andre_007
// @description Standard Deviation Refurbished
// @Thanks and credits:
// - TradingView (StDev and MAs)
// - The_Caretaker (themes 'Spectrum Blue-Green-Red' and 'Spectrum Blue-Red')
indicator('Standard Deviation Refurbished', shorttitle='StDev Refurbished', format=format.price, precision=2, timeframe="", max_bars_back = 1000)
// ------------------------- Constants {
var string SMA = 'Simple Moving Average'
var string EMA = 'Exponential Moving Average'
var string HMA = 'Hull Moving Average'
var string ALMA = 'Arnaud Legoux Moving Average'
var string MEDIAN = 'Median'
var string VWAP = 'VWAP'
var color TRANSPARENT = color.new(color.white, 100)
var string GROUP_1 = 'Standard Deviation'
var string GROUP_2 = 'Theme'
var string GROUP_3 = 'Moving Averages'
var color LIME = color.new(#00FF29, 0)
var color PURPLE = color.new(#e814ff, 0)
var arrayColorBGR = array.new_color(na)
var arrayColorBR = array.new_color(na)
if barstate.isfirst
array.push ( arrayColorBGR, #0000FF )
array.push ( arrayColorBGR, #000AFF ), array.push ( arrayColorBGR, #0014FF ), array.push ( arrayColorBGR, #001FFF ), array.push ( arrayColorBGR, #0029FF ), array.push ( arrayColorBGR, #0033FF ),
array.push ( arrayColorBGR, #003DFF ), array.push ( arrayColorBGR, #0047FF ), array.push ( arrayColorBGR, #0052FF ), array.push ( arrayColorBGR, #005CFF ), array.push ( arrayColorBGR, #0066FF ),
array.push ( arrayColorBGR, #0070FF ), array.push ( arrayColorBGR, #007AFF ), array.push ( arrayColorBGR, #0085FF ), array.push ( arrayColorBGR, #008FFF ), array.push ( arrayColorBGR, #0099FF ),
array.push ( arrayColorBGR, #00A3FF ), array.push ( arrayColorBGR, #00ADFF ), array.push ( arrayColorBGR, #00B8FF ), array.push ( arrayColorBGR, #00C2FF ), array.push ( arrayColorBGR, #00CCFF ),
array.push ( arrayColorBGR, #00D6FF ), array.push ( arrayColorBGR, #00E0FF ), array.push ( arrayColorBGR, #00EBFF ), array.push ( arrayColorBGR, #00F5FF ), array.push ( arrayColorBGR, #00FFFF ),
array.push ( arrayColorBGR, #00FFF5 ), array.push ( arrayColorBGR, #00FFEB ), array.push ( arrayColorBGR, #00FFE0 ), array.push ( arrayColorBGR, #00FFD6 ), array.push ( arrayColorBGR, #00FFCC ),
array.push ( arrayColorBGR, #00FFC2 ), array.push ( arrayColorBGR, #00FFB8 ), array.push ( arrayColorBGR, #00FFAD ), array.push ( arrayColorBGR, #00FFA3 ), array.push ( arrayColorBGR, #00FF99 ),
array.push ( arrayColorBGR, #00FF8F ), array.push ( arrayColorBGR, #00FF85 ), array.push ( arrayColorBGR, #00FF7A ), array.push ( arrayColorBGR, #00FF70 ), array.push ( arrayColorBGR, #00FF66 ),
array.push ( arrayColorBGR, #00FF5C ), array.push ( arrayColorBGR, #00FF52 ), array.push ( arrayColorBGR, #00FF47 ), array.push ( arrayColorBGR, #00FF3D ), array.push ( arrayColorBGR, #00FF33 ),
array.push ( arrayColorBGR, #00FF29 ), array.push ( arrayColorBGR, #00FF1F ), array.push ( arrayColorBGR, #00FF14 ), array.push ( arrayColorBGR, #00FF0A ), array.push ( arrayColorBGR, #00FF00 ),
array.push ( arrayColorBGR, #0AFF00 ), array.push ( arrayColorBGR, #14FF00 ), array.push ( arrayColorBGR, #1FFF00 ), array.push ( arrayColorBGR, #29FF00 ), array.push ( arrayColorBGR, #33FF00 ),
array.push ( arrayColorBGR, #3DFF00 ), array.push ( arrayColorBGR, #47FF00 ), array.push ( arrayColorBGR, #52FF00 ), array.push ( arrayColorBGR, #5CFF00 ), array.push ( arrayColorBGR, #66FF00 ),
array.push ( arrayColorBGR, #70FF00 ), array.push ( arrayColorBGR, #7AFF00 ), array.push ( arrayColorBGR, #85FF00 ), array.push ( arrayColorBGR, #8FFF00 ), array.push ( arrayColorBGR, #99FF00 ),
array.push ( arrayColorBGR, #A3FF00 ), array.push ( arrayColorBGR, #ADFF00 ), array.push ( arrayColorBGR, #B8FF00 ), array.push ( arrayColorBGR, #C2FF00 ), array.push ( arrayColorBGR, #CCFF00 ),
array.push ( arrayColorBGR, #D6FF00 ), array.push ( arrayColorBGR, #E0FF00 ), array.push ( arrayColorBGR, #EBFF00 ), array.push ( arrayColorBGR, #F5FF00 ), array.push ( arrayColorBGR, #FFFF00 ),
array.push ( arrayColorBGR, #FFF500 ), array.push ( arrayColorBGR, #FFEB00 ), array.push ( arrayColorBGR, #FFE000 ), array.push ( arrayColorBGR, #FFD600 ), array.push ( arrayColorBGR, #FFCC00 ),
array.push ( arrayColorBGR, #FFC200 ), array.push ( arrayColorBGR, #FFB800 ), array.push ( arrayColorBGR, #FFAD00 ), array.push ( arrayColorBGR, #FFA300 ), array.push ( arrayColorBGR, #FF9900 ),
array.push ( arrayColorBGR, #FF8F00 ), array.push ( arrayColorBGR, #FF8500 ), array.push ( arrayColorBGR, #FF7A00 ), array.push ( arrayColorBGR, #FF7000 ), array.push ( arrayColorBGR, #FF6600 ),
array.push ( arrayColorBGR, #FF5C00 ), array.push ( arrayColorBGR, #FF5200 ), array.push ( arrayColorBGR, #FF4700 ), array.push ( arrayColorBGR, #FF3D00 ), array.push ( arrayColorBGR, #FF3300 ),
array.push ( arrayColorBGR, #FF2900 ), array.push ( arrayColorBGR, #FF1F00 ), array.push ( arrayColorBGR, #FF1400 ), array.push ( arrayColorBGR, #FF0000 ), array.push ( arrayColorBGR, #FF0000 )
array.push ( arrayColorBR, #0000FF )
array.push ( arrayColorBR, #0200FC ), array.push ( arrayColorBR, #0500F9 ), array.push ( arrayColorBR, #0700F7 ), array.push ( arrayColorBR, #0A00F4 ), array.push ( arrayColorBR, #0C00F2 ),
array.push ( arrayColorBR, #0F00EF ), array.push ( arrayColorBR, #1100ED ), array.push ( arrayColorBR, #1400EA ), array.push ( arrayColorBR, #1600E8 ), array.push ( arrayColorBR, #1900E5 ),
array.push ( arrayColorBR, #1C00E2 ), array.push ( arrayColorBR, #1E00E0 ), array.push ( arrayColorBR, #2100DD ), array.push ( arrayColorBR, #2300DB ), array.push ( arrayColorBR, #2600D8 ),
array.push ( arrayColorBR, #2800D6 ), array.push ( arrayColorBR, #2B00D3 ), array.push ( arrayColorBR, #2D00D1 ), array.push ( arrayColorBR, #3000CE ), array.push ( arrayColorBR, #3300CC ),
array.push ( arrayColorBR, #3500C9 ), array.push ( arrayColorBR, #3800C6 ), array.push ( arrayColorBR, #3A00C4 ), array.push ( arrayColorBR, #3D00C1 ), array.push ( arrayColorBR, #3F00BF ),
array.push ( arrayColorBR, #4200BC ), array.push ( arrayColorBR, #4400BA ), array.push ( arrayColorBR, #4700B7 ), array.push ( arrayColorBR, #4900B5 ), array.push ( arrayColorBR, #4C00B2 ),
array.push ( arrayColorBR, #4F00AF ), array.push ( arrayColorBR, #5100AD ), array.push ( arrayColorBR, #5400AA ), array.push ( arrayColorBR, #5600A8 ), array.push ( arrayColorBR, #5900A5 ),
array.push ( arrayColorBR, #5B00A3 ), array.push ( arrayColorBR, #5E00A0 ), array.push ( arrayColorBR, #60009E ), array.push ( arrayColorBR, #63009B ), array.push ( arrayColorBR, #660099 ),
array.push ( arrayColorBR, #680096 ), array.push ( arrayColorBR, #6B0093 ), array.push ( arrayColorBR, #6D0091 ), array.push ( arrayColorBR, #70008E ), array.push ( arrayColorBR, #72008C ),
array.push ( arrayColorBR, #750089 ), array.push ( arrayColorBR, #770087 ), array.push ( arrayColorBR, #7A0084 ), array.push ( arrayColorBR, #7C0082 ), array.push ( arrayColorBR, #7F007F ),
array.push ( arrayColorBR, #82007C ), array.push ( arrayColorBR, #84007A ), array.push ( arrayColorBR, #870077 ), array.push ( arrayColorBR, #890075 ), array.push ( arrayColorBR, #8C0072 ),
array.push ( arrayColorBR, #8E0070 ), array.push ( arrayColorBR, #91006D ), array.push ( arrayColorBR, #93006B ), array.push ( arrayColorBR, #960068 ), array.push ( arrayColorBR, #990066 ),
array.push ( arrayColorBR, #9B0063 ), array.push ( arrayColorBR, #9E0060 ), array.push ( arrayColorBR, #A0005E ), array.push ( arrayColorBR, #A3005B ), array.push ( arrayColorBR, #A50059 ),
array.push ( arrayColorBR, #A80056 ), array.push ( arrayColorBR, #AA0054 ), array.push ( arrayColorBR, #AD0051 ), array.push ( arrayColorBR, #AF004F ), array.push ( arrayColorBR, #B2004C ),
array.push ( arrayColorBR, #B50049 ), array.push ( arrayColorBR, #B70047 ), array.push ( arrayColorBR, #BA0044 ), array.push ( arrayColorBR, #BC0042 ), array.push ( arrayColorBR, #BF003F ),
array.push ( arrayColorBR, #C1003D ), array.push ( arrayColorBR, #C4003A ), array.push ( arrayColorBR, #C60038 ), array.push ( arrayColorBR, #C90035 ), array.push ( arrayColorBR, #CC0033 ),
array.push ( arrayColorBR, #CE0030 ), array.push ( arrayColorBR, #D1002D ), array.push ( arrayColorBR, #D3002B ), array.push ( arrayColorBR, #D60028 ), array.push ( arrayColorBR, #D80026 ),
array.push ( arrayColorBR, #DB0023 ), array.push ( arrayColorBR, #DD0021 ), array.push ( arrayColorBR, #E0001E ), array.push ( arrayColorBR, #E2001C ), array.push ( arrayColorBR, #E50019 ),
array.push ( arrayColorBR, #E80016 ), array.push ( arrayColorBR, #EA0014 ), array.push ( arrayColorBR, #ED0011 ), array.push ( arrayColorBR, #EF000F ), array.push ( arrayColorBR, #F2000C ),
array.push ( arrayColorBR, #F4000A ), array.push ( arrayColorBR, #F70007 ), array.push ( arrayColorBR, #F90005 ), array.push ( arrayColorBR, #FC0002 ), array.push ( arrayColorBR, #FF0000 )
// ------------------------- Inputs {
// Standard Deviation
float source = input.source(defval=close, title='Source', inline='1', group=GROUP_1)
var int len = input.int(defval=55, title='Length', minval=2, inline='1', group=GROUP_1)
// Smooth
var bool boolSmooth = input.bool(defval=true, title='Smooth indicator?', inline='10', group=GROUP_1)
var string typeMaSmooth = input.string(defval=ALMA, title='Type',
options=[SMA, EMA, HMA, ALMA], inline='10', group=GROUP_1)
var int lenSmooth = input.int(defval=5, title='Length', inline='10', minval=1, group=GROUP_1)
// Normalization
var bool normalize =input.bool(defval=true, title='Normalize?', inline='15', group=GROUP_1)
var int lenNormal = input.int(defval=200, title='Length', inline='15', minval=1, group=GROUP_1)
// Theme
var string themeSt = input.string(defval='Spectrum Blue-Green-Red', title='Theme',
options=['User', 'Deep Purple', 'Spectrum Blue-Green-Red', 'Spectrum Blue-Red'], inline='20', group=GROUP_2,
tooltip='When normalization is off, only User theme or Deep Purple apply')
var colorAboveMa = input.color(defval=color.new(#00A3FF, 0), title='Standard Deviation', tooltip='', inline='21', group=GROUP_1)
var colorBellowMa = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='21', group=GROUP_1)
// MA
var string typeMa = input.string(defval=ALMA, title='Type of Moving Averages',
options=[SMA, EMA, HMA, ALMA], inline='25', group=GROUP_3)
var bool showMarkers = input.bool(defval=true, title='Show markers when cross MA 1?', inline='26', group=GROUP_3)
var bool showMa1 = input.bool(defval=true, title='MA 1?', inline='30', group=GROUP_3)
var int lenMa1 = input.int(defval=5, title='Length', inline='30', minval=2, group=GROUP_3)
var colorMa1Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='30', group=GROUP_3)
var colorMa1Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='30', group=GROUP_3)
var bool showMa2 = input.bool(defval=true, title='MA 2?', inline='32', group=GROUP_3)
var int lenMa2 = input.int(defval=10, title='Length', inline='32', minval=2, group=GROUP_3)
var colorMa2Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='32', group=GROUP_3)
var colorMa2Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='32', group=GROUP_3)
var bool showMa3 = input.bool(defval=true, title='MA 3?', inline='34', group=GROUP_3)
var int lenMa3 = input.int(defval=15, title='Length', inline='34', minval=2, group=GROUP_3)
var colorMa3Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='34', group=GROUP_3)
var colorMa3Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='34', group=GROUP_3)
var bool showMa4 = input.bool(defval=true, title='MA 4?', inline='36', group=GROUP_3)
var int lenMa4 = input.int(defval=20, title='Length', inline='36', minval=2, group=GROUP_3)
var colorMa4Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='36', group=GROUP_3)
var colorMa4Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='36', group=GROUP_3)
var bool showMa5 = input.bool(defval=true, title='MA 5?', inline='38', group=GROUP_3)
var int lenMa5 = input.int(defval=25, title='Length', inline='38', minval=2, group=GROUP_3)
var colorMa5Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='38', group=GROUP_3)
var colorMa5Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='38', group=GROUP_3)
var bool showMa6 = input.bool(defval=true, title='MA 6?', inline='40', group=GROUP_3)
var int lenMa6 = input.int(defval=30, title='Length', inline='40', minval=2, group=GROUP_3)
var colorMa6Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='40', group=GROUP_3)
var colorMa6Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='40', group=GROUP_3)
var bool showMa7 = input.bool(defval=true, title='MA 7?', inline='42', group=GROUP_3)
var int lenMa7 = input.int(defval=35, title='Length', inline='42', minval=2, group=GROUP_3)
var colorMa7Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='42', group=GROUP_3)
var colorMa7Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='42', group=GROUP_3)
var bool showMa8 = input.bool(defval=true, title='MA 8?', inline='44', group=GROUP_3)
var int lenMa8 = input.int(defval=40, title='Length', inline='44', minval=2, group=GROUP_3)
var colorMa8Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='44', group=GROUP_3)
var colorMa8Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='44', group=GROUP_3)
var bool showMa9 = input.bool(defval=true, title='MA 9?', inline='46', group=GROUP_3)
var int lenMa9 = input.int(defval=45, title='Length', inline='46', minval=2, group=GROUP_3)
var colorMa9Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='46', group=GROUP_3)
var colorMa9Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='46', group=GROUP_3)
var bool showMa10 = input.bool(defval=true, title='MA 10?', inline='48', group=GROUP_3)
var int lenMa10 = input.int(defval=50, title='Length', inline='48', minval=2, group=GROUP_3)
var colorMa10Up = input.color(defval=color.new(#00A3FF, 0), title='', tooltip='', inline='48', group=GROUP_3)
var colorMa10Dow = input.color(defval=color.new(#FFC200, 0), title='', tooltip='', inline='48', group=GROUP_3)
// ------------------------- }
// ------------------------- Normalization {
fNormalize(series float src, simple int len, simple float _lowerEnd, simple float _upperEnd) =>
min = ta.lowest(source=src, length=len)
max = ta.highest(source=src, length=len)
valueNormal = _lowerEnd + ( (src - min) * (_upperEnd - _lowerEnd)/(max - min) )
// ------------------------- }
// ------------------------- Moving Average {
fCalcMa(series float src, simple string type, simple int len) =>
maRet = switch type
SMA => ta.sma(src, len)
EMA => ta.ema(src, len)
HMA => ta.hma(src, len)
ALMA => ta.alma(src, len, 0.85, 6, false)
MEDIAN => ta.median(src, len)
VWAP => ta.vwap(src)
// ------------------------- }
// ------------------------- Standard Deviation {
float stDev = ta.stdev(source, len)
stDev := boolSmooth ? fCalcMa(stDev, typeMaSmooth, lenSmooth) : stDev
// Normalization
stDevNormalized = normalize ? fNormalize(src=stDev, len=lenNormal, _lowerEnd=0, _upperEnd=100) : stDev
// Moving Averages of StDev
float maStDev1 = showMa1 ? fCalcMa(stDevNormalized, typeMa, lenMa1) : na
float maStDev2 = showMa2 ? fCalcMa(stDevNormalized, typeMa, lenMa2) : na
float maStDev3 = showMa3 ? fCalcMa(stDevNormalized, typeMa, lenMa3) : na
float maStDev4 = showMa4 ? fCalcMa(stDevNormalized, typeMa, lenMa4) : na
float maStDev5 = showMa5 ? fCalcMa(stDevNormalized, typeMa, lenMa5) : na
float maStDev6 = showMa6 ? fCalcMa(stDevNormalized, typeMa, lenMa6) : na
float maStDev7 = showMa7 ? fCalcMa(stDevNormalized, typeMa, lenMa7) : na
float maStDev8 = showMa8 ? fCalcMa(stDevNormalized, typeMa, lenMa8) : na
float maStDev9 = showMa9 ? fCalcMa(stDevNormalized, typeMa, lenMa9) : na
float maStDev10 = showMa10 ? fCalcMa(stDevNormalized, typeMa, lenMa10) : na
// ------------------------- }
// ------------------------- Colors {
fSetColor (value) =>
if themeSt == 'User' or themeSt == 'Deep Purple'
if value < maStDev1 and
value < maStDev2 and
value < maStDev3 and
value < maStDev4 and
value < maStDev5 and
value < maStDev6 and
value < maStDev7 and
value < maStDev8 and
value < maStDev9 and
value < maStDev10
themeSt == 'User' ? colorBellowMa : PURPLE
else
themeSt == 'User' ? colorAboveMa : LIME
else
if normalize
if themeSt == 'Spectrum Blue-Green-Red'
array.get ( arrayColorBGR, math.round ( value ) )
else if themeSt == 'Spectrum Blue-Red'
array.get ( arrayColorBR, math.round ( value ) )
else
if value < maStDev1 and
value < maStDev2 and
value < maStDev3 and
value < maStDev4 and
value < maStDev5 and
value < maStDev6 and
value < maStDev7 and
value < maStDev8 and
value < maStDev9 and
value < maStDev10
colorBellowMa
else
colorAboveMa
// ------------------------- }
// ------------------------- Plots {
colorStDev = fSetColor(stDevNormalized)
color colorMa1 = na
color colorMa2 = na
color colorMa3 = na
color colorMa4 = na
color colorMa5 = na
color colorMa6 = na
color colorMa7 = na
color colorMa8 = na
color colorMa9 = na
color colorMa10 = na
if themeSt == 'User'
colorMa1 := stDevNormalized > maStDev1 ? colorMa1Up : colorMa1Dow
colorMa2 := maStDev1 > maStDev2 ? colorMa2Up : colorMa2Dow
colorMa3 := maStDev2 > maStDev3 ? colorMa3Up : colorMa3Dow
colorMa4 := maStDev3 > maStDev4 ? colorMa4Up : colorMa4Dow
colorMa5 := maStDev4 > maStDev5 ? colorMa5Up : colorMa5Dow
colorMa6 := maStDev5 > maStDev6 ? colorMa6Up : colorMa6Dow
colorMa7 := maStDev6 > maStDev7 ? colorMa7Up : colorMa7Dow
colorMa8 := maStDev7 > maStDev8 ? colorMa8Up : colorMa8Dow
colorMa9 := maStDev8 > maStDev9 ? colorMa9Up : colorMa9Dow
colorMa10 := maStDev9 > maStDev10 ? colorMa10Up : colorMa10Dow
else if themeSt == 'Deep Purple'
colorMa1 := stDevNormalized > maStDev1 ? LIME : PURPLE
colorMa2 := maStDev1 > maStDev2 ? LIME : PURPLE
colorMa3 := maStDev2 > maStDev3 ? LIME : PURPLE
colorMa4 := maStDev3 > maStDev4 ? LIME : PURPLE
colorMa5 := maStDev4 > maStDev5 ? LIME : PURPLE
colorMa6 := maStDev5 > maStDev6 ? LIME : PURPLE
colorMa7 := maStDev6 > maStDev7 ? LIME : PURPLE
colorMa8 := maStDev7 > maStDev8 ? LIME : PURPLE
colorMa9 := maStDev8 > maStDev9 ? LIME : PURPLE
colorMa10 := maStDev9 > maStDev10 ? LIME : PURPLE
else
if normalize
if themeSt == 'Spectrum Blue-Green-Red'
colorMa1 := array.get ( arrayColorBGR, math.round ( maStDev1 ) )
colorMa2 := array.get ( arrayColorBGR, math.round ( maStDev2 ) )
colorMa3 := array.get ( arrayColorBGR, math.round ( maStDev3 ) )
colorMa4 := array.get ( arrayColorBGR, math.round ( maStDev4 ) )
colorMa5 := array.get ( arrayColorBGR, math.round ( maStDev5 ) )
colorMa6 := array.get ( arrayColorBGR, math.round ( maStDev6 ) )
colorMa7 := array.get ( arrayColorBGR, math.round ( maStDev7 ) )
colorMa8 := array.get ( arrayColorBGR, math.round ( maStDev8 ) )
colorMa9 := array.get ( arrayColorBGR, math.round ( maStDev9 ) )
colorMa10 := array.get ( arrayColorBGR, math.round ( maStDev10 ) )
else if themeSt == 'Spectrum Blue-Red'
colorMa1 := array.get ( arrayColorBR, math.round ( maStDev1 ) )
colorMa2 := array.get ( arrayColorBR, math.round ( maStDev2 ) )
colorMa3 := array.get ( arrayColorBR, math.round ( maStDev3 ) )
colorMa4 := array.get ( arrayColorBR, math.round ( maStDev4 ) )
colorMa5 := array.get ( arrayColorBR, math.round ( maStDev5 ) )
colorMa6 := array.get ( arrayColorBR, math.round ( maStDev6 ) )
colorMa7 := array.get ( arrayColorBR, math.round ( maStDev7 ) )
colorMa8 := array.get ( arrayColorBR, math.round ( maStDev8 ) )
colorMa9 := array.get ( arrayColorBR, math.round ( maStDev9 ) )
colorMa10 := array.get ( arrayColorBR, math.round ( maStDev10 ) )
else
colorMa1 := stDevNormalized > maStDev1 ? colorMa1Up : colorMa1Dow
colorMa2 := maStDev1 > maStDev2 ? colorMa2Up : colorMa2Dow
colorMa3 := maStDev2 > maStDev3 ? colorMa3Up : colorMa3Dow
colorMa4 := maStDev3 > maStDev4 ? colorMa4Up : colorMa4Dow
colorMa5 := maStDev4 > maStDev5 ? colorMa5Up : colorMa5Dow
colorMa6 := maStDev5 > maStDev6 ? colorMa6Up : colorMa6Dow
colorMa7 := maStDev6 > maStDev7 ? colorMa7Up : colorMa7Dow
colorMa8 := maStDev7 > maStDev8 ? colorMa8Up : colorMa8Dow
colorMa9 := maStDev8 > maStDev9 ? colorMa9Up : colorMa9Dow
colorMa10 := maStDev9 > maStDev10 ? colorMa10Up : colorMa10Dow
stDevPlot = plot(stDevNormalized, color=colorStDev, linewidth=3, title='Standard Deviation')
stDevMaPlot1 = plot(maStDev1, color=colorMa1, linewidth=1, title='Moving Average 1')
stDevMaPlot2 = plot(maStDev2, color=colorMa2, linewidth=1, title='Moving Average 2')
stDevMaPlot3 = plot(maStDev3, color=colorMa3, linewidth=1, title='Moving Average 3')
stDevMaPlot4 = plot(maStDev4, color=colorMa4, linewidth=1, title='Moving Average 4')
stDevMaPlot5 = plot(maStDev5, color=colorMa5, linewidth=1, title='Moving Average 5')
stDevMaPlot6 = plot(maStDev6, color=colorMa6, linewidth=1, title='Moving Average 6')
stDevMaPlot7 = plot(maStDev7, color=colorMa7, linewidth=1, title='Moving Average 7')
stDevMaPlot8 = plot(maStDev8, color=colorMa8, linewidth=1, title='Moving Average 8')
stDevMaPlot9 = plot(maStDev9, color=colorMa9, linewidth=1, title='Moving Average 9')
stDevMaPlot10 = plot(maStDev10, color=colorMa10, linewidth=1, title='Moving Average 10')
crossUp = ta.crossover(source1=stDevNormalized, source2=maStDev1)
crossDown = ta.crossunder(source1=stDevNormalized, source2=maStDev1)
// -- Cross
plotshape(showMarkers and crossUp ? stDevNormalized : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(#3af13c,0))
plotshape(showMarkers and crossDown ? stDevNormalized : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(#ff0000, 0))
// ------------------------- }
Show all 318 lines