//@Name:Composite Index //@Description:The Composite Index indicator by Constance Brown. //Author: ShareScript Support //A RSI indicator and its signal calculated using //a simple moving average //The RSI and signal periods can be set below // Care has been taken in preparing this code but it is provided without guarantee. // You are welcome to modify and extend it. Please add your name as a modifier if you distribute it. var slowRSIPeriod = 14; var slowMomPeriod = 9; var fastRSIPeriod = 3; var fastMAPeriod = 3; var slowCompPeriod = 13; var fastCompPeriod = 33; var col1 = Colour.Red; var col2 = Colour.DarkGreen; var col3 = Colour.Blue; function init(status) { if (status == Loading || status == Editing) { slowRSIPeriod = storage.getAt(0)%1000; slowMomPeriod = Math.floor(storage.getAt(0)/1000); fastRSIPeriod = storage.getAt(1); fastMAPeriod = storage.getAt(2); slowCompPeriod = storage.getAt(3); fastCompPeriod = storage.getAt(4); col1 = storage.getAt(5); col2 = storage.getAt(6); col3 = storage.getAt(7); } if (status == Adding || status == Editing) { dlg = new Dialog((status==Adding?"Add":"Edit")+" indicator", 175, 155); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("INT1",8,-1,-1,-1,"","Slow RSI period",slowRSIPeriod,2,999); dlg.addIntEdit("INT2",8,-1,-1,-1,"","Slow Momentum period",slowMomPeriod,2,999); dlg.addIntEdit("INT3",8,-1,-1,-1,"","Fast RSI period",fastRSIPeriod,2,999); dlg.addIntEdit("INT4",8,-1,-1,-1,"","Fast MA period",fastMAPeriod,2,999); dlg.addIntEdit("INT5",8,-1,-1,-1,"","Slow composite period",slowCompPeriod,2,999); dlg.addIntEdit("INT6",8,-1,-1,-1,"","Fast composite period",fastCompPeriod,2,999); dlg.addColPicker("CL1",8,-1,-1,-1,"","Composite RSI",col1); dlg.addColPicker("CL2",8,-1,-1,-1,"","Slow Comp. MA",col2); dlg.addColPicker("CL3",8,-1,-1,-1,"","Fast Comp. MA",col3); if (dlg.show()==Dialog.Cancel) return false; slowRSIPeriod = dlg.getValue("INT1"); slowMomPeriod = dlg.getValue("INT2"); fastRSIPeriod = dlg.getValue("INT3"); fastMAPeriod = dlg.getValue("INT4"); slowCompPeriod = dlg.getValue("INT5"); fastCompPeriod = dlg.getValue("INT6"); col1 = dlg.getValue("CL1"); col2 = dlg.getValue("CL2"); col3 = dlg.getValue("CL3"); storage.setAt(0, slowRSIPeriod+slowMomPeriod*1000); storage.setAt(1, fastRSIPeriod); storage.setAt(2, fastMAPeriod); storage.setAt(3, slowCompPeriod); storage.setAt(4, fastCompPeriod); storage.setAt(5, col1); storage.setAt(6, col2); storage.setAt(7, col3); } setSeriesColour(0,col1); setSeriesLineStyle(0,0,1); setSeriesColour(1,col2); setSeriesLineStyle(1,0,1); setSeriesColour(2,col3); setSeriesLineStyle(2,0,1); setTitle("Composite Index Momentum ("+slowRSIPeriod+","+slowMomPeriod+","+fastRSIPeriod+","+fastMAPeriod+","+slowCompPeriod+","+fastCompPeriod+")"); setHorizontalLine(100); setHorizontalLine(50); setHorizontalLine(0); } function getGraph(share, data) { var slowRSI = new RSI(slowRSIPeriod); var slowMOM = new Momentum(slowMomPeriod); var fastRSI = new RSI(fastRSIPeriod); var fastMA = new MA(fastMAPeriod); var slowCompMA = new MA(slowCompPeriod); var fastCompMA = new MA(fastCompPeriod); var rsi = [] var compRSI = []; var slowComp = []; var fastComp = []; for (var i=0; i