2007 Mar: Trading Systems and Fractals

ICE Data Services -

FDI.efs  

EFSLibrary - Discussion Board  

File Name: FDI.efs

 

Description:
This study is based on the March 2007 article, Trading Systems and Fractals, by Radha Panini.

 

Formula Parameters:

  • Periods: 100

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

 

Download File:
FDI.efs



EFS Code:

/***************************************
Provided By : eSignal (c) Copyright 2007
Description:  Trading Systems and Fractals 
              by Radha Panini

Version 1.0  2/22/2007   

Notes:
* March 2007 Issue of Stocks and Commodities Magazine
* Study requires version 8.0 or later.
* Additional info used for calculating the Hurst exponent using the
    Rescaled Range Analysis technique can be found at the following
    URLs:
        http://www.complexity.org.au/ci/vol05/sevcik/sevcik.html

Formula Parameters:                     Default:
Periods                                 100
*****************************************/


function preMain() {
    setStudyTitle("Fractal Dimension Index ");
    setDefaultBarFgColor(Color.red);
    setDefaultBarThickness(2);
    setCursorLabelName("FDI");
    addBand(1.5, PS_SOLID, 2, Color.blue, "middle");
    
    var fp1 = new FunctionParameter("nPeriods", FunctionParameter.NUMBER);
        fp1.setName("Periods");
        fp1.setLowerLimit(1);
        fp1.setDefault(100);
}

// Global Variables
var bVersion  = null;    // Version flag
var bInit     = false;   // Initialization flag

var xMax = null;
var xMin = null;
var nNum = 0;
var nNum_1 = 0;

function main(nPeriods) {
    if (bVersion == null) bVersion = verify();
    if (bVersion == false) return;    

    //Initialization
    if (bInit == false) {
        xMax = upperDonchian(nPeriods, close());
        xMin = lowerDonchian(nPeriods, close());
        bInit = true;
    }
    
    var nMax = xMax.getValue(0);
    var nMin = xMin.getValue(0);
    if (nMax == null || nMin == null) return;
    
    var nState = getBarState();
    var nFDI = 0;  
    var nLength = 0;
    
    nNum_1 = 0;
    
    for (var i = 0; i < nPeriods; i++) {
        if (nMax - nMin > 0) {
            nNum = (close(-i) - nMin) / (nMax - nMin);
            if (i > 0) {
                nLength += Math.sqrt(Math.pow((nNum - nNum_1), 2) + (1/Math.pow(nPeriods ,2)));
                nNum_1 = nNum;
            }
        }
    }
    
    if (nLength > 0) {
        nFDI = 1 + (Math.log(nLength) + Math.log(2)) / Math.log(2*nPeriods);
    }
    
    return nFDI;
}


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