Announcement

Collapse
No announcement yet.

Linear-Square Regression Channel

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

  • Linear-Square Regression Channel

    File Name: LinearSquareRegrChannel.efs

    Description:
    Linear-Square Regression Channel

    Formula Parameters:
    Degree : 1
    kstd : 2
    Bars : 48
    Shift : 0
    Line Color 1 : Green
    Line Color 2 : Green
    Line Color 3 : Red
    Line Color 4 : Red


    Notes:


    Download File:
    LinearSquareRegrChannel.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:        
        Linear-Square Regression Channel
        
    Version:            1.0  06/23/2009
     
    Formula Parameters:                     Default:
        Degree                              1
        kstd                                2
        Bars                                48
        Shift                               0
        Line Color 1                        Green
        Line Color 2                        Green
        Line Color 3                        Red
        Line Color 4                        Red
        
    Notes:
        
    **********************************/
    var fpArray = new Array();
    var 
    bInit false;
    function 
    preMain() {
        
    setPriceStudy(true);
        
    setShowCursorLabel(false);
        
    setShowTitleParameters(false);
        
    setStudyTitle("Linear-Square Regression Channel");
        var 
    0;
        
    fpArray[x] = new FunctionParameter("Degree"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0);
            
    setUpperLimit(10);
            
    setDefault(1);
        }
        
    fpArray[x] = new FunctionParameter("kstd"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(2);
        }
        
    fpArray[x] = new FunctionParameter("Bars"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(48);
        }
        
    fpArray[x] = new FunctionParameter("Shift"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0);
            
    setDefault(0);
        }
        
    fpArray[x] = new FunctionParameter("Line1"FunctionParameter.COLOR);
        
    with(fpArray[x++]) {
            
    setName("Line Color 1");
            
    setDefault(Color.green);
        }
        
    fpArray[x] = new FunctionParameter("Line2"FunctionParameter.COLOR);
        
    with(fpArray[x++]) {
            
    setName("Line Color 2");
            
    setDefault(Color.green);
        }
        
    fpArray[x] = new FunctionParameter("Line3"FunctionParameter.COLOR);
        
    with(fpArray[x++]) {
            
    setName("Line Color 3");
            
    setDefault(Color.red);
        }
        
    fpArray[x] = new FunctionParameter("Line4"FunctionParameter.COLOR);
        
    with(fpArray[x++]) {
            
    setName("Line Color 4");
            
    setDefault(Color.red);
        }
    }
    var 
    fxl = new Array();
    var 
    fxh = new Array();
    var 
    sql = new Array();
    var 
    sqh = new Array();
    var 
    ai = new Array();
        
    ai[0] = new Array();
        
    ai[1] = new Array();
        
    ai[2] = new Array();
        
    ai[3] = new Array();
        
    ai[4] = new Array();
        
    ai[5] = new Array();
        
    ai[6] = new Array();
        
    ai[7] = new Array();
        
    ai[8] = new Array();
        
    ai[9] = new Array();
        
    ai[10] = new Array();
        
    ai[11] = new Array();
    var 
    = new Array();
    var 
    = new Array();
    var 
    = new Array();
    var 
    = new Array();
    var 
    sx = new Array();
    var 
    xHigh null;
    var 
    xLow null;

    function 
    main(DegreekstdBarsShiftLine1Line2Line3Line4) {
    var 
    nBarState getBarState();
    var 
    i0 0;
    var 
    sumsumlsumh;
    var 
    ippnf;
    var 
    qqmmtt;
    var 
    iijjkkllnn;
    var 
    mi 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    Degree == nullDegree 1;
            if (
    kstd == nullkstd 2;
            if (
    Bars == nullBars 48;
            if (
    Shift == nullShift 0;
            if (
    Line1 == nullLine1 Color.green;
            if (
    Line2 == nullLine2 Color.green;
            if (
    Line3 == nullLine3 Color.red;
            if (
    Line4 == nullLine4 Color.red;
        }
        if (
    bInit == false) {
            
    xHigh high();
            
    xLow low();
            
    bInit true;
        }
        if (
    Degree 10) return;
        var 
    ip Bars;
        var 
    ip;
        
    sx[1] = 1;
        
    nn Degree 1;
        for (
    mi 1mi <= nn 2mi++) {
            
    sum 0;
            for (
    i0<= i0 pn++) {
                
    sum += Math.pow(nmi);
            }
            
    sx[mi 1] = sum;
        }
        for (
    mi 1mi <= nnmi++) {
            
    suml 0.00000;
            
    sumh 0.00000;
            for (
    i0<= i0 pn++) {
                if (
    mi == 1) {
                    
    suml += xLow.getValue( - n);
                    
    sumh += xHigh.getValue( - n);
                } else {
                    
    suml += xLow.getValue( - n) * Math.pow(nmi 1);
                    
    sumh += xHigh.getValue( - n) * Math.pow(nmi 1);
                }
            }
            
    b[mi] = suml;
            
    c[mi] = sumh;
        }
        for (
    jj 1jj <= nnjj++) {
            for (
    ii 1ii <= nnii++) {
                
    kk ii jj 1;
                
    ai[ii][jj] = sx[kk];
            }
        }
        for (
    kk 1kk <= nn 1kk++) {
            
    ll 0;
            
    mm 0;
            for (
    ii kkii <= nnii++) {
                if (
    Math.abs(ai[ii][kk]) > mm) {
                    
    mm Math.abs(ai[ii][kk]);
                    
    ll ii;
                }
            }
            if (
    ll == 0) return (0);
            if (
    ll != kk) {
                for (
    jj 1jj <= nnjj++) {
                    
    tt ai[kk][jj];
                    
    ai[kk][jj] = ai[ll][jj];
                    
    ai[ll][jj] = tt;
                }
                
    tt b[kk];
                
    b[kk] = b[ll];
                
    b[ll] = tt;
                
    tt c[kk];
                
    c[kk] = c[ll];
                
    c[ll] = tt;
            }
            for (
    ii kk 1ii <= nnii++) {
                
    qq ai[ii][kk] / ai[kk][kk];
                for (
    jj 1jj <= nnjj++) {
                    if (
    jj == kk) {
                        
    ai[ii][jj] = 0;
                    } else {
                        
    ai[ii][jj] = ai[ii][jj] - qq ai[kk][jj];
                    }
                }
                
    b[ii] = b[ii] - qq b[kk];
                
    c[ii] = c[ii] - qq c[kk];
            }
        }
        
    x[nn] = b[nn] / ai[nn][nn];
        
    y[nn] = c[nn] / ai[nn][nn];
        for (
    ii nn 1ii >= 1ii--) {
            
    mm 0;
            
    tt 0;
            for (
    jj 1jj <= nn iijj++) {
                
    mm mm ai[ii][ii jj] * x[ii jj];
                
    x[ii] = (ai[ii][ii]) * (b[ii] - mm);
                
    tt tt ai[ii][ii jj] * y[ii jj];
                
    y[ii] = (ai[ii][ii]) * (c[ii] - tt);
            }
        }
        for (
    i0<= i0 pn++) {
            
    suml 0;
            
    sumh 0;
            for (
    kk 1kk <= Degreekk++) {
                
    suml += x[kk 1] * Math.pow(nkk);
                
    sumh += y[kk 1] * Math.pow(nkk);
            }
            
    fxl[n] = x[1] + suml;
            
    fxh[n] = y[1] + sumh;
        }
        
    suml 0;
        
    sumh 0;
        for (
    i0<= i0 pn++) {
            
    suml += Math.pow(xLow.getValue( - n) - fxl[n], 2);
            
    sumh += Math.pow(xHigh.getValue( - n) - fxh[n], 2);
        }
        
    suml Math.sqrt(suml / (1)) * kstd;
        
    sumh Math.sqrt(sumh / (1)) * kstd;
        for (
    i0<= i0 pn++) {
            
    sqh[n] = fxh[n] + sumh;
            
    sql[n] = fxl[n] - suml;
            if (
    0) {
                
    drawLineRelative( - Shiftsqh[n], -Shift 1sqh[1], PS_SOLID2Line1"Line1" n);
                
    drawLineRelative( - Shiftsql[n], -Shift 1sql[1], PS_SOLID2Line2"Line2" n);
                
    drawLineRelative( - Shiftfxh[n], -Shift 1fxh[1], PS_SOLID2Line3"Line3" n);
                
    drawLineRelative( - Shiftfxl[n], -Shift 1fxl[1], PS_SOLID2Line4"Line4" n);
            }
        }
        return;

Working...
X