// Downloaded From https://www.WiseStockTrader.com
//----------------------------------------------------------
SetBarsRequired(20000,20000);

function ITrend(array, alpha) {
// Choose One Of the initialization :

// No pre-filter :
it = array;

// Pre-initialize its first value and after it converge to "array" value during main recursion (so act like no pre-Filter after some times)
//it = (array[2] - 2*array[1] + array[0])/4; //This initialization takes a long time to converge.

// Pre-filter with classic triangular MA
it = (array + Ref(array, -1) * 2 + Ref(array, -2))/4;

factor = (alpha - alpha^2/4) + 5*alpha^2 - (alpha - .75*alpha^2) + 2*(1 -
alpha) - (1 - alpha)^2;

for(i = 4; i < BarCount; i++) {
it[i] = (alpha - alpha^2/4)*array[i] +
5*alpha^2*array[i-1] -
(alpha - .75*alpha^2)*array[i-2] +
2*(1 - alpha)*it[i-1] -
(1 - alpha)^2*it[i-2];

it[i] = it[i]/factor;
}

return it;
}

P = ParamField("Price field",-1);
alpha = Param( "Alpha", 0.3, 0, 1, 0.01 );

data = ITrend(P, alpha);
Plot( data, "ITrend", ParamColor( "Color ITrend", colorCycle ),
ParamStyle("Style") );
//----------------------------------------------------------