Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
8 mai 2008 4 08 /05 /mai /2008 18:52

Filtre LOWESS, Centre de gravité, Régression non-paramétrique et tutti quanti.

Il y a pour l'instant un peu de remue-ménage autour des indicateurs cités dans le titre, plusieurs lecteurs me demandant de les aider.  Je me suis basé sur le programme de Smallcaps90 que l'on trouve ici.  Je n'ai pas tout à fait le même tracé, et je cherche un bonne âme qui me transmettrait les valeurs de l'indicateur utilisé avec Graphe AT-PRO pour une période de 51 sur une valeur du CAC40 en daily, sur un historique de 150 jours afin de déterminer d'où provient la différence.  Voici une vue de VIE avec l'indicateur de paramètre 51, pour la période 07/2004 à 09/2004 :



Même si il est normal que les courbes divergent pour les 25 dernières valeurs, j'ai quand même une légère différence pour le début du tracé.  Le programme pour Prorealtime est très simple mais limité pour l'instant à une valeur maximum de 193.  Je traite également les derniers cas d'une autre façon, je ferai une comparaison entre les 2 méthodes si j'arrive à retrouver exactement les valeurs originales de graphe AT-PRO.

Je vous donne le code pour Prorealtime dans la version actuelle, il faut introduire p3 en variable :

k=p3
de48=DPO[k*2](close)
if de48=de48[1] and de48[1]=de48[2] and de48[2]<>de48[3] then
    flag=1
endif
n=(k*2)-4
p=(n/2)-1
d100=DPO[n](close)
moy100=close-d100
co=(moy100-moy100[1]+(close[p])/n)*n
if flag[1]=1 and flag[2]=0 then
    hh=co[1]
endif
if flag[1]=1 then
    co=hh
endif
n=p3 mod 2
p=(p3-n)/2
p3=(2*p)+1//p3=p3+n
once x=0
w=abs((p-x)/p)
w=w*w*w
w=(1-w)
w=w*w*w
x=x+1
if barindex=p3 then
    a=0
    b=0
    e=0
    for i=0 to p3-1
        z=barindex-i
        a=a+w[z]
        b=b+w[z]*(i+1)//b=b+w[z]*i
        e=e+(i+1)*(i+1)*w[z]//e=e+i*i*w[z]
    next
endif
if barindex>p3 then
    c=0
    d=0
    for i=0 to p3-1
        z=barindex-i
        c=c+co[p3+p-i]*w[z]
        d=d+co[p3+p-i]*w[z]*(i+1)//d=d+co[p3+p-i]*w[z]*i
    next
endif
alpha=(a*d-b*c)/(a*e-b*b)
beta=(c*e-b*d)/(a*e-b*b)
lowess=alpha*p+beta
if barindex<p3*2 then
    lowess=undefined
endif
return lowess

Edit le 9/5 : j'ai corrigé i par i+1 mais cela accentue la différence avec la courbe originale.  Pour avoir un tracé similaire, il faudrait mettre i-1, ce qui me paraît illogique.  Je continue de vérifier le code.....

Edit le 12/5 : j'ai changé la valeur de p3, je ne sais vraiment pas où j'avais été chercher cette ligne de code !  Mais la courbe ne correspond toujours pas, je continue........

Partager cet article

Repost 0

commentaires