Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
3 mars 2008 1 03 /03 /mars /2008 15:54

Le canal de Raff.

Le canal de Raff trace 2 droites équidistantes de la droite de régression linéaire.  L'écart est fixé par l'extrême le plus éloigné.  Je vous présente 3 indicateurs liés au canal de Raff :

 - L'enveloppe du canal, qui trace l'évolution des 2 droites du canal pour une longueur fixée.
 - L'oscillateur, qui situe la clôture dans l'enveloppe.
 - La largeur de l'enveloppe, qui permet de mesurer une certaine volatilité.

Voici une vue de CSCO avec les 3 indicateurs pour une longueur de 20 de la droite de régression linéaire :

hk94.gif
hk95.gif

Pour vérification, j'ai mis en rose, le canal de longueur 20 et en jaune la courbe de régression de même paramètre.  On constate bien que les enveloppes correspondent au canal.  Le second indicateur dessine une courbe qui ressemble à un stochastic de par sa construction.  Le troisième indicateur, avec une valeur proche/inférieure à 5, alerte sur des périodes de très basse volatilité.

Voici les codes pour Prorealtime, il faut introduire k en variable pour la longueur de la droite de régression linéaire :

//////////// bandes Raff ////////////
somx=0
somy=0
somxx=0
somxy=0
co=close
hi=high
lo=low
maxh=0
maxl=0
for i=1 to k
    somx=somx+i
next
for i=0 to k-1
    somy=somy+co[i]
next
for i=1 to k
    somxx=somxx+(i*i)
next
for i=0 to k-1
    somxy=somxy+(co[i]*(k-i))
next
a=(k*somxy-somx*somy)/(k*somxx-somx*somx)
b=(somy-a*somx)/k
for i=0 to k-1
    ecah=hi[i]-a*(k-i)-b
    maxh=max(maxh,ecah)
    ecal=a*(k-i)+b-lo[i]
    maxl=max(maxl,ecal)
next
reg=a*k+b
raff=max(maxh,maxl)
raffl=reg-raff
raffh=reg+raff
return raffl,raffh


/////////// Raff oscillator //////////
somx=0
somy=0
somxx=0
somxy=0
co=close
hi=high
lo=low
maxh=0
maxl=0
for i=1 to k
    somx=somx+i
next
for i=0 to k-1
    somy=somy+co[i]
next
for i=1 to k
    somxx=somxx+(i*i)
next
for i=0 to k-1
    somxy=somxy+(co[i]*(k-i))
next
a=(k*somxy-somx*somy)/(k*somxx-somx*somx)
b=(somy-a*somx)/k
for i=0 to k-1
    ecah=hi[i]-a*(k-i)-b
    maxh=max(maxh,ecah)
    ecal=a*(k-i)+b-lo[i]
    maxl=max(maxl,ecal)
next
reg=a*k+b
raff=max(maxh,maxl)
raffl=reg-raff
raffh=reg+raff
osc=(co-raffl)/(raffh-raffl)*100
return osc,80,20


///////////// Raff bandwidth /////////////
somx=0
somy=0
somxx=0
somxy=0
co=close
hi=high
lo=low
maxh=0
maxl=0
for i=1 to k
    somx=somx+i
next
for i=0 to k-1
    somy=somy+co[i]
next
for i=1 to k
    somxx=somxx+(i*i)
next
for i=0 to k-1
    somxy=somxy+(co[i]*(k-i))
next
a=(k*somxy-somx*somy)/(k*somxx-somx*somx)
b=(somy-a*somx)/k
for i=0 to k-1
    ecah=hi[i]-a*(k-i)-b
    maxh=max(maxh,ecah)
    ecal=a*(k-i)+b-lo[i]
    maxl=max(maxl,ecal)
next
reg=a*k+b
raff=max(maxh,maxl)
raffl=reg-raff
raffh=reg+raff
wi=(raffh-raffl)/(raffh+raffl)*200
return wi,5

Partager cet article

Repost 0

commentaires