ProScreener: questions sur le code

par kero » 29 mai 2016 23:48

Hello,

bon, mon côté geek a repris le dessus et je n'ai pas résisté à la tentation de tenter de pondre un peu de code dans le ProScreener. Pas trop difficile a priori mais je sèche sur quelques trucs, alors je vais centraliser ici les questions qui me viennent au fur et à mesure. Si ça peut aider d'autres, tant mieux. ;)

Première question: je bloque sur quelque chose qui m'échappe. Contexte: je tente de construire un code pour détecter une figure chartiste qui ressemblerait à un triangle haussier, ou en tout cas à toute formation qui bloquerait à la hausse contre une résistance pendant un certain nombre de périodes.

Voici le code (encore largement incomplet, ce n'est qu'une ébauche):

Code : #

c1 = 0
c3 = 0
c4 = 1
numcontact = 0
niveausup = 0
supportexist = 1
distmax = niveausup / 25
distlastprice = niveausup - High
// Première étape: on cherche un niveau supérieur entre 45/90 périodes
// et on vérifie que le niveau maximummal n'est ensuite jamais dépassé.
FOR i = 45 TO 90 DO
IF High[i] > niveausup THEN
niveausup = High[i]
ENDIF
NEXT
FOR i = 1 TO 44 DO
IF High[i] > niveausup THEN
supportexist = 0
ENDIF
NEXT
IF supportexist = 1 THEN
c1 = 1
ENDIF
// Seconde étape: si la condition est vérifiée, on vérifie le nombre
// de points de contacts.
IF supportexist = 1 THEN
FOR i = 1 TO 90 DO
IF (niveausup - High[i]) < distmax THEN
numcontact = numcontact + 1
ENDIF
NEXT
ENDIF

// On vérifie et valide/invalide les conditions de base
IF numcontact > 3 THEN
c1 = 1
ENDIF
IF distlastprice < distmax * 3 THEN
c3 = 1
ENDIF

// On vérifie quelques conditions particulières complémentaires
// pour écarter les actifs chelous (pennystocks...).
IF Close < 2 OR Close = Open THEN
c4 = 0
ENDIF

// On balance les résultats
Criteria = numcontact
SCREENER[c1 AND c3 AND c4](Criteria AS "Nombre contacts")
Là dessus, je ne comprends pas quelque chose, particulièrement à propos de la variable "numcontact". Pour explication: celle-ci est censée comptabiliser, sur 90 périodes (bougies), le nombre de fois où le plus haut de la bougie est à proximité/au contact d'un niveau défini comme support/résistance.

Maintenant, ce qui est chelou:
1/ J'ai tenté de visualiser le contenu de cette variable pour chaque actif analysé par ProScreener, et j'ai donc fait de la variable le contenu du critère de classement. Mais pourtant, lorsque ça me donne les résultats, le critère est toujours à 0.
2/ En théorie, si "numcontact" est à zéro, je ne devrais avoir aucun résultat, car il faut avoir un numcontact > 3 pour valider la condition c1, qui elle-même est parmi les conditions retenues par SCREENER. Donc... Je ne comprends pas, déjà, pourquoi j'ai des résultats si elle est à zéro.

Des avis ? :mercichinois:

Pour complément: screenshot des résultats (marché: France PEA).
Screenshot_20160529_233202.png
Screenshot_20160529_233202.png (64.6 Kio) Vu 1308 fois