Word nu lid
Operatoren/probuilder · probacktest · proorder · proscreener

XOR

XOR in ProBuilder is de exclusieve OR-operator, waar wanneer precies één van twee voorwaarden waar is. Behandelt de syntaxis, de exclusiviteitsregel en voorbeelden.

Syntaxis

probuilder
result = expression1 XOR expression2

Hoe het werkt

XOR vergelijkt twee booleaanse voorwaarden en geeft alleen true wanneer ze verschillen, dus wanneer de een true is en de ander false. Zijn beide voorwaarden true, of beide false, dan is het resultaat false. Dat is het verschil met OR, die ook waar is wanneer beide operanden waar zijn.

Zoals de andere logische operatoren, XOR kan worden gecombineerd met AND, OR, en NOT. NOT bindt het sterkst, dan AND, dan OR, dus mengen XOR in een grotere expressie is duidelijker met haakjes. XOR wordt op dezelfde manier geëvalueerd in ProBuilder-indicatoren, ProScreener, ProBacktest en ProOrder.

Voorbeelden

Voorbeeld 1, Precies één vergelijking waar (Indicator)

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

Dit is het patroon uit de officiële referentie. Hier c is groter dan a maar niet b, zodat precies één vergelijking waar is en result wordt op 1 gezet. Als c groter was dan beide, dan de XOR zou onwaar zijn.

Voorbeeld 2, Eén breakout maar niet 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]

Het filter geeft instrumenten waarbij slechts één van de twee high-maten een nieuw extreem zette, en sluit die uit waarbij ze beide samen afgingen.

Voorbeeld 3, Tegenstrijdige signalen (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

De instap staat alleen een positie toe wanneer de twee moving-averagefilters het oneens zijn, één erboven en één eronder. Wanneer ze het eens zijn, in welke richting dan ook, wordt de XOR is onwaar en er wordt geen order geplaatst.

Veelvoorkomende fouten en valkuilen

  • XOR is niet OR. De twee gedragen zich hetzelfde tenzij beide operanden waar zijn. Als beide waar zijn, OR is waar maar XOR is onwaar. Kies XOR alleen wanneer je het geval met beide waar moet uitsluiten.
  • Elke kant moet een voorwaarde zijn. close XOR high is ongeldig omdat dat waarden zijn, geen booleans. Gebruik volledige vergelijkingen aan beide kanten.
  • Voorrang in gemengde expressies. Wanneer XOR staat naast AND of OR, omsluit de onderdelen om de groepering expliciet te maken, zoals in Voorbeeld 3.
  • Aan elkaar koppelen is zelden wat je wilt. a XOR b XOR c is waar wanneer een oneven aantal van de drie waar is, wat zelden de bedoelde betekenis is. Structureer de logica in plaats daarvan met expliciete haakjes.
  • OR, waar wanneer minstens één operand waar is, inclusief beide.
  • AND, alleen waar wanneer elke operand waar is.
  • NOT, keert een enkele voorwaarde om.
  • IF, het voorwaardelijke blok waarin deze operatoren meestal staan.
  • THEN, ELSE, structureer de takken van een IF.
  • CROSSES OVER, CROSSES UNDER, voorwaarden die vaak met logische operatoren worden gecombineerd.