Announcement

Collapse
No announcement yet.

LSMA Channel

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

  • LSMA Channel

    File Name: LSMA_Channel.efs

    Description:
    Calculates the Least Square Moving Average (LSMA)
    off the high and also off the low to create a channel.

    Formula Parameters:
    HiLength - Defines the length of the LSMA off the High. Default is 25.
    LoLength - Defines the length of the LSMA off the Low. Default is 25.
    HiOffset - Defines how offset the LSMA(High) is. Default is 0.
    LoOffset - Defines how offset the LSMA(Low) is. Default is 0.
    HiColor - Defines the color of the LSMA(High). Default is blue.
    LoColor - Defines the color of the LSMA(Low). Default is red.

    Download File:
    LSMA_Channel.efs



    EFS Code:

    PHP Code:
    /*************************
    Copyright © eSignal, 2003
    **************************
    Description: Calculates the Least Square Moving Average (LSMA)
    off the high and also off the low to create a channel.

    Version Control:

    */



    function preMain()
    {
        
    setPriceStudy(true);    
        
    setStudyTitle("LSMA Channel");
        
    setCursorLabelName("LSMA Hi",0);
        
    setCursorLabelName("LSMA Lo",1);
        
    setDefaultBarThickness(2,0);
        
    setDefaultBarThickness(2,1);
        
        var 
    fp1 = new FunctionParameter("HiLength"FunctionParameter.NUMBER);
        
    fp1.setName("Length of LSMA(High)");
        
    fp1.setDefault(25);
        
        var 
    fp2 = new FunctionParameter("LoLength"FunctionParameter.NUMBER);
        
    fp2.setName("Length of LSMA(Low)");
        
    fp2.setDefault(25);
        
        var 
    fp3 = new FunctionParameter("HiOffset"FunctionParameter.NUMBER);
        
    fp3.setName("Offset of LSMA(High)");
        
    fp3.setDefault(0);
        
        var 
    fp4 = new FunctionParameter("LoOffset"FunctionParameter.NUMBER);
        
    fp4.setName("Offset of LSMA(Low)");
        
    fp4.setDefault(0);
        
        var 
    fp5 = new FunctionParameter("HiColor"FunctionParameter.COLOR);
        
    fp5.setName("Color of LSMA(High)");
        
    fp5.setDefault(Color.blue);
        
        var 
    fp6 = new FunctionParameter("LoColor"FunctionParameter.COLOR);
        
    fp6.setName("Color of LSMA(Low)");
        
    fp6.setDefault(Color.red);
    }

    var 
    aHigh null;
    var 
    aLow null;
    var 
    aHiLSMA null;
    var 
    aLoLSMA null;
    var 
    vInit false;
    var 
    LSMA_Array = new Array();

    function 
    main(HiLength,LoLength,HiOffset,LoOffset,HiColor,LoColor)
    {

        if (
    vInit == false) {
            
    aHigh = new Array(HiLength);
            
    aLow = new Array(LoLength);
            
    aHiLSMA = new Array(HiLength);
            
    aLoLSMA = new Array(LoLength);
            
    setDefaultBarFgColor(HiColor,0);
            
    setDefaultBarFgColor(LoColor,1);
            
    preMain();      
            
    vInit true;
        }
        
        
    vHigh high();
        
    vLow low();
        
        if (
    vHigh == null) return;
        if (
    vLow == null) return;
        
        if (
    getBarState() == BARSTATE_NEWBAR) {
            if (
    aHigh[HiLength-1] != nullaHigh.pop();
            
    aHigh.unshift(vHigh);
            if (
    aLow[LoLength-1] != nullaLow.pop();
            
    aLow.unshift(vLow);
        }
      
        
    aHigh[0] = vHigh;
        
    aLow[0] = vLow;
        
        if (
    aHigh[HiLength-1] == null || aLow[LoLength-1] == null) return;
        
        
    // get LSMA values and assign to arrays
        
    var vHiLSMA getLSMA(aHighHiLength);
        var 
    vLoLSMA getLSMA(aLowLoLength);
        
        if (
    getBarState() == BARSTATE_NEWBAR) {
            if (
    aHiLSMA[HiLength-1] != nullaHiLSMA.pop();
                
    aHiLSMA.unshift(vHiLSMA);
            if (
    aLoLSMA[LoLength-1] != nullaLoLSMA.pop();
                
    aLoLSMA.unshift(vLoLSMA);
        }
        
        
    aHiLSMA[0] = vHiLSMA;
        
    aLoLSMA[0] = vLoLSMA;

        return new Array (
    aHiLSMA[HiOffset], aLoLSMA[LoOffset]);
    }

    // ------------------------------------
    // Get a LSMA value
    function getLSMA(aPricenLength) {
        var 
    Num1 0.0;
        var 
    Num2 0.0;
        var 
    SumBars nLength * (nLength 1) * 0.5;
        var 
    SumSqrBars = (nLength 1) * nLength * (nLength 1) / 6;
        var 
    SumY 0.0;
        var 
    Sum1 0.0;
        var 
    Sum2 0.0;
        var 
    Slope 0.0;
        var 
    Intercept 0.0;
        
        for (
    0nLength; ++i) {
            
    SumY += aPrice[i];
            
    Sum1 += aPrice[i];
        }
        
    Sum2 SumBars SumY;
        
    Num1 nLength Sum1 Sum2;
        
    Num2 SumBars SumBars nLength SumSqrBars;
        if (
    Num2 != 0Slope Num1 Num2;
        
    Intercept = (SumY Slope SumBars) / nLength;
        var 
    LinearRegValue Intercept Slope * (nLength 1);

        return 
    LinearRegValue;

    Regards,
    Jay F.
    Product Manager
    _____________________________________
    Have a suggestion to improve our products?
    Click Support --> Request a Feature in eSignal 11
Working...
X