function Init() { indicator.name("MUV_DIFF_Cloud oscillator"); indicator.description("MUV_DIFF_Cloud oscillator"); indicator.requiredSource(core.Bar); indicator.type(core.Oscillator); indicator.parameters.addGroup("Calculation"); indicator.parameters.addInteger("MA_Period", "MA period", "", 14); indicator.parameters.addInteger("Momentum", "Momentum", "", 1); indicator.parameters.addGroup("Style"); indicator.parameters.addColor("UPclr", "UP color", "UP color", core.rgb(0, 255, 0)); indicator.parameters.addColor("DNclr", "DN color", "DN color", core.rgb(255, 0, 0)); indicator.parameters.addInteger("Transparency", "Transparency", "", 50,0,100); } var first; var source = null; var MA_Period; var Momentum; var MA1; var MA2; var Pbuff=null; var Mbuff=null; var pipSize; function Prepare() { source = instance.source; MA_Period=instance.parameters.MA_Period; Momentum=instance.parameters.Momentum; first = source.first()+2; MA1 = core.indicators.create("XMUV", source, "MVA", MA_Period); MA2 = core.indicators.create("XMUV", source, "EMA", MA_Period); var name = profile.id() + "(" + source.name() + ", " + instance.parameters.MA_Period + ", " + instance.parameters.Momentum + ")"; instance.name(name); Pbuff = instance.addStream("Pbuff", core.Line, name + ".Pbuff", "Pbuff", instance.parameters.UPclr, first); Mbuff = instance.addStream("Mbuff", core.Line, name + ".Mbuff", "Mbuff", instance.parameters.UPclr, first); instance.createChannelGroup("TC","TC" , Pbuff, Mbuff, instance.parameters.UPclr, 100-instance.parameters.Transparency); pipSize=source.pipSize(); } function Update(period, mode) { if (period>first+Momentum) { MA1.update(mode); MA2.update(mode); Pbuff[period]=(MA2.DATA[period]-MA2.DATA[period-Momentum])/pipSize; Mbuff[period]=(MA1.DATA[period]-MA1.DATA[period-Momentum])/pipSize; if (Pbuff[period]>Mbuff[period]) { Pbuff.setColor(period, instance.parameters.UPclr); Mbuff.setColor(period, instance.parameters.UPclr); } else { Pbuff.setColor(period, instance.parameters.DNclr); Mbuff.setColor(period, instance.parameters.DNclr); } } }