Woodie_Pivots.efs

ICE Data Services -

Woodie_Pivots.efs  

File Name: Woodie_Pivots.efs

Description:
Contains Pivot Points based on theories by Woodie.

Formula Parameters:

NA

Notes:
NA

Download File:
Woodie_Pivots.efs




EFS Code:

/************************Copyright (c) eSignal, 2003*************************/ /*
Description: Contains Pivot Points based on theories by Woodie. PP = (YesterdaysHigh + YesterdaysLow + (TodaysOpen x 2)) / 4 
R1 = (PP x 2) - YesterdaysLow S1 = (PP x 2) - YesterdaysHigh R2 = PP + R1 - S1 S2 = PP - R1 + S1 R3 = PP + R2 - S2 S3 = PP - R2 + S2*/
function preMain() {
  setPriceStudy(true);
  setStudyTitle("Woodie Pivots");
  setCursorLabelName("PP-R3", 0);
  setCursorLabelName("PP-R2", 1);
  setCursorLabelName("PP-R1", 2);
  setCursorLabelName("PP", 3);
  setCursorLabelName("PP-S1", 4);
  setCursorLabelName("PP-S2", 5);
  setCursorLabelName("PP-S3", 6); // R3
  setDefaultBarStyle(PS_SOLID, 0);
  setDefaultBarFgColor(Color.RGB(255, 0, 255), 0);
  setDefaultBarThickness(3, 0); // R2
  setDefaultBarStyle(PS_DASH, 1);
  setDefaultBarFgColor(Color.RGB(255, 0, 0), 1);
  setDefaultBarThickness(2, 1); // R1
  setDefaultBarStyle(PS_DOT, 2);
  setDefaultBarFgColor(Color.RGB(0, 0, 255), 2);
  setDefaultBarThickness(1, 2); // Woodie Pivot Point
  setDefaultBarStyle(PS_SOLID, 3);
  setDefaultBarFgColor(Color.RGB(0, 0, 0), 3);
  setDefaultBarThickness(1, 3); // S1
  setDefaultBarStyle(PS_DOT, 4);
  setDefaultBarFgColor(Color.RGB(0, 0, 255), 4);
  setDefaultBarThickness(1, 4); // S2
  setDefaultBarStyle(PS_DASH, 5);
  setDefaultBarFgColor(Color.RGB(255, 0, 0), 5);
  setDefaultBarThickness(2, 5); // S3
  setDefaultBarStyle(PS_SOLID, 6);
  setDefaultBarFgColor(Color.RGB(255, 0, 255), 6);
  setDefaultBarThickness(2, 6);
} // Start of Performance additionvar
vLastRawTime = null;
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;

function main() {
  var vH;
  var vL;
  var vC;
  var vRawTime;
  var vBarTime;
  var vIndex;
  var nState = getBarState();
  if (vReset == true) {
    vLastRawTime = null;
    vLastArray = null;
    vLastPP = null;
    vLastPPR1 = null;
    vLastPPR2 = null;
    vLastPPS1 = null;
    vLastPPS2 = null;
    vInterval = getInterval();
    vSymbol = getSymbol();
    vSymbol += ",D";
    vReset = false;
  }
  vRawTime = getDay();
  if (vRawTime == null) return; // Start of Performance addition
  if (vRawTime != null && vLastRawTime != null) {
    if (vRawTime == vLastRawTime) {
      return vLastArray;
    }
  }
  if (vInterval == null) return null;
  if (vInterval == "D") return null;
  if (vInterval == "W") return null;
  if (vInterval == "M") return null;
  if (vInterval == "T") return null;
  vBarTime = getValue("time");
  if (vBarTime != null) {
    var vDay = vBarTime.getDay();
    if (vDay == 0) {
      var vDate = vBarTime.getDate();
      vDate -= 2;
      vBarTime.setDate(vDate);
    }
    vAbsTime = getPreviousTradingDay(vBarTime, vSymbol);
    if (vAbsTime == null) {
      return;
    }
    vIndex = getFirstBarIndexOfDay(vAbsTime, vSymbol);
    if (vIndex != null) {
      vH = getValueAbsolute("High", vIndex, vSymbol);
      vL = getValueAbsolute("Low", vIndex, vSymbol);
      vO = getValueAbsolute("Open", vIndex + 1, vSymbol);
      if (vH != null && vL != null && vO != null) {
        vLastPP = (vH + vL + vO * 2) / 4;
        vLastPPR1 = 2 * vLastPP - vL;
        vLastPPS1 = 2 * vLastPP - vH;
        vLastPPR2 = vLastPP - vLastPPS1 + vLastPPR1;
        vLastPPS2 = vLastPP - (vLastPPR1 - vLastPPS1);
        vLastPPR3 = vLastPP - vLastPPS2 + vLastPPR2;
        vLastPPS3 = vLastPP - (vLastPPR2 - vLastPPS2);
        vLastRawTime = vRawTime;
        vLastArray = new Array(
          vLastPPR3,
          vLastPPR2,
          vLastPPR1,
          vLastPP,
          vLastPPS1,
          vLastPPS2,
          vLastPPS3
        );
        return vLastArray;
      }
    }
  }
  return null;
}