function Init() { indicator.name("Moving Averages Mirror"); indicator.description("Moving Averages Mirror"); indicator.requiredSource(core.Tick); indicator.type(core.Indicator); indicator.parameters.addInteger("Period", "Period", "Period", 14); indicator.parameters.addString("Method", "Method", "Method", "MVA"); indicator.parameters.addStringAlternative("Method", "MVA", "MVA" , "MVA"); indicator.parameters.addStringAlternative("Method", "EMA", "EMA" , "EMA"); indicator.parameters.addStringAlternative("Method", "LWMA", "LWMA" , "LWMA"); indicator.parameters.addStringAlternative("Method", "TMA", "TMA" , "TMA"); indicator.parameters.addStringAlternative("Method", "SMMA", "SMMA" , "SMMA"); indicator.parameters.addStringAlternative("Method", "KAMA", "KAMA" , "KAMA"); indicator.parameters.addStringAlternative("Method", "VIDYA", "VIDYA" , "VIDYA"); indicator.parameters.addStringAlternative("Method", "WMA", "WMA" , "WMA"); indicator.parameters.addInteger("Range", "Standard Deviation Period ", "Period", 14); indicator.parameters.addDouble("Multiplier", "Standard Deviation Multiplier ", "Multiplier", 1); indicator.parameters.addColor("MA_color", "Color of MA", "Color of MA", core.rgb(255, 0, 0)); indicator.parameters.addInteger("width1", "Line width", "", 1, 1, 5); indicator.parameters.addInteger("style1", "Line style", "", core.LINE_SOLID); indicator.parameters.setFlag("style1", core.FLAG_LINE_STYLE); indicator.parameters.addColor("Mirror_color", "Color of Mirror", "Color of Mirror", core.rgb(255, 0, 0)); indicator.parameters.addInteger("width2", "Line width", "", 1, 1, 5); indicator.parameters.addInteger("style2", "Line style", "", core.LINE_SOLID); indicator.parameters.setFlag("style2", core.FLAG_LINE_STYLE); } var Period; var Method; var Multiplier; var first; var source = null; var MA = null; var Mirror = null; var ma, atr; var Range; function Prepare(nameOnly) { Period = instance.parameters.Period; Method = instance.parameters.Method; Range = instance.parameters.Range; Multiplier = instance.parameters.Multiplier; source = instance.source; ma = core.indicators.create(Method, source, Period); first = Math.max(ma.DATA.first(), source.first()+Range); var name = profile.id() + "(" + source.name() + ", " + tostring(Period) + ", " + tostring(Method)+ ", " + tostring(Range)+ ", " + tostring(Multiplier) + ")"; instance.name(name); if (!(nameOnly)) { MA = instance.addStream("MA", core.Line, name + ".MA", "MA", instance.parameters.MA_color, first); MA.setWidth(instance.parameters.width1); MA.setStyle(instance.parameters.style1); Mirror = instance.addStream("Mirror", core.Line, name + ".Mirror", "Mirror", instance.parameters.Mirror_color, first); Mirror.setWidth(instance.parameters.width2); Mirror.setStyle(instance.parameters.style2); } } function Update(period, mode) { ma.update(mode); if (period