//@Name:Connors RSI //@Description:A variation of Wilder's RSI developed by Connors Research. //Author: ShareScript Support // 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 rsiPeriod = 3; var upDownPeriod = 2; var RoCPeriod = 100; var topLine = 80; var bottomLine = 20; var indCol = Colour.Red; var indStyle = Pen.Solid; var indWidth = 0; function init(status) { if (status == Loading || status == Editing) { rsiPeriod = storage.getAt(0); upDownPeriod = storage.getAt(1); RoCPeriod = storage.getAt(2); topLine = storage.getAt(3); bottomLine = storage.getAt(4); indCol = storage.getAt(5); indStyle = storage.getAt(6); indWidth = storage.getAt(7); } if (status == Adding || status == Editing) { dlg = new Dialog((status==Adding?"Add":"Edit")+" indicator", 215, 85); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("INT1",8,5,-1,-1,"","RSI period",rsiPeriod,2,5000); dlg.addIntEdit("INT2",8,20,-1,-1,"","UpDown RSI period",upDownPeriod,2,5000); dlg.addIntEdit("INT3",8,35,-1,-1,"","ROC period",RoCPeriod,2,5000); dlg.addColLinePicker("CL1",115,20,-1,-1,"","",indCol,indStyle,indWidth); dlg.addIntEdit("INT4",8,55,-1,-1,"","overbought",topLine,0,100); dlg.addIntEdit("INT5",8,70,-1,-1,"","oversold",bottomLine,0,100); if (dlg.show()==Dialog.Cancel) return false; rsiPeriod = dlg.getValue("INT1"); upDownPeriod = dlg.getValue("INT2"); RoCPeriod = dlg.getValue("INT3"); topLine = dlg.getValue("INT4"); bottomLine = dlg.getValue("INT5"); indCol = dlg.getValue("CL1").colour; indStyle = dlg.getValue("CL1").pen; indWidth = dlg.getValue("CL1").width; storage.setAt(0, rsiPeriod); storage.setAt(1, upDownPeriod); storage.setAt(2, RoCPeriod); storage.setAt(3, topLine); storage.setAt(4, bottomLine); storage.setAt(5, indCol); storage.setAt(6, indStyle); storage.setAt(7, indWidth); } setSeriesColour(0,indCol); setSeriesLineStyle(0,indStyle,indWidth); setTitle(rsiPeriod+", "+upDownPeriod+", "+RoCPeriod+" CRSI"); setHorizontalLine(topLine); setHorizontalLine(50); setHorizontalLine(bottomLine); setRange(Range.MinMax,0,100); } function getGraph(share, data) { var output = new Array(data.length); var rsi1 = new RSI(rsiPeriod); var rsi2 = new RSI(upDownPeriod); var upDown = 0; for (var i=1; idata[i-1].close) upDown = upDown>0?upDown+1:1; else if (data[i].close