EMAcalc.efs

ICE Data Services -

EMAcalc.efs    

File Name: EMAcalc.efs

Description:
Demonstrates how to create an exponential moving average calculation in EFS.

Formula Parameters:

  • nLength: Default is 10

Notes:
Default settings draw a 10 period exponential moving average of the Close.

Download File:
EMAcalc.efs


EFS Code:

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

function preMain() {
    setPriceStudy(true);
    setStudyTitle("EMA calculation");
    setCursorLabelName("EMA of Close", 0);
    setDefaultBarFgColor(Color.lime, 0); 
}

var vEMA = null;
var vEMA1 = null;

var dPercent = 0.0;
var bPrimed = false;

function EMA(nLength, nArray) {
    var nBarState = getBarState();
    var dSum = 0.0;
    var dRef;

    if(nBarState == BARSTATE_ALLBARS || bPrimed == false) {
        dPercent = (2.0 / (nLength + 1.0));
        bPrimed = false;
    }

    if (nBarState == BARSTATE_NEWBAR) {
        vEMA1 = vEMA;
    }

    if(bPrimed == false) {
        for(i = 0; i < nLength; i++) {
            dSum += nArray[i];
        }
        bPrimed = true;
        return (dSum / nLength);
    } else {
        return (((close() - vEMA1) * dPercent) + vEMA1);
    }
}

function main(nLength) {
    if(nLength == null || nLength <= 0) nLength = 10;

    var nArray = getValue("Close", 0, -nLength);
    if(nArray == null) return;
    
    vEMA = EMA(nLength, nArray);
    
    return vEMA;
}