//@Name:Kaufman Efficiency Ratio //@Description:Draws Kauffman Efficiency Ratio as an indicator. //Author: Phil Tolhurst, 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 colour1=255; var pen1 = 0; var width1 = 0; var ERperiod=10; // Efficiency ratio period var histogram=false; // Histogram switch var outputList = ["0 to 1","0 to 100","-100 to 100"]; var outputType = 0; function init(status) { if (status == Loading || status == Editing) { ERperiod = storage.getAt(0); colour1 = storage.getAt(1); width1 = storage.getAt(2); pen1 = storage.getAt(3); histogram = storage.getAt(4); outputType = storage.getAt(5); } if (status == Adding || status == Editing) { var dlg = new Dialog("KER Settings", 200, 70); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("VAL1",5,5,-1,-1, "","periods",ERperiod,0,999); dlg.addColLinePicker("VAL2",75,5,-1,-1,"","",colour1,pen1,width1); dlg.addTickBox("VAL3",5,22,100,-1,"Draw as Histogram",histogram); dlg.addDropList("VAL4",50,-1,60,-1,outputList,"Output range:","",outputType); if (dlg.show() == Dialog.Cancel) return false; ERperiod = dlg.getValue("VAL1"); colour1 = dlg.getValue("VAL2").colour; pen1 = dlg.getValue("VAL2").pen; width1 = dlg.getValue("VAL2").width; histogram = dlg.getValue("VAL3"); outputType = dlg.getValue("VAL4"); storage.setAt(0, ERperiod); storage.setAt(1, colour1); storage.setAt(2, width1); storage.setAt(3, pen1); storage.setAt(4, histogram); storage.setAt(5, outputType); } setSeriesColour(0, colour1); if (histogram==true) setSeriesChartType(0, ChartType.Histogram); else setSeriesLineStyle(0, pen1, width1); } function getGraph(share, data) { ERoutput = new Array; var netPriceMovement; var AbsSumPriceMovements; if(data.lengthi-ERperiod;j--) { AbsSumPriceMovements+=Math.abs(data[j].close-data[j-1].close); } if(outputType == 0) { ERoutput[i] = netPriceMovement/AbsSumPriceMovements; } else { ERoutput[i] = netPriceMovement/AbsSumPriceMovements*100; } } return ERoutput; }