Bli medlem i dag
Operatorer/probuilder · probacktest · proorder · proscreener

XOR

XOR i ProBuilder er operatoren for eksklusiv OR, sann når nøyaktig én av to betingelser er sann. Dekker syntaks, eksklusivitetsregelen og eksempler.

Syntaks

probuilder
result = expression1 XOR expression2

Slik fungerer det

XOR sammenligner to boolske betingelser og returnerer sann bare når de er ulike, altså når én er sann og den andre er falsk. Hvis begge betingelsene er sanne, eller begge er falske, er resultatet falskt. Dette er forskjellen fra OR, som også er sann når begge operandene er sanne.

Som de andre logiske operatorene, XOR kan kombineres med AND, OR, og NOT. NOT binder sterkest, deretter AND, deretter OR, så blanding XOR inn i et større uttrykk blir klarere med parenteser. XOR evalueres på samme måte i ProBuilder-indikatorer, ProScreener, ProBacktest og ProOrder.

Eksempler

Eksempel 1, Nøyaktig én sammenligning sann (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

Dette er mønsteret fra den offisielle referansen. Her c er større enn a men ikke b, så nøyaktig én sammenligning er sann og result er satt til 1. Hvis c var større enn begge, ville XOR ville vært falsk.

Eksempel 2, Ett breakout men ikke begge (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]

Filteret returnerer instrumenter der bare ett av de to high-målene satte et nytt ekstrempunkt, og utelater dem der begge utløste samtidig.

Eksempel 3, Motstridende signaler (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

Inngangen tillater bare en posisjon når de to filtrene med glidende gjennomsnitt er uenige, ett over og ett under. Når begge er enige, uansett retning, blir XOR er falsk, og ingen ordre legges inn.

Vanlige feil og fallgruver

  • XOR er ikke OR. De to oppfører seg likt med mindre begge operandene er sanne. Når begge er sanne, OR er sann, men XOR er falsk. Velg XOR bare når du må utelukke tilfellet der begge er sanne.
  • Hver side må være en betingelse. close XOR high er ugyldig fordi det er verdier, ikke boolske verdier. Bruk fullstendige sammenligninger på hver side.
  • Prioritet i blandede uttrykk. Når XOR ligger ved siden av AND eller OR, sett parenteser rundt delene for å gjøre grupperingen eksplisitt, som i eksempel 3.
  • Kjeding er sjelden det du vil ha. a XOR b XOR c er sann når et odde antall av de tre er sanne, noe som sjelden er den tilsiktede betydningen. Strukturer logikken med eksplisitte parenteser i stedet.
  • OR, sann når minst én operand er sann, inkludert begge.
  • AND, sann bare når hver operand er sann.
  • NOT, inverterer en enkelt betingelse.
  • IF, den betingede blokken disse operatorene vanligvis står i.
  • THEN, ELSE, strukturer grenene i en IF.
  • CROSSES OVER, CROSSES UNDER, betingelser som ofte kombineres med logiske operatorer.