Bonsoir,
Je cherche à créer un indicateur simple qui apparaît sous forme d’un histogramme en fonction des conditions remplies.
J’ai plusieurs problèmes.
1/ Le premier c’est que je peux avoir toutes les conditions qui sont bonnes et pourtant je n’ai pas la couleur correspondante.
Par exemple, une valeur croissante et qui est au dessus de ces 3 moyennes n’apparait pas toujours en bleu (problème d’initialisation de ma variable ?)
2/ Mon ordre soucis qui n’est secondaire pour le moment c’est que je n’arrive pas à rajouter l’indicateur sur mon graphique.
J’ajoute un indicateur RSI (ou autre). J’ajoute ensuite mon indicateur et je cache le RSI pour avoir mon histogramme.
Mais c’est de la bidouille.
Merci d’avance !!
Daniel
MM50 = average [50]
MM100 = average [100]
MM200 = average [200]
// conditions sur les moyennes mobiles et le prix
c1 = close >= MM50
c2 = MM50 >= MM100
c3 = MM100 >= MM200
// initialisation de l'indicateur
// valeur utile ?
indicateur = 0
// Les 4 résulats possibles. Toutes les conditions remplies, aucunes, 1 sur 3 ou 2 sur 3
// 3 conditions de remplies sur 3
Achat = c1 and c2 and c3
// 2 conditions de remplies sur 3
AchatAttente = (c1 and c2 and not c3) or (c1 and c3 and not c2) or (c2 and c3 and not c1)
// 1 condition de remplie sur 3
VenteAttente = (c1 and not c2 and not c3) or (not c1 and c2 and not c3) or (not c1 and not c2 and c3)
// // Aucune condition de remplie sur 3
Vente = not c1 and not c2 and not c3
if Vente then
indicateur = 1
r=0
g=0
b=0
elsif AchatAttente then
indicateur = 1
r=144
g=238
b=144
elsif VenteAttente then
indicateur = 1
r=255
g=0
b=255
elsif Achat then
indicateur = 1
r=0
g=255
b=255
endif
return indicateur coloured(r,g,b)style(histogram)
Je viens de me rendre compte que mon indicateur s’affichait sur certains graphiques directement que pour d’autres les prix ont tellement augmenté qu’il faut dézoomer pour avoir accès à l’histogramme.
Le bon côté des choses c’est que mon premier problème a disparu. La bidouille d’afficher l’histogramme sur le RSI faisait que l’histogramme était un indicateur du RSI et non des prix.
Maintenant il me reste à régler mon problème pour ne pas avoir à dézoomer quand il y a une trop grande variation de prix (ou si le prix ne bouge pas depuis longtemps l’histogramme prend la moitié de l’écran…)
Bonjour, pour ton 2e problème, est-ce que tu parles de dézoomer parce que tu as mis l’indicateur dans la fenêtre du prix? Si oui, tu peux considérer le mettre en fenêtre séparée sous le prix, pas dans le rsi comme précédemment mais dans une fenêtre séparée créée spécifiquement pour ton indicateur, de sorte que tu n’auras pas besoin d’ajuster le zoom de la fenêtre du prix. Et aussi rajouter un 0 dans ta ligne “return” pour que ton histogramme remplisse cette fenêtre du pied à la tête des barres, sinon il te mettra que le haut de l’histogramme jusqu’à mi-fenêtre et laissera une moitié de fenêtre inutilement vide.
Si besoin, le bouton pour ajouter un indicateur de cette façon, plutôt que dans une fenêtre prix ou indic déjà existante, est situé en bas à gauche de la fenêtre du graphe en v11, et on peut rajouter le mot “indicateurs” dans ce bouton via les options s’il n’y est pas (cf images attachées).
Ah super merci.
Effectivement j’aurais pu trouver la solution par moi même..
Par contre le “return 0” je n’y aurais pas pensé.
Dernière question. Si jamais je veux rajouter une nouvelle condition, avec ma façon de procéder je vais devoir ajouter énormément de lignes.
Avec 4 conditions c’est encore possible.
Mais avec 5 ou plus je vais y passer pas mal de temps pour rien j’imagine.
Encore merci pour la première réponse !
Si tu veux généraliser à 5 ou plus, pour écrire ton code plus vite avec N conditions pour tout N>=5, en les appelant de c1 à cN (N connu), tu peux créer la somme de c1+c2+…+cN. Comme chaque condition vaut 0 ou 1, cette somme sera donc forcément entre 0 et N.
De là tu peux vérifier si la somme est égale à 0 (aucune réalisée) ou 1 (une seule réalisée, peu importe laquelle), …etc… , N-2 (il n’en manque que 2), N-1 (il en manque une), N (toutes réalisées), sans avoir besoin de définir individuellement tous les cas avec des “and”, “or” et “not”. Et en déduire si tes variables achat, vente et autres sont mises à 1 ou pas. Dans ce cas il faut les initialiser à 0 pour éviter que les 1 se propagent d’une barre à l’autre.
achat=0
achatattente=0
venteattente=0
vente=0
Somme=c1+c2+c3+c4+c5+c6+c7+c8 // cas N=8
If somme=8 then // toutes réalisées
achat=1
elsif somme=7 then // il en manque une
...
elsif somme=6 then // il en manque 2
...
etc...
...
elsif somme=0 then // aucune
vente=1
endif
Merci pour l’explication très claire !
Bonne journée à vous