Rejoignez-nous
Opérateurs/probuilder · probacktest · proorder · proscreener

XOR

XOR dans ProBuilder est l'opérateur OU exclusif, vrai lorsque exactement une des deux conditions est vraie. Couvre la syntaxe, la règle d'exclusivité et des exemples.

Syntaxe

probuilder
result = expression1 XOR expression2

Comment ça marche

XOR compare deux conditions booléennes et renvoie vrai seulement lorsqu'elles diffèrent, c'est-à-dire quand l'une est vraie et l'autre fausse. Si les deux conditions sont vraies, ou les deux fausses, le résultat est faux. C'est la différence avec OR, qui est également vrai lorsque les deux opérandes sont vrais.

Comme les autres opérateurs logiques, XOR peut être combiné avec AND, OR, et NOT. NOT a la priorité la plus forte, puis AND, puis OR, donc mélanger XOR dans une expression plus large est plus clair avec des parenthèses. XOR s'évalue de la même façon dans les indicateurs ProBuilder, ProScreener, ProBacktest et ProOrder.

Exemples

Exemple 1, exactement une comparaison vraie (Indicateur)

probuilder
// c beats a but not b, or beats b but not a
a = 5
b = 7
c = 6
IF (c > a XOR c > b) THEN
    result = 1
ELSE
    result = 0
ENDIF
RETURN result

C'est le schéma de la référence officielle. Ici c est supérieur à a mais pas b, de sorte qu'exactement une comparaison est vraie et result est fixé à 1. Si c était supérieur aux deux, le XOR serait faux.

Exemple 2, un breakout mais pas les deux (ProScreener)

probuilder
// New 20-bar high on close or on high, but not on both at once
newCloseHigh = close >= Highest[20](close)
newHigh = high >= Highest[20](high)
cond = newCloseHigh XOR newHigh
SCREENER[cond]

Le filtre renvoie les instruments où une seule des deux mesures de plus haut a inscrit un nouvel extrême, en excluant ceux où les deux se sont déclenchées ensemble.

Exemple 3, signaux contradictoires (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Act only when one filter agrees and the other does not
fast = close > Average[20](close)
slow = close > Average[200](close)
IF NOT OnMarket AND (fast XOR slow) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

L'entrée n'autorise une position que lorsque les deux filtres de moyennes mobiles sont en désaccord, l'un au-dessus et l'autre en dessous. Lorsque les deux concordent, dans un sens ou dans l'autre, le XOR est faux et aucun ordre n'est placé.

Erreurs et pièges courants

  • XOR n'est pas OR. Les deux se comportent de la même façon sauf si les deux opérandes sont vrais. Lorsque les deux sont vrais, OR est vrai mais XOR est faux. Choisissez XOR uniquement lorsque vous devez exclure le cas où les deux sont vrais.
  • Chaque côté doit être une condition. close XOR high n'est pas valide car ce sont des valeurs, pas des booléens. Utilisez des comparaisons complètes de chaque côté.
  • Priorité dans les expressions mixtes. Quand XOR se place à côté de AND ou OR, encadrez les parties pour rendre le regroupement explicite, comme dans l'exemple 3.
  • L'enchaînement est rarement ce que vous voulez. a XOR b XOR c est vrai lorsqu'un nombre impair des trois est vrai, ce qui est rarement le sens voulu. Structurez plutôt la logique avec des parenthèses explicites.
  • OR, vrai lorsqu'au moins un opérande est vrai, y compris les deux.
  • AND, vrai uniquement lorsque tous les opérandes sont vrais.
  • NOT, inverse une condition unique.
  • IF, le bloc conditionnel dans lequel ces opérateurs se trouvent habituellement.
  • THEN, ELSE, structurez les branches d'un IF.
  • CROSSES OVER, CROSSES UNDER, conditions souvent combinées avec des opérateurs logiques.