Overblog Suivre ce blog
Administration Créer mon blog
9 octobre 2008 4 09 /10 /octobre /2008 21:54

ATD, la distribution de la volatilité.

Inspiré par le RSI Generator de Ehlers, voici les graphes de la distribution de la volatilité normalisée (150 périodes) pour respectivement, le S&P 500 (14577 barres) et le CAC 40 (5015 barres) :





Les deux graphes ont la même allure.  Pour tous les deux, la médiane se trouve pile sur le niveau 30.  Les valeurs de 0 et 100, élevées, sonr atteintes lorsque la volatilité dépasse le seuil minimum ou maximum calculé sur 150 périodes.

Du coup, j'ai trouvé le moyen de faire un programme qui ressort la médiane pour la volatilité normalisée.  J'essaye de l'optimiser, car il est un peu long mais rapide, ce sera l'objet d'un prochain article.
Repost 0
5 octobre 2008 7 05 /10 /octobre /2008 20:03

Cycles : Où en est l'indice DOW JONES ?

En ces temps un peu mouvementés, chacun cherche des repères.  Dans un article du 14/02/2008 (c'est ici), j'avais publié un premier essai d'analyse basé sur les cycles  Qu'en est-il aujourd'hui ?

Voici une vue de l'indice, en hebdo, avec les mêmes indicateurs : cycle à 4 ans et cycle à 6 mois.



Tout d'abord, le dessin des courbes est resté inchangé par rapport au graphique de février, c'est une bonne nouvelle, alors que la dernière partie est extrapolée !  Et le retournement annoncé de la courbe du cycle à 6 mois a bien eu lieu, en contre-tendance du cycle long terme baissier..

Aujourd'hui, les deux cycles sont en phase, il ne devrait pas y avoir de retournement du cycle 6 mois avant 3 semaines.  Le cycle 4 ans marque clairement l'orientation du marché à long terme, il est certain que le prochain rebond ne retournera pas celui-ci, à mettre en parallèle avec la période fin 2001/début 2002. 
Repost 0
Published by hk_lisse - dans Commentaires
commenter cet article
25 septembre 2008 4 25 /09 /septembre /2008 19:13

Le RSI PDF Generator.

Comme demandé par Alvaro, voici le RSI PDF Generator.  Rien de nouveau, en fait, Ehlers le présentait déjà en 2007 (voir séminar).  Le graphe ne représente rien d'autre que la distribution du RSI modifié de Elhers.  Je vous passe l'interprétation qu'il en fait, je ne suis pas convaicu.  Est-ce parce que le RSI passe peu de temps dans la zone 20 que pour autant les cours vont remonter ?

Ici, une vue de la répartition du RSI pour le E-mini SP, 10 années demandées, soit 2975 barres :



Sur Prorealtime, l'axe des abscisses étant dévolu aux dates, j'ai marqué par un trait rouge les différents niveaux du RSI par 10.  Donc la page 21, Alvaro, ne donne pas le code d'un système de trading miracle........
Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
31 août 2008 7 31 /08 /août /2008 14:56

La Médiane, un nouvel indicateur magique ?

La Médiane n'est pas disponible par défaut sur Prorealtime.  Cet indicateur reprend la valeur médiane d'un échantillon, CAD tel que 50% des données soient inférieures à sa valeur et bien sûr 50% des données supérieures à cette même valeur.  Normalement, on procède par un tri par ordre croissant de l'échantillon et on prend la donnée de rang (N+1)/2 pour N impair sinon la moyenne des données de rang N/2 et (N/2)+1 pour N pair.

La plateforme Prorealtime ne permettant pas l'usage de tableaux, il est assez fastidieux de programmer de tels tris.  D'autant plus que l'on est toujours à la merci du message d'erreur "boucle sans fin" si on dépasse un certain nombre d'instructions.

Dutchy propose sur le forum Aktienboard.com, un programme qui contourne le problème du tri.  Mais cette version garde comme inconvénients d'être limitée à une longueur de 15 (sinon on a le message d'erreur "boucle sans fin'), d'être approximative dans le cas où plusieurs valeurs de l'échantillon sont égales et de ne fonctionner que pour un paramètre impair.  J'ai amélioré le programme pour les 2 premiers points, reste le problème du paramètrage pair où il faudrait faire tourner le programme deux fois et en extraire la moyenne des 2 sorties, ce qui est trop lourd pour le logiciel.

Pour contourner le problème du nombre d'instructions exécutables (boucle dans une boucle), je crée un sous programme "MEADIAN SUB", dont voici le code (il faut introduire x et len en variables) :

/////////// median sub /////////////////
inf=0
sign=0
egal=0
for p=0 to len-1
    if close[p]<close[x] then
        inf=inf+1
    elsif close[p]=close[x] then
        egal=egal+1
    endif
next
sup=len-inf-egal
if min(inf,sup)+egal>max(inf,sup) then
    sign=1
endif
return sign

Et maintenant le code de l'indicateur lui-même (il faut introduire par en variable, qui représente la longueur de l'échantillon sur laquelle le calcul est effectué) :

