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
result = expression1 XOR expression2So 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)
// 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 resultDies 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)
// 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)
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
ENDIFDer 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,
ORist wahr, aberXORist falsch. Wählen SieXORnur wenn Sie den Fall ausschließen müssen, dass beide wahr sind. - Jede Seite muss eine Bedingung sein.
close XOR highist ungültig, weil es Werte und keine Booleans sind. Verwenden Sie auf jeder Seite vollständige Vergleiche. - Vorrang in gemischten Ausdrücken. Wenn
XORsteht nebenANDoderOR, 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 cist wahr, wenn eine ungerade Anzahl der drei wahr ist, was selten die gewünschte Bedeutung ist. Strukturieren Sie die Logik stattdessen mit expliziten Klammern.
Verwandte Befehle
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 einesIF.CROSSES OVER,CROSSES UNDER, Bedingungen, die oft mit logischen Operatoren verknüpft werden.