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

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

probuilder
condition1 OR condition2

Comment ç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)

probuilder
// 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 result

C'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)

probuilder
// 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)

probuilder
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
ENDIF

Les 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 c est 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 > low est invalide, car close seul est une valeur. Écrivez une comparaison complète de chaque côté.
  • Élargir au-delà du point d'utilité. Chaque ajout OR condition 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.
  • 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'un IF.
  • CROSSES OVER, CROSSES UNDER, conditions souvent combinées avec OR.