Overblog Suivre ce blog
Administration Créer mon blog
17 juin 2008 2 17 /06 /juin /2008 21:48

Le VWAP : Volume Weighted Average Price.

Suite à la demande d'un lecteur, je vous présente le VWAP.  J'y ai rajouté les bandes trouvées dans un programme pour Tradestation.



On remarque qu'après un temps d'adaptation, les différentes courbes sont résistances ou supports.  Plusieurs stratégies existent en intraday.

Voici le code pour Prorealtime, on peut changer le prix de référence (close, medianprice....) et la barre de début (day pour de l'intraday, year ou month pour du swing) :

//////////// vwap by hk-lisse ////////////////
pri=close//ou medianprice
p=p+1
if year<>year[1] then//ou day pour de l'intraday
    p=1
endif
sum=summation[p](volume)
sump=summation[p](pri*volume)
ww=sump/sum
tot=0
for i=0 to p-1
    var=(volume[i]/sum)*(SQUARE(pri[i]-ww))
    tot=tot+var
next
eca=SQRT(tot)
return ww,ww+eca,ww-eca,ww+2*eca,ww-2*eca

Pour de l'intraday, on est limité par la boucle "for next" : PRT n'acceptant pas un grand nombre d'instructions si on descend sur des UT trop courtes.  Il faut donc supprimer le calcul des bandes pour ne garder que le ww.
Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
29 mai 2008 4 29 /05 /mai /2008 08:51

L'indicateur Supertrend dans Prorealtime.

Olivier Seban a créé l'indicateur Supertrend, il est présent directement sur la plateforme Prorealtime.  Beaucoup s'interrogent sur la toile à propos de la formule utilisée.  Il s'agit simplement d'afficher l'AverageTrueRange de longueur indiquée, multiplié par un coéfficient, le tout ajouté au cours médian : (H+L)/2.  Les paramètres par défaut sont : 3 pour le coéfficient et 10 pour la longueur.  Voici le code d'un programme qui retourne la courbe à l'identique :

avola=averagetruerange[bb](close)
avg=medianprice
up=avg+aa*avola
dn=avg-aa*avola
once trend=1
if close>up[1] then
    trend=1
elsif close<dn[1] then
    trend=-1
endif
if trend<0 and trend[1]>0 then
    flag=1
else
    flag=0
endif
if trend>0 and trend[1]<0 then
    flagh=1
else
    flagh=0
endif
if trend>0 and dn<dn[1] then
    dn=dn[1]
endif
if trend<0 and up>up[1] then
    up=up[1]
endif
if flag=1 then
    up=avg+aa*avola
endif
if flagh=1 then
    dn=avg-aa*avola
endif
if trend=1 then
    super=dn
else
    super=up
endif
return super

Il faut introduire aa (coéfficient) et bb (longueur) comme variables.  Et une vue du cac, on constate bien que le Supertrend se confond avec la courbe du programme :


Repost 0
Published by hk_lisse - dans Trailing Stop
commenter cet article
26 mai 2008 1 26 /05 /mai /2008 18:20

The Better Volume Indicator.

Sur le site emini-watch.com, l'auteur présente un indicateur qui lui permettrait d'analyser les volumes pour sélectionner ses trades sur l'ES, future du SP500.  Voici une vue en daily du future Gold avec l'indicateur :



- En rouge :
Climax volume - high volume and high range.
- En vert : High volume churn - high volume but low range.
- En magenta : Climax volume plus High volume churn - both the above conditions (rare).
- En blanc : Low volume churn - low volume and high range.
- En jaune : Low volume - just low volume but not a low volume churn bar.
Je vous renvoie au site pour de plus amples informations.

Il faut mettre les indicateurs en mode histogramme et bien respecter les couleurs : cyan, puis jaune, puis rouge ,puis vert, puis blanc, puis magenta, et enfin, rouge de nouveau.  Voici le code pour Prorealtime :

/////// Better Volume Indicator from emini-watch.com ////////////
vv1=volume
vv2=range*volume
if range<>0 then
    vv3=volume/range
endif
vv4=average[100](vv1)
if vv1=lowest[20](vv1) then
    lowvol=vv1
else
    lowvol=0
endif
if vv2=highest[20](vv2) then
    climax=vv1
else
    climax=0
endif
if vv3=highest[20](vv3) then
    chum=vv1
else
    chum=0
endif
if vv2=highest[20](vv2) and vv3=highest[20](vv3) then
    chumclim=vv1
else
    chumclim=0
endif
if vv3=lowest[20](vv3) then
    lowchum=vv1
else
    lowchum=0
endif
return vv1,lowvol,climax,chum,lowchum,chumclim,vv4

Repost 0
Published by hk_lisse - dans Volume
commenter cet article
22 mai 2008 4 22 /05 /mai /2008 08:13


Digressions autour du filtre LOWESS.

Lors d'un article précédent, je faisais remarquer que dans le programme du filtre LOWESS, Smallcaps90 traitait les derniers cas différament par rapport au code mis sur le Blog.  Alors qu'il réduisait progressivement la longueur du filtre à l'approche du dernier cours, je gardais une longueur constante mais multipliais la dernière clôture à l'infini.  Voici une vue du filtre de paramètre 51, appliqué au DAX future, avec les 2 courbes pour comparaison (en blanc, le code hk et en vert/rouge le code Smallcaps90) :

 

On constate bien que progressivement pour les 25 derniers cours, les courbes divergent.  La courbe blanche est plus réactive alors que la verte a plus d'inertie.

Voici le code pour Prorealtime de la version Graphe AT-pro, 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
    tra=tra+1
endif
n=p3 mod 2
p=(p3-n)/2
p3=(2*p)+1
once x=0
w=abs((p-x)/p)
w=w*w*w
w=(1-w)
w=w*w*w
x=x+1
if tra[p]=0 then
    if barindex=p3 then
        a=0
        b=0
        e=0
        for i=1 to p3
            z=barindex-i+1
            a=a+w[z]
            b=b+w[z]*(i)
            e=e+(i)*(i)*w[z]
        next
    endif
    if barindex>p3 then
        c=0
        d=0
        for i=1 to p3
            z=barindex-i+1
            c=c+co[p3+p-i]*w[z]
            d=d+co[p3+p-i]*w[z]*(i)
        next
    endif
else
    a=0
    b=0
    e=0
    for i=1 to p3-tra[p]
        z=barindex-i+1
        a=a+w[z]
        b=b+w[z]*(i)
        e=e+(i)*(i)*w[z]
    next
    c=0
    d=0
    for i=1 to p3-tra[p]
        z=barindex-i+1
        c=c+co[p3+p-i]*w[z]
        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+1)+beta
