//@Name:VZO //@Description:Volume Zone Oscillator. As described on Stocks & Commodities magazine, May 2011 edition. var period = 14; var col = Colour.Red; var style = 0; var wd = 1; function init(status) { if (status == Loading || status == Editing) { period = storage.getAt(0); col = storage.getAt(1); style = storage.getAt(2); wd = storage.getAt(3); } if (status == Adding || status == Editing) { dlg = new Dialog("VZO settings...", 145, 55); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("INT1",8,-1,-1,-1,"","Period",period,2,1000); dlg.addColLinePicker("LN1",8,-1,-1,-1,"","",col,style,wd) if (dlg.show()==Dialog.Cancel) return false; period = dlg.getValue("INT1"); col = dlg.getValue("LN1").colour; style = dlg.getValue("LN1").pen; wd = dlg.getValue("LN1").width; storage.setAt(0, period); storage.setAt(1, col); storage.setAt(2, style); storage.setAt(3, wd); } setSeriesColour(0, Colour.Red); setSeriesLineStyle(0, style, wd); setTitle(period+" VZO"); setHorizontalLine(60); setHorizontalLine(40); setHorizontalLine(0); setHorizontalLine(-40); setHorizontalLine(-60); } function getGraph(share, data) { var VZO = []; var ma1 = new MA(period, MA.Exponential); var ma2 = new MA(period, MA.Exponential); for (var i=1; idata[i-1].close?1:-1)*data[i].volume); var ema2 = ma2.getNext(data[i].volume); VZO[i] = ema2!=0?(100*ema1/ema2):0; } return VZO; }