DateRange.efs

ICE Data Services -

DateRange.efs  
EFSLibrary - Discussion Board  

File Name: DateRange.efs

Description:

Code example for restricting a formula from back testing or executing outside specified date range.

Formula Parameters:

  • Start Month - 1
  • Start Day - 1
  • Start Year - 2004
  • End Month - 2
  • End Day - 31
  • End Year - 2004

Notes:
After applying the study to an advanced chart, go to Edit Studies and end enter the Day, Month and Year for both the start and end dates.

Download File:
DateRange.efs


EFS Code:

/*****************************************************************
Provided By : eSignal. (c) Copyright 2004

Restrict formula from back testing outside specified date range.
Go to Edit Studies and end enter the Day, Month and Year for both
the start and end dates.
*****************************************************************/

function preMain() {
    setPriceStudy(true);
    setStudyTitle("Date Range");
    setShowCursorLabel(false);
    

    var fp1 = new FunctionParameter("startM", FunctionParameter.NUMBER);
    fp1.setName("Start Month");
    for (var i = 1; i <=12; ++i) {
        fp1.addOption(i);
    }
    fp1.setDefault(1);

    var fp2 = new FunctionParameter("startD", FunctionParameter.NUMBER);
    fp2.setName("Start Day");
    for (var i = 1; i <=31; ++i) {
        fp2.addOption(i);
    }
    fp2.setDefault(1);

    var fp3 = new FunctionParameter("startY", FunctionParameter.NUMBER);
    fp3.setName("Start Year");
    for (var i = 0; i < 10; ++i) {
        fp3.addOption(2004-i);
    }
    fp3.setDefault(2004);

    var fp4 = new FunctionParameter("endM", FunctionParameter.NUMBER);
    fp4.setName("End Month");
    for (var i = 1; i <=12; ++i) {
        fp4.addOption(i);
    }
    fp4.setDefault(2);

    var fp5 = new FunctionParameter("endD", FunctionParameter.NUMBER);
    fp5.setName("End Day");
    for (var i = 1; i <=31; ++i) {
        fp5.addOption(i);
    }
    fp5.setDefault(31);

    var fp6 = new FunctionParameter("endY", FunctionParameter.NUMBER);
    fp6.setName("End Year");
    for (var i = 0; i < 10; ++i) {
        fp6.addOption(2004-i);
    }
    fp6.setDefault(2004);
}

function main(startM, startD, startY, endM, endD, endY) {
    var barMonth = getMonth(0);
    var barDay = getDay(0);
    var barYear = getYear(0);
    
    if (barYear < startY || barYear > endY) return;
    if (barMonth < startM || barMonth > endM) return;
    if (barDay < startD || barDay > endD) return;
    
    // Insert code for back testing here
    
    setBarBgColor(Color.grey);
    
    return;
}