Triple Exponential Average (TRIX)

ICE Data Services -


TripleExponentialAverage.efs  EFSLibrary - Discussion Board
  

File Name: TripleExponentialAverage.efs


Description:
Triple Exponential Average


Formula Parameters:
Color line null: Green
Length: 9
Gradient Color: 200
Display Title Value: False

Notes:
The Triple Exponential Average (TRIX) indicator is an oscillator used
to identify oversold and overbought markets and it can also be used
as a momentum indicator. As is common with many oscillators, TRIX
oscillates around a zero line. When used as an oscillator, a positive
value indicates an overbought market while a negative value indicates
an oversold market. As a momentum indicator, a positive value suggests
momentum is increasing while a negative value suggests momentum is
decreasing.


Download File:
TripleExponentialAverage.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:            Triple Exponential Average Version:            1.0  08/08/2008Notes:    The Triple Exponential Average (TRIX) indicator is an oscillator used    to identify oversold and overbought markets and it can also be used    as a momentum indicator. As is common with many oscillators, TRIX    oscillates around a zero line. When used as an oscillator, a positive    value indicates an overbought market while a negative value indicates    an oversold market. As a momentum indicator, a positive value suggests    momentum is increasing while a negative value suggests momentum is    decreasing.Formula Parameters:                     Default:    * Color line null                    Green    * Length                               9    * Gradient Color                      200    * Display Title Value                False**********************************/var fpArray = new Array();var bInit = false;var myTRIX = null;var Max = 1;var Min = -1;function preMain() {    setPriceStudy(false);    setShowCursorLabel(false);    setShowTitleParameters( false );        setStudyTitle("Triple Exponential Average");    setCursorLabelName("TRIX", 0);    setCursorLabelName("NULL", 1);    setDefaultBarFgColor(Color.blue, 0);    setDefaultBarFgColor(Color.green, 1);    setPlotType(PLOTTYPE_LINE, 0);     setPlotType(PLOTTYPE_LINE, 1);         setDefaultBarThickness(1, 0);    setDefaultBarThickness(1, 1);       askForInput();    var x=0;    fpArray[x] = new FunctionParameter("LineColor", FunctionParameter.COLOR);    with(fpArray[x++]){        setName("Color line null");        setDefault(Color.green);    }        fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);	with(fpArray[x++]){        setLowerLimit(1);		        setDefault(9);    }    fpArray[x] = new FunctionParameter("ViewValue", FunctionParameter.BOOLEAN);    with(fpArray[x++]){       setName("Display Title Value");       setDefault(false);    }        fpArray[x] = new FunctionParameter("GradientColor", FunctionParameter.NUMBER);    with(fpArray[x++]){       setName("Color Gradient");        addOption(0);         addOption(50);        addOption(100);        addOption(150);        addOption(200);        addOption(250);        setDefault(200);    }    }function main(LineColor, ViewValue, Length, GradientColor) {var nmyTRIX;var nmyTRIX2;var Rez;var inc;   if(getCurrentBarCount() < Length) return;   if ( bInit == false ) {       myTRIX = efsInternal("TRIXLog", close(), Length);      myTRIX = ema(Length, myTRIX);      myTRIX = ema(Length, myTRIX);      myTRIX = ema(Length, myTRIX);      setDefaultBarFgColor(LineColor, 1);      bInit = true;    }       nmyTRIX = myTRIX.getValue(0);   nmyTRIX2 = myTRIX.getValue(-1);   if (nmyTRIX2 == null) nmyTRIX2 = 0;    Rez = (nmyTRIX - nmyTRIX2) * 10000 ;   inc = Math.round(Rez);   if (inc > Max) Max = inc;   if (inc < Min) Min = inc;      inc = RGB_G(inc, Max, Min);   if (inc == null) inc = 0;     setDefaultBarFgColor(Color.RGB(GradientColor,inc,0),0);   return new Array (Rez, 0);}function TRIXLog(DataArray, Length) {var tmp;  tmp = DataArray.getValue(0);  return (Math.log(tmp));}function RGB_G(Val, Max, Min) {var tmpG = 0;var Perc1 = 0; if (Val > 0) {    Perc1 = (Val * 100) / Max;    tmpG = 255 - (Perc1*255)/100;    return Math.round(tmpG); } else {    Perc1 = ((Val*-1) * 100) / (Min*-1);    tmpG = 255 - (Perc1*255)/100;    return Math.round(tmpG); } return  tmpG;}