Laguerre Adaptive Filter

John Ehlers Article: 'Time Warp Without Space Travel'
http://www.stockspotter.com/Files/timewarp.pdf

PHP Code:
//Laguerre Adaptive Filter

//Ayarlar
int Length 14;
int Median 5;

//Veriler
var Sistem.GrafikVerileri
var 
Price Sistem.GrafikFiyatOku(V"OrtaNokta");

//Deðiþkenler
var LaguerreAdaptiveFilterSistem.Liste(0); 
var 
FIRSistem.Liste(0); 
var 
L0Sistem.Liste(0); 
var 
L1Sistem.Liste(0); 
var 
L2Sistem.Liste(0); 
var 
L3Sistem.Liste(0); 

var 
DiffSistem.Liste(0); 
var 
HHSistem.Liste(0); 
var 
LLSistem.Liste(0); 
var 
MedSistem.Liste(0); 
var 
DLHSistem.Liste(0); 

//Hesaplamalar
if(Median Length Median Length-1;
for (
int i Length+1Price.Counti++)

    
Diff[i] = Math.Abs(Price[i] - LaguerreAdaptiveFilter[i-1]);
    
HH[i] = Diff[i];LL[i] = Diff[i];


    for(
int j 0Length j++) 
    {
      if (
Diff[i-j] > HH[i]) HH[i] = Diff[i-j];
      if (
Diff[i-j] < LL[i]) LL[i] = Diff[i-j];
    }

   if (
Diff[i] - LL[i] != && HH[i] - LL[i] != 0)  DLH[i] = (Diff[i] - LL[i]) / (HH[i] - LL[i]); else DLH[i] = 0;
    
   for (
int count 0count Mediancount++) Med[i-count] = DLH[i-count];

   
bool swapped true;
   
double temp;
   while (
swapped)
   {
    
swapped false;
    for (
int count 0count Median count++)
    {    
        if (
Med[i-count] > Med[i-count 1])
        { 
            
temp Med[i-count];    
            
Med[i-count] = Med[i-count -];
            
Med[i-count -1] = (float)temp
            
swapped true;
        }
    }
   }

 
float alpha Med[i-2];

 
L0[i] = alpha*Price[i] + (alpha)*L0[i-1];  
 
L1[i] = -(alpha)*L0[i] + L0[i-1] + (alpha)*L1[i-1];
 
L2[i] = -(alpha)*L1[i] + L1[i-1] + (alpha)*L2[i-1];
 
L3[i] = -(alpha)*L2[i] + L2[i-1] + (alpha)*L3[i-1];
 
LaguerreAdaptiveFilter[i] = (float)(L0[i]+2*L1[i]+2*L2[i]+L3[i])/6
}

//Çizgiler
Sistem.Cizgiler[0].Deger LaguerreAdaptiveFilter

https://prnt.sc/lpqa3f