2010 Jul: PDB Indicator

ICE Data Services -

DailyPDB.efs, IntradayPDB.efs  
EFSLibrary - Discussion Board  

File Name:

  • DailyPDB.efs
  • IntradayPDB.efs

Description:

DailyPDB.efs
PDB indicator for daily charts

IntradayPDB.efs
PDB indicator for intraday charts

Formula Parameters:

DailyPDB.efs

  • Starting year : 2010
  • Startng month : 1
  • Starting day of month : 4
  • Percentage upper : 1
  • Percentage lower : 1

IntradayPDB.efs

  • Startng month : 1
  • Starting day of month : 1
  • Startng Hour : 1
  • Startng Minute : 0
  • Percentage upper : 1
  • Percentage lower : 1

Notes:
The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.

Download File:
DailyPDB.efs
IntradayPDB.efs



EFS Code:

/*********************************
Provided By:  
    eSignal (Copyright c eSignal), a division of Interactive Data 
    Corporation. 2010. All rights reserved. This sample eSignal 
    Formula Script (EFS) is for educational purposes only and may be 
    modified and saved under a new file name.  eSignal is not responsible
    for the functionality once modified.  eSignal reserves the right 
    to modify and overwrite this EFS file with each new release.

Description:        
    PDB indicator for daily charts
    
Version:            1.00  05/07/2010

Formula Parameters:                     Default:
    Starting year                       2010
    Startng month                       1
    Starting day of month               4
    Percentage upper                    1
    Percentage lower                    1
    
Notes:
    The related article is copyrighted material. If you are not a subscriber
    of Stocks & Commodities, please visit www.traders.com.

**********************************/
var fpArray = new Array();
var bInit = false;
var bVersion = null;

function preMain() {
    setPriceStudy(true);
    setShowCursorLabel(true);
    setShowTitleParameters(false);
    setStudyTitle("PDB indicator");
    setCursorLabelName("MIDAS", 0);
    setDefaultBarFgColor(Color.red, 0);
    setPlotType(PLOTTYPE_LINE, 0);
    setDefaultBarThickness(2, 0);
    setCursorLabelName("Upper", 1);
    setDefaultBarFgColor(Color.blue, 1);
    setPlotType(PLOTTYPE_LINE, 1);
    setDefaultBarThickness(2, 1);
    setCursorLabelName("Lower", 2);
    setDefaultBarFgColor(Color.blue, 2);
    setPlotType(PLOTTYPE_LINE, 2);
    setDefaultBarThickness(2, 2);
    askForInput();
    var x=0;
    fpArray[x] = new FunctionParameter("pYear", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Starting year");
        setLowerLimit(1900);		
        setUpperLimit(2100);		        
        setDefault(2010);
    }    
    fpArray[x] = new FunctionParameter("pMonth", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Startng month");
        setLowerLimit(1);		
        setUpperLimit(12);
        setDefault(1);
    }    
    fpArray[x] = new FunctionParameter("pDay", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Starting day of month");
        setLowerLimit(1);		
        setUpperLimit(31);		        
        setDefault(4);
    }    
    fpArray[x] = new FunctionParameter("Band1", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Percentage upper");
        setLowerLimit(1);		
        setUpperLimit(50);		        
        setDefault(1);
    }        
    fpArray[x] = new FunctionParameter("Band2", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Percentage lower");
        setLowerLimit(1);		
        setUpperLimit(50);		        
        setDefault(1);
    }        
}

var xFractalDimension = null;
var bStart = false;
var xMIDAS = null;

function main(pYear, pMonth, pDay, Band1, Band2) {
var nBarState = getBarState();
var nHour = getHour();
var nMinute = getMinute();
var nDay = getDay();
var nMonth = getMonth();    
var nYear = getYear();  
var nMIDAS = 0;
var Q1 = 0;
var Q2 = 0;
    if (bVersion == null) bVersion = verify();
    if (bVersion == false) return;   
    if (!isDaily()) {
        drawTextAbsolute(5, 35, "This study requires Daily Chart.", 
            Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            null, 13, "M");
        return;
    }    
    if (nBarState == BARSTATE_ALLBARS) {
        if (pYear == null) pYear = 2010;
        if (pMonth == null) pMonth = 1;
        if (pDay == null) pDay = 4;
        if (Band1 == null) Band1 = 1;
        if (Band2 == null) Band2 = 1;
    }    
    if (nYear == pYear && nMonth == pMonth && nDay == pDay) {
        bStart = true;
    }    
    if (bStart) {
        if (!bInit) { 
            xMIDAS = efsInternal("Calc_MIDAS", pYear, pMonth, pDay);
            bInit = true; 
        }
        nMIDAS = xMIDAS.getValue(0);
        if (nMIDAS == null) return;
        Q1 = nMIDAS * (1 + Band1 / 100);
        Q2 = nMIDAS * (1 - Band2 / 100);

        return new Array(nMIDAS, Q1, Q2);
    } else {
        drawTextAbsolute(5, 35, "Start date not found on chart. Edit Start date in Edit Studies.", 
            Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            null, 13, "M");
        return;
    }
}

