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
result = expression1 XOR expression2Comment ç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)
// 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 resultC'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)
// 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)
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
ENDIFL'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,
ORest vrai maisXORest faux. ChoisissezXORuniquement lorsque vous devez exclure le cas où les deux sont vrais. - Chaque côté doit être une condition.
close XOR highn'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
XORse place à côté deANDouOR, 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 cest 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.
Instructions liées
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'unIF.CROSSES OVER,CROSSES UNDER, conditions souvent combinées avec des opérateurs logiques.