Announcement

Collapse
No announcement yet.

2010 Jun: Fractal Dimension Indicator

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

  • 2010 Jun: Fractal Dimension Indicator

    File Name: FractalDimension.efs

    Description:
    Fractal Dimension Indicator

    Formula Parameters:
    N (must be an even number) : 30
    Price Source : hl2
    Band 1 : 1.6
    Band 2 : 1.4


    Notes:
    The related article is copyrighted material. If you are not a subscriber
    of Stocks & Commodities, please visit www.traders.com.


    Download File:
    FractalDimension.efs



    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
        eSignal (Copyright c eSignal), a division of Interactive Data 
        Corporation. 2010. 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:        
        Fractal Dimension Indicator
        
    Version:            1.00  04/07/2010

    Formula Parameters:                     Default:
        N (must be an even number)          30
        Price Source                        hl2
        Band 1                              1.6
        Band 2                              1.4
        
    Notes:
        The related article is copyrighted material. If you are not a subscriber
        of Stocks & Commodities, please visit _www.traders.com.

    **********************************/
    var fpArray = new Array();
    var 
    bInit false;
    var 
    bVersion null;

    function 
    preMain() {
        
    setPriceStudy(false);
        
    setShowCursorLabel(true);
        
    setShowTitleParameters(false);
        
    setStudyTitle("Fractal Dimension");
        
    setCursorLabelName("Fractal Dimension"0);
        
    setDefaultBarFgColor(Color.red0);
        
    setPlotType(PLOTTYPE_LINE0);
        
    setDefaultBarThickness(20);
        var 
    x=0;
        
    fpArray[x] = new FunctionParameter("N"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("N (must be an even number)");
            
    setLowerLimit(1);        
            
    setDefault(30);
        }    
        
    fpArray[x] = new FunctionParameter("Band1"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Band 1");
            
    setDefault(1.6);
        }    
        
    fpArray[x] = new FunctionParameter("Band2"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Band 2");
            
    setDefault(1.4);
        }    
        
    fpArray[x] = new FunctionParameter("PriceSource"FunctionParameter.STRING);
        
    with(fpArray[x++]){
            
    setName("Price Source");
            
    addOption("open"); 
            
    addOption("high");
            
    addOption("low");
            
    addOption("close");
            
    addOption("hl2");
            
    addOption("hlc3");
            
    addOption("ohlc4"); 
            
    setDefault("hl2"); 
        }    
    }

    var 
    xFractalDimension null;

    function 
    main(PriceSourceNBand1 ,Band2) {
    var 
    nBarState getBarState();
    var 
    nFractalDimension 0;
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;   
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    == null30;
            if (
    PriceSource == nullPriceSource "hl2";
        }    
        if (!
    bInit) { 
            
    xFractalDimension efsInternal("CalcFractalDimension"PriceSourceN);
            
    addBand(Band1PS_SOLID1Color.blue"1.6");
            
    addBand(Band2PS_SOLID1Color.blue"1.4");
            
    bInit true
        }
        
    nFractalDimension xFractalDimension.getValue(0);
        if (
    nFractalDimension == null) return;
        return 
    nFractalDimension;
    }

    var 
    bSecondInit false;
    var 
    xSmooth null;
    var 
    xSmoothH null;
    var 
    xSmoothL null;
    var 
    xHH_N2 null;
    var 
    xLL_N2 null;
    var 
    aRatio = new Array(20); 

    function 
    CalcFractalDimension(PriceSourceN) {
    var 
    nBarState =  getBarState();
    var 
    N1 0;
    var 
    N2 0;
    var 
    N3 0;
    var 
    SmoothH 0;
    var 
    SmoothL 0;
    var 
    HH_N2 0;
    var 
    LL_N2 0;
    var 
    nRef ref(-1);
    var 
    nAverage 0;
    var 
    0;
        if (!
    bSecondInit) {
            
    xSmooth efsInternal("CalcSmooth"PriceSource);
            
    xSmoothH upperDonchian(NxSmooth);
            
    xSmoothL lowerDonchian(NxSmooth);
            
    xHH_N2 upperDonchian(1xSmooth);
            
    xLL_N2 lowerDonchian(1xSmooth);
            for (
    20>= 0i--) {
                
    aRatio[i] = 0;
            }
            
    bSecondInit true;
        }
        if (
    xHH_N2.getValue(-20) == null) return;
        
    SmoothH xSmoothH.getValue(0);
        
    SmoothL xSmoothL.getValue(0);
        
    N3 = (SmoothH SmoothL) / N;
        
    HH_N2 xHH_N2.getValue(0);
        
    LL_N2 xLL_N2.getValue(0);
        
    N1 = (HH_N2 LL_N2) / (2);
        
    HH_N2 xHH_N2.getValue(-(2));
        
    LL_N2 xLL_N2.getValue(-(2));
        
    N2 = (HH_N2 LL_N2)/(2);
        if (
    nBarState == BARSTATE_NEWBAR) {
            for (
    200i--) {
                
    aRatio[i] = aRatio[1];
            }
        }    
        if (
    N1 && N2 && N3 0) {
            
    aRatio[0] = 0.5 * ((Math.log(N1 N2) - Math.log(N3)) / Math.log(2) + nRef);
        }    
        for (
    020i++) {
            
    nAverage nAverage aRatio[i];
        }
        
    nAverage nAverage 20;
        return 
    nAverage;
    }

    var 
    bCalcSmoothInit null;
    var 
    xPriceSource null;

    function 
    CalcSmooth(PriceSource) {
    var 
    nRes 0;
        if (!
    bCalcSmoothInit) {
            
    xPriceSource = eval(PriceSource)();
            
    bCalcSmoothInit true;
        }    
        if (
    xPriceSource.getValue(-3) == null) return;
        
    nRes = (xPriceSource.getValue(0) + xPriceSource.getValue(-1) + 
                
    xPriceSource.getValue(-2) + xPriceSource.getValue(-3)) / 6;
        return 
    nRes;
    }

    function 
    verify() {
        var 
    false;
        if (
    getBuildNumber() < 779) {
            
    drawTextAbsolute(535"This study requires version 8.0 or later."
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"error");
            
    drawTextAbsolute(520"Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp"
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"upgrade");
            return 
    b;
        } else {
            
    true;
        }
        return 
    b;

Working...
X