T3 Average

ICE Data Services -


T3Avg.efs  EFSLibrary - Discussion Board
  

File Name: T3Avg.efs


Description:
T3 Average


Formula Parameters:
Length: 5
Price Data To Use: Close

Notes:
This indicator plots the moving average described in the January, 1998 issue
of S&C, p.57, "Smoothing Techniques for More Accurate Signals", by Tim Tillson.
This indicator plots T3 moving average presented in Figure 4 in the article.
T3 indicator is a moving average which is calculated according to formula:
T3(n) = GD(GD(GD(n))),
where GD - generalized DEMA (Double EMA) and calculating according to this:
GD(n,v) = EMA(n) * (1+v)-EMA(EMA(n)) * v,
where "v" is volume factor, which determines how hot the moving averageRs response
to linear trends will be. The author advises to use v=0.7.
When v = 0, GD = EMA, and when v = 1, GD = DEMA. In between, GD is a less aggressive
version of DEMA. By using a value for v less than1, trader cure the multiple DEMA
overshoot problem but at the cost of accepting some additional phase delay.
In filter theory terminology, T3 is a six-pole nonlinear Kalman filter. Kalman
filters are ones that use the error W in this case, (time series - EMA(n)) W
to correct themselves. In the realm of technical analysis, these are called adaptive
moving averages; they track the time series more aggres-sively when it is making large
moves. Tim Tillson is a software project manager at Hewlett-Packard, with degrees in
mathematics and computer science. He has privately traded options and equities for 15 years.

Download File:
T3Avg.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:           T3 Average Version:            1.0  09/24/2008Notes:    This indicator plots the moving average described in the January, 1998 issue    of S&C, p.57, "Smoothing Techniques for More Accurate Signals", by Tim Tillson.    This indicator plots T3 moving average presented in Figure 4 in the article.    T3 indicator is a moving average which is calculated according to formula:        T3(n) = GD(GD(GD(n))),    where GD - generalized DEMA (Double EMA) and calculating according to this:        GD(n,v) = EMA(n) * (1+v)-EMA(EMA(n)) * v,    where "v" is volume factor, which determines how hot the moving averageRs response    to linear trends will be. The author advises to use v=0.7.    When v = 0, GD = EMA, and when v = 1, GD = DEMA. In between, GD is a less aggressive    version of DEMA. By using a value for v less than1, trader cure the multiple DEMA    overshoot problem but at the cost of accepting some additional phase delay.    In filter theory terminology, T3 is a six-pole nonlinear Kalman filter. Kalman    filters are ones that use the error W in this case, (time series - EMA(n)) W     to correct themselves. In the realm of technical analysis, these are called adaptive    moving averages; they track the time series more aggres-sively when it is making large    moves. Tim Tillson is a software project manager at Hewlett-Packard, with degrees in    mathematics and computer science. He has privately traded options and equities for 15 years.    Formula Parameters:                     Default:    Length                                  5    Price Data To Use                      Close**********************************/var fpArray = new Array();var bInit = false;function preMain() {    setPriceStudy(true);    setStudyTitle("T3");    setCursorLabelName("Slope", 0);       setDefaultBarFgColor(Color.blue, 0);    var x=0;    fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);    with(fpArray[x++]){        setLowerLimit(1);                setDefault(5);    }    fpArray[x] = new FunctionParameter("Price", FunctionParameter.STRING);    with(fpArray[x++]){        setName("Price Data To Use");        addOption("open");         addOption("high");        addOption("low");        addOption("close");        addOption("hl2");        addOption("hlc3");        addOption("ohlc4");         setDefault("close");     }}var xe1 = null;var xe2 = null;var xe3 = null;var xe4 = null;var xe5 = null;var xe6 = null;var xMyPrice = null;var nT3Average = 0;function main(Price, Length) {var nState = getBarState();    if (nState == BARSTATE_ALLBARS) {        if (Price == null) Price = "close";        if (Length == null) Length = 5;    }        if ( bInit == false ) {         xMyPrice = eval(Price)();        xe1 = ema(Length, xMyPrice);        xe2 = ema(Length, xe1);        xe3 = ema(Length, xe2);                xe4 = ema(Length, xe3);                xe5 = ema(Length, xe4);                xe6 = ema(Length, xe5);                        bInit = true;     }     if (xe1.getValue(0) == null || xe2.getValue(0) == null || xe3.getValue(0) == null ||        xe4.getValue(0) == null || xe5.getValue(0) == null || xe6.getValue(0) == null) return;    var b = 0.7;    var c1 = -b*b*b;    var c2 = 3*b*b+3*b*b*b;    var c3 = -6*b*b-3*b-3*b*b*b;    var c4 = 1+3*b+b*b*b+3*b*b;    nT3Average = c1 * xe6.getValue(0) + c2 * xe5.getValue(0) + c3 * xe4.getValue(0) + c4 * xe3.getValue(0);    return nT3Average;}