///////////////// indicateur médiane /////////////
par=(par mod 2=0)+par
for i=0 to par-1
    my10=call "median sub"[i,par]
    if my10=1 then
        medi=close[i]
        break
    endif
next
if barindex<par then
    medi=undefined
endif
return medi

Et une vue de la Médiane appliquée à l'indice DOW JONES, en bleu de longueur 5 et en blanc de longueur 25 :



Le programme reste lourd pour des paramètrages de valeurs élevées du fait de l'emploi de la subroutine.

Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
30 août 2008 6 30 /08 /août /2008 16:33

Backtest : Premier Stochastic Oscillator (PSO) by Lee Leibfarth.

Dans le numéro d'août de S&C, Lee Leibfarth présente une variante du Stochastic : le PSO , Premier Stochastic Oscillator.  Il décrit également une stratégie basée sur cet indicateur.  Voici une vue du PSO appliqué au FCE :



Les signaux d'achat sont donnés par un croisement à la baisse de la courbe et des niveaux 0.9 ou 0.2.
Les signaux de vente, eux, par un croisement à la hausse de la courbe avec les valeurs -0.9 ou -0.2.

Et le code de l'indicateur pour Prorealtime, les paramètres par défaut sont 8,5,5 :

len=8
per=5
stoc=Stochastic[len,1](close)
nsto=0.1*(stoc-50)
ssto=exponentialaverage[per](nsto)
sssto=exponentialaverage[per](ssto)
prem=(EXP(sssto)-1)/(exp(sssto)+1)
cond1=prem<.9 and prem[1]>.9
cond2=prem<.2 and prem[1]>.2
cond3=prem>-.9 and prem[1]<-.9
cond4=prem>-.2 and prem[1]<-.2
condha=(cond1 or cond2)*-.2
condvte=(cond3 or cond4)*-.2
return prem, .9, .2, -.9, -.2,condha, condvte

Lee Leibfarth préconise un rapport R/R de 2 : soit une prise de profit éloignée du double du stoploss.  Est-ce là la clé de la profitabilité du système ?  Voici un vue de la courbe P/L pour le FCE, 3.50 eur par A/R, sans slippage, 1 contrat, stop à 1.2%, target à 2.4% :



Le rapport :



Et le code du backtest de la stratégie PSO pour Prorealtime, l'écart pour le stoploss (aa) est à introduire en variable :

bb=aa*2
REM Achat
ignored, ignored, ignored, ignored, ignored, indic1, indic2= CALL "premier stochastic"
c1 = (indic1 < 0.0)
IF c1 THEN
    BUY 1 SHARES AT MARKET THISBARONCLOSE
    pr=entryquote
    tg=pr*(1+bb)
    st=pr*(1-aa)
ENDIF
sell at st stop
sell at tg limit

REM Vente à découvert
c2 = (indic2 < 0.0)
IF c2 THEN
    SELLSHORT 1 SHARES AT MARKET THISBARONCLOSE
    prv=entryquote
    tgv=prv*(1-bb)
    stv=prv*(1+aa)
ENDIF
exitshort at stv stop
exitshort at tgv limit

