Variables et calculs personnalisés
Calculez l’amplitude et le prix médian à partir des données des bougies, puis affichez le résultat.
Si le plus haut d’une bougie est 108 et son plus bas 101, leur différence vaut 7. Nous allons calculer cette amplitude et la tracer pour chaque bougie.
Le deuxième programme calcule le milieu entre les deux prix. Les deux exemples utilisent des variables et des opérations arithmétiques simples.
Que représente une bougie ?
Une bougie résume les données d’une période. Sa durée est définie par l’unité de temps. Sur des données horaires, par exemple, une bougie représente une heure.
Vous rencontrerez cinq données de base :
open: le cours d’ouverture de la période ;high: son cours le plus haut ;low: son cours le plus bas ;close: son cours de clôture ;volume: son volume échangé, dans l’unité utilisée par la source de données.
Leurs initiales anglaises forment l’abréviation OHLCV. Les premiers exemples du livre utilisent des données d’exemple de bougies déjà clôturées.
close désigne toujours la clôture de la bougie que le programme traite actuellement. À la bougie suivante, il désignera la clôture de cette nouvelle bougie. Il en va de même pour les autres données de base.
Un peu d’histoire : d’où viennent les chandeliers japonais ?
La représentation en chandeliers trouve ses origines sur les marchés japonais du riz au XVIIIe siècle. Les méthodes d’analyse des cours qui s’y sont développées ont donné naissance aux graphiques en chandeliers au XIXe siècle. Steve Nison les a fait connaître à un plus large public occidental avec son livre Japanese Candlestick Charting Techniques, paru en 1991.
Le « corps », plus épais, montre l’intervalle entre l’ouverture et la clôture ; les fines « mèches » indiquent les cours le plus haut et le plus bas de la période.
Contexte historique et illustrations : AAII Journal (en anglais).
Calculer l’amplitude
Avec un plus haut à 108 et un plus bas à 101, le prix a parcouru une amplitude de 7 unités :
108 − 101 = 7
Dans le code :
candle_range = high - lowhigh - low est une expression : le programme l’évalue et produit un résultat. - désigne la soustraction.
candle_range est un nom de variable. = lui attribue le résultat de l’expression à droite. Cette opération s’appelle une affectation.
Lisez cette ligne ainsi : « Calcule la différence entre high et low et appelle le résultat candle_range. » Vous pourrez ensuite utiliser cette valeur sous ce nom dans les lignes suivantes.
Choisir un nom compréhensible
candle_range indique que la valeur représente l’amplitude d’une bougie. Un nom comme x aiderait moins à comprendre le code.
Dans le livre, les variables ont des noms anglais en minuscules, avec un trait de soulignement entre les mots. Un nom ne doit pas commencer par un chiffre ni contenir d’espace. candle_range et Candle_range seraient deux noms différents.
Pourquoi utiliser des noms anglais sans accents ?
Les mots-clés du langage et les noms de la bibliothèque Pyne reposent sur l’anglais, par exemple def, close ou plot. Les noms de variables anglais s’accordent avec eux et rendent le code plus accessible aux personnes qui ne parlent pas français. C’est utile si vous transmettez votre programme ou travaillez à plusieurs.
Pyne code autorise aussi les lettres accentuées et d’autres caractères non anglais dans les noms de variables. Les noms anglais sans accents sont donc une recommandation. Ils sont plus faciles à saisir sur des claviers de langues différentes et à partager dans un contexte international. Le livre utilise systématiquement cette forme.
Créer un indicateur dans un panneau séparé
Créez un fichier candle_range.py dans scripts et écrivez-y ce programme :
"""
@pyne edge
"""
from pynecore.lib import color, high, low, plot, script
@script.indicator("Candle Range", overlay=False)
def main():
candle_range = high - low
plot(candle_range, "Range", color=color.orange, linewidth=2)La première ligne de main() calcule la valeur ; la seconde la transmet à plot sous le nom candle_range. L’affectation doit précéder l’utilisation de la valeur.
overlay=False demande un panneau séparé. L’amplitude aura ainsi sa propre échelle : une amplitude de 7 unités et un cours proche de 100 sont, par exemple, des valeurs d’ordres de grandeur différents.
Enregistrez le programme et exécutez-le sur les mêmes données de démonstration.

