{_T3Average By Bob Fulks, modified by Alex Matulich 4/2003 The T3 Average is essentially a low-pass filter, as are the traditional moving average and exponential moving average. The T3 Average, however, exhibits a steeper rolloff, resulting in better filtering of high-frequency noise while better preserving the low-frequency components of a time series. This function is an EasyLanguage version of the algorithm described in the January 1998 issue of TASC, p57, "Smoothing Techniques for More Accurate Signals" by Tim Tillson. It is translated from the MetaStock code presented in the article. The function allows a variable length as input. The variable b (also called "Hot") is a damping coefficient. The suggested value of b is 0.7, but this value slightly amplifies low-frequency components. b=0.5 seems better for having a flat response at low frequencies. A smaller value of b will result in too much attenuation of low frequencies. The Length parameter is divided by two to make the T3 Average's lag equivalent to the lag of the traditional moving averages. This way you can use the T3 Average as a drop-in replacement for Average or xAverage, and get the same lag but better noise filtering. The variable "b" is substituted for the variable "a" used in the article since "a" is a reserved word. } Inputs: Price(NumericSeries), Length(NumericSimple); Variables: b(0.5), b2(b*b), b3(b2*b), e1(Price), e2(Price), e3(Price), e4(Price), e5(Price), e6(Price), c1(-b3), c2(3*(b2+b3)), c3(-3*(2*b2+b+b3)), c4(1+3*b+b3+3*b2), N(0), w1(0), w2(0); N = Length; if N < 1 then N = 1; N = 1 + 0.5*(N-1); {makes lag equivalent to Moving Average} w1 = 2 / (N + 1); w2 = 1 - w1; e1 = w1*Price + w2*e1; e2 = w1*e1 + w2*e2; e3 = w1*e2 + w2*e3; e4 = w1*e3 + w2*e4; e5 = w1*e4 + w2*e5; e6 = w1*e5 + w2*e6; _T3Average = c1*e6 + c2*e5 + c3*e4 + c4*e3;