Conditions et repères graphiques
Choisissez une couleur par comparaison et marquez uniquement les bougies qui remplissent une condition.
Vous allez créer un programme qui distingue les bougies haussières des bougies baissières. Il examine la relation entre ouverture et clôture, puis affiche le résultat avec une couleur et un repère.
Vrai ou faux
La comparaison close > open vaut True si la clôture est supérieure à l’ouverture, sinon False. C’est une valeur logique de type bool.
Une comparaison ne change aucun des deux prix. Elle répond simplement à une question.
| Signe | Signification | Exemple |
|---|---|---|
> | Supérieur | close > open |
< | Inférieur | close < open |
>= | Supérieur ou égal | close >= open |
<= | Inférieur ou égal | close <= open |
== | Égal | close == open |
!= | Différent | close != open |
= affecte une valeur à une variable ; == compare deux valeurs. La ligne bullish = close > open place le résultat de la comparaison dans bullish.
Quand l’ouverture et la clôture sont identiques, ni close > open ni close < open n’est vrai. Notre décision complète traite aussi ce cas.
if, elif et else
La condition après if décide si le bloc indenté doit s’exécuter :
if bullish:
line_color = color.green
elif bearish:
line_color = color.red
else:
line_color = color.grayNous testons d’abord la condition de if. Si elle est vraie, nous choisissons le vert et ignorons les autres branches. Sinon, nous passons à elif. else s’exécute si aucune condition précédente n’est vraie.
Chaque en-tête de branche se termine par deux-points. L’intérieur ajoute quatre espaces d’indentation. Dans main(), la ligne if commence donc par quatre espaces et son affectation par huit.
Le programme complet
Créez candle_conditions.py :
"""
@pyne edge
"""
from pynecore.lib import close, color, location, open, plot, plotshape, script, shape
@script.indicator("Candle Conditions", overlay=True)
def main():
bullish = close > open
bearish = close < open
if bullish:
line_color = color.green
elif bearish:
line_color = color.red
else:
line_color = color.gray
plot(close, "Close", color=line_color, linewidth=2)
plotshape(bullish, "Bullish candle", style=shape.triangleup,
location=location.belowbar, color=color.green)Exécutez-le sur les données de démonstration. La ligne des clôtures change de couleur à chaque bougie. Un triangle vert apparaît sous les bougies haussières.

Le premier argument de plotshape définit quand le repère apparaît. style détermine sa forme et location sa position par rapport à la bougie. Ici, une bougie marquée a simplement clôturé au-dessus de son ouverture. Ce repère n’est pas un ordre d’achat.
Vous n’avez pas non plus à mémoriser ces paramètres : survolez plotshape dans le code pour consulter l’aide. Le chapitre De l’aide pendant l’écriture du code explique les étapes et l’accès à la définition.
L’emplacement du calcul compte
plot et plotshape s’exécutent à chaque bougie. Nous modifions la valeur, la couleur ou la condition à afficher. L’affichage reçoit ainsi un résultat pour chaque bougie.
Le même ordre convient à une moyenne mobile :
average = ta.sma(close, 20)
above_average = close > averageNous calculons d’abord la moyenne à chaque bougie, puis la condition l’utilise. Ne placez pas ta.sma dans la branche if bullish: : elle ne s’exécuterait alors que sur les bougies haussières.
Quand la valeur initiale de la SMA manque, close > average ne produit pas de signal vrai. Si le code doit réagir spécifiquement à cette absence, utilisez na(average). average == na n’est pas un test correct de valeur manquante.
Combiner plusieurs conditions
and est vrai si ses deux côtés sont vrais. or est vrai si au moins un côté est vrai. not inverse la valeur logique.
strong_bullish = close > open and close > close[1]Cette condition exige deux choses à la fois : une bougie haussière et une clôture supérieure à la clôture précédente. Une bougie haussière peut tout de même clôturer sous la clôture précédente ; il s’agit donc de deux conditions distinctes.
and et or utilisent une évaluation en court-circuit : si la première partie détermine déjà le résultat, la seconde n’est pas évaluée. Pour and, cela arrive quand la première partie est fausse ; pour or, quand elle est vraie. Exécutez donc les calculs utilisant un état sur des lignes séparées, puis combinez leurs résultats logiques.
Choisir une valeur en une expression
Vous pouvez choisir entre deux valeurs dans une seule expression :
line_color = color.green if bullish else color.redElle choisit le vert si bullish est vrai, sinon le rouge. Elle donnerait aussi du rouge si ouverture et clôture étaient identiques. Pour afficher ce cas en gris, conservez les trois branches complètes.
À vous de jouer
Tracez un triangle rouge pointant vers le bas au-dessus des bougies baissières, en conservant le repère vert. Rendez ensuite les deux conditions plus strictes en les comparant aussi à la clôture précédente.
Solution de l’exercice
bullish_signal = bullish and close > close[1]
bearish_signal = bearish and close < close[1]
plotshape(bullish_signal, "Bullish signal", style=shape.triangleup,
location=location.belowbar, color=color.green)
plotshape(bearish_signal, "Bearish signal", style=shape.triangledown,
location=location.abovebar, color=color.red)Remplacez l’appel vert initial à plotshape par ces deux appels. Le choix de couleur continue à comparer seulement l’ouverture et la clôture de la bougie. Les repères comparent aussi avec la clôture précédente.
Trouver une bougie non marquée
Dans la version plus stricte, cherchez une bougie haussière sans repère vert. Vérifiez son ouverture et la clôture précédente. Expliquez quelle partie de and n’est pas remplie.