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
La 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 :
if tendance>0 and tendance[1]<=0 then
signal = 1
else
signal = 0
endif
return signal
Le 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)
signal = tendance crosses over 0
return signal
Ce sont des bases de programmation, je t’invite à visualiser la formation à la programmation pour débutant.
Merci Nicolas mais je n’ai pas dû être clair dans ma question, le plus simple est que je mette mon code en exemple :
indicateur = 0
MM50 = average[50](close)
MM200 = average[200](close)
c1L = MM50 > MM200 AND close > MM50
c2L = high > high[1] AND low > low[1]
c3L = c1L AND c2L
IF c3L THEN
indicateur = 1
ENDIF
RETURN indicateur
Il 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.
Tu 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.
indicateur = 0
MM50 = average[50](close)
MM200 = average[200](close)
c1L = MM50 > MM200 AND close > MM50
c2L = high > high[1] AND low > low[1]
c3L = c1L AND c2L
IF c3L and c3L[1]=0 THEN
indicateur = 1
ENDIF
RETURN indicateur
On 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.
Merci 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.
Dans 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.
En 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
Ok je vois cela demain, dans la négative, merci de me le rappeler.
Bonjour Nicolas. Petit rappel comme convenu.
Très bien, donc on remet “indicateur” à 0 si c1L n’est plus vrai dans ce cas:
MM50 = average[50](close)
MM200 = average[200](close)
c1L = MM50 > MM200 AND close > MM50
c2L = high > high[1] AND low > low[1]
c3L = c1L AND c2L
IF c3L THEN
indicateur = 1
ENDIF
if indicateur and not c1L then
indicateur=0
endif
RETURN indicateur
Bonjour 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
ok j’ai donc préféré repartir de zéro:
MM50 = average[50](close)
MM200 = average[200](close)
c1 = MM50 > MM200 AND close > MM50
c2 = high > high[1] AND low > low[1]
if c1 and not c1[1] then
startbar=barindex
endif
signal=0
if c1 and c2 and signalbar<>startbar then
signalbar=startbar
signal=1
endif
return signal
Bravo Nicolas ! Ca fonctionne. Un grand merci pour le temps pris à m’aider. Vraiment un très bon site de référence !