Prudence !  Il faut bien faire attention si le stop et le target sont touchés sur la même barre, Prorealtime prend parfois le cas le plus favorable (dans l'ordre test sur open, puis close puis high et enfin low).  Ici, avec ce système, il faudrait un range de 3.6% pour avoir cette possibilité.  Après une rapide vérification, je n'ai pas trouvé ce genre de bougie mais prudence, si on réduit la valeur de la variable avec la fonction optimisation.

D'après les développeurs, cette stratégie peut être associée avec d'autres signaux.  Des filtres pour le trend ou/et le timing ?  On peut aussi imaginer un écart variant en fonction de l'ATR.

Repost 0
7 août 2008 4 07 /08 /août /2008 19:22

L'indicateur Scalper, version II.

Voici une seconde version de l'indicateur Scalper de Carter.  Les règles pour la détermination des points de retournement sont toujours identiques, seul la méthode d'affichage à l'écran diffère.  Ici, les niveaux des points "swing" apparaissent une fois la configuration validée, donc au mieux, 2 barres aprés le sommet ou le creux.  Ci-dessous, une vue du CAC avec l'indicateur dans sa nouvelle version :



Et le code pour Prorealtime :

once scalp=undefined
once scolp=undefined
c1=high<high[1] and high[1]>high[2] and high[1]>high[3] and flag=0
if c1 then
    flag=1
    th=high[1]
    tl=low
endif
if flag=1 and high>th then
    flag=0
endif
if flag=1  and close<tl then
    scalp=th
    flag=0
endif
c2=low>low[1] and low[1]<low[2] and low[1]<low[3] and flog=0
if c2 then
    flog=1
    tth=low[1]
    ttl=high
endif
if flog=1 and low<tth then
    flog=0
endif
if flog=1 and close>ttl then
    scolp=tth
    flog=0
endif
return scalp,scolp

Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
7 août 2008 4 07 /08 /août /2008 14:56

ATD : Le screener de Prorealtime montre ses limites.

Dans un précédent article, je m'interrogeais sur l'utilisation des indicateurs multi-UT's dévellopés jusqu'à présent.  Backtests puis recherche des situations favorables via le screener, aurait été le chemin normal.  J'avais un peu laissé de coté le projet, rebuté par l'incompatibilté apparente entre les éléments pour une utilisation dédiée au trading : différentes UT's, indicateurs, backtest et screener.

Suivant l'actualité, mardi dernier, je suis rentré sur MER.  La situation ATD me paraissait très favorable et j'ai essayé de voir si il y avait moyen de détecter ce setup : divergence sur le Stochastic Week appliqué au Daily.



Si le screener est fait avec la construction assistée par un clic sur l'indicateur de la fenêtre du bas, rien ne sort.  Idem avec la construction personnalisée et recopiage du code.  Le screener ne calculant tout simplement pas l'indicateur pour les barres antérieures.  Il faut dès lors procéder avec un nouveau programme du type :

For y=0 to 130
x=130-y

et faire les calculs sur les barres d'index [x].

Le Stochastic est un 14,5,5.  Ce qui donne un nombre de barres nécessaires de 14*5+5*5+5*5+1*5+1*5, puisqu'il y a 5 jours par chandelier week à reconstituer, soit 130 barres.  Normalement le screener étant limité à 256 barres, la détection devrait fonctionner.  Eh bien non !  Un message de boucle sans fin vient bloquer le programme.  En fait Prorealtime ne tolère que des programmes d'environ 900 lignes (je ne sais plus exactement) sinon un message de boucle sans fin intervient.  Ici, j'ai 130 x un certain nombre de lignes qui ne doit pas dépasser 7, sinon 7 x 130 étant supérieur à 900, le programme se bloque.

Tout cela pour dire que j'ai bien peur d'avoir programmé tous ces indicateurs ATD multi-UT's pour rien.  En effet à quoi sert un backtest si on ne peut pas détecter la situation par le screener ?  A méditer et à garder en mémoire pour éviter les impasses sur Prorealtime.
Repost 0
20 juillet 2008 7 20 /07 /juillet /2008 20:48

L'indicateur Scalper de John Carter.

Toujours issu du livre de John Carter, "Mastering The Trade", voici l'indicateur Scalper.  L'auteur écrit qu'il a observé que les points de retournement du marché se situent souvent après 3 higher high ou 3 lower low.  Il n'en dit pas plus et reste assez vague sur la construction de l'indicateur.  Dans une vidéo de présentation (visible ici), on constate que la construction est un peu différente de celle décrite dans le livre.  J'ai repris cette explication pour sortir un premier programme mais quelques interrogations subsistent, comme vous l'allez voir.

Pour les sommets, le raisonnement est le suivant, il faut :
- high[1]>high[2] et high[1]>high[3] et high[0]<high[1], ce qui marque le possible sommet en high[1].
- pour valider ce possible point de retournement, il suffit d'une cloture sous low[0] sans que high[1] ne soit dépassé, sinon on recommence la procédure.

Les interrogations sont les suivantes :
- les creux et les sommets doivent-ils être obligatoirement en alternance (ce qui n'est pas le cas dans cette version) ?
- ne peut-on pas prendre, dans certains cas, la condition : high[1]>high[2] et high[2]>high[3] afin de filtrer l'indicateur ?

Voici un vue du CAC avec cette première version du Scalper :



Et le code pour Prorealtime :

once rr=1
mb=average[20](typicalprice)
k=48
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
clo1=dpo[n](close)
moyc=close-clo1
clot=(moyc-moyc[1]+(close[p])/n)*n
clot=(round(clot*100))/100
cond1=(high>high[1] and high>high[2])
cond2=(cond1 and high>hi[46]) and (barindex>bari or rr=-1)
if cond1 and cond2 then
    flagg=1
    targeth=high
    targetl=lo[46]
else
    flagg=0
    signa=mb
endif
for zz=0 to 45
    if clot[45-zz]<targetl and hi[45-zz]<=targeth and flagg=1  then
        signa=high+(averagetruerange[20](close))*.5
        rr=1
        bari=barindex+zz+2
        break
    elsif     hi[45-zz]>targeth then
        signa=mb
        break
    endif
next
condi=(low<low[1] and low<low[2]) and low<lo[46] and (barindex>bar or rr=1)
if condi then
    fflag=1
    target1=low
    target2=hi[46]
else
    fflag=0
    siigna=mb
endif
for kk=0 to 45
    if clot[45-kk]>target2 and lo[45-kk]>=target1 and fflag=1 then
        siigna=low-(averagetruerange[20](close))*.5
        rr=-1
        bar=barindex+kk+2
        break
    elsif lo[45-kk]<target1 then
        siigna=mb
        break
    endif
next
if barindex < 100 then
    signa=undefined
    siigna=undefined
endif
return signa,siigna,mb

Ce programme fait appel aux données futures et n'est utilisable qu'en EOD.  Un version temps réel peut en être dérivée.
Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
13 juillet 2008 7 13 /07 /juillet /2008 18:42

The Bricks Indicator by John Carter.

Dans son livre "Mastering The Trade", John Carter, présente le Bricks Indicator à utiliser pour le day-trading.  Une vidéo d'explication est visible ici.  La technique utilisée n'est pas nouvelle, elle est connue sous le nom de "Three Line Break".  Cet indicateur a déjà été programmé sous forme de stop sur le Blog (voir la rubrique Trailing Stop).  J'ai simplement modifié une ligne pour que la représentation à l'écran corresponde avec celle de Carter.  Voici une vue de JNJ avec l'indicateur, Prorealtime ne permettant pas de tracer des lignes verticales par programmation, les briques ne sont pas vraiment rectangulaires :



Et le code pour Prorealtime :

once t=1
once a0=(close)
once a1=(close)
once a2=(close)
once a3=(close)
if t=1 and close>a3 then
    a0=a1
    a1=a2
    a2=a3
    a3=close
elsif t=1 and close<a0 then
    t=0
    a1=a3
    a0=a3
    a3=close
elsif t=0 and close<a3 then
    a0=a1
    a1=a2
    a2=a3
    a3=close
elsif t=0 and close>a0 then
    t=1
    a1=a3
    a0=a3
    a3=close
endif
return a2,a3

On peut imaginer d'utiliser l'indicateur coloriage du Blog pour le dessin des briques plutôt que la fonction remplissage de PRT.  Voilà ce que ça pourrait donner :


Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article
2 juillet 2008 3 02 /07 /juillet /2008 21:43

La moyenne XXX clone.

On cherche tous à filtrer au mieux les cours.  Voici un petit programme, trouvé sur un forum Amibroker, dont les résultats ne sont pas mauvais pour  un paramètrage compris entre 1 et 15.  Au-delà, la courbe se détache complètement des cours.  Une longueur de 10 pour ce filtre, a l'air d'être un bon réglage.  Ci-dessous une vue de CA avec la moyenne de paramètre 10 :



Et maintenant le code pour Prorealtime, il faut introduire "per" en variable :

price=medianprice//close
tn1=average[per](price)
s1=0
for i=0 to per-1
    s1=s1+((per-(2*i)-1)/2)*(price[i])
next
ecar=((per/2)+1)*s1/((per+1)*per)
moy=tn1+ecar
return moy

Smallcaps90 me communique un autre code pour une moyenne "zérolag".  Le voici, il faut introduie P1 en variable :

/////////// ZLEMA //////
if (p1-1)/2=round((p1-1)/2) then
    lag=(p1-1)/2
else
    lag=(p1)/2
endif
arg=close+(close-close[lag])
zlema=exponentialaverage[p1](arg)
return zlema

Et une vue de GLE en hebdo avec pour comparaison en rouge, la moyenne de Hull, en bleu, la "XXX clone" et en jaune, la ZLEMA de paramètre 10 pour les trois :


Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article