Jeudi 8 mai 2008

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........
Par hk_lisse - Publié dans : Régression Linéaire
- Voir les commentaires - Recommander
Samedi 26 avril 2008

Périodicité de la mise à jour du Blog.

Comme vous l'aurez sans doute remarqué, la publication d'articles a ralenti depuis un mois, avec le retour des belles journées.  Le Blog retrouvera  son rythme de croisière (plus soutenu) à l'automne.  D'ici là,  la cadence pour la mise à jour sera fort aléatoire.

Rendez-vous en octobre,  bons trades à toutes et tous,

hk.
Par hk_lisse - Publié dans : Commentaires
- Voir les commentaires - Recommander
Samedi 26 avril 2008


Value Charts : le code pour Prorealtime.

Suite à une demande, voici le code de l'indicateur Value Charts de David Stendhal pour la plateforme Prorealtime.  Comme pour la représentation Heikin Ashi, je dois afficher des bougies et ainsi créer 3 indicateurs : mèche basse, mèche haute et corps de la bougie.  Enfin, un dernier indicateur signalant les zones est codé.  Pour avoir la représentation complète à l'écran il faut donc dans l'ordre suivant afficher l'indicateur "valuecharts bas", y ajouter le "valuecharts haut" puis le "valuecharts corps" et enfin le "valuecharts lignes".  Il faut encore paramètrer le tout en points, grosse épaisseur pour le corps, fine pour les mèches.  J'ai trouvé 2 versions de l'indicateur : une avec l'ATR (dont le code se retrouve ci-dessous) et une avec simplement le range.  On peut aussi imaginer faire varier le paramètre (ici fixé à 5).

Voici les différents codes :

/////////////////// valuecharts bas ////////////////
ma=average[5](medianprice)
vu=(average[5](AverageTrueRange[1](close)))*.2
vc=(close-ma)/vu
vo=(open-ma)/vu
vl=(low-ma)/vu
c2=min(vo,vc)
r=abs(c2-vl)
r=(r)/29
b1=vl
c=1
b2=b1+r
b3=b2+r
b4=b3+r
b5=b4+r
b6=b5+r
b7=b6+r
b8=b7+r
b9=b8+r
b10=b9+r
b11=b10+r
b12=b11+r
b13=b12+r
b14=b13+r
b15=b14+r
b16=b15+r
b17=b16+r
b18=b17+r
b19=b18+r
b20=b19+r
b21=b20+r
b22=b21+r
b23=b22+r
b24=b23+r
b25=b24+r
b26=b25+r
b27=b26+r
b28=b27+r
b29=b28+r
b30=b29+r
return b1 coloured by c,b2 coloured by c,b3 coloured by c,b4 coloured by c,b5 coloured by c,b6 coloured by c,b7 coloured by c,b8 coloured by c,b9 coloured by c,b10 coloured by c,b11 coloured by c,b12 coloured by c,b13 coloured by c,b14 coloured by c,b15 coloured by c,b16 coloured by c,b17 coloured by c,b18 coloured by c,b19 coloured by c,b20 coloured by c,b21 coloured by c,b22 coloured by c,b23 coloured by c,b24 coloured by c,b25 coloured by c,b26 coloured by c,b27 coloured by c,b28 coloured by c,b29 coloured by c,b30 coloured by c

////////////// valuecharts haut /////////////////
ma=average[5](medianprice)
vu=(average[5](AverageTrueRange[1](close)))*.2
vc=(close-ma)/vu
vo=(open-ma)/vu
vh=(high-ma)/vu
c2=max(vo,vc)
r=abs(vh-c2)
r=(r)/29
b1=c2
c=1
b2=b1+r
b3=b2+r
b4=b3+r
b5=b4+r
b6=b5+r
b7=b6+r
b8=b7+r
b9=b8+r
b10=b9+r
b11=b10+r
b12=b11+r
b13=b12+r
b14=b13+r
b15=b14+r
b16=b15+r
b17=b16+r
b18=b17+r
b19=b18+r
b20=b19+r
b21=b20+r
b22=b21+r
b23=b22+r
b24=b23+r
b25=b24+r
b26=b25+r
b27=b26+r
b28=b27+r
b29=b28+r
b30=b29+r
return b1 coloured by c,b2 coloured by c,b3 coloured by c,b4 coloured by c,b5 coloured by c,b6 coloured by c,b7 coloured by c,b8 coloured by c,b9 coloured by c,b10 coloured by c,b11 coloured by c,b12 coloured by c,b13 coloured by c,b14 coloured by c,b15 coloured by c,b16 coloured by c,b17 coloured by c,b18 coloured by c,b19 coloured by c,b20 coloured by c,b21 coloured by c,b22 coloured by c,b23 coloured by c,b24 coloured by c,b25 coloured by c,b26 coloured by c,b27 coloured by c,b28 coloured by c,b29 coloured by c,b30 coloured by c

