/***************************************Provided By : eSignal (c) Copyright 2005Note: Study requires version 7.9.1 (build 732) or later.***************************************/var bVersion = null;var STATE_UNCHG = 0;var STATE_UP = 1; // greenvar STATE_DN = -1; // redvar nFontCY = 0;var nFontCX = 0;var nSymLoop = 2;var nCol = new Array(7);var nColWidth = 0;var nRowThickness = 1;var nFontSize = 10;var aHdrLabels = new Array(7);aHdrLabels[0] = "Symbol";aHdrLabels[1] = "DAY";aHdrLabels[2] = "WEEK";aHdrLabels[3] = "MONTH";aHdrLabels[4] = "MTH-TO-DATE";aHdrLabels[5] = "YEAR";aHdrLabels[6] = "YR-TO-DATE";var aSym = new Array(nSymLoop);aSym[0] = getSymbol();aSym[1] = "$INDU";var aPrcnt = new Array(nSymLoop);var xCalc = new Array(nSymLoop);var aUpdateFlags = new Array(nSymLoop);var aLast = new Array(nSymLoop);for (var i = 0; i < 7; i++) { nCol[i] = 20; if (i < nSymLoop) { aLast[i] = 0; aPrcnt[i] = new Array(6); aUpdateFlags[i] = false; }}function preMain() { setStudyTitle("Percent Change Table "); setShowCursorLabel(false); setShowTitleParameters(false); formatColumns(); nColWidth = nFontCX*11; nColWidth -= 4; var fp1 = new FunctionParameter("Sym1", FunctionParameter.STRING); fp1.setName("Symbol 1"); fp1.setDefault(""); var fp2 = new FunctionParameter("Sym2", FunctionParameter.STRING); fp2.setName("Symbol 2"); fp2.setDefault(aSym[1]); var fp3 = new FunctionParameter("inputColWidth", FunctionParameter.NUMBER); fp3.setName("Column Width"); fp3.setLowerLimit(0); fp3.setDefault(nColWidth); var fp4 = new FunctionParameter("inputRowThickness", FunctionParameter.NUMBER); fp4.setName("Row Thickness"); fp4.setLowerLimit(0); fp4.setDefault(1); var fp5 = new FunctionParameter("inputFontSize", FunctionParameter.NUMBER); fp5.setName("Font Size"); fp5.setLowerLimit(1); fp5.setDefault(10);}var bInit = false;var nY = 20;function main(Sym1, Sym2, inputColWidth, inputRowThickness, inputFontSize) { if (bVersion == null) bVersion = verify(); if (bVersion == false) return; var nIndex = getCurrentBarIndex(); var nState = getBarState(); if (bInit == false) { nColWidth = Math.round(inputColWidth); nRowThickness = Math.round(inputRowThickness)*-1; nFontSize = Math.round(inputFontSize); for (var i = 0; i < nSymLoop; i++) { if (i == 0 && (Sym1 == "" || Sym1 == null)) { aSym[i] = getSymbol(); } else { aSym[i] = eval("Sym"+(i+1)); } xCalc[i] = efsInternal("calc", sym(aSym[i]+",D")); for (var j = 0; j < 6; j++) { aPrcnt[i][j] = getSeries(xCalc[i], j); } } formatColumns(); bInit = true; } if (nState == BARSTATE_NEWBAR && nIndex >= -1) { ///////////////////////////////////// // HEADERS ///////////////////////////////////// for (var i = 0; i < 7; i++) { drawTextPixel(nCol[i], nY, aHdrLabels[i], Color.black, Color.lightgrey, Text.FRAME | Text.CENTER | Text.VCENTER | Text.BOLD, null, nFontSize, "hdr"+i, nColWidth, nRowThickness); if (i < nSymLoop) { aUpdateFlags[i] = true; drawTextPixel(nCol[0], nY+((i+1)*nFontCY), aSym[i], Color.white, Color.black, Text.CENTER | Text.VCENTER, null, nFontSize, "nColSYM"+i, nColWidth, nRowThickness); } } } // check for price change from last trade and set update flag for (var i = 0; i < nSymLoop; i++) { if (aSym[i] != null && aSym[i] != " ") { var nLast = close(0, sym(aSym[i])); if (nLast != null) { // price changed from last trade, update table for this symbol. if (nLast != aLast[i]) aUpdateFlags[i] = true; aLast[i] = nLast; } } if (aUpdateFlags[i] == true) redraw(i); } return;}/******************** Functions*********************/function getStateBG(vCheckState) { if(vCheckState == STATE_UNCHG) return Color.lightgrey; if(vCheckState == STATE_UP) return Color.darkgreen; if(vCheckState == STATE_DN) return Color.maroon; return Color.black;}function getStateFG(vCheckState) { if(vCheckState == STATE_UNCHG) return Color.black; if(vCheckState == STATE_UP) return Color.white; if(vCheckState == STATE_DN) return Color.white; return Color.black;}function getState(vNum) { if(vNum > 0) { return STATE_UP; } else if(vNum < 0) { return STATE_DN; } else { return STATE_UNCHG; }}function formatColumns() { nFontCY = getTextHeight("A", null, nFontSize)*(-nRowThickness); nFontCX = getTextWidth("A", null, nFontSize); nCol[0] = 20; //SYM nCol[1] = nCol[0] + nColWidth; //DAY nCol[2] = nCol[1] + nColWidth; //WEEK nCol[3] = nCol[2] + nColWidth; //MTH nCol[4] = nCol[3] + nColWidth; //MTHTODATE nCol[5] = nCol[4] + nColWidth; //YEAR nCol[6] = nCol[5] + nColWidth; //YEARTODATE return;}function redraw(num) { for (var i = 0; i < nSymLoop; i++) { if (i == num) { for (var j = 0; j < 6; j++) { var nPrcnt = aPrcnt[i][j]; if (isNaN(nPrcnt)) { drawTextPixel(nCol[j+1], nY+((i+1)*nFontCY), "N/A", Color.black, Color.lightgrey, Text.CENTER | Text.VCENTER, null, nFontSize, "nPrcnt"+i+j, nColWidth, nRowThickness); } else { drawTextPixel(nCol[j+1], nY+((i+1)*nFontCY), nPrcnt.getValue(0).toFixed(2)+"\%", getStateFG(getState(nPrcnt)), getStateBG(getState(nPrcnt)), Text.CENTER | Text.VCENTER, null, nFontSize, "nPrcnt"+i+j, nColWidth, nRowThickness); } } } } aUpdateFlags[num] = false; // reset and wait for price change return;}// clac globalsvar bInitCalc = false;var xcloseDay = null;var xcloseWTD = null;var closeWTD = null;var closeM = null;var closeMTD = null;var closeY = null;var closeYTD = null;function calc(SymInv){ if (bInitCalc == false) { xcloseDay = close(); xcloseWTD = close(inv("w")); bInitCalc = true; } var nNew = xcloseDay.getValue(0); var nOld = xcloseDay.getValue(-1); closeWTD = xcloseWTD.getValue(-1); var nDate = new Date(); var nDateM = (nDate.getMonth())*100 + nDate.getDate(); var nTestMNum = month(0)*100 + day(0); if (nTestMNum <= nDateM) { closeM = nNew; } if(month(0)!=month(-1)){ closeMTD = nOld; } var nDateY = (nDate.getMonth()+1)*100 + nDate.getDate(); var nTestYNum = month(0)*100 + day(0); if (year(0) < nDate.getFullYear() && nTestYNum <= nDateY) { closeY = nNew; } if(year(0)!=year(-1)){ closeYTD = nOld; } var chgDay = ((nNew/nOld)-1)*100; var chgWTD = ((nNew/closeWTD)-1)*100; var chgM = ((nNew/closeM)-1)*100; var chgMTD = ((nNew/closeMTD)-1)*100; var chgY = ((nNew/closeY)-1)*100; var chgYTD = ((nNew/closeYTD)-1)*100; return new Array(chgDay, chgWTD, chgM, chgMTD, chgY, chgYTD);}function verify() { var b = false; if (getBuildNumber() < 732) { drawTextAbsolute(5, 35, "This study requires version 7.9.1 or later.", Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT, null, 13, "error"); drawTextAbsolute(5, 20, "Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp", Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT, null, 13, "upgrade"); return b; } else { b = true; } return b;} |