Jetzt beitreten
Operatoren/probuilder · probacktest · proorder · proscreener

XOR

XOR in ProBuilder ist der exklusive ODER-Operator, wahr, wenn genau eine von zwei Bedingungen wahr ist. Behandelt Syntax, die Exklusivitätsregel und Beispiele.

Syntax

probuilder
result = expression1 XOR expression2

So funktioniert es

XOR vergleicht zwei boolesche Bedingungen und gibt nur dann true zurück, wenn sie sich unterscheiden, also wenn eine wahr und die andere falsch ist. Sind beide Bedingungen wahr oder beide falsch, ist das Ergebnis false. Das ist der Unterschied zu OR, das auch wahr ist, wenn beide Operanden wahr sind.

Wie die anderen logischen Operatoren, XOR lässt sich kombinieren mit AND, OR, und NOT. NOT bindet am stärksten, dann AND, dann OR, sodass das Mischen XOR in einen größeren Ausdruck ist mit Klammern klarer. XOR wird in ProBuilder Indikatoren, ProScreener, ProBacktest und ProOrder auf dieselbe Weise ausgewertet.

Beispiele

Beispiel 1, Genau ein Vergleich wahr (Indikator)

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

Dies ist das Muster aus der offiziellen Referenz. Hier c ist größer als a aber nicht b, sodass genau ein Vergleich wahr ist und result wird auf 1 gesetzt. Wenn c größer als beide wäre, der XOR wäre falsch.

Beispiel 2, Ein Breakout, aber nicht beide (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]

Der Filter gibt Instrumente zurück, bei denen nur eines der beiden Hoch-Maße ein neues Extrem markiert hat, und schließt diejenigen aus, bei denen beide zugleich ausgelöst haben.

Beispiel 3, Widersprüchliche Signale (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

Der Einstieg erlaubt eine Position nur, wenn die beiden Moving-Average-Filter uneinig sind, einer darüber und einer darunter. Sind sich beide einig, in welcher Richtung auch immer, wird der XOR ist falsch und es wird keine Order platziert.

Häufige Fehler und Stolperfallen

  • XOR ist nicht OR. Die beiden verhalten sich gleich, solange nicht beide Operanden wahr sind. Wenn beide wahr sind, OR ist wahr, aber XOR ist falsch. Wählen Sie XOR nur wenn Sie den Fall ausschließen müssen, dass beide wahr sind.
  • Jede Seite muss eine Bedingung sein. close XOR high ist ungültig, weil es Werte und keine Booleans sind. Verwenden Sie auf jeder Seite vollständige Vergleiche.
  • Vorrang in gemischten Ausdrücken. Wenn XOR steht neben AND oder OR, klammern Sie die Teile, um die Gruppierung explizit zu machen, wie in Beispiel 3.
  • Verkettung ist selten das, was Sie wollen. a XOR b XOR c ist wahr, wenn eine ungerade Anzahl der drei wahr ist, was selten die gewünschte Bedeutung ist. Strukturieren Sie die Logik stattdessen mit expliziten Klammern.
  • OR, wahr, wenn mindestens ein Operand wahr ist, einschließlich beider.
  • AND, nur wahr, wenn jeder 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 mit logischen Operatoren verknüpft werden.