Vrai et faux
Un booléen (bool) n'a que deux valeurs : True et False, avec une majuscule. Toute règle de trading en produit un : « le marché est-il croisé ? », « peut-on se permettre cet ordre ? ». Comparer deux valeurs produit un booléen : ask > bid n'est pas encore une décision, c'est une valeur que l'on peut stocker, afficher et combiner.
bid, ask = 184.25, 184.5
print(ask > bid) # True
print(type(ask > bid)) # <class 'bool'>Opérateurs de comparaison
Python compare avec == (égal), != (différent), <, <=, > et >=. Un seul = est une affectation, pas une comparaison : price = 5 stocke une valeur alors que price == 5 pose une question. Les comparaisons peuvent être enchaînées : low <= price <= high se lit comme en mathématiques et vérifie les deux côtés à la fois.
# Comparison operators give True or False
price = 184.4
print(price == 184.4) # True
print(price != 184.25) # True
print(184.25 <= price < 185) # True (chained)Combiner des conditions : and, or, not
a and b vaut True seulement si les deux le sont. a or b vaut True si au moins l'un l'est. not a inverse la valeur. Ensemble, ils expriment de vraies règles, comme « le marché est ouvert, le titre n'est pas suspendu et nous avons les liquidités ».
# Combine conditions with and, or, not
market_open, halted, cash = True, False, 500.0
can_buy = market_open and not halted and cash >= 184.5
print(can_buy) # True
print(halted or cash < 100) # Falseand et or fonctionnent en court-circuit : Python s'arrête dès que la réponse est connue et n'évalue pas le reste. C'est utile comme garde : placez la vérification sûre en premier pour que la vérification risquée ne s'exécute que lorsqu'elle le peut.
# Short-circuit: the division never runs when quantity is 0
quantity = 0
print(quantity > 0 and 100 / quantity > 1) # FalseValeur de vérité
N'importe quelle valeur peut servir de condition. 0, 0.0, le texte vide "" et None comptent pour faux ; presque tout le reste compte pour vrai. bool(value) montre comment Python lit une valeur. Attention : quantity and price > 0 peut renvoyer 0 au lieu de False ; écrivez donc la comparaison complète quand il vous faut un vrai bool.
# Zero, empty text and None count as False
print(bool(0), bool(0.0), bool(""), bool(None)) # False False False False
print(bool(200), bool("AAPL")) # True TrueTrue ou False. Écrivez return quantity > 0 plutôt qu'un if qui renvoie True et une autre branche qui renvoie False : c'est plus court et cela ne peut pas se contredire.Comparer des flottants, et None
== entre des floats est risqué à cause des erreurs d'arrondi (voir entiers et flottants) : utilisez math.isclose pour « assez égal ». == compare des valeurs ; le mot is demande si deux noms désignent exactement le même objet, et on ne s'en sert que pour une chose : x is None, pour tester l'« absence de valeur ».
# Floats need a tolerance; None is tested with "is"
import math
print(0.1 + 0.2 == 0.3) # False
print(math.isclose(0.1 + 0.2, 0.3)) # True
fill_price = None
print(fill_price is None) # TrueÀ suivre : les conditions, où un booléen décide quelles lignes de code s'exécutent : if, elif et else.
Lab : ce qui est noté
- Détecter un marché croisé avec
is_crossed25 pts - Vérifier qu'un prix est dans une fourchette avec
within_band25 pts - Combiner les conditions de trading avec
can_trade25 pts - Valider un ordre avec
is_valid_order25 pts