Bonjour 🙂
J’ai un screener qui se base sur un indicateur qui revoit 1 ou 0 (achat / vente). La valeur achat peut rester plusieurs périodes de suites, tant qu’on reste à l’achat.
Je voudrais savoir si on peut dans la colonne critère du screener faire figurer le nombre de périodes depuis lesquelles l’indicateur est passé à 1.
Ainsi je peux ensuite classer les résultat de mon screener en fonction du nombre de jours depuis lesquels il est up.
Merci d’avance pour votre aide
LR
Oui on peut, il faut faire une différence entre les 2 BARINDEX: celui qui a vu le signal et le dernier lu par le screener (soit la dernière barre).
Pour cela il faut enregistrer dans une variable le BARINDEX lorsque tu passe ton signal à 1 ou 0 (achat / vente) et faire la différence pour ton ordre de tri dans ton instruction SCREENER, comme ceci :
REM signal achat (exemple)
if ConditionAchat then
signal = 1
barindexachat = barindex
endif
SCREENER [signal] (barindex-barindexachat as "nbre périodes")
Je n’ai pas testé, mais ça doit fonctionner !
Merci Nicolas pour ton retour.
C’est bizarre ça me renvoi des valeurs qui ne devrait pas ressortir ( signal achat = 0)
J’ai alors essayé d’initialiser signal = 0 au début dur screener et là c’est toujours égale à 0.
Est ce que ce serait pas plutôt barindexachat = barindex + 1 ?
LR
Sans le code complet du screener, difficile de me prononcer sur ce qui ne marche pas ! 🙂
Le voilà :
indicator1 = average[15]
indicator2 = average[50]
indicator3 = average[200]
c1 = indicator1 > indicator2 and indicator2 > indicator3
c2 = indicator1 > indicator1[1] and indicator1[1] > indicator1[2]
c3 = volume > 20000
c4 = close > indicator1
if c1 and c2 and c3 and c4 then
signal = 1
barindexachat = barindex
endif
SCREENER [signal] (barindex-barindexachat as "nbre périodes")
Il est normal qu’il ressorte des conditions qui ne sont plus valables aujourd’hui, puisque ce que l’on recherche c’est la distance entre la première fois ou signal=1 et l’instant présent.
Heu non en fait ce que je cherche signal = 1 et depuis combien de temps il est à 1
Mais pas la première fois. Est ce que mon indic est passé à 1 hier ou la semaine dernière ?
Ok, je n’ai pas testé, mais vite fait une correction :
indicator1 = average[15]
indicator2 = average[50]
indicator3 = average[200]
c1 = indicator1 > indicator2 and indicator2 > indicator3
c2 = indicator1 > indicator1[1] and indicator1[1] > indicator1[2]
c3 = volume > 20000
c4 = close > indicator1
condition = c1 and c2 and c3 and c4
if condition and not condition[1] then
signal = 1
barindexachat = barindex
else
signal=0
endif
if signal>0 then
test = 1
else
test = 0
endif
SCREENER [test] (barindex-barindexachat as "nbre périodes")
Ça fonctionne comme ça, j’ai pas très bien compris pourquoi !
indicator1 = average[15]
indicator2 = average[50]
indicator3 = average[200]
c1 = indicator1 > indicator2 and indicator2 > indicator3
c2 = indicator1 > indicator1[1] and indicator1[1] > indicator1[2]
c3 = volume > 1000
c4 = close > indicator1
if c1 and c2 and c3 and c4 then
signal = 1
else
barindexachat = barindex
signal = 0
endif
SCREENER [signal] (barindex-barindexachat as "nbre périodes")
ça fonctionne comme ça car on enregistre le barindex au moment où le signal passe de 1 à 0, donc tu mesures ici plutôt la fin du signal plutôt que son début.