Bonjour,
Voilà je cherche à trouver des sommets avec ce code, je n’arrive pas utiliser l’instruction Highest pour remplacer les multiples conditions High[x] > etc
// Cherche une sorte de fractal
Fractal = High[cp] >= Highest[cp*2+1](high) and High[cp] > high[cp-1] and High[cp-1] > High[cp-2] and High[cp-2] > High[cp-3]
If fractal then
drawtext("■",barindex-cp,high[cp]+2) coloured ("cyan")
endif
Il doit y avoir moyen d’utiliser Highest ?
Vos avis ?
J’ai essayé avec Fractal = High[cp] >= Highest[cp*2+1](high) and Highest[cp-1], cela ne donne pas le même résultat
Cela semble déjà fonctionnel ? Pourquoi vouloir modifier ?
Ce que tu as écrit :
Le High d’il y a “cp” chandeliers en arrière est plus haut que les 3 bougies qui le précède.
Je trouve que ce n’est pas très pratique, surtout si je veux faire varier les valeurs en les mettant en variable.
Admettons que je veuille tester sur 10 bougies je serai obligé d’écrire 10 fois High[cp] > high[cp–1] and High[cp–1] > High[cp–2] and High[cp–2] > High[cp–3]
(pour la partie droite du sommet donc).
Pour remplacer N occurrences sans avoir à écrire une tartine de N fois, tu peux définir la condition: cond=high[cp]>high[cp-1]
et remplacer les high[ ]>etc… par: summation[N](cond)=N,
le tout devenant:
N=...
cond = high[cp]>high[cp-1]
Fractal = High[cp] >= Highest[cp*2+1](high) and summation[N](cond)=N
Je ne comprends pas comment cette condition va prendre en compte les valeurs qui sont un coup cp-1,cp-2 etc ?
La condition cond aura une valeur 0 ou 1 selon que high[cp]>high[cp-1] soit vraie ou fausse,
la condition cond[1] qui correspond à high[cp]>high[cp-1] pendant la bougie précédente, correspond à high[cp-1]>high[cp-2] vu de la bougie en cours, et elle sera égale à 0 ou 1 selon qu’elle était vraie ou fausse
même chose pour cond[2] et high[cp-2]>high[cp-3] , etc…
La somme sur N bougies (de celle en cours, en passant par la précédente, etc… jusqu’à la (N-1) précédente) des valeurs de la condition est cond+cond[1]+cond[2]+…+cond[N-1] et s’écrit aussi summation[N](cond). Bien prendre en compte ici que pour summation, le [N] ne veut pas dire “à la N-ième bougie” mais veut dire “appliqué sur N occurrences”, même rôle des crochets que pour highest par exemple où les crochets sont pour un nombre de bougies (et non pas pour un rang comme pour high).
Pour que cette somme soit égale à N alors que la valeur de cond à chaque bougie ne peut valoir que 0 (condition fausse) ou 1 (condition vraie), il n’y a qu’un seul cas possible: que la condition soit égale à 1 (vraie) sur chacune des N bougies.
Donc summation[N](cond)=N correspond bien à high[cp]>high[cp-1] and high[cp-1]>high[cp-2] etc… (N fois), et non seulement évite d’écrire une tartine, mais simplifie grandement les choses si on a besoin de faire varier N.
Je comprends mieux, merci beaucoup 👍
C’est particulier la programmation PRT avec ce travail relatif permanant à faire, c’est une bonne gymnastique d’esprit !