//@Name:Intraday VWAP //@Description:Calculates VWAP using all the intraday data available up to that moment in time. //@Type:Intraday // 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 line = [Colour.Red,Pen.Solid,2]; var line2 = [Colour.Red,Pen.Dot,0]; var sdMult = [1,2,3]; var drawSd = false; function init(status) { if (status == Loading || status == Editing) { line[0] = storage.getAt(0); line[1] = storage.getAt(1); line[2] = storage.getAt(2); sdMult[0] = storage.getAt(3); sdMult[1] = storage.getAt(4); sdMult[2] = storage.getAt(5); drawSd = storage.getAt(6); } if (status == Adding || status == Editing) { dlg = new Dialog("VWAP Setup",220,100); dlg.addOkButton(); dlg.addCancelButton(); dlg.addColLinePicker("COL1",42,8,-1,-1,"Line colour","",line[0],line[1],line[2]); dlg.addNumEdit("NUM1",100,-1,-1,-1,"1st Standard deviation line","devs",sdMult[0],0,5) dlg.addNumEdit("NUM2",100,-1,-1,-1,"2nd Standard deviation line","devs",sdMult[1],0,5) dlg.addNumEdit("NUM3",100,-1,-1,-1,"3rd Standard deviation line","devs",sdMult[2],0,5) dlg.addTickBox("TB1",8,-1,120,-1,"Draw standard deviation lines",drawSd) if (dlg.show()==Dialog.Cancel && status == Adding) return false; line[0] = dlg.getValue("COL1").colour; line[1] = dlg.getValue("COL1").pen; line[2] = dlg.getValue("COL1").width; sdMult[0] = dlg.getValue("NUM1"); sdMult[1] = dlg.getValue("NUM2"); sdMult[2] = dlg.getValue("NUM3"); drawSd = dlg.getValue("TB1"); storage.setAt(0,line[0]); storage.setAt(1,line[1]); storage.setAt(2,line[2]); storage.setAt(3,sdMult[0]); storage.setAt(4,sdMult[1]); storage.setAt(5,sdMult[2]); storage.setAt(6,drawSd); } setSeriesColour(0,line[0]); setSeriesLineStyle(0,line[1],line[2]); setSeriesColour(1,line[0]); setSeriesLineStyle(1,line2[1],line2[2]); setSeriesColour(2,line[0]); setSeriesLineStyle(2,line2[1],line2[2]); setSeriesColour(3,line[0]); setSeriesLineStyle(3,line2[1],line2[2]); setSeriesColour(4,line[0]); setSeriesLineStyle(4,line2[1],line2[2]); setSeriesColour(5,line[0]); setSeriesLineStyle(5,line2[1],line2[2]); setSeriesColour(6,line[0]); setSeriesLineStyle(6,line2[1],line2[2]); setRange(Range.Parent); } function getGraph(share, data) { var tdata = []; var output = []; if (data==null || data.length<1) return output; var startDate = data[0].dateNum; var temp = share.getITradeArrayOnDate(data[0].date); if (temp!=undefined && temp.length>0) tdata = tdata.concat(temp); for (var i=0;istartDate) { var temp = share.getITradeArrayOnDate(data[i].date); if (temp!=undefined && temp.length>0) tdata = tdata.concat(temp); startDate = data[i].dateNum; } } var j=0 var totVP = 0; var totV = 0; for (i=0;idata[i].timeNum && tdata[j].dateNum