Bill Williams Alligator Averages

ICE Data Services -

ABillW_Alligator.efs                                                                                                                                      EFSLibrary - Discussion Board

File Name: ABillW_Alligator.efs


Description:
Bill Williams Alligator Averages

Formula Parameters:
Length Slow 21
Length Medium 13
Length Fast 8
Offset Slow 8
Offset Medium 5
Offset Fast 3

Notes:
This indicator calculates 3 Moving Averages for 21, 13 and 8 days,
with displacement 8, 5 and 3 days: Median Price (High+Low/2).

Download File:
ABillW_Alligator.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: Bill Williams Alligator AveragesVersion: 1.0 09/24/2008Notes:
This indicator calculates 3 Moving Averages for 21, 13 and 8 days,
with displacement 8, 5 and 3 days: Median Price (High+Low/2).
Formula Parameters: Default: Length Slow 21 Length Medium 13 Length
Fast 8 Offset Slow 8 Offset Medium 5 Offset Fast 3 **********************************/

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

function preMain() {
  setPriceStudy(true);
  setStudyTitle("Alligator");
  setCursorLabelName("Plot1", 0);
  setCursorLabelName("Plot2", 1);
  setCursorLabelName("Plot3", 2);
  setDefaultBarFgColor(Color.blue, 0);
  setDefaultBarFgColor(Color.red, 1);
  setDefaultBarFgColor(Color.green, 2);
  setDefaultBarFgColor(Color.black, 3);
  var x = 0;
  fpArray[x] = new FunctionParameter("LengthSlow", FunctionParameter.NUMBER);
  with (fpArray[x++]) {
    setName("Length Slow");
    setLowerLimit(1);
    setDefault(21);
  }
  fpArray[x] = new FunctionParameter("OffsetSlow", FunctionParameter.NUMBER);
  with (fpArray[x++]) {
    setName("Offset Slow");
    setLowerLimit(1);
    setDefault(8);
  }
  fpArray[x] = new FunctionParameter("LengthMedium", FunctionParameter.NUMBER);
  with (fpArray[x++]) {
    setName("Length Medium");
    setLowerLimit(1);
    setDefault(13);
  }
  fpArray[x] = new FunctionParameter("OffsetMedium", FunctionParameter.NUMBER);
  with (fpArray[x++]) {
    setName("Offset Medium");
    setLowerLimit(1);
    setDefault(5);
  }
  fpArray[x] = new FunctionParameter("LengthFast", FunctionParameter.NUMBER);
  with (fpArray[x++]) {
    setName("Length Fast");
    setLowerLimit(1);
    setDefault(8);
  }
  fpArray[x] = new FunctionParameter("OffsetFast", FunctionParameter.NUMBER);
  with (fpArray[x++]) {
    setName("Offset Fast");
    setLowerLimit(1);
    setDefault(3);
  }
}
var xhl2 = null;
var xEMA1 = null;
var xEMA2 = null;
var xEMA3 = null;

function main(
  LengthSlow,
  OffsetSlow,
  LengthMedium,
  OffsetMedium,
  LengthFast,
  OffsetFast
) {
  var nXA1 = 0;
  var nXA2 = 0;
  var nXA3 = 0;
  if (LengthSlow == null) LengthSlow = 21;
  if (OffsetSlow == null) OffsetSlow = 8;
  if (LengthMedium == null) LengthMedium = 13;
  if (OffsetMedium == null) OffsetMedium = 5;
  if (LengthFast == null) LengthFast = 8;
  if (OffsetFast == null) OffsetFast = 3;
  if (bInit == false) {
    xhl2 = hl2();
    xEMA1 = offsetSeries(ema(LengthSlow, xhl2), OffsetSlow);
    xEMA2 = offsetSeries(ema(LengthMedium, xhl2), OffsetMedium);
    xEMA3 = offsetSeries(ema(LengthFast, xhl2), OffsetFast);
    bInit = true;
  }
  nXA1 = xEMA1.getValue(0);
  nXA2 = xEMA2.getValue(0);
  nXA3 = xEMA3.getValue(0);
  return new Array(nXA1, nXA2, nXA3);
}