if barindex<p3*2 then
    lowess=undefined
endif
return lowess

Une autre façon d'utiliser le filtre LOWESS est de créer une fonction "endpoint" qui affiche la valeur de la courbe à l'instant "t" comme si on se retrouvait sur le dernier cours.  Voici une vue avec la fonction "endpoint" appliquée à la version Graphe AT-pro :



On voit que pour le dernier cours les valeurs sont identiques et que d'autre part la courbe "tient compte des données futures" puisque les valeurs divergent à gauche  de la dernière clôture.  En effet, il faut bien comprendre que normalement à l'instant "t", la courbe vient se poser sur le point.  La couleur des points est définie par la courbure du filtre à cet instant : c'est ce qu'il y a de plus intéressant dans cette approche, pouvoir capter le moment où la régression change de direction.

Voici une autre vue avec pour comparaison les codes hk et Smallcaps90 en version "endpoint" :



Aucune des 2 versions ne s'approche vraiment de la courbe.  Le dessin fait par le code hk est plus chaotique mais plus réactif alors que la version Graphe AT-pro est plus linéaire mais marque un certain éloignement par rapport à la courbe.

Une autre façon de comparer les 2 codes est d'afficher la courbure de la régression (valeur - valeur[1]) à l'instant "t".  Ci-dessous, l'indicateur version hk en blanc/noir et version Smallcaps en rouge/vert, mêmes conclusions :



