NOT
NOT en ProBuilder est l'opérateur de négation logique qui inverse une condition booléenne. Couvre la syntaxe, la priorité et des exemples détaillés dans les différents langages.
Syntaxe
NOT (condition)Comment ça marche
NOT prend une seule condition booléenne et renvoie son opposé. Si la condition est vraie, NOT la rend fausse, et inversement. Les parenthèses ne sont pas toujours obligatoires, mais elles gardent claire la portée de la négation, surtout lorsque la condition contient elle-même des comparaisons.
Parmi les opérateurs logiques, NOT est le plus prioritaire. Cela signifie NOT a AND b est interprété comme (NOT a) AND b, non comme NOT (a AND b). Lorsque l'ensemble d'une expression composée doit être nié, encadrez-le : NOT (a AND b). Se tromper sur ce regroupement est l'une des erreurs de logique les plus courantes.
NOT fonctionne de la même manière dans les indicateurs ProBuilder, ProScreener, ProBacktest et ProOrder.
Exemples
Exemple 1, Négation d'une comparaison (Indicateur)
// Flag a bar where the close 10 periods ahead is not above the current close
result = 0
FOR i = 0 TO 20 DO
a = close[i + 10]
b = close[i]
IF NOT (a > b) THEN
result = 1
ENDIF
NEXT
RETURN resultC'est le modèle issu de la référence officielle. NOT (a > b) est vrai chaque fois que a n'est pas supérieur à b, c'est-à-dire lorsque a est inférieur ou égal à b.
Exemple 2, Exclure un état (ProScreener)
// Instruments in an uptrend that are not overbought
trendUp = close > Average[200](close)
overbought = RSI[14](close) > 70
cond = trendUp AND NOT overbought
SCREENER[cond]Le filtre conserve les instruments au-dessus de leur moyenne longue tandis que NOT overbought supprime ceux dont le RSI dépasse 70.
Exemple 3, Garde-fou de position sur une entrée (ProOrder)
DEFPARAM CumulateOrders = false
// Enter long only when no position is open and the signal fires
IF NOT OnMarket AND close CROSSES OVER Average[50](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFNOT OnMarket est la protection standard qui empêche une stratégie d'empiler des ordres alors qu'une position est déjà ouverte. Le même schéma utilise NOT LongOnMarket ou NOT ShortOnMarket pour protéger un seul côté.
Erreurs et pièges courants
- Priorité.
NOTest plus prioritaire queANDetOR.NOT a AND bsignifie(NOT a) AND b. Pour nier toute la condition, écrivezNOT (a AND b). - Négation d'une valeur, et non d'une condition.
NOT closen'a aucun sens, carcloseest un nombre.NOTexige un booléen, il faut donc nier une comparaison commeNOT (close > open). - Doubles négations.
NOT (NOT cond)est simplementcond. Les négations imbriquées sont faciles à mal lire, simplifiez-les donc si possible. - Parenthèses manquantes sur un terme composé. Oublier les parenthèses autour d'une condition en plusieurs parties est la cause habituelle d'un garde-fou qui se déclenche au mauvais moment.
Instructions liées
AND, vrai uniquement lorsque tous les opérandes sont vrais.OR, vrai lorsqu'au moins un opérande est vrai.XOR, vrai lorsque exactement un opérande est vrai.IF, le bloc conditionnelNOTse situe généralement.THEN,ELSE, structurez les branches d'unIF.ONMARKET,LONGONMARKET,SHORTONMARKET, états de position fréquemment niés avecNOT.