+91-0000000000

}

Monday – Friday : 9:00 AM – 6:30 PM

Laguerre RSI

The Laguerre RSI AFL code in Amibroker, enhanced with Amibroker Data Feeder, is a popular choice among traders. This code computes the RSI (Relative Strength Index) using the Laguerre filter, aiming to reduce noise and provide smoother RSI signals. Integrating real-time market data from Amibroker Data Feeder enhances the accuracy of Laguerre RSI, aiding traders in better assessing overbought and oversold conditions.

/_SECTION_BEGIN("Ehlers Laguerre RSI");

//
//  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(4).
//
//------------------------------------------------------------------------------

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);
//Plot(LRSI(C, 0.4), "Laguerre RSI1", colorBlue, styleLine);
//Plot(LRSI(C, 0.3), "Laguerre RSI1", colorGreen, styleLine);

Plot(0.2,"",colorRed,styleDashed+styleNoLabel);
Plot(0.8,"",colorRed,styleDashed+styleNoLabel);
PlotGrid(.8);
PlotGrid(.5);
PlotGrid(.2);
_SECTION_END();

Open chat
1
Hi, how can I help you?