Announcement

Collapse
No announcement yet.

Moving Linear Regression by. Dr. Mel Raiman

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

  • Moving Linear Regression by. Dr. Mel Raiman

    File Name: mr_movlinreg2.efs

    Description:
    Moving Linear Regression by. Dr. Mel Raiman

    Formula Parameters:
    LR Periods : 3
    LR1 Channels StDev : 1
    LR2 Channels StDev : 2
    MA Periods : 4
    MA Price Source : Close
    MA Type : Exponential
    LR Thickness : 2
    LR Color : Lime
    MA Color : Red


    Notes:
    Version 2.0 - Added second set of regression lines at +/-
    2 standard deviations.


    Download File:
    mr_movlinreg2.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:        
        Moving Linear Regression by. Dr. Mel Raiman    
        
    Version:            3.0  04/16/2009

    Formula Parameters:                 Defaults:
        LR Periods                      3
        LR1 Channels StDev              1
        LR2 Channels StDev              2
        MA Periods                      4
        MA Price Source                 Close
        MA Type                         Exponential
        LR Thickness                    2
        LR Color                        Lime
        MA Color                        Red

    Notes:
      Version 2.0 - Added second set of regression lines at +/- 
      2 standard deviations.
     
    *****************************************************************/
    var fpArray = new Array();
    var 
    bInit true;

    function 
    preMain() {
        
    setPriceStudy(true);
        
    setStudyTitle("Moving LR 2");
        
    setCursorLabelName("Mov LR"0);
        
    setCursorLabelName("MA"1);
        
    setDefaultBarFgColor(Color.lime0);
        
    setDefaultBarFgColor(Color.red1);
        
    setDefaultBarThickness(10);
        
    setDefaultBarThickness(11);
        
    setShowTitleParameters(false);

        var 
    0;
        
    fpArray[x] = new FunctionParameter("nLRlen"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setName("LR Periods");
            
    setLowerLimit(1);
            
    setDefault(3);
        }
        
    fpArray[x] = new FunctionParameter("nLRstdev1"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setName("LR1 Channels StDev");
            
    setLowerLimit(0);
            
    setDefault(1);
        }
        
    fpArray[x] = new FunctionParameter("nLRstdev2"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setName("LR2 Channels StDev");
            
    setLowerLimit(0);
            
    setDefault(2);
        }
        
    fpArray[x] = new FunctionParameter("nMAlen"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setName("MA Periods");
            
    setLowerLimit(2);
            
    setDefault(4);
        }
        
    fpArray[x] = new FunctionParameter("sMAPriceSource"FunctionParameter.STRING);
        
    with(fpArray[x++]) {
            
    setName("MA Price Source");
            
    addOption("open");
            
    addOption("high");
            
    addOption("low");
            
    addOption("close");
            
    addOption("hl2");
            
    addOption("hlc3"); 
            
    addOption("ohlc4");
            
    setDefault("close");
        }
        
    fpArray[x] = new FunctionParameter("sMAType"FunctionParameter.STRING);
        
    with(fpArray[x++]) {
            
    setName("MA Type");
            
    addOption("sma");
            
    addOption("ema");
            
    addOption("wma");
            
    addOption("vwma");
            
    setDefault("ema");
        }
        
    fpArray[x] = new FunctionParameter("nLRThickness"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setName("LR Thickness");
            
    setLowerLimit(1);
            
    setDefault(2);
        }
        
    fpArray[x] = new FunctionParameter("nMAThickness"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setName("MA Thickness");
            
    setLowerLimit(1);
            
    setDefault(2);
        }
        
    fpArray[x] = new FunctionParameter("nLRColor"FunctionParameter.COLOR);
        
    with(fpArray[x++]) {
            
    setName("LR Color");
            
    setDefault(Color.lime);
        }
        
    fpArray[x] = new FunctionParameter("nMAColor"FunctionParameter.COLOR);
        
    with(fpArray[x++]) {
            
    setName("MA Color");
            
    setDefault(Color.red);
        }
    }

    var 
    xMA null;
    var 
    xLRvaluesIn_A null;
    var 
    xLRvaluesIn_B null;
    var 
    xLRvalues23_A null;
    var 
    xLRvalues23_B null;
    var 
    xStDev null;

    function 
    main(nLRlennLRstdev1nLRstdev2nMAlensMAPriceSourcesMAType
                
    nLRThicknessnMAThicknessnLRColornMAColor) {
        var 
    nBarState getBarState();
        var 
    vStDev null;
        var 
    0;
        var 
    0;
        var 
    A2 0;
        var 
    B2 0;
        var 
    vMA 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    nLRlen == nullnLRlen 10;
            if (
    nLRstdev1 == nullnLRstdev1 1;
            if (
    nLRstdev2 == nullnLRstdev2 2;
            if (
    nMAlen == nullnMAlen 4;
            if (
    sMAPriceSource == nullsMAPriceSource "close";
            if (
    sMAType == nullsMAType "ema";
            if (
    nLRThickness == nullnLRThickness 2;
            if (
    nMAThickness == nullnMAThickness 2;
            if (
    nLRColor == nullnLRColor Color.lime;
            if (
    nMAColor == nullnMAColor Color.red;
        }

        if (
    bInit == true) {
            
    xMA = eval(sMAType)(nMAlen, eval(sMAPriceSource)());
            
    xLRvaluesIn_A efsInternal("LinReg"nLRlen);
            
    xLRvaluesIn_B getSeries(xLRvaluesIn_A1);
            
    xLRvalues23_A efsInternal("LinReg"23);
            
    xLRvalues23_B getSeries(xLRvalues23_A1);
            
    xStDev efsInternal("StDev"23);
            
    setDefaultBarThickness(nLRThickness0);
            
    setDefaultBarThickness(nMAThickness1);
            
    setDefaultBarFgColor(nLRColor0);
            
    setDefaultBarFgColor(nMAColor1);
            
    bInit false;
        }

        
    vMA xMA.getValue(0);
        
    xLRvaluesIn_A.getValue(0);
        
    xLRvaluesIn_B.getValue(0);
        
    vStDev xStDev.getValue(0);
        
    A2 xLRvalues23_A.getValue(0);
        
    B2 xLRvalues23_B.getValue(0);

        if (
    vMA == null || == null || B2 == null) return;
        
    // Basis
        
    drawLineRelative(0B2, -(23 1), (A2 * (23 1)) + B2
            
    PS_SOLID2Color.cyan"Basis");
        
    // LR1
        
    drawLineRelative(0B2 + (nLRstdev1 vStDev), -(23 1), (A2 * (23 1)) + B2 + (nLRstdev1 vStDev), 
            
    PS_SOLID2Color.cyan"Upr1");
        
    drawLineRelative(0B2 - (nLRstdev1 vStDev), -(23 1), (A2 * (23 1)) + B2 - (nLRstdev1 vStDev), 
            
    PS_SOLID2Color.cyan"Lwr1");
        
    // LR2
        
    drawLineRelative(0B2 + (nLRstdev2 vStDev), -(23 1), (A2 * (23 1)) + B2 + (nLRstdev2 vStDev), 
            
    PS_SOLID2Color.RGB(0140140), "Upr2");
        
    drawLineRelative(0B2 - (nLRstdev2 vStDev), -(23 1), (A2 * (23 1)) + B2 - (nLRstdev2 vStDev), 
            
    PS_SOLID2Color.RGB(0140140), "Lwr2");

        return new Array(
    BvMA);
    }

    var 
    xSMAy null;
    var 
    bSecondInit false;

    function 
    LinReg(nLRlen) {
        var 
    xSum 0;
        var 
    yAvg 0;
        if (
    bSecondInit == false) {
            
    xSMAy sma(nLRlen);
            
    bSecondInit true;
        }
        
    yAvg xSMAy.getValue(0);
        if (
    yAvg == null) return;
        var 
    xAvg = ((+ (nLRlen 1)) * nLRlen 2) / nLRlen;
        var 
    aSum1 0;
        var 
    aSum2 0;
        
    0;
        for (
    0nLRlen; ++i) {
            
    aSum1 += (xAvg) * (close( - i) - yAvg);
            
    aSum2 += (xAvg) * (xAvg);
        }
        var 
    = (aSum1 aSum2);
        var 
    yAvg - (xAvg);
        return new Array(
    AB);
    }

    function 
    StDev(nLength) {
        var 
    sumX 0;
        var 
    sumX2 0;
        var 
    nClose close( - nLength);
        if (
    nClose == null) return;
        for (
    0nLength; ++i) {
            
    nClose close( - i);
            
    sumX += nClose;
            
    sumX2 += (nClose nClose);
        }
        var 
    meanX = (sumX nLength);
        var 
    stdev Math.sqrt((sumX2 nLength) - (meanX meanX));
        return 
    stdev;

Working...
X