Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
5 novembre 2008 3 05 /11 /novembre /2008 10:08

Les Boîtes de Darvas.

Suite à la demande de Pierre, voici donc un programme permettant de représenter les boîtes de Darvas sur Prorealtime.  Les boîtes dessinent des zones de range, une sortie par le haut ou le bas donne un signal d'achat ou de vente.  Ce signal doit être confirmé par d'autres indicateurs.  Par exemple, Darvas utilisait une cassure du plus haut de l'année pour rentrer à l'achat.

Les règles pour l'établissement des boîtes sont les suivantes :
 - 1. Un TOP est trouvé s'il marque un sommet pour les 3 barres qui le suivent.
 - 2. Ensuite, un BOTTOM est trouvé s'il marque un creux pour les 3 barres qui le suivent.
 - 3. La recherche du point bas commence à la même barre que celle du TOP, pendant celle-ci, le point haut ne peut être dépassé.
La boîte démarre avec le sommet et se termine dès que les cours en sortent.

Comme je l'ai signalé dans la rubrique "contact", l'indicateur introduit un biais haussier de par sa construction.  En effet les boîtes sont plus larges à la baisse qu'à la hausse puisque l'on commence par un sommet.  L'idéal serait, comme le suggère Pierre, de créer des "bearish boxes" débutant par un point bas..........  A tester.

Je n'ai pas retrouvé les programmes de l'époque, j'ai donc réécrit les codes.  Il se peut qu'il reste quelques bugs (notamment avec les arrondis).  De même pour la représentation à l'écran, vous pouvez faire montre d'imagination.

Voici une vue de GOOG, les points verts signalent la boîte valide, les points rouges une sortie :



Le code pour Prorealtime :

k=48
once tth=undefined
once ttl=undefined
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
low1=(round(low*100))/100
high1=(round(high*100))/100
if barindex > 100 then
    if box=1 and (high1>tth or low1<ttl) then
        box=0
        flag=0
    endif
    if box=0 and flag=0 and high1>=hi[46] and high1>=hi[45] and high1>=hi[44] then
        th=high1
        flag=1
    endif
    if box=0 and flag=1 then
        for zz=0 to 44
            if  hi[47-zz-1]>th or hi[47-zz-2]>th or hi[47-zz-3]>th then
                flag=0
                break
            endif
            if lo[47-zz]<lo[47-zz-1] and lo[47-zz]<lo[47-zz-2] and lo[47-zz]<lo[47-zz-3] then
                box=1
                tth=th
                ttl=lo[47-zz]
                break
            endif
        next
    endif
else
    tth=undefined
    ttl=undefined
endif
if box=1 then
    ba=ttl
else
    ba=tth
endif
return ba coloured by box-1, tth coloured by box-1, ttl coloured by box-1

Il faut mettre un remplissage entre l'output 1 et le 2.  Paramètrer le 1 en points fins, le 2 en gros points (+couleur vert/rouge), idem pour le 3.  D'autres combinaisons sont possibles.
Le programme fait appel aux données futures et n'est utilisable, sous cette forme, que lorsque les cours sont figés.
Je ferai un prochain article avec une version temps réel, pour un screener.

Partager cet article

Repost 0
Published by hk_lisse - dans Indicateurs
commenter cet article

commentaires

Francesco 12/09/2014 08:40

I dont' understand where to apply colors and line style, can you provide more details on that? Thank you!