OR
OR en ProBuilder est un opérateur logique qui retourne vrai lorsqu'au moins une de ses conditions est vraie. Couvre la syntaxe, la priorité et des exemples détaillés.
Syntaxe
condition1 OR condition2Comment ça marche
OR évalue les conditions de chaque côté et renvoie true si l'une des deux est vraie, ou si les deux le sont. Le résultat est false uniquement lorsque tous les opérandes sont faux. Ajouter d'autres conditions avec de nouveaux OR opérateurs élargit le test, puisqu'une seule correspondance rend toute l'expression vraie.
La priorité compte lorsque OR partage une expression avec AND et NOT. NOT a la priorité la plus forte, puis AND, puis OR. Donc a OR b AND c se regroupe comme a OR (b AND c). Lorsque l'ordre voulu n'est pas évident au premier regard, ajoutez des parenthèses pour que la logique se lise exactement comme prévu.
OR se comporte de façon identique dans les indicateurs ProBuilder, ProScreener, ProBacktest et ProOrder, puisque tous quatre partagent les mêmes règles d'évaluation booléenne.
Exemples
Exemple 1, l'une ou l'autre condition dans un indicateur (Indicateur)
// Fire when the previous close or the previous low undercut the 10-bar lowest close
i1 = Lowest[10](close)
IF (close[1] < i1 OR low[1] < i1) THEN
result = 1
ELSE
result = 0
ENDIF
RETURN resultC'est le modèle issu de la référence officielle. Que la clôture précédente ou le plus bas précédent soit inférieur à la plus basse clôture des 10 dernières périodes met result à 1, car un seul côté du OR doit être vrai.
Exemple 2, l'un quelconque de plusieurs breakouts (ProScreener)
// New 20-bar high on close or on high
newCloseHigh = close >= Highest[20](close)
newHigh = high >= Highest[20](high)
cond = newCloseHigh OR newHigh
SCREENER[cond]Le screener retourne les instruments qui inscrivent un nouveau plus haut de 20 bars sur l'une ou l'autre mesure. Une correspondance sur l'une des deux conditions suffit.
Exemple 3, sortie sur plus d'un déclencheur (ProOrder)
DEFPARAM CumulateOrders = false
// Exit the long if price loses the average or momentum turns down
lostTrend = close < Average[50](close)
momentumDown = MACDLine[12,26,9](close) CROSSES UNDER 0
IF LongOnMarket AND (lostTrend OR momentumDown) THEN
SELL AT MARKET
ENDIFLes parenthèses regroupent les deux déclencheurs de sortie de sorte que l'un ou l'autre, combiné à une position long ouverte, clôture la position. Sans elles, les règles de priorité changeraient le sens.
Erreurs et pièges courants
- Surprises de priorité.
a AND b OR cest analysé comme(a AND b) OR c. Si une seule sortie doit se déclencher sur l'un quelconque de plusieurs déclencheurs, groupez-les entre parenthèses comme dans l'Exemple 3. - Chaque côté doit être une condition.
close OR high > lowest invalide, carcloseseul est une valeur. Écrivez une comparaison complète de chaque côté. - Élargir au-delà du point d'utilité. Chaque ajout
ORcondition ne peut qu'augmenter le nombre de correspondances. Un screener qui renvoie presque tout a souvent une condition trop lâche de trop. - OR n'est pas exclusif. Si exactement une des deux conditions doit être vraie et non les deux, utilisez
XORà la place.
Instructions liées
AND, vrai uniquement lorsque tous les opérandes sont vrais.XOR, vrai lorsque exactement un opérande est vrai.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 avecOR.