Lire le résultat
Les points les plus hauts correspondent à des écarts de prix plus grands ; les points bas à de plus petites amplitudes. Le calcul utilise le plus haut et le plus bas de toute la bougie, mèches comprises.
Une bougie haussière et une bougie baissière peuvent avoir la même amplitude. Cette valeur ne permet donc pas de connaître la direction du mouvement. high est au moins égal à low : avec des données de bougie correctes, le résultat est positif ou nul.
Que devient la variable à la bougie suivante ?
Le programme répète ces deux étapes à chaque bougie traitée :
- Il calcule
candle_rangeà partir des valeurshighetlowde cette bougie. plotaffiche cette valeur à l’emplacement de la bougie.
Par exemple :
- Première bougie :
high= 108,low= 101, donccandle_range= 7. - Deuxième bougie :
high= 110,low= 106, donccandle_range= 4. - Troisième bougie :
high= 109,low= 103, donccandle_range= 6.
Le graphique affiche ainsi trois points correspondant à 7, 4 et 6. À chaque bougie, la variable reçoit le résultat du calcul actuel.
Nous verrons plus tard l’accès aux valeurs des bougies précédentes et la conservation d’un état.
Addition, multiplication et division
Les calculs simples utilisent les signes suivants dans le code :
+: addition ;-: soustraction ;*: multiplication ;/: division.
La multiplication et la division passent avant l’addition et la soustraction. Les parenthèses indiquent ce qu’il faut calculer en premier.
Le milieu de l’intervalle des prix :
midpoint = (high + low) / 2Nous additionnons les deux prix, puis divisons le résultat par deux. Si high = 108 et low = 101, le milieu vaut 104,5.
Attention au séparateur décimal : le code utilise 104.5, même si nous écrivons 104,5 en français. La virgule a un autre rôle dans le code, par exemple séparer les paramètres d’une fonction.
Tracer le prix médian
Créez un fichier candle_midpoint.py :
"""
@pyne edge
"""
from pynecore.lib import color, high, low, plot, script
@script.indicator("Candle Midpoint", overlay=True)
def main():
midpoint = (high + low) / 2
plot(midpoint, "Midpoint", color=color.purple, linewidth=2)Nous utilisons de nouveau overlay=True, pour afficher le prix médian sur la même échelle de prix que les bougies.

Après l’exécution, choisissez une bougie et observez le point de la ligne à son emplacement. Il se trouve au milieu de l’amplitude complète de la bougie, mèches comprises. Il peut différer du milieu du corps, qui dépend des cours d’ouverture et de clôture.
Pourquoi les parenthèses comptent-elles ?
Ces deux expressions décrivent des calculs différents :
(high + low) / 2
high + low / 2La seconde ligne divise seulement low par deux, puis ajoute high. Avec 108 et 101, elle donnerait 158,5. Ce n’est plus le milieu entre les deux prix.
Les deux expressions sont syntaxiquement correctes, mais donnent des résultats différents. Un exemple que vous pouvez calculer à la main permet de vérifier rapidement si vous avez écrit le calcul voulu.
À vous de jouer
Tracez la variation signée du corps de la bougie : soustrayez l’ouverture à la clôture.
- Nommez le fichier
candle_change.py. - Donnez à l’indicateur le titre
"Candle Change"et affichez-le dans un panneau séparé. - Appelez le résultat du calcul
candle_change. - Nommez le tracé
"Change".
Avant l’exécution, calculez le résultat attendu dans ces trois cas :
open= 100,close= 104 ;open= 100,close= 97 ;open= 100,close= 100.
Solution de l’exercice
Les résultats sont 4, −3 et 0. Une valeur positive indique une clôture plus haute ; une valeur négative, une clôture plus basse ; zéro, une ouverture et une clôture identiques.
"""
@pyne edge
"""
from pynecore.lib import close, color, open, plot, script
@script.indicator("Candle Change", overlay=False)
def main():
candle_change = close - open
plot(candle_change, "Change", color=color.blue, linewidth=2)Comparer les trois programmes
Ouvrez successivement les programmes calculant l’amplitude, le prix médian et la variation. Chacun calcule une variable à partir des données OHLC, puis la trace à la ligne suivante. Le programme traite les données bougie par bougie. Les différences viennent du calcul et du réglage overlay.
Dans le chapitre suivant, nous comparerons les valeurs de deux bougies et verrons comment accéder aux données de la bougie précédente.