# IE / 2

ICE Data Services -

File Name: IE2.efs

Description:
IE/2

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

Notes:
IE/2 is one of pre-studies created while T3 famous average was developing.
It is calculated as (ILRS(n)+EPMA(n))/2.

ILRS, is an integral of linear regression slope. In this moving average,
the slope of a linear regression line is simply integrated as it is fitted
in a moving window of length n across the data. The derivative of ILRS is
the linear regression slope.

EPMA is an end point moving average - it is the endpoint of the linear regression
line of length n as it is fitted across the data. EPMA hugs the data more closely
than a simple or exponential moving average of the same length.

IE2.efs

EFS Code:

```/*********************************Provided By: eSignal (Copyright c eSignal),
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: IE/2Version: 1.0 09/23/2008Notes:
IE/2 is one of pre-studies created while T3 famous average was developing.
It is calculated as (ILRS(n)+EPMA(n))/2. ILRS, is an integral of linear regression slope.
In this moving average, the slope of a linear regression line is simply integrated as it is
fitted in a moving window of length n across the data.
The derivative of ILRS is the linear regression slope.
EPMA is an end point moving average - it is the endpoint of the linear regression
line of length n as it is fitted across the data.
EPMA hugs the data more closely than a simple or exponential moving average of the same length.
Formula Parameters: Default: Length 15 Price Data To Use Close**********************************/

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

function preMain() {
setStudyTitle("IE/2");
setCursorLabelName("IE/2");
setDefaultBarFgColor(Color.cyan, 0);
setPlotType(PLOTTYPE_LINE, 0);
setDefaultBarThickness(3, 0);
setPriceStudy(true);
var x = 0;
fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);
with (fpArray[x++]) {
setLowerLimit(1);
setDefault(15);
}
fpArray[x] = new FunctionParameter("Price", FunctionParameter.STRING);
with (fpArray[x++]) {
setName("Price Data To Use");
setDefault("close");
}
}
var xIE = null;
var xMyPrice = null;

function main(Price, Length) {
var nIE = 0;
if (Price == null) Price = "close";
if (Length == null) Period = 15;
if (bInit == false) {
xMyPrice = eval(Price)();
xIE = efsInternal("Calc_IE", xMyPrice, Length);
bInit = true;
}
if (getCurrentBarCount() <= Length) return;
nIE = xIE.getValue(0);
return nIE;
}

function Calc_IE(xMyPrice, Length) {
var nAvg = 0.0;
var nSumBars = Length * (Length - 1) * 0.5;
var nSumSqrBars = ((Length - 1) * Length * (2 * Length - 1)) / 6;
var nSum1 = 0.0;
var nSumY = 0.0;
for (var i = 0; i < Length; i++) {
nAvg += xMyPrice.getValue(-i);
nSum1 += i * xMyPrice.getValue(-i);
nSumY += xMyPrice.getValue(-i);
}
nAvg /= Length;
var nSum2 = nSumBars * nSumY;
var nNum1 = Length * nSum1 - nSum2;
var nNum2 = nSumBars * nSumBars - Length * nSumSqrBars;
var nLinRegSlope = 0.0;
if (nNum2 != 0) {
nLinRegSlope = nNum1 / nNum2;
}
var nILRS = nLinRegSlope + nAvg;
var nIntercept = (nSumY - nLinRegSlope * nSumBars) / Length;
var nLinearRegValue = nIntercept + nLinRegSlope * (Length - 1);
var nIE = (nILRS + nLinearRegValue) / 2;
return nIE;
}
```