////////////////// valuecharts corps ////////////////////
ma=average[5](medianprice)
vu=(average[5](AverageTrueRange[1](close)))*.2
vc=(close-ma)/vu
vo=(open-ma)/vu
r=abs(vo-vc)
r=(r)/29
if vo<vc then
    b1=vo
else
    b1=vc
endif
b2=b1+r
b3=b2+r
b4=b3+r
b5=b4+r
b6=b5+r
b7=b6+r
b8=b7+r
b9=b8+r
b10=b9+r
b11=b10+r
b12=b11+r
b13=b12+r
b14=b13+r
b15=b14+r
b16=b15+r
b17=b16+r
b18=b17+r
b19=b18+r
b20=b19+r
b21=b20+r
b22=b21+r
b23=b22+r
b24=b23+r
b25=b24+r
b26=b25+r
b27=b26+r
b28=b27+r
b29=b28+r
b30=b29+r
c=vc-vo
return b1 coloured by c,b2 coloured by c,b3 coloured by c,b4 coloured by c,b5 coloured by c,b6 coloured by c,b7 coloured by c,b8 coloured by c,b9 coloured by c,b10 coloured by c,b11 coloured by c,b12 coloured by c,b13 coloured by c,b14 coloured by c,b15 coloured by c,b16 coloured by c,b17 coloured by c,b18 coloured by c,b19 coloured by c,b20 coloured by c,b21 coloured by c,b22 coloured by c,b23 coloured by c,b24 coloured by c,b25 coloured by c,b26 coloured by c,b27 coloured by c,b28 coloured by c,b29 coloured by c,b30 coloured by c

////////////// valuecharts lignes /////////////
return 4,-4,8,-8

Par hk_lisse - Publié dans : Indicateurs
- Voir les commentaires - Recommander
Vendredi 18 avril 2008

Value Charts by David Stendhal.

Dans son livre "Dynamic Trading Indicator", David Stendhal dévoile une nouvelle façon de représenter les cours.  Cela ressemble un peu à un indicateur de "detrending" permettant de bien visualiser les cycles et les zones de survente et surachat.  Une interview de l'auteur se trouve ici.  Voici une vue de XOM avec l'indicateur :



Comme pour la représentation Heikin Ashi, la mise en place est assez fastidieuse avec la création de 3 indicateurs distincts.  Néanmoins, son utilisation peut être beaucoup plus simple, elle trouvera toute sa place, par exemple, pour déterminer des zones d'entrée ou de sortie.  En tout cas, à creuser avec quelques modifications pour que ce soit applicable.
Par hk_lisse - Publié dans : Indicateurs
- Voir les commentaires - Recommander
Samedi 12 avril 2008

Fractal - Alligator by Bill Williams.

Voici un programme qui retourne les indicateurs de Bill Williams : Fractal et Alligator.  Un système de trading complet a été mis au point par l'auteur, je n'ai pas trouvé d'avis tranchants sur ses résultats.  Une vue de AAPL avec l'indicateur :



Et le code pour Prorealtime :

de48=DPO[20](close)
if de48=de48[1] and de48[1]=de48[2] and de48[2]<>de48[3] then
    flag=barindex+8
    flag1=1
endif

mp=MedianPrice
blue=WilderAverage[13](mp)
red=WilderAverage[8](mp)
green=WilderAverage[5](mp)
k=10
n=(k*2)-4
p=(n/2)-1
h1=DPO[n](high)
moyh=high-h1
hi=(moyh-moyh[1]+(high[p])/n)*n
hi=(round(hi*100))/100
l1=dpo[n](low)
moyl=low-l1
lo=(moyl-moyl[1]+(low[p])/n)*n
lo=(round(lo*100))/100
if low[1]>low and low[2]>low and lo[7]>low and lo[8]>low and (barindex<flag or flag1=0) then
    frac=low-(AverageTrueRange[14](close))*.5
else
    frac=blue[8]
endif
if high>high[1] and high>high[2] and high>hi[8] and high>hi[7] and (barindex<flag or flag1=0) then
    frac1=high+(averagetruerange[14](close))*.5
else
    frac1=blue[8]
endif
return red[5],green[3],frac, frac1,blue[8]

Edit le 03/07/08 : le code est changé pour tenir compte d'un possible affichage intempestif de l'indicateur sur les 2 dernières barres.
Par hk_lisse - Publié dans : Indicateurs
- Voir les commentaires - Recommander
 
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus