2002 Mar: Trend Continuation Factor, by M.H. Pee

ICE Data Services -

TrendContinuationFactor.efs  
EFSLibrary - Discussion Board  

File Name: TrendContinuationFactor.efs

Description:

Trend continuation factor, by M.H. Pee

Formula Parameters:

  • Length : 35
  • Line Thickness: 2
  • Display Cursor Labels: True

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

Download File:
TrendContinuationFactor.efs


EFS Code:

/*********************************
Provided By:  
    eSignal (Copyright c eSignal), a division of Interactive Data 
    Corporation. 2008. 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:        
    Trend continuation factor, by M.H. Pee  

Version:            1.0  12/05/2008

Formula Parameters:                     Default:
    Length                              35
    Line Thickness                      2
    Display Cursor Labels               True

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(false);
    setShowTitleParameters( false );
    setStudyTitle("Trend Continuation Factor ");
    setCursorLabelName("Zero", 0);
    setCursorLabelName("Plus TCF", 1);    
    setCursorLabelName("Minus TCF", 2);        
    setDefaultBarFgColor(Color.green, 0);
    setDefaultBarFgColor(Color.blue, 1);
    setDefaultBarFgColor(Color.red, 2);
    setPlotType(PLOTTYPE_LINE, 0); 
    setPlotType(PLOTTYPE_LINE, 1);     
    setPlotType(PLOTTYPE_LINE, 2);     
    setDefaultBarThickness(1, 0);
    setDefaultBarThickness(1, 1);
    setDefaultBarThickness(1, 2);
   
    askForInput();
    var x=0;
    fpArray[x] = new FunctionParameter("ViewValue", FunctionParameter.BOOLEAN);
    with(fpArray[x++]){
        setName("Display Cursor Labels");
        setDefault(true);
    }    
    fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setLowerLimit(1);		
        setDefault(35);
    }
    fpArray[x] = new FunctionParameter("Thickness", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setName("Line Thickness");
        setLowerLimit(1);		
        setDefault(2);
    }
}


var xChange = null;
var xPlusChange = null;
var xMinusChange = null;
var xPlusCF = null;
var xMinusCF = null;

function main(Length, Thickness, ViewValue) {
var nPlusTCF = 0;
var nMinusTCF = 0;
    if (bVersion == null) bVersion = verify();
    if (bVersion == false) return;   

    if ( bInit == false ) { 
        setDefaultBarThickness(Thickness, 0);
        setDefaultBarThickness(Thickness, 1);
        setDefaultBarThickness(Thickness, 2);        
        setShowCursorLabel(ViewValue);   
        setShowCursorLabel(false, 0);
        xChange = efsInternal("Calc_Change");
        xPlusChange = efsInternal("Calc_PlusChange", xChange);
        xMinusChange = efsInternal("Calc_MinusChange", xChange);
        xPlusCF = efsInternal("Calc_PlusCF", xPlusChange);
        xMinusCF = efsInternal("Calc_MinusCF", xMinusChange);
        bInit = true; 
    } 

    nPlusTCF = Summation( xPlusChange, xMinusCF, Length ) ;
    nMinusTCF = Summation( xMinusChange, xPlusCF, Length ) ;
    return new Array(0, nPlusTCF, nMinusTCF); 
}

function Summation(xSeries1, xSeries2, nLength){
var nRes = 0;
    for (var i = 0; i < nLength; i++) {
           nRes += (xSeries1.getValue(-i) - xSeries2.getValue(-i)); 
    } 
    if (nRes == null) nRes = 1;
    return nRes;
}

function Calc_MinusCF(xSeries){
var nRes = 0;
var nRef = 0;
    nRef = ref(-1);
    if (nRef == null) nRef = 1;
    if (xSeries.getValue(0) == 0) nRes = 0;
        else nRes =  xSeries.getValue(0) + nRef;
    if (nRes == null) nRes = 1;
    return nRes;
}

function Calc_PlusCF(xSeries) {
var nRes = 0;
var nRef = 0;
    nRef = ref(-1);
    if (nRef == null) nRef = 1;
    if (xSeries.getValue(0) == 0) nRes = 0;
        else nRes = xSeries.getValue(0) + nRef;
    if (nRes == null) nRes = 1;
    return nRes;
}

function Calc_MinusChange(xSeries) {
var nRes = 0;
    if (xSeries.getValue(0) < 0) nRes =  xSeries.getValue(0) * (-1);
        else nRes = 0;
    if (nRes == null) nRes = 1;
    return nRes;
}

function Calc_PlusChange(xSeries) {
var nRes = 0;
    if (xSeries.getValue(0) > 0) nRes = xSeries.getValue(0);
        else nRes = 0;
    if (nRes == null) nRes = 1;
    return nRes;
}

function Calc_Change(){
var nRes = 0;
    nRes = close(0) - close(-1);
    if (nRes == null) nRes = 1;
    return nRes;
}

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;
}