//@Name:%b //@Description:Bollinger Band %b indicator. %b = (close-lowerBand) / (upperBand-lowerBand) // Author: Richard Chiesa, 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 maList = ["Simple","Exponential","Weighted","Triangular","VariableVHF","VariableCMO","VIDYA","TEMA"]; var maTitleList = ["SMA","EMA","WMA","TMA","VVHF","VCMO","VIDYA","TEMA"]; var dataList = ["Daily","Weekly","Monthly"]; var period = 20; var devs = 1.5; var MAtype = 0 var lineCol = Colour.RGB(255,190,0); var lineStyle = Pen.Solid; var lineWidth = 1; function init(status) { if (status == Loading || status == Editing) { MAtype = storage.getAt(0); period = storage.getAt(1); devs = storage.getAt(2); lineCol = storage.getAt(3); lineStyle = storage.getAt(4); lineWidth = storage.getAt(5); } if (status == Adding || status == Editing) { var dlg = new Dialog("Settings...",160,105); dlg.addOkButton(); dlg.addCancelButton(); dlg.addDropList("DL1",8,-1,80,-1,maList,"","",MAtype); dlg.addNumEdit("INT1",8,-1,-1,-1,"","Period",period,2,1000); dlg.addNumEdit("NUM1",8,-1,-1,-1,"","St. Devs.",devs,0.5,5); dlg.addColLinePicker("LN1",8,-1,-1,-1,"","",lineCol,lineStyle,lineWidth); if (dlg.show()==Dialog.Cancel) return false; MAtype = dlg.getValue("DL1"); period = dlg.getValue("INT1"); devs = dlg.getValue("NUM1"); lineCol = dlg.getValue("LN1").colour; lineStyle = dlg.getValue("LN1").pen; lineWidth = dlg.getValue("LN1").width; storage.setAt(0, MAtype); storage.setAt(1, period); storage.setAt(2, devs); storage.setAt(3, lineCol); storage.setAt(4, lineStyle); storage.setAt(5, lineWidth); } setTitle("%b of "+period+" "+maTitleList[MAtype]+","+devs+" devs Bollinger Bands"); setSeriesLineStyle(0, lineStyle, lineWidth); setSeriesColour(0, lineCol); setHorizontalLine(1); setHorizontalLine(0); } function getGraph(share, data) { var ma1 = new MA(period, MAtype); //type of MA var v1 = new Array(); var av1 = new Array(); var y1 = new Array(); var upBB = new Array(); var downBB = new Array(); var percB = new Array(); for (var i=period;i