Condition dans un indicateur – un seul signal par tendance
Forums › ProRealTime forum Français › Support ProBuilder › Condition dans un indicateur – un seul signal par tendance
- This topic has 12 replies, 2 voices, and was last updated 7 years ago by Laurent7533.
-
-
12/19/2017 at 2:49 PM #56076
Bonjour,
J’ai une question de néophyte :
Je souhaite créer un indicateur et l’installer sous le prix sous forme d’histogramme. Jusque là rien de compliquer. Je souhaite que si l’indicateur retourne un premier histogramme quand je suis dans la tendance (préalablement définie dans le code), il ne me retourne pas d’autre histogramme. Autrement dit, si mes conditions ont déjà créé un histogramme dans une tendance naissante, je ne souhaite pas d’autre histogramme si la tendance est toujours la même.
Est-ce que quelqu’un peut m’aider svp ?
Cordialement,
Laurent
12/19/2017 at 3:01 PM #56077La façon la plus simple de procéder est de tester l’état de la l’indicateur de tendance à la barre précédent le signal. Difficile de répondre précisément avec un exemple, mais voilà ce que je peux te proposer :
Si la variable tendance marquant le début d’une tendance haussière retourne une valeur supérieure à 0 et qu’une tendance baissière est une valeur nulle ou inférieure à 0, alors on test si la barre courante est la barre qui a vu cette valeur passer la valeur de négative (ou nulle), à positive :
1234567if tendance>0 and tendance[1]<=0 thensignal = 1elsesignal = 0endifreturn signalLe signal de trading est donné par la variable “signal”, on la retourne à zéro si la condition n’est plus valable.
Ici on aurait aussi pu tester un cross over de la ligne 0 dans une variable booléenne : (vrai ou faux)
123signal = tendance crosses over 0return signalCe sont des bases de programmation, je t’invite à visualiser la formation à la programmation pour débutant.
12/19/2017 at 3:50 PM #56078Merci Nicolas mais je n’ai pas dû être clair dans ma question, le plus simple est que je mette mon code en exemple :
123456789101112131415indicateur = 0MM50 = average[50](close)MM200 = average[200](close)c1L = MM50 > MM200 AND close > MM50c2L = high > high[1] AND low > low[1]c3L = c1L AND c2LIF c3L THENindicateur = 1ENDIFRETURN indicateurIl fonctionne. Le soucis que je rencontre, c’est que j’ai trop d’histogrammes. Je souhaiterais ne garder que le premier histogramme pour chaque nouvelle tendance. Et je ne souhaite plus voir les autres.
12/19/2017 at 4:56 PM #56087Tu as été très clair et ma réponse été appropriée.
Voilà ton code modifié, remarque la modification entre la ligne 11 et 13, elle correspond à mon première exemple.
123456789101112131415indicateur = 0MM50 = average[50](close)MM200 = average[200](close)c1L = MM50 > MM200 AND close > MM50c2L = high > high[1] AND low > low[1]c3L = c1L AND c2LIF c3L and c3L[1]=0 THENindicateur = 1ENDIFRETURN indicateurOn test simplement l’état de la condition c3L sur la barre courante et si elle était vrai ou non sur la barre précédente, ici si elle était fausse alors on a un nouveau signal.
12/19/2017 at 5:36 PM #56090Merci Nicolas, mais la solution que tu proposes permet d’éviter qu’il y ait 2 histogrammes d’affilée. Je souhaite quelque chose de plus “exigeant”. En fait, à compter du moment où un seul histogramme a été retourné sur la tendance, je ne souhaite plus aucun histogramme après sur tout le long de la tendance. Autrement dit, pour une tendance sur n jours, je souhaite un seul histogramme (le premier pour lequel la condition est respectée) et plus aucun.
12/19/2017 at 5:42 PM #56092Dans ce cas il faut revoir la condition c3L qui définit ta tendance, car c’est elle la fautive 🙂 Si tu sais m’indiquer ce qui définit une fin de tendance selon cette stratégie ? Car on a bien le début avec c3L mais pas la fin.
12/19/2017 at 6:39 PM #56098En fait, ma tendance haussière est définie par c1L : MM50 > MM200 AND close > MM50
Je ne suis plus en tendance si l’une des 2 conditions n’est plus respectée. Ma tendance baissière est définie par MM50 < MM200 AND close < MM50
12/19/2017 at 9:19 PM #5610412/21/2017 at 9:46 AM #56205Bonjour Nicolas. Petit rappel comme convenu.
12/21/2017 at 10:50 AM #56237Très bien, donc on remet “indicateur” à 0 si c1L n’est plus vrai dans ce cas:
1234567891011121314151617MM50 = average[50](close)MM200 = average[200](close)c1L = MM50 > MM200 AND close > MM50c2L = high > high[1] AND low > low[1]c3L = c1L AND c2LIF c3L THENindicateur = 1ENDIFif indicateur and not c1L thenindicateur=0endifRETURN indicateur12/22/2017 at 9:08 AM #56329Bonjour Nicolas. Désolé mais ce n’est pas cela que je souhaite. Je n’arrive visiblement pas à être clair. Je reprends en reformulant. Admettons que je suis en tendance c1L et que j’ai une série d’histogrammes correspondant à une autre condition positive dans cette tendance 1 0 1 1 0 1 1 1. Je ne souhaite qu’avoir le premier histogramme de cette autre condition c’est à dire la série 1 0 0 0 0 0 0 0. Merci d’avance pour ton aide
12/22/2017 at 9:48 AM #56339ok j’ai donc préféré repartir de zéro:
1234567891011121314151617MM50 = average[50](close)MM200 = average[200](close)c1 = MM50 > MM200 AND close > MM50c2 = high > high[1] AND low > low[1]if c1 and not c1[1] thenstartbar=barindexendifsignal=0if c1 and c2 and signalbar<>startbar thensignalbar=startbarsignal=1endifreturn signal1 user thanked author for this post.
12/22/2017 at 4:33 PM #56383Bravo Nicolas ! Ca fonctionne. Un grand merci pour le temps pris à m’aider. Vraiment un très bon site de référence !
-
AuthorPosts
Find exclusive trading pro-tools on