Announcement

Collapse
No announcement yet.

Detrended Price Oscillator

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

  • Detrended Price Oscillator

    File Name: DetrendOsc.efs

    Description:
    Detrended Price Oscillator

    Formula Parameters:
    Length : 14
    Source of Price : Close


    Notes:
    The Detrend Price Osc indicator is similar to a moving average,
    in that it filters out trends in prices to more easily identify
    cycles. The indicator is an attempt to define cycles in a trend
    by drawing a moving average as a horizontal straight line and
    placing prices along the line according to their relation to a
    moving average. It provides a means of identifying underlying
    cycles not apparent when the moving average is viewed within a
    price chart. Cycles of a longer duration than the Length (number
    of bars used to calculate the Detrend Price Osc) are effectively
    filtered or removed by the oscillator.


    Download File:
    DetrendOsc.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:        
        Detrended Price Oscillator
        
    Version:            1.0  04/13/2009

    Formula Parameters:                     Default:
        Length                              14
        Source of Price                     Close

    Notes:
        The Detrend Price Osc indicator is similar to a moving average, 
        in that it filters out trends in prices to more easily identify 
        cycles. The indicator is an attempt to define cycles in a trend 
        by drawing a moving average as a horizontal straight line and 
        placing prices along the line according to their relation to a 
        moving average. It provides a means of identifying underlying 
        cycles not apparent when the moving average is viewed within a 
        price chart. Cycles of a longer duration than the Length (number 
        of bars used to calculate the Detrend Price Osc) are effectively 
        filtered or removed by the oscillator.
    **********************************/
    var fpArray = new Array();
    var 
    bInit false;

    function 
    preMain() {
        
    setStudyTitle("Detrended Price Oscillator"); 
        
    setCursorLabelName("Detrend Osc",0);
        
    setDefaultBarFgColor(Color.red,0);
        
    addBand(0PS_SOLID1Color.blue1);    
        var 
    x=0;
        
    fpArray[x] = new FunctionParameter("nLength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setName("Length");
            
    setLowerLimit(1);
            
    setDefault(14);
        }
        
    fpArray[x] = new FunctionParameter("sPrice"FunctionParameter.STRING);
        
    with(fpArray[x++]){
            
    setName("Source of Price");
            
    addOption("open"); 
            
    addOption("high");
            
    addOption("low");
            
    addOption("close");
            
    addOption("hl2");
            
    addOption("hlc3");
            
    addOption("ohlc4"); 
            
    setDefault("close"); 
        }    
    }

    var 
    xDPO null;

    function 
    main(sPricenLength) {
    var 
    nBarState getBarState();
    var 
    nResult 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    sPrice == nullsPrice "close";        
            if (
    nLength == nullnLength 14;
        }
        if (
    bInit == false) {
            
    xDPO efsInternal("Calc_DPO"nLengthsPrice);
            
    bInit true;
        }
        
    nResult xDPO.getValue(0);
        return 
    nResult;
    }

    var 
    xSMA null;
    var 
    xSource null;
    var 
    bSecondInit false;

    function 
    Calc_DPO(nLengthsPrice) {
    var 
    nRes 0
        
    if (getCurrentBarCount() <= nLength) return;
        if (
    bSecondInit == false) {
            
    xSource = eval(sPrice)();
            
    xSMA sma(nLengthxSource);
            
    bSecondInit true;
        }
        
    nRes xSource.getValue(0) - xSMA.getValue(0);
        return 
    nRes;

Working...
X