Skip to main content

Ehlers Laguerre RSI for Amibroker (AFL)

panno about 15 years ago Amibroker (AFL)

  • Rating:
    5 / 5 (Votes 1)
  • Tags:
    oscillator, amibroker
The Laguerre transform provides a time warp such that the low frequency components are delayed much more than the high frequency components. This enables very smooth filters to be built using a short amount of data. The Laguerre RSI operates on four data points and is smoother than an RSI.

Screenshots

Indicator / Formula

Copy & Paste Friendly
SetBarsRequired(200, 0);

// Ehlers formulas
// from Ehlers, John F. Cybernetic Analysis for Stocks and Futures. Wiley. 2004. 
// Chapter 14, p. 213. Code on p. 221.

function LRSI(array, gamma)
// Figure 14.8 on p. 221.
{
  L0 = array;  // Initialize as array
  L1 = array;
  L2 = array;
  L3 = array;
  LRSIValue = array;

  for(i = 1; i < BarCount; i++)
  {
     L0[i] = (1 - gamma)*array[i] + gamma*L0[i-1];
     L1[i] = - gamma * L0[i] + L0[i-1] + gamma * L1[i-1];
     L2[i] = - gamma * L1[i] + L1[i-1] + gamma * L2[i-1];
     L3[i] = - gamma * L2[i] + L2[i-1] + gamma * L3[i-1];

     CU = 0;
     CD = 0;
     if (L0[i] >= L1[i]) CU = L0[i] - L1[i]; else (CD = L1[i] - L0[i]);
     if (L1[i] >= L2[i]) CU = CU + L1[i] - L2[i]; else CD = CD + L2[i] - L1[i];
     if (L2[i] >= L3[i]) CU = CU + L2[i] - L3[i]; else CD = CD + L3[i] - L2[i];

     if (CU + CD != 0) LRSIValue[i] = CU / (CU + CD);
  }
  return LRSIValue;
}

Plot(LRSI(C, 0.5), "Laguerre RSI", colorRed, styleLine);
PlotGrid(.8);
PlotGrid(.5);
PlotGrid(.2);

3 comments

1. Wach
about 15 years ago

Excellent. I have been using it for awhile now and shared it a friend and so far so good. Best thing about laguerre, is its simplicity of visual so what you see is what you get. Again, thanks for the refined Oscillator.

about 15 years ago

mr wach, please suggest me for intraday , how to use this formula(Laguerre formula).please suggest me

Leave Comment

Please login here to leave a comment.