Announcement

Collapse
No announcement yet.

Time Series Forecast (TSF)

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

  • Time Series Forecast (TSF)

    File Name: TimeSeriesForecast.efs

    Description:
    Time Series Forecast (TSF)

    Formula Parameters:
    nLength : 5
    nBarPlus : 7


    Notes:
    This technical indicator is based on linear regression analysis.
    The value of TSF for each bar is based on a regression analysis
    of the preceding N bars. N is called the regression period in
    the setup window for TSF. The user specifies a forecast period
    F. F is used to derive a predicted (forecasted) price value F
    periods in the future based on the slope of the regression line
    for the preceding N periods.


    Download File:
    TimeSeriesForecast.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:        
        Time Series Forecast (TSF) 
        
    Version:            1.0  05/12/2009
        
    Formula Parameters:                     Default:
        nLength                             5
        nBarPlus                            7

    Notes:
        This technical indicator is based on linear regression analysis. 
        The value of TSF for each bar is based on a regression analysis 
        of the preceding N bars. N is called the regression period in 
        the setup window for TSF. The user specifies a forecast period 
        F. F is used to derive a predicted (forecasted) price value F 
        periods in the future based on the slope of the regression line 
        for the preceding N periods.

    **********************************/
    var fpArray = new Array();
    var 
    bInit false;

    function 
    preMain() {
        
    setPriceStudy(true);    
        
    setStudyTitle("Time Series Forecast");
        
    setCursorLabelName("TSF");
        var 
    0;
        
    fpArray[x] = new FunctionParameter("nLength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(5);
        }    
        
    fpArray[x] = new FunctionParameter("nBarPlus"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(7);
        }        
    }

    var 
    xTimeSeriesForecast null;

    function 
    main(nLengthnBarPlus) {
    var 
    nBarState getBarState();
    var 
    nTimeSeriesForecast 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    nLength == nullnLength nLength;
            if (
    nBarPlus == nullnLength nBarPlus;
        }    
        if (
    bInit == false) {
            
    xTimeSeriesForecast efsInternal("Calc_TSF"nLengthnBarPlus);
            
    bInit true;
        }
        
    nTimeSeriesForecast xTimeSeriesForecast.getValue(0);
        if (
    nTimeSeriesForecast == null) return;
        return 
    nTimeSeriesForecast;
    }

    var 
    xClose null;
    var 
    bSecondInit false;

    function 
    Calc_TSF(nLengthnBarPlus) {
    var 
    SL 0;
    var 
    TSF 0;
    var 
    SumBars nLength * (nLength 1) * 0.5;
    var 
    SumSqrBars = (nLength 1) * nLength * (nLength 1) / 6;
    var 
    Sum1 0;
    var 
    SumY 0;
    var 
    0;
    var 
    Slope 0;
    var 
    Intercept 0;
        if (
    getCurrentBarCount() <= nLength) return;
        if(
    bSecondInit == false){
            
    xClose close();
            
    bSecondInit true;
        }
        for (
    0nLengthi++) {
            
    Sum1 += xClose.getValue(-i);
            
    SumY += xClose.getValue(-i);
        }
        var 
    Sum2 SumBars SumY;
        var 
    Num1 nLength Sum1 Sum2;
        var 
    Num2 SumBars SumBars nLength SumSqrBars;
        if (
    Num2 == 0) return;
        
    Slope Num1 Num2;
        
    SL Num1 Num2;
        
    Intercept = (SumY Slope SumBars) / nLength;
        
    TSF Intercept Slope * (nLength nBarPlus);     
        return 
    TSF;

Working...
X