Announcement

Collapse
No announcement yet.

The Center Of Gravity

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

  • The Center Of Gravity

    File Name: Gravity.efs

    Description:
    The Center Of Gravity

    Formula Parameters:
    Length : 10

    Notes:
    This indicator identifies every major turning point without much lag.
    This indicator is computed in a similiar way to the Ehlers filter.
    The position of the balance point is the summation of the product of
    position within the observation window multiplied by the price at that
    position divided by the summation of prices across the window. The formula is:
    CG = SUM(x+1) * Price(i) / SUMPrice(i)
    In this formula "1" is added to the position count because it starts with
    the most recent price at zero, and multiplying the most recent price by that
    position count would remove it from the computation.



    Download File:
    Gravity.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:        
        The Center Of Gravity
        
    Version:            1.0  05/05/2009
        
    Formula Parameters:                     Default:
        Length                              10

    Notes:
        This indicator identifies every major turning point without much lag. 
        This indicator is computed in a similiar way to the Ehlers filter. 
        The position of the balance point is the summation of the product of 
        position within the observation window multiplied by the price at that 
        position divided by the summation of prices across the window. The formula is:
        CG = SUM(x+1) * Price(i) / SUMPrice(i)
        In this formula "1" is added to the position count because it starts with 
        the most recent price at zero, and multiplying the most recent price by that 
        position count would remove it from the computation. 
    **********************************/
    var fpArray = new Array();
    var 
    bInit false;

    function 
    preMain() {
        
    setStudyTitle("Center of Gravity Oscillator");
        
    setCursorLabelName("Gravity"0);    
        
    setCursorLabelName("Temp"1);        
        
    setPriceStudy(false);
        
    setDefaultBarFgColor(Color.red1);
        
    setDefaultBarFgColor(Color.blue0);
        var 
    0;
        
    fpArray[x] = new FunctionParameter("Length"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(10);
        }
    }

    var 
    xGravity null;

    function 
    main(Length) {
    var 
    nBarState getBarState();
    var 
    nGravity 0;
    var 
    nTemp 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if(
    Length == nullLength 10;
        }    
        if (
    bInit == false) {
            
    xGravity efsInternal("Calc_Gravity"Length);
            
    bInit true;
        }
        
    nGravity xGravity.getValue(0);
        
    nTemp =  xGravity.getValue(-1);
        if (
    nTemp == null) return;
        return new Array(
    nGravitynTemp);
    }

    var 
    bSecondInit false;
    var 
    xHL2 null;

    function 
    Calc_Gravity(Length) {
    var 
    nRes 0;
    var 
    0;
    var 
    nHL2 0;
    var 
    num 0;
    var 
    denom 0;
        if (
    bSecondInit == false) {
            
    xHL2 hl2();
            
    bSecondInit true;
        }
        if (
    xHL2.getValue(-Length) == null) return;
        for(
    0Lengthi++) {
            
    nHL2 xHL2.getValue(-i);
            
    num += (i) * nHL2;
            
    denom += nHL2;
        }
        if(
    denom != 0)     nRes = - num denom;
        return 
    nRes;

Working...
X