//@LibraryID:1022,1 //@Name:Intraday VWAP 2 //@Description:Calculates VWAP using all the day's intraday data. Resets at the beggining of each day. //@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]; function init(status) { if (status == Loading || status == Editing) { line[0] = storage.getAt(0); line[1] = storage.getAt(1); line[2] = storage.getAt(2); } if (status == Adding || status == Editing) { dlg = new Dialog("VWAP Setup",140,50); dlg.addOkButton(); dlg.addCancelButton(); dlg.addColLinePicker("COL1",42,8,-1,-1,"Line colour","",line[0],line[1],line[2]); 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; storage.setAt(0,line[0]); storage.setAt(1,line[1]); storage.setAt(2,line[2]); } setSeriesColour(0,line[0]); setSeriesLineStyle(0,line[1],line[2]); setRange(Range.Parent); } function getGraph(share, data) { var output = []; if (data == null || data.length<1) return []; var tdata = []; 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 output = []; var j=0 var totVP = 0; var totV = 0; for (i=0;i0 && data[i].dateNum != data[i-1].dateNum) { totVP = 0; totV = 0; } for (;jdata[i].timeNum && tdata[j].dateNumshare.getMarketCloseTime()) continue totVP += tdata[j].price * tdata[j].volume; totV += tdata[j].volume; } output[i] = totVP/totV; } return output; }