/*********************************Provided By : eSignal. (c) Copyright 2003*********************************//* Updated 4/14/03 *//* Updated 9/16/05 -- fix for Monday Holidays (vIndex) */function preMain() { setPriceStudy(true); setStudyTitle("Weekly Pivot Points"); setCursorLabelName("PP-R2", 0); setCursorLabelName("PP-R1", 1); setCursorLabelName("PP", 2); setCursorLabelName("PP-S1", 3); setCursorLabelName("PP-S2", 4); // R2 setDefaultBarStyle(PS_DASH, 0); setDefaultBarFgColor(Color.RGB(255,0,0), 0); setDefaultBarThickness(2, 0); // R1 setDefaultBarStyle(PS_DOT, 1); setDefaultBarFgColor(Color.RGB(0,0,255), 1); setDefaultBarThickness(2, 1); // Pivot Point setDefaultBarStyle(PS_SOLID, 2); setDefaultBarFgColor(Color.RGB(0,0,0), 2); setDefaultBarThickness(2, 2); // S1 setDefaultBarStyle(PS_DOT, 3); setDefaultBarFgColor(Color.RGB(0,0,255), 3); setDefaultBarThickness(2, 3); // S2 setDefaultBarStyle(PS_DASH, 4); setDefaultBarFgColor(Color.RGB(255,0,0), 4); setDefaultBarThickness(2, 4);}var vLastPP = null;var vLastPPR1 = null;var vLastPPR2 = null;var vLastPPS1 = null;var vLastPPS2 = null;var vLastArray = null;var vSymbol = null;var vInterval = null;var vReset = true;var msPerDay = 24*60*60*1000;var vIndex = null;var vBarTime = null;var vPrevBarTime = null;var vNew = false;function main() { var vH; var vL; var vC; var nState = getBarState(); if(vReset == true) { vLastArray = null; vLastPP = null; vLastPPR1 = null; vLastPPR2 = null; vLastPPS1 = null; vLastPPS2 = null; vInterval = getInterval(); vSymbol = getSymbol(); vSymbol += ",W"; vReset = false; } if(vInterval == null) return null; if(vInterval == "W") return null; if(vInterval == "M") return null; if(vInterval == "T") return null; if (nState == BARSTATE_NEWBAR) { vPrevBarTime = vBarTime; } vBarTime = getValue("time"); if(vBarTime != null && vPrevBarTime != null && nState == BARSTATE_NEWBAR) { if (vNew == false) { if (vPrevBarTime.getDay() - vBarTime.getDay() > 1) vNew = true; } if (vNew == true) { var vTime = new Date(); var vBarTime1 = getValue("time", -1); // fix for Monday Holidays: Math.ceil vs Math.round to round up to the nearest // whole number of weeks. // vIndex is derived from the last bar of the previous week to current time // vs. first bar of current week. vIndex = ( Math.ceil( ((vTime.getTime() - vBarTime1.getTime())/msPerDay) / 7) * -1); vNew = false; } if(vIndex != null) { vH = getValueAbsolute("High", vIndex, vSymbol); vL = getValueAbsolute("Low", vIndex, vSymbol); vC = getValueAbsolute("Close", vIndex, vSymbol); if(vH != null && vL != null && vC != null) { vLastPP = (vH + vL + vC) / 3; vLastPPR1 = 2 * vLastPP - vL; vLastPPS1 = 2 * vLastPP - vH; vLastPPR2 = (vLastPP - vLastPPS1) + vLastPPR1; vLastPPS2 = vLastPP - (vLastPPR1 - vLastPPS1); vLastArray = new Array(vLastPPR2, vLastPPR1, vLastPP, vLastPPS1, vLastPPS2); return vLastArray; } } } return vLastArray;} |