Trend Direction Index (TDI)

ICE Data Services -

TDI.efs  
EFSLibrary - Discussion Board  

File Name: TDI.efs

Description:
TDI (Trend Direction Index)

Formula Parameters:

  • Period : 12

Notes:

The Trend Detection Index (TDI) was introduced by M. H. Pee. TDI is used to detect when a trend has begun and when it has come to an end. The TDI can be used as a stand-alone indicator or combined with others; it will perform well in detecting the beginning of trends. TDI should be used in conjunction with protective stops as well as trailing stops. These stops are required to protect against large losses when the indicator generates a losing trade. The TDI can trade a diverse portfolio of markets profitably over many years, using the same parameters throughout.
To calculate the 20-day trend detection index, first find the value of the momentum indicator. After the market closes, calculate today's 20-day momentum by subtracting the close 20 days ago from that of today. Next, find the 20-day absolute momentum, which is defined as the absolute value of today's 20-day momentum.
More details can be found in the formula section above.
The trend detection index will signal a trend if it shows a positive value and a consolidation if it shows a negative value. As a trend-follower, the position should be entered in the direction of the trend when the TDI is positive. To determine the current direction of the trend, the direction indicator can be used, which is defined as the sum of the 20-day momentum of the last 20 days. An uptrend is signaled by a positive
direction indicator value, whereas a downtrend is signaled by a negative value. Basically, it comes down to this: Enter long tomorrow at the open if both the TDI and direction indicator are positive after today's close or enter short at the open if the TDI is positive and the direction indicator is negative.

Download File:
TDI.efs


EFS 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:        
    TDI (Trend Direction Index)
    
Version:            1.0  05/19/2009
     
Formula Parameters:                     Default:
    Period                              12
        
Notes:
    The Trend Detection Index (TDI) was introduced by M. H. Pee. TDI is used 
    to detect when a trend has begun and when it has come to an end. The TDI 
    can be used as a stand-alone indicator or combined with others; it will 
    perform well in detecting the beginning of trends. TDI should be used in 
    conjunction with protective stops as well as trailing stops. These stops 
    are required to protect against large losses when the indicator generates 
    a losing trade. The TDI can trade a diverse portfolio of markets profitably 
    over many years, using the same parameters throughout.
    To calculate the 20-day trend detection index, first find the value of the 
    momentum indicator. After the market closes, calculate today's 20-day momentum 
    by subtracting the close 20 days ago from that of today. Next, find the 20-day 
    absolute momentum, which is defined as the absolute value of today's 20-day momentum. 
    More details can be found in the formula section above.
    The trend detection index will signal a trend if it shows a positive value and a 
    consolidation if it shows a negative value. As a trend-follower, the position should 
    be entered in the direction of the trend when the TDI is positive. To determine the 
    current direction of the trend, the direction indicator can be used, which is defined 
    as the sum of the 20-day momentum of the last 20 days. An uptrend is signaled by a positive 
    direction indicator value, whereas a downtrend is signaled by a negative value. Basically, 
    it comes down to this: Enter long tomorrow at the open if both the TDI and direction indicator 
    are positive after today's close or enter short at the open if the TDI is positive and the 
    direction indicator is negative. 
**********************************/
var fpArray = new Array();
var bInit = false;

function preMain(){
	setStudyTitle("Trend Detection Index");
	setCursorLabelName("TDI",0);
	setDefaultBarFgColor(Color.blue,0);
    addBand(0, PS_SOLID, 1, Color.lightgrey);
    var x = 0;
    fpArray[x] = new FunctionParameter("Period", FunctionParameter.NUMBER);
    with(fpArray[x++]) {
        setLowerLimit(1);
        setDefault(12);
    }    
}

var xTDI = null;

function main(Period) {
var nBarState = getBarState();
var nTDI = 0;
    if (nBarState == BARSTATE_ALLBARS) {
        if(Period == null)	Period = 12;
    }    
	if (bInit == false) {
        xTDI = efsInternal("Calc_TDI", Period);
		bInit = true;
	}	
    nTDI = xTDI.getValue(0);
    if (nTDI == null) return;
	return nTDI;
}

var bSecondInit = false;
var xmom = null;

function Calc_TDI(Period) {
var nRes = 0;
var MomSum = 0;
var MomSumAbs = 0;
var MomAbsSum = 0;
var MomAbsSum2 = 0;
    if (getCurrentBarCount() <= Period * 2) return;
    if (bSecondInit == false) {
		xmom = mom(Period);
		bSecondInit = true;
	}	
	for(i = Period * 2; i--; i >= 0) {	
        nRes = xmom.getValue(-i);
        if (i < Period) {
            MomSum += nRes;
            MomAbsSum += Math.abs(nRes);
        }    
        MomAbsSum2 += Math.abs(nRes);    
	}	
	MomSumAbs = Math.abs(MomSum);
	nRes = MomSumAbs - (MomAbsSum2 - MomAbsSum);
    return nRes;
}