Samedi 19 septembre 2009

Cycles : Où en est l'indice SP 500 ?

Voici les graphes du SP500, avec un nouvel indicateur de cycles que je teste.


En unité "mois", jusqu'au début des années 80, les cyles sont bien marqués : +/- 4 ans pour le plus long.


Toujours en unité "mois" : à la fin des eighties, c'est moins régulier.


Sur l'unité "semaines" : les cycles sont très bien sortis pour la période récente.


Sur l'unité "jours" : les 3 cycles sont au top.


Une vue agrandie du dernier graphe.
Par hk_lisse - Publié dans : Commentaires
- Voir les commentaires - Recommander
Vendredi 15 mai 2009

Tracer la droite de régression linéaire en automatique, version 2.

Voici une version améliorée du premier programme (c'est ici) qui traçait en automatique la droite de régression linéaire des k dernières bougies.  Ce nouveau code est beaucoup plus rapide (suppression des boucles) et n'est plus limité pour la longueur de la droite.  Une vue de YHOO avec k=50, puis k=1000.




Pourquoi faire simple quand on peut faire compliqué ?  Comment ne pas avoir pensé plus tôt à utiliser la commande "LinearRegression" ?  Voici le code pour Prorealtime, il faut introduire k en variable :

///////////// regression automatique v.02 /////////
once j=0
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 and flag[1]=0 then
    test=linearregression[k](co)
    test1=linearregressionslope[k](co)
    a=test1
    b=test-test1*k
endif
if flag=0 then
    reg=undefined
else
    j=j+1
    reg=a*j+b
endif
return reg
Par hk_lisse - Publié dans : Régression Linéaire
- Voir les commentaires - Recommander
Jeudi 14 mai 2009

Algorithme de Goertzel : recherche de l'amplitude, de la période et de la phase du cycle.

Dans le dernier article sur l'algorithme de Goertzel, le programme permettait de retrouver les 2 périodes des cycles qui avaient la meilleure réponse.  Je l'ai complèté et corrigé pour qu'il sorte également l'amplitude correcte du cycle ainsi que la phase : cela afin de pouvoir redessiner la courbe.
Dans l'exemple ci-dessous, le signal (en noir) est une sinusoïde de période 11 ajoutée à une sinusoïde de période 19 (d'amplitude 2) avec un décalage de phase (90),  le tout avec une pincée de bruit..   Les 2 courbes (rouge et bleue) sont reconstruites par le programme, il reste à les superposer pour avoir le signal sans bruit.



Le code pour Prorealtime (k, en variable, est la fréquence déjà trouvée) :

////////////////// sous prgm goertzel  biss ////////////
a=barindex
sig=sin(360*a/11)+2*sin(360*a/19+90)
b=SQRT(barindex*(b+1))
b=abs((b-ROUND(b))*4)
c=b-1
sig=sig+c
n=200
pr=sig
alpha=2*cos(360*1/k)
q1=0
q2=0
for i=n downto 0//fenêtre de 200 barres
    q3=pr[i]+alpha*q1-q2
    q2=q1
    q1=q3
next
amp=sqrt(square(q1)+square(q2)-alpha*q1*q2)
real=q1-(alpha*q2)/2
imag=q2*sin(360*1/k)
phas=atan(imag/real)
if real<0 then
    phas=phas+180
elsif real>=0 and imag<0 then
    phas=phas+360
endif
return (2*amp/n)*sin(360/k+phas[1]+90),sig
Par hk_lisse - Publié dans : Les Cycles
- Voir les commentaires - Recommander
Jeudi 16 avril 2009

RSI Chandeliers.


Voici à la demande de Mallory, le RSI en représentation chandeliers.  L'indicateur est calculé sur la cloture des barres précédentes et sur les données intra-barre de la dernière bougie.  Une vue de l'indicateur (14) appliqué à GOOG en daily :



Il faut bien sûr créer 3 indicateurs : bas, haut et corps.  Mettre également p en variable : longueur du RSI.
Et les codes pour Proréaltime :

//////////// rsi chandelier bas ////////////////
hausse=max(0,close-close[1])
baisse=max(0,close[1]-close)
mh=wilderaverage[p](hausse)
mb=wilderaverage[p](baisse)
rs=mh/mb
rsii=100-100/(1+rs)
hauss=max(0,open-close[1])
baiss=max(0,close[1]-open)
testh=(mh[1]*(p-1)+hauss)/p
testb=(mb[1]*(p-1)+baiss)/p
testrs=testh/testb
testrsi=100-100/(1+testrs)
hauss1=max(0,low-close[1])
baiss1=max(0,close[1]-low)
testh1=(mh[1]*(p-1)+hauss1)/p
testb1=(mb[1]*(p-1)+baiss1)/p
testrs1=testh1/testb1
testrsi1=100-100/(1+testrs1)
c2=min(rsii,testrsi)
r=abs(c2-testrsi1)
r=(r)/29
b1=testrsi1
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

///////////// rsi chandelier haut ///////////////
hausse=max(0,close-close[1])
baisse=max(0,close[1]-close)
mh=wilderaverage[p](hausse)
mb=wilderaverage[p](baisse)
rs=mh/mb
rsii=100-100/(1+rs)
hauss=max(0,open-close[1])
baiss=max(0,close[1]-open)
testh=(mh[1]*(p-1)+hauss)/p
testb=(mb[1]*(p-1)+baiss)/p
testrs=testh/testb
testrsi=100-100/(1+testrs)
hauss1=max(0,high-close[1])
baiss1=max(0,close[1]-high)
testh1=(mh[1]*(p-1)+hauss1)/p
testb1=(mb[1]*(p-1)+baiss1)/p
testrs1=testh1/testb1
testrsi1=100-100/(1+testrs1)
c2=max(rsii,testrsi)
r=abs(c2-testrsi1)
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

////////////// rsi chandelier corps ///////////////
hausse=max(0,close-close[1])
baisse=max(0,close[1]-close)
mh=wilderaverage[p](hausse)
mb=wilderaverage[p](baisse)
rs=mh/mb
rsii=100-100/(1+rs)
hauss=max(0,open-close[1])
baiss=max(0,close[1]-open)
testh=(mh[1]*(p-1)+hauss)/p
testb=(mb[1]*(p-1)+baiss)/p
testrs=testh/testb
testrsi=100-100/(1+testrs)
r=abs(testrsi-rsii)
r=(r)/29
if testrsi<rsii then
    b1=testrsi
else
    b1=rsii
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=rsii-testrsi
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


Par hk_lisse - Publié dans : Indicateurs
- Voir les commentaires - Recommander
Dimanche 15 février 2009
Par hk_lisse - Publié dans : Commentaires
- 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