Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
7 février 2008 4 07 /02 /février /2008 20:54

Trailing Stop basé sur la volatilité : le Cynthia Kase Dev-Stop.

 

Voici le code pour Prorealtime, du Kase Dev-Stop, trailing stop basé sur la volatilité.  P1 représente le nombre de jours pris en compte pour le calcul de l'ATR.  P2, P3, P4 sont des coéfficients  pour les différents niveaux de stop.  On peut également se servir du système comme target.  La première ligne est appelée "warning"

 

p1=20
p2=1
p3=2.2
p4=3.3
ecart=0
ht=highest[2](high)
bs=lowest[2](low)
truer=max(max(ht-bs,abs(ht-close[2])),abs(bs-close[2]))
atruer=average[p1](truer)
for i=0 to p1-1 do
    ecart=ecart+square(truer[i]-atruer)
next
ecart=ecart/p1
sdev=sqrt(ecart)
dev1=close-atruer
dev2=close-atruer-sdev*p2
dev3=close-atruer-p3*sdev
dev4=close-atruer-p4*sdev
if dev1<dev1[1] and close > dev4[1] then
    dev1=dev1[1]
endif
if dev2<dev2[1] and close>dev4[1] then
    dev2=dev2[1]
endif
if dev3<dev3[1] and close>dev4[1] then
    dev3=dev3[1]
endif
if dev4<dev4[1] and close>dev4[1] then
    dev4=dev4[1]
endif
dev5=close+atruer
dev6=close+atruer+sdev*p2
dev7=close+atruer+p3*sdev
dev8=close+atruer+p4*sdev
if dev5>dev5[1] and close< dev8[1] then
    dev5=dev5[1]
endif
if dev6>dev6[1] and close< dev8[1] then
    dev6=dev6[1]
endif
if dev7>dev7[1] and close< dev8[1] then
    dev7=dev7[1]
endif
if dev8>dev8[1] and close< dev8[1] then
    dev8=dev8[1]
endif

return dev1,dev2,dev3,dev4, dev5, dev6, dev7, dev8

 

Avec un exemple de l'indicateur appliqué à ALU :

hk6.gif

 

On peut également s'en servir comme indicateur de tendance avec une fonction Stop And Reverse.

 

hk7.gif

 

Voici le code en version SAR :

 

p1=20
p2=1
p3=2.2
p4=3.3
ecart=0
ht=highest[2](high)
bs=lowest[2](low)
truer=max(max(ht-bs,abs(ht-close[2])),abs(bs-close[2]))
atruer=average[p1](truer)
for i=0 to p1-1 do
    ecart=ecart+square(truer[i]-atruer)
next
ecart=ecart/p1
sdev=sqrt(ecart)
dev1=close-atruer
dev2=close-atruer-sdev*p2
dev3=close-atruer-p3*sdev
dev4=close-atruer-p4*sdev
if dev1<dev1[1] and close > dev4[1] then
    dev1=dev1[1]
endif
if dev2<dev2[1] and close>dev4[1] then
    dev2=dev2[1]
endif
if dev3<dev3[1] and close>dev4[1] then
    dev3=dev3[1]
endif
if dev4<dev4[1] and close>dev4[1] then
    dev4=dev4[1]
endif
dev5=close+atruer
dev6=close+atruer+sdev*p2
dev7=close+atruer+p3*sdev
dev8=close+atruer+p4*sdev
if dev5>dev5[1] and close< dev8[1] then
    dev5=dev5[1]
endif
if dev6>dev6[1] and close< dev8[1] then
    dev6=dev6[1]
endif
if dev7>dev7[1] and close< dev8[1] then
    dev7=dev7[1]
endif
if dev8>dev8[1] and close< dev8[1] then
    dev8=dev8[1]
endif
if close>dev8[1] then
    flag=-1
else
    if close<dev4[1] then
        flag=1
    endif
endif
if flag=-1 then
    ind1=dev1
    ind2=dev2
    ind3=dev3
    ind4=dev4
    k=1
else
    ind1=dev5
    ind2=dev6
    ind3=dev7
    ind4=dev8
    k=-1
endif

return ind1 COLOURED BY k,ind2 coloured by k,ind3 coloured by k,ind4 coloured by k

Partager cet article
Repost0

commentaires