//@Name:Bloomberg T/S //@Description:Bloomberg Trend/Stall indicator. Calculated as the rate of change of the ADX indicator //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 period = 20; var sigPeriod = 9; var indCol = Colour.Red var indStyle = Pen.Solid; var indWidth = 0; var sigCol = Colour.Red var sigStyle = Pen.Dot; var sigWidth = 0; function init(status) { if (status == Loading || status == Editing) { period = storage.getAt(0); sigPeriod = storage.getAt(1); indCol = storage.getAt(2); indStyle = storage.getAt(3); indWidth = storage.getAt(4); sigCol = storage.getAt(5); sigStyle = storage.getAt(6); sigWidth = storage.getAt(7); } if (status == Adding || status == Editing) { dlg = new Dialog((status==Adding?"Add":"Edit")+" indicator", 165, 55); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("INT1",8,5,-1,-1,"","period",period,2,5000); dlg.addColLinePicker("CL1",65,5,-1,-1,"","",indCol,indStyle,indWidth); dlg.addIntEdit("INT2",8,25,-1,-1,"","signal",sigPeriod,2,5000); dlg.addColLinePicker("CL2",65,25,-1,-1,"","",sigCol,sigStyle,sigWidth); if (dlg.show()==Dialog.Cancel) return false; period = dlg.getValue("INT1"); sigPeriod = dlg.getValue("INT2"); indCol = dlg.getValue("CL1").colour; indStyle = dlg.getValue("CL1").pen; indWidth = dlg.getValue("CL1").width; sigCol = dlg.getValue("CL2").colour; sigStyle = dlg.getValue("CL2").pen; sigWidth = dlg.getValue("CL2").width; storage.setAt(0, period); storage.setAt(1, sigPeriod); storage.setAt(2, indCol); storage.setAt(3, indStyle); storage.setAt(4, indWidth); storage.setAt(5, sigCol); storage.setAt(6, sigStyle); storage.setAt(7, sigWidth); } setSeriesColour(0,indCol); setSeriesLineStyle(0,indStyle,indWidth); setSeriesColour(1,sigCol); setSeriesLineStyle(1,sigStyle,sigWidth); setTitle(period+" Bloomberg T/S "+"("+sigPeriod+" signal)"); setHorizontalLine(100); setHorizontalLine(0); setHorizontalLine(-100); //setRange(Range.MinMax,0,100); } function getGraph(share, data) { var adx = []; var signal = []; var bts = []; var adx1 = new ADX(period); var ma1 = new MA(sigPeriod, MA.Simple); for (var i=0; iperiod+1) { if (adx[i-period]==0) continue bts[i] = (adx[i]/adx[i-period]-1)*100 signal[i] = ma1.getNext(bts[i]); } } return [bts,signal]; }