Jetzt beitreten
Operatoren/probuilder · probacktest · proorder · proscreener

OR

OR ist in ProBuilder ein logischer Operator, der wahr zurückgibt, wenn mindestens eine seiner Bedingungen wahr ist. Behandelt Syntax, Vorrangregeln und ausgearbeitete Beispiele.

Syntax

probuilder
condition1 OR condition2

So funktioniert es

OR wertet die Bedingungen auf beiden Seiten aus und gibt true zurück, wenn eine von beiden wahr ist oder beide wahr sind. Das Ergebnis ist nur dann false, wenn alle Operanden false sind. Das Hinzufügen weiterer Bedingungen mit zusätzlichen OR Operatoren erweitert den Test, da eine einzige Übereinstimmung den gesamten Ausdruck wahr macht.

Die Vorrangregeln sind wichtig, wenn OR teilt einen Ausdruck mit AND und NOT. NOT bindet am stärksten, dann AND, dann OR. Also a OR b AND c gruppiert als a OR (b AND c). Wenn die beabsichtigte Reihenfolge nicht auf den ersten Blick klar ist, setzen Sie Klammern, damit die Logik genau wie gemeint gelesen wird.

OR verhält sich in ProBuilder-Indikatoren, ProScreener, ProBacktest und ProOrder identisch, da alle vier dieselben booleschen Auswertungsregeln verwenden.

Beispiele

Beispiel 1, Eine von zwei Bedingungen in einem Indikator (Indikator)

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

Dies ist das Muster aus der offiziellen Referenz. Wenn entweder der vorherige Schlusskurs oder das vorherige Tief unter dem tiefsten Schlusskurs der letzten 10 Perioden liegt, setzt das result auf 1, weil nur eine Seite der OR muss wahr sein.

Beispiel 2, Einer von mehreren 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]

Der Screener gibt Instrumente zurück, die bei einem der beiden Maße ein neues 20-bar Hoch markieren. Eine Übereinstimmung bei einer der beiden Bedingungen genügt.

Beispiel 3, Ausstieg bei mehr als einem Auslöser (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

Die Klammern gruppieren die beiden Ausstiegsauslöser, sodass jeder von ihnen in Verbindung mit einer offenen long Position die Position schließt. Ohne sie würden die Vorrangregeln die Bedeutung verändern.

Häufige Fehler und Stolperfallen

  • Überraschungen bei der Vorrangregel. a AND b OR c wird interpretiert als (a AND b) OR c. Wenn ein einzelner Ausstieg bei einem von mehreren Auslösern feuern soll, gruppieren Sie diese mit Klammern wie in Beispiel 3.
  • Jede Seite muss eine Bedingung sein. close OR high > low ist ungültig, weil close allein ist ein Wert. Schreiben Sie auf jeder Seite einen vollständigen Vergleich.
  • Ausweitung über den Punkt der Nützlichkeit hinaus. Jedes hinzugefügte OR Bedingung kann die Anzahl der Treffer nur erhöhen. Ein Screener, der fast alles zurückgibt, hat oft eine zu lockere Bedingung zu viel.
  • OR ist nicht exklusiv. Wenn genau eine von zwei Bedingungen wahr sein soll und nicht beide, verwenden Sie XOR stattdessen.
  • AND, nur wahr, wenn jeder Operand wahr ist.
  • XOR, wahr, wenn genau ein Operand wahr ist.
  • NOT, invertiert eine einzelne Bedingung.
  • IF, der Bedingungsblock, in dem diese Operatoren normalerweise stehen.
  • THEN, ELSE, strukturieren die Zweige eines IF.
  • CROSSES OVER, CROSSES UNDER, Bedingungen, die oft kombiniert werden mit OR.