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 V = Sistem.GrafikVerileri;
var Price = Sistem.GrafikFiyatOku(V, "OrtaNokta");
//Deðiþkenler
var LaguerreAdaptiveFilter= Sistem.Liste(0);
var FIR= Sistem.Liste(0);
var L0= Sistem.Liste(0);
var L1= Sistem.Liste(0);
var L2= Sistem.Liste(0);
var L3= Sistem.Liste(0);
var Diff= Sistem.Liste(0);
var HH= Sistem.Liste(0);
var LL= Sistem.Liste(0);
var Med= Sistem.Liste(0);
var DLH= Sistem.Liste(0);
//Hesaplamalar
if(Median > Length ) Median = Length-1;
for (int i = Length+1; i < Price.Count; i++)
{
Diff[i] = Math.Abs(Price[i] - LaguerreAdaptiveFilter[i-1]);
HH[i] = Diff[i];LL[i] = Diff[i];
for(int j = 0; j < Length ; 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] != 0 && HH[i] - LL[i] != 0) DLH[i] = (Diff[i] - LL[i]) / (HH[i] - LL[i]); else DLH[i] = 0;
for (int count = 0; count < Median; count++) Med[i-count] = DLH[i-count];
bool swapped = true;
double temp;
while (swapped)
{
swapped = false;
for (int count = 0; count < Median ; count++)
{
if (Med[i-count] > Med[i-count - 1])
{
temp = Med[i-count];
Med[i-count] = Med[i-count -1 ];
Med[i-count -1] = (float)temp;
swapped = true;
}
}
}
float alpha = Med[i-2];
L0[i] = alpha*Price[i] + (1 - alpha)*L0[i-1];
L1[i] = -(1 - alpha)*L0[i] + L0[i-1] + (1 - alpha)*L1[i-1];
L2[i] = -(1 - alpha)*L1[i] + L1[i-1] + (1 - alpha)*L2[i-1];
L3[i] = -(1 - alpha)*L2[i] + L2[i-1] + (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
Yer Ýmleri