var bCalc_MIDASInit = false;
var xMP = null;
var xCumMP = null;
var xCumVolume = null;
var xVolume = null;
var nStartV = 0;
var nStartMP = 0;

function Calc_MIDAS(pYear, pMonth, pDay) {
var nMIDAS = 0;
var nMP = 0;
var nCumMP = 0;
var nCumVolume = 0;
    if (!bCalc_MIDASInit) {
        xMP = efsInternal("Calc_MP_CumMP_CumV", pYear, pMonth, pDay);
        xCumMP = getSeries(xMP, 1);
        xCumVolume = getSeries(xMP, 2);
        xVolume = volume();
        bCalc_MIDASInit = true;
    }
   
    nMP = xMP.getValue(0);
    nCumMP = xCumMP.getValue(0);
    nCumVolume = xCumVolume.getValue(0);
    if (nMP == null || nCumMP == null || nCumVolume == null) return;
    if (nStartV == 0 || nStartMP == 0) { 
        nStartV = xVolume.getValue(0);
        nStartMP = xCumMP.getValue(0);
    }
    nMIDAS = (nCumMP - nStartMP) / (nCumVolume - nStartV)
    return nMIDAS;
}

var bCalc_MPInit = false;
var xHL2 = null;
var xVolume = null;
var nCumMP = 0;
var nCumV = 0;
var bStartCalc = false;

function Calc_MP_CumMP_CumV(pYear, pMonth, pDay) {
var nRes = 0;
var nlocCumMP = 0;
var nlocCumV = 0;
var nVolume = 0;
var nHour = getHour();
var nMinute = getMinute();
var nDay = getDay();
var nMonth = getMonth();    
var nYear = getYear();  
    if (!bCalc_MPInit) {
        xHL2 = hl2();
        xVolume = volume();
        bCalc_MPInit = true;
    }
    if (nYear == pYear && nMonth == pMonth && nDay == pDay) {
        bStartCalc = true;
    }    
    if (bStartCalc) {
        nVolume = xVolume.getValue(0);
        nRes = xHL2.getValue(0) * nVolume;
        if (getBarState() == BARSTATE_NEWBAR) {
            nCumMP = nCumMP + nRes; 
            nCumV = nCumV + nVolume;
            nlocCumMP = nCumMP;
            nlocCumV = nCumV;
        } else {
            nlocCumMP = nCumMP + nRes;
            nlocCumV = nCumV + nVolume;
        }
        return new Array(nRes, nlocCumMP, nlocCumV);    
    } else {
        return new Array(null, null, null);
    }    
}

