Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
10 octobre 2008 5 10 /10 /octobre /2008 16:52

Gaussian Filter, Kalman Filter.

Dérivés de codes Tradestation, je vous présente 2 petits programmes pour lisser les cours : le filtre de Gauss et le filtre de Kalman.  Après une brève recherche sur la toile, je ne sais pas s'il sont vraiment "de Gauss" ou "de Kalman".  Il y aurait apparemment plusieurs variantes....

Voici le code du filtre de Gauss pour Prorealtime, il faut introduire "pol" (nombre de pôles, de 1 à 4) et "per" (période, par défaut 20) comme variables :

///////////// Gaussian Filter /////////////
pr=medianprice
pi=3.141592654
if pol>4 then
    pol=4
endif
if pol=2 then
    sq=SQRT(2)
elsif pol=1 then
    sq=2
elsif pol=3 then
    sq=1.12246
elsif pol=4 then
    sq=sqrt(sqrt(2))
endif
if barindex=0 then
    w=2*pi/per
    w=180*w/pi
    b=(1-cos(w))/(sq-1)
    aa=-b+sqrt(b*b+2*b)
    a1=1-aa
    a12=a1*a1
    a13=a1*a1*a1
    a14=a12*a12
    a2=aa*aa
    a3=aa*aa*aa
    a4=a2*a2
    y1=pr
    y2=y1
    y3=y2
    y4=y3
endif
if pol=1 then
    y=aa*pr+a1*y1
elsif pol=2 then
    y=a2*pr+2*a1*y1-a12*y2
elsif pol=3 then
    y=a3*pr+3*a1*y1-3*a12*y2+a13*y3
elsif pol=4 then
    y=a4*pr+4*a1*y1-6*a12*y2+4*a13*y3-a14*y4
endif
y4=y3
y3=y2
y2=y1
y1=y
gauss=y
return gauss


Et le filtre de Kalman, il faut encoder "gain" en variable (de 5 à 2000?, 500 par défaut) :

///////////// Kalman Filter ///////////////////
pr=medianprice
once pred=pr
if barindex>0 then
    dk=pr-pred
    smooth=pred+dk*SQRT((gain/10000)*2)
    velo=velo+((gain/10000)*dk)
    pred=smooth+velo
    kf=pred
endif
return kf

Ci-dessous, un vue du CAC et son joli doji, avec le filtre de Gauss (4, 20) en bleu, le filtre de Kalman (500) en vert et la version d'Elhers du filtre Kalman en rouge. 



////////////// Kalman version Ehlers ///////////////////
prix=totalprice
once kil=prix
if barindex>4 then
    kil=.33*(prix+.5*(prix-prix[3]))+.67*kil[1]
endif
return  kil

Partager cet article

Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article

commentaires