Announcement

Collapse
No announcement yet.

Smoothed RSI

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

  • Smoothed RSI

    File Name: SmoothedRSI.efs

    Description:
    Smoothed RSI

    Formula Parameters:
    Length : 10

    Notes:
    This is new version of RSI oscillator indicator, developed by John Ehlers.
    The main advantage of his way of enhancing the RSI indicator is smoothing
    with minimum of lag penalty.


    Download File:
    SmoothedRSI.efs



    EFS Code:
    PHP 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:        
        Smoothed RSI
        
    Version:            1.0  05/04/2009
        
    Formula Parameters:                     Default:
        Length                              10

    Notes:
        This is new version of RSI oscillator indicator, developed by John Ehlers. 
        The main advantage of his way of enhancing the RSI indicator is smoothing 
        with minimum of lag penalty. 
    **********************************/
    var fpArray = new Array();
    var 
    bInit false;

    function 
    preMain() {
        
    setPriceStudy(false);
        
    setStudyTitle("SRSI");
        
    setCursorLabelName("SRSI"0);
        
    setDefaultBarFgColor(Color.blue0);
        
    setStudyMax(1.1);
        
    setStudyMin(-0.1);
        var 
    0;
        
    fpArray[x] = new FunctionParameter("Length"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(10);
        }
    }

    Smooth23 = new Array();
    var 
    xSRSI null;

    function 
    main(Length) {
    var 
    nBarState getBarState();
    var 
    nSRSI 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    Length == null)    Length 10;
        } 
        if (
    bInit == false) {
            
    xSRSI efsInternal("Calc_SRSI"Length);
            
    bInit true;
        }
        
    nSRSI xSRSI.getValue(0);
        if (
    nSRSI == null) return;
        return 
    nSRSI;
    }

    var 
    bSecondInit false;
    var 
    xValue null;

    function 
    Calc_SRSI(Length){
    var 
    nRes 0;
    var 
    0;
    var    
    CU23 0;
    var    
    CD23 0;
        if (
    bSecondInit == false) {
            
    xValue efsInternal("Calc_Value");
            
    bSecondInit true;
        }
        if (
    xValue.getValue(-Length) == null) return;
        for(
    0Length 1i++){
            if(
    xValue.getValue(-i) > xValue.getValue(-(1)))
                
    CU23 += xValue.getValue(-i) - xValue.getValue(-(1));
            if(
    xValue.getValue(-i) < xValue.getValue(-(1)))
                
    CD23 += xValue.getValue(-(1)) - xValue.getValue(-i);
        }
        if(
    CU23 CD23 != 0)
        
    nRes CU23/(CU23 CD23);
        return 
    nRes;    
    }

    var 
    xClose null;

    function 
    Calc_Value() {
    var 
    nRes 0;
        if (
    xClose == nullxClose close();
        if (
    xClose.getValue(-3) == null) return;
        
    nRes = (xClose.getValue(0) + xClose.getValue(-1) + xClose.getValue(-2) + xClose.getValue(-3) ) / 6
        
    return nRes;

Working...
X