Entropy Math

ICE Data Services -


EntropyMath.efs  EFSLibrary - Discussion Board
  

File Name: EntropyMath.efs


Description:
Entropy Math


Formula Parameters:
Length : 14
Upper : 0.0001
Lower : -0.0001

Notes:

Download File:
EntropyMath.efs




EFS Code:


/*********************************Provided By:      eSignal (Copyright c eSignal), a division of Interactive Data     Corporation. 2009. 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:            Entropy Math     Version:            1.0  08/26/2009 Formula Parameters:                     Default:    Length                              14    Upper                               0.0001    Lower                               -0.0001    Notes:    **********************************/var fpArray = new Array();var bInit = false;function preMain(){    setPriceStudy(false);    setShowCursorLabel(true);    setShowTitleParameters(false);    setStudyTitle("Entropy Math");    setCursorLabelName("Entropy Math", 0);    setDefaultBarFgColor(Color.blue, 0);    setPlotType(PLOTTYPE_LINE, 0);    var x = 0;    fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("Length");        setLowerLimit(1);        setDefault(14);    }        fpArray[x] = new FunctionParameter("Upper", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("Upper");        setDefault(0.0001);    }        fpArray[x] = new FunctionParameter("Lower", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("Lower");        setDefault(-0.0001);    }        }var xEntropy = null;function main(Length, Upper, Lower) {var nBarState = getBarState();var nEntropy = 0;    if (nBarState == BARSTATE_ALLBARS) {        if(Length == null) Length = 14;	}	if (bInit == false) {        addBand(Upper, PS_DASHDOT, 2, Color.black, "Upper");        addBand(Lower, PS_DASHDOT, 2, Color.black, "Lower");                xEntropy = efsInternal("Calc_EntropyMath", Length);        bInit = true;	}	nEntropy = xEntropy.getValue(0);	if (nEntropy == null) return;    return nEntropy;}var bSecondInit = false;var xClose = null;function Calc_EntropyMath(Length) {var nRes = 0;var nR = 0;var sumx = 0;var sumx2 = 0;var avgx = 0;var rmsx = 0;var nP = 0;var i = 0;    if (!bSecondInit) {        xClose = close();        bSecondInit = true;    }    if (xClose.getValue(-Length) == null) return;    for (i = 0; i < Length; i++) {        nR = Math.log(xClose.getValue(-i) / xClose.getValue(-i-1));        sumx += nR;        sumx2 += nR * nR;    }        avgx = sumx / Length;    rmsx = Math.sqrt(sumx2/Length);	nP = ((avgx / rmsx) + 1) / 2.0;	nRes = nP * Math.log(1 + rmsx) + (1 - nP) * Math.log(1 - rmsx);    return nRes;}