Comme affiché dans l'article précédent, la courbe de la régression non-paramétrique est proche de la moyenne de Hurst.  J'ai donc appliqué la méthode pour essayer de sortir les cycles : calculer la différence entre 2 filtres LOWESS, le second étant de longueur égale à la moitié du premier.  Voici une vue avec, en fenêtre 1, le DAX future, en 2, le cycle "version PRT", en 3 le cycle "LOWESS" et en 4 le cycle "LOWESS endpoint" (filtre LOWESS de paramètres 51 et 25) :




Sur la dernière fenêtre j'ai ajouté une moyenne mobile pour lisser la courbe.  Voilà peut-être un indicateur de "cycle à longueur variable" et un moyen de calculer l'amplitude pour les enveloppes ?

Edit le 21 novembre 2008 :


Suite à la demande de Karl, voici les codes de la version "endpoint" noire/blanche :


///////////// programme de la courbe noire et blanche ///////////
/////////// il faut introduire a en variable (51 par défaut) /////////////
myke1 = CALL "kernel endpoint "[a]
myke2 = CALL "kernel endpoint veille"[a]
c=myke1-myke2
return myke1 coloured by c

/////////// programme kernel endpoint ////////////
//////////// il faut mettre p3 en variable (51 par défaut) ///////////
n=p3 mod 2
p=(p3-n)/2
p3=(2*p)+1
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=1 to p+1
        z=barindex-i+1
        a=a+w[z]
        b=b+w[z]*(i)
        e=e+(i)*(i)*w[z]
    next
endif
if barindex>p3 then
    c=0
    d=0
    for i=1 to p+1
        z=barindex-i+1
        c=c+close[p+1-i]*w[z]
        d=d+close[p+1-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+1)+beta
if barindex<p3*2 then
    lowess=undefined
endif
return lowess

//////////// programme kernel endpoint veille ///////////
/////////// il faut introduire p3 en variable (51 par défaut) ///////////
n=p3 mod 2
p=(p3-n)/2
p3=(2*p)+1
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=1 to p+2
        z=barindex-i+1
        a=a+w[z]
        b=b+w[z]*(i)
        e=e+(i)*(i)*w[z]
    next
endif
if barindex>p3 then
    c=0
    d=0
    for i=1 to p+2
        z=barindex-i+1
        c=c+close[p+2-i]*w[z]
        d=d+close[p+2-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+1)+beta
if barindex<p3*2 then
    lowess=undefined
endif
return lowess

Repost 0
15 mai 2008 4 15 /05 /mai /2008 07:33

Filtre LOWESS : le programme définitif pour Prorealtime.

Grâce au concours de Smallcaps90, j'ai pu mettre le doigt sur le problème d'indexation qui différenciait légèrement les courbes (voir article précédent).  Les derniers cas sont toujours traités autrement, la longueur maximum pour la régression est de 195.  Voici une vue du CAC avec le tracé pour un paramètre de 51 :



Et le code pour Prorealtime, 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
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=1 to p3
        z=barindex-i+1
        a=a+w[z]
        b=b+w[z]*(i)
        e=e+(i)*(i)*w[z]
    next
endif
if barindex>p3 then
    c=0
    d=0
    for i=1 to p3
        z=barindex-i+1
        c=c+co[p3+p-i]*w[z]
        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+1)+beta
if barindex<p3*2 then
    lowess=undefined
endif
return lowess

Voici une comparaison sur le CAC du tracé des enveloppes de Hurst de paramètre 100 (en blanc), et de la courbe du filtre LOWESS de paramètre 83 (en pointillé noir) :



Maintenant il suffit d'ajouter le Value Charts et vous aussi, vous pourrez mettre des vidéos d'analyses très convaincantes sur la toile !
Repost 0
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........
Repost 0
26 avril 2008 6 26 /04 /avril /2008 19:57

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.
Repost 0
Published by hk_lisse - dans Commentaires
commenter cet article
26 avril 2008 6 26 /04 /avril /2008 19:33


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

Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
18 avril 2008 5 18 /04 /avril /2008 15:00

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.
Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
12 avril 2008 6 12 /04 /avril /2008 19:32

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.
Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article