2/20 Exponential Moving Average

ICE Data Services -

MovAvgX2_20.efs                                                                                                        EFSLibrary - Discussion Board

File Name: MovAvgX2_20.efs


Description:
This Indicator plots 2/20 Exponential Moving Average

Formula Parameters:
Moving average source: close
Length: 20

Notes:
This indicator plots 2/20 exponential moving average. For the Mov
Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.

Download File:
MovAvgX2_20.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: This Indicator plots 2/20 Exponential Moving AverageVersion: 1.0 09/26/2008Notes: 
This indicator plots 2/20 exponential moving average. For the Mov Avg X 2/20 Indicator,
the EMA bar will be painted when the Alert criteria is met.
Formula Parameters: Default: Moving average source close Length 20 **********************************/

var fpArray = new Array();
var bInit = false;

function preMain() {
  setPriceStudy(true);
  setStudyTitle("Mov Avg X 2/20");
  setCursorLabelName("XAverage");
  setColorPriceBars(true);
  setDefaultPriceBarColor(Color.black);
  askForInput();
  var x = 0;
  fpArray[x] = new FunctionParameter("MASource", FunctionParameter.STRING);
  with (fpArray[x++]) {
    setName("Source of moving average");
    addOption("open");
    addOption("high");
    addOption("low");
    addOption("close");
    addOption("hl2");
    addOption("hlc3");
    addOption("ohlc4");
    setDefault("close");
  }
  fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);
  with (fpArray[x++]) {
    setLowerLimit(1);
    setDefault(20);
  }
}
var xXA = null;

function main(MASource, Length) {
  var nBarState = getBarState();
  if (nBarState == BARSTATE_ALLBARS) {
    if (MASource == null) MASource = "close";
    if (Length == null) Length = 20;
  }
  if (bInit == false) {
    var xPrice = eval(MASource)();
    xXA = ema(Length, xPrice);
    bInit = true;
  }
  if (getCurrentBarCount() < Length) return;
  var nHH = Math.max(high(0), high(-1));
  var nLL = Math.min(low(0), low(-1));
  var nXA = xXA.getValue(0);
  if (nLL > nXA || nHH < nXA) setPriceBarColor(Color.red);
  return nXA;
}