Overblog 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

Repost 0
Published by hk_lisse - dans Trailing Stop
commenter cet article
7 février 2008 4 07 /02 /février /2008 18:27

Le précurseur de volatilité d'Oxythan.

 

Voici un petit indicateur que je trouve bien pratique, il est à comparer avec le Bollinger Bandwidth : à employer pour filtrer des stratégies de suivi de tendance ou de contre-trend.  Cet indicateur a été créé par Oxythan, il en fait état en 2004 sur une file chez Dakoté.  Je reprends son explication :

 

Principe :
L'idée est de construire un indicateur qui utilisé la dérivée de la volatilité afin de détecter les coups de faiblesse qui précedent a peu prés toujours les sommets.

Afin d'avoir une bonne approximation de la dérivée, on modélise la courbe de volatilité par un ensemble de polynomes du second degrés en prenant des groupes de 3 points sur une fenêtre glissante.
Ensuite, on dérive de façon algébrique ce polynome, et on exprime la valeur de la dérivée sur le dernier point en fonction de la valeur des 3 points.
A ce moment la, on peut avoir la valeur de la dérivée de la volatilité en tous points de l'historique, mais les données extrèmement bruitées, sont inutilisables.
Pour obtenir un signal utilisable, on applique un MACD sur cette dérivée et c'est le croisement de ce MACD avec son signal qui donne une très bonne approximation des creux et sommets de volatilité.

 

Et le code pour Prorealtime, il faut mettre p1, p2 et p3 en variable (valeurs préconisées : 22, 44, 9) :

 

ub=BollingerUp[20](close)
lb=BollingerDown[20](close)

// on prend les 3 derniers points de volatilité

left=100*((ub[2]-lb[2])/((ub[2]+lb[2])/2))
center=100*((ub[1]-lb[1])/((ub[1]+lb[1])/2))
right=100*((ub-lb)/((ub+lb)/2))

// on calcule la dérivée sur le dernier point

derive=((left+right)/2)-2*center+right

// on calcule le MACD de cette dérivée

ema1=exponentialaverage[p1](derive)
ema2=exponentialaverage[p2](derive)
mac=ema1-ema2
mmac=exponentialaverage[p3](mac)
precurseur=mac-mmac
return mac,mmac,precurseur,0

 

Et une vue de l'indicateur en fenêtre 1, en 2 la Bollinger Bandwidth pour comparaison et en 3 les cours.

 

hk5.gif

Repost 0
Published by hk_lisse - dans Volatilité
commenter cet article
7 février 2008 4 07 /02 /février /2008 18:13

L'Historical Volatility Ratio (HVR).

 

Le HVR retourne le rapport entre une volatilité historique courte et une longue.  Quand la volatilité courte baisse sous un certain pourcentage de la volatilité longue, on peut s'attendre à un mouvement d'ampleur.  Les paramètres les plus utilisés sont 10/100 et 6/100 et le niveau de 50%.  Ainsi si la volatilité historique à 6 périodes passe sous 50% de la volatilité historique à 100 périodes, on peut regarder aux trades potentiels car un mouvement est attendu.

 

Voici une vue d'INTC avec en fenêtre 2, le HVR (historigramme vert pour le HVR6 et rouge pour le HVR10) et en fenêtre 3 un Stochastic*.  Des mouvements d'une certaine amplitude interviennent en A,B et C.

 

hk4-copie-2.gif

 

Et le code pour Prorealtime :

 

st6=STD[6]((close/close[1]))
st10=std[10]((close/close[1]))
st100=std[100]((close/close[1]))
hvr6=st6/st100
hvr10=st10/st100
l=0.50
if hvr6<l  then
    sig=.2
else
    sig=0
endif
if hvr10<l then
    sig1=-.2
else
    sig1=0
endif

return hvr6, hvr10,l,sig,sig1

 

Un exemple de scanning par Larry SWING en utilisant le HVR : c'est ici.  Celui-ci n'a rien inventé car Laurence CONNORS et Linda BRADFORD RASCHKE font déjà mention du setup dans le numéro d'août 1996 de S&C dans un article intitulé "Historical Volatility And Pattern Recognition".

 
* Pour Arnaud : le Stochastic est un "Spread Stochastic" (voir l'article dans la rubrique cycles).  Voici le code pour rappel :


ema1=exponentialaverage[10](close)
ema2=exponentialaverage[40](close)
spread=ema1-ema2
spr=spread-spread[1]
ll=lowest[5](spr)
hh=highest[5](spr)
stoc1=100*(spr-ll)/(hh-ll)
spreadsto=average[5](stoc1]
avsto=average[3](spreadsto)
return spreadsto,avsto,20,80,50

Repost 0
Published by hk_lisse - dans Volatilité
commenter cet article
7 février 2008 4 07 /02 /février /2008 17:34

La volatilité normalisée.

 

Voici un autre petit programme (publié par jcp31) qui cette fois retourne la volatilité "normalisée".  De nouveau, l'indicateur permet les comparaisons entres différentes actions et périodes.  On visualise également bien mieux les zones de basses et hautes volatilités.  J'ai repris les données de l'analyse dynamique avec une longueur d'historique de 150 barres pour calculer la volatilité de référence (ces paramètres peuvent être changés dans le programme).  Voici une vue long terme du CAC, avec en fenêtre 2 la volatilité normalisée et en fenêtre 3, la BB Bandwidth.

 


hk3-copie-1.gif

 

Le code pour Prorealtime :

 

vola=std[20](typicalprice)
vola1=vola/average[20](typicalprice)
vmin=lowest[150](vola1)
vmax=highest[150](vola1)
vfin=(vola1-vmin)/(vmax-vmin)
return vfin

Repost 0
Published by hk_lisse - dans Volatilité
commenter cet article
7 février 2008 4 07 /02 /février /2008 17:23

Volatilité : le Normalized ATR (N-ATR) ou ATRP (ATR percent).

 

Voici un indicateur tout simple présenté dans le S&C de 05/2006 par John Forman.  Il permet de comparer la volatilité d'actions entres elles ou par rapport au marché.  Il est utile également pour mesurer la volatilité sur un titre pour des périodes très éloignées.  Le N-ATR permet aussi d'augmenter l'efficacité des signaux de trading en mieux sélectionnant les périodes ou les actions.  Il peut enfin être entré comme critère pour un screener comme dans l'exemple ci-dessous du SRD.

 

hk2-copie-1.gif

 

Le code pour Prorealtime :

 

a=AverageTrueRange[14](close)
natr=a/close*100
return natr

Repost 0
Published by hk_lisse - dans Volatilité
commenter cet article
7 février 2008 4 07 /02 /février /2008 17:01


Volume : l'indice d'activité par mois.

 

Voici un petit indicateur qui retourne les capitaux échangés sur une valeur pour le mois précédent.  Cet indicateur permet de sélectionner les titres les plus liquides dans le cadre d'un screener.  Exemple sur le SRD :

 

hk1-copie-1.gif

 

Le code pour Prorealtime :

 

jour=Date MOD 1000000
mois= jour mod 10000
jour=mois mod 100
mois=(mois-jour)/100
volu=volume+volu
if mois<>mois[1] then
    moisvol=volu[1]*close[1]
    volu=volume
endif
return moisvol

Repost 0
Published by hk_lisse - dans Volume
commenter cet article