// VWAP Study with MPD bands - red bands using yesterdays hi/lo and purple using todays // // (c)Copyright www.tradingsimulation.com // function preMain() { setPriceStudy(true); setStudyTitle("H-VWAP"); setCursorLabelName("H-VWAP",0); setCursorLabelName("VWAP+iMPD",1); setCursorLabelName("VWAP-iMPD",2); setCursorLabelName("VWAP+yMPD",3); setCursorLabelName("VWAP-yMPD",4); setDefaultBarFgColor(Color.blue,0); setDefaultBarFgColor(Color.purple,1); setDefaultBarFgColor(Color.purple,2); setDefaultBarFgColor(Color.red,3); setDefaultBarFgColor(Color.red,4); BarCount=0; BarAvgPrice=0; CumVolume=0; CumPriceTimesVolume=0; } function main() { nState = getBarState(); var vTime = getValue("Time"); if (vTime != null) { var vFirstIndex = getFirstBarIndexOfDay( vTime ); } if (getCurrentBarIndex()==0) { // debugPrintln ("First Bar Index: " + vFirstIndex); i=vFirstIndex; while (i<=0) { // debugPrintln ("i: " + i); vHi=getValue("High",i); vLo=getValue("Low",i); vVol=getValue("Volume",i); BarAvgPrice=(vHi+vLo)/2; CumPriceTimesVolume=CumPriceTimesVolume+(BarAvgPrice*vVol); CumVolume=CumVolume+vVol; // debugPrintln ("BarAvgPrice: " + BarAvgPrice); // debugPrintln ("vVol: " + vVol); // debugPrintln ("CumPriceTimesVolume: " + CumPriceTimesVolume); // debugPrintln ("CumVolume: " + CumVolume); i++; } vVWAP=CumPriceTimesVolume/CumVolume; // Draw the VWAP horizontal line drawLineAbsolute(vFirstIndex,vVWAP,0,vVWAP,PS_SOLID, 2, Color.blue, 1); // Get the MPD prevHi= call(".\\OHLC\\getPrevOHLC.efs", "High"); prevLo= call(".\\OHLC\\getPrevOHLC.efs", "Low"); todayHi=call(".\\OHLC\\getTodayOHLC.efs", "High"); todayLo=call(".\\OHLC\\getTodayOHLC.efs", "Low"); MPD=(prevHi-prevLo)/2 MPDintra=(todayHi-todayLo)/2 // debugPrintln("Previous days high " + prevHi); // debugPrintln("Previous days lo " + prevLo); // debugPrintln("MPD " + MPD); // Draw the MPD lines drawLineAbsolute(vFirstIndex,vVWAP+MPD,0,vVWAP+MPD,PS_SOLID, 2, Color.red, 2); drawLineAbsolute(vFirstIndex,vVWAP-MPD,0,vVWAP-MPD,PS_SOLID, 2, Color.red, 3); drawLineAbsolute(vFirstIndex,vVWAP+MPDintra,0,vVWAP+MPDintra,PS_SOLID, 2, Color.purple, 4); drawLineAbsolute(vFirstIndex,vVWAP-MPDintra,0,vVWAP-MPDintra,PS_SOLID, 2, Color.purple, 5); return new Array(vVWAP, vVWAP+MPDintra, vVWAP-MPDintra, vVWAP+MPD, vVWAP-MPD); } }