function verify() {
    var b = false;
    if (getBuildNumber() < 779) {
        drawTextAbsolute(5, 35, "This study requires version 8.0 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;
}

 

/*********************************
Provided By:  
    eSignal (Copyright c eSignal), a division of Interactive Data 
    Corporation. 2010. All rights reserved. This sample eSignal 
    Formula Script (EFS) is for educational purposes only and may be 
    modified and saved under a new file name.  eSignal is not responsible
    for the functionality once modified.  eSignal reserves the right 
    to modify and overwrite this EFS file with each new release.

Description:        
    PDB indicator for intraday charts
    
Version:            1.00  05/07/2010

Formula Parameters:                     Default:
    Startng month                       1
    Starting day of month               1
    Startng Hour                        1
    Startng Minute                      0
    Percentage upper                    1
    Percentage lower                    1
    
Notes:
    The related article is copyrighted material. If you are not a subscriber
    of Stocks & Commodities, please visit www.traders.com.

**********************************/
var fpArray = new Array();
var bInit = false;
var bVersion = null;

function preMain() {
    setPriceStudy(true);
    setShowCursorLabel(true);
    setShowTitleParameters(false);
    setStudyTitle("PDB indicator");
    setCursorLabelName("MIDAS", 0);
    setDefaultBarFgColor(Color.red, 0);
    setPlotType(PLOTTYPE_LINE, 0);
    setDefaultBarThickness(2, 0);
    setCursorLabelName("Upper", 1);
    setDefaultBarFgColor(Color.blue, 1);
    setPlotType(PLOTTYPE_LINE, 1);
    setDefaultBarThickness(2, 1);
    setCursorLabelName("Lower", 2);
    setDefaultBarFgColor(Color.blue, 2);
    setPlotType(PLOTTYPE_LINE, 2);
    setDefaultBarThickness(2, 2);
    askForInput();
    var x=0;
    fpArray[x] = new FunctionParameter("pMonth", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Startng month");
        setLowerLimit(1);		
        setUpperLimit(12);
        setDefault(1);
    }    
    fpArray[x] = new FunctionParameter("pDay", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Starting day of month");
        setLowerLimit(1);		
        setUpperLimit(31);		        
        setDefault(1);
    }    
    fpArray[x] = new FunctionParameter("pHour", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Starting hour");
        setLowerLimit(0);		
        setUpperLimit(23);		        
        setDefault(1);
    }    
    fpArray[x] = new FunctionParameter("pMinute", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Starting minute");
        setLowerLimit(0);		
        setUpperLimit(59);		        
        setDefault(0);
    }    
    fpArray[x] = new FunctionParameter("Band1", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Percentage upper");
        setLowerLimit(1);		
        setUpperLimit(50);		        
        setDefault(1);
    }        
    fpArray[x] = new FunctionParameter("Band2", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Percentage lower");
        setLowerLimit(1);		
        setUpperLimit(50);		        
        setDefault(1);
    }        
}

var xFractalDimension = null;
var bStart = false;
var xMIDAS = null;

function main(pMonth, pDay, pHour, pMinute, Band1, Band2) {
var nBarState = getBarState();
var nHour = getHour();
var nMinute = getMinute();
var nDay = getDay();
var nMonth = getMonth();    
var nMIDAS = 0;
var Q1 = 0;
var Q2 = 0;
    if (bVersion == null) bVersion = verify();
    if (bVersion == false) return;   
    if (isDaily() || isMonthly() || isWeekly()) {
        drawTextAbsolute(5, 35, "This study requires Intraday Chart.", 
            Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            null, 13, "M");
        return;
    }    
    if (nBarState == BARSTATE_ALLBARS) {
        if (pMonth == null) pMonth = 1;
        if (pDay == null) pDay = 1;
        if (pHour == null) pHour = 1;        
        if (pMinute == null) pMinute = 0;
        if (Band1 == null) Band1 = 1;
        if (Band2 == null) Band2 = 1;
    }    
    if (nMonth == pMonth && nDay == pDay && nHour == pHour && nMinute == pMinute) {
        bStart = true;
    }    
    if (bStart) {
        if (!bInit) { 
            xMIDAS = efsInternal("Calc_MIDAS", pMonth, pDay, pHour, pMinute);
            bInit = true; 
        }
        nMIDAS = xMIDAS.getValue(0);
        if (nMIDAS == null) return;
        Q1 = nMIDAS * (1 + Band1 / 100);
        Q2 = nMIDAS * (1 - Band2 / 100);
        return new Array(nMIDAS, Q1, Q2);
    } else {
        drawTextAbsolute(5, 35, "Start date/time not found on chart. Edit Start date/time in Edit Studies.", 
            Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            null, 13, "M");
        return;
    }
}

var bCalc_MIDASInit = false;
var xMP = null;
var xCumMP = null;
var xCumVolume = null;
var xVolume = null;
var nStartV = 0;
var nStartMP = 0;

function Calc_MIDAS(pMonth, pDay, pHour, pMinute) {
var nMIDAS = 0;
var nMP = 0;
var nCumMP = 0;
var nCumVolume = 0;
    if (!bCalc_MIDASInit) {
        xMP = efsInternal("Calc_MP_CumMP_CumV", pMonth, pDay, pHour, pMinute);
        xCumMP = getSeries(xMP, 1);
        xCumVolume = getSeries(xMP, 2);
        xVolume = volume();
        bCalc_MIDASInit = true;
    }
    nMP = xMP.getValue(0);
    nCumMP = xCumMP.getValue(0);
    nCumVolume = xCumVolume.getValue(0);
    if (nMP == null || nCumMP == null || nCumVolume == null) return;
    if (nStartV == 0 || nStartMP == 0) { 
        nStartV = xVolume.getValue(0);
        nStartMP = xCumMP.getValue(0);
    }
    nMIDAS = (nCumMP - nStartMP) / (nCumVolume - nStartV)
    return nMIDAS;
}

var bCalc_MPInit = false;
var xHL2 = null;
var xVolume = null;
var nCumMP = 0;
var nCumV = 0;
var bStartCalc = false;

function Calc_MP_CumMP_CumV(pMonth, pDay, pHour, pMinute) {
var nRes = 0;
var nlocCumMP = 0;
var nlocCumV = 0;
var nVolume = 0;
var nHour = getHour();
var nMinute = getMinute();
var nDay = getDay();
var nMonth = getMonth();    
    if (!bCalc_MPInit) {
        xHL2 = hl2();
        xVolume = volume();
        bCalc_MPInit = true;
    }
    if (nMonth == pMonth && nDay == pDay && nHour == pHour && nMinute == pMinute) {
        bStartCalc = true;
    }    
    if (bStartCalc) {
        nVolume = xVolume.getValue(0);
        nRes = xHL2.getValue(0) * nVolume;
        if (getBarState() == BARSTATE_NEWBAR) {
            nCumMP = nCumMP + nRes; 
            nCumV = nCumV + nVolume;
            nlocCumMP = nCumMP;
            nlocCumV = nCumV;
        } else {
            nlocCumMP = nCumMP + nRes;
            nlocCumV = nCumV + nVolume;
        }
        return new Array(nRes, nlocCumMP, nlocCumV);    
    } else {
        return new Array(null, null, null);
    }    
}

function verify() {
    var b = false;
    if (getBuildNumber() < 779) {
        drawTextAbsolute(5, 35, "This study requires version 8.0 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;
}