Announcement

Collapse
No announcement yet.

2017 Feb: Exponential Standard Deviation Bands by Vitali Apirine

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2017 Feb: Exponential Standard Deviation Bands by Vitali Apirine

    File Name: ESDB.efs

    Description:
    Exponential Standard Deviation Bands by Vitali Apirine

    Formula Parameters:

    ESDB.efs

    Length: 20
    # of EStdDev: 2

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

    Download File:
    ESDB.efs

    ESDB.efs


    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
    eSignal (Copyright c eSignal), a division of Interactive Data
    Corporation. 2016. 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:        
        Exponential Standard Deviation Bands by Vitali Apirine

    Version:            1.00  12/07/2016

    Formula Parameters:                     Default:
    Length                                  20
    # of EStdDev                            2



    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();

    function 
    preMain(){
        
    setPriceStudy(true);
        
    setCursorLabelName("Upper"0);
        
    setCursorLabelName("Middle"1);
        
    setCursorLabelName("Lower"2);
        
    setDefaultBarFgColor(Color.RGB(255,106,0),1);

        var 
    0;
        
    fpArray[x] = new FunctionParameter("Length"FunctionParameter.INTEGER)
        
    with(fpArray[x++]){
        
    setLowerLimit(1);
        
    setDefault(20);
        
    setName("Length");
        }
        
    fpArray[x] = new FunctionParameter("MFactor"FunctionParameter.NUMBER)
        
    with(fpArray[x++]){
        
    setLowerLimit(1);
        
    setDefault(2);
        
    setName("# of EStdDev");
        }
    }

    var 
    bInit false;
    var 
    bVersion null;

    var 
    xClose null;
    var 
    xEMA null;
    var 
    xStdDev null;
    var 
    xUpBand null;
    var 
    xLwBand null;
    var 
    bUpFlag false;
    var 
    bLwFlag true;

    function 
    main(LengthMFactor){
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;

        if (
    getBarState() == BARSTATE_ALLBARS)
            
    bInit false;

        if (!
    bInit){
            
    xClose close();
            
    xEMA ema(LengthxClose);
            
    xStdDev efsInternal("ExpStdDev"xClosexEMALength);
            
    xUpBand efsInternal("UpperLower"xEMAxStdDevMFactorbUpFlag);
            
    xLwBand efsInternal("UpperLower"xEMAxStdDevMFactorbLwFlag);
            
    bInit true;
        }

        
    nUpBand xUpBand.getValue(0);
        
    nMidBand xEMA.getValue(0);
        
    nLwBand xLwBand.getValue(0);

        if ((!
    isNull(nUpBand)) && (!isNull(nMidBand)) && (!isNull(nLwBand)))
            return [
    nUpBandnMidBandnLwBand];
    }

    function 
    ExpStdDev(xClosexEMAlen){
        var 
    nSum 0;
        var 
    nEMA xEMA.getValue(0);
        for (var 
    0leni++){
            var 
    nClose xClose.getValue(-i);
            if (!
    isNull(nClose) && !isNull(nEMA)){
                
    nSum += Math.pow((nClose nEMA), 2);
            }
        }
        return (
    Math.sqrt(nSum/len));
    }

    function 
    UpperLower(xEMAxStdDevMFactorbFlag){
        var 
    nEMA xEMA.getValue(0);
        var 
    nStdDev xStdDev.getValue(0);
        
    nStdDev *= MFactor;

        if (
    bFlag == bLwFlag)
            
    nStdDev = -nStdDev;
        return (
    nEMA nStdDev);
    }

    function 
    verify(){
        var 
    false;
        if (
    getBuildNumber() < 779){

            
    drawTextAbsolute(535"This study requires version 10.6 or later.",
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"error");
            
    drawTextAbsolute(520"Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp",
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"upgrade");
            return 
    b;
        }
        else
            
    true;

        return 
    b;

Working...