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

NOT

NOT i ProBuilder er den logiske negasjonsoperatoren som inverterer en boolsk betingelse. Dekker syntaks, prioritet og gjennomgåtte eksempler på tvers av språkene.

Syntaks

probuilder
NOT (condition)

Slik fungerer det

NOT tar én enkelt boolsk betingelse og returnerer det motsatte. Hvis betingelsen er sann, NOT gjør den false, og omvendt. Parentesene er ikke alltid påkrevd, men de holder omfanget av negeringen tydelig, særlig når betingelsen selv inneholder sammenligninger.

Blant de logiske operatorene, NOT binder sterkest. Det betyr NOT a AND b leses som (NOT a) AND b, ikke som NOT (a AND b). Når hele et sammensatt uttrykk skal negeres, pakk det inn: NOT (a AND b). Å gruppere dette feil er en av de vanligste logikkfeilene.

NOT fungerer på samme måte i ProBuilder-indikatorer, ProScreener, ProBacktest og ProOrder.

Eksempler

Eksempel 1, Negering av en sammenligning (Indikator)

probuilder
// Flag a bar where the close 10 periods ahead is not above the current close
result = 0
FOR i = 0 TO 20 DO
    a = close[i + 10]
    b = close[i]
    IF NOT (a > b) THEN
        result = 1
    ENDIF
NEXT
RETURN result

Dette er mønsteret fra den offisielle referansen. NOT (a > b) er sann når a er ikke større enn b, det er når a er mindre enn eller lik b.

Eksempel 2, Utelukking av en tilstand (ProScreener)

probuilder
// Instruments in an uptrend that are not overbought
trendUp = close > Average[200](close)
overbought = RSI[14](close) > 70
cond = trendUp AND NOT overbought
SCREENER[cond]

Filteret beholder instrumenter over sitt lange gjennomsnitt mens NOT overbought fjerner de med en RSI over 70.

Eksempel 3, Posisjonsvakt på en inngang (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Enter long only when no position is open and the signal fires
IF NOT OnMarket AND close CROSSES OVER Average[50](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

NOT OnMarket er standardvakten som hindrer en strategi fra å stable ordrer mens en posisjon allerede er åpen. Samme mønster bruker NOT LongOnMarket eller NOT ShortOnMarket for å sikre én enkelt side.

Vanlige feil og fallgruver

  • Prioritet. NOT binder sterkere enn AND og OR. NOT a AND b betyr (NOT a) AND b. For å negere hele betingelsen, skriv NOT (a AND b).
  • Negering av en verdi, ikke en betingelse. NOT close er meningsløst, fordi close er et tall. NOT krever en boolsk verdi, så negér en sammenligning som NOT (close > open).
  • Dobbelte negasjoner. NOT (NOT cond) er bare cond. Nøstede negasjoner er lette å mislese, så forenkle dem der det er mulig.
  • Manglende parenteser på et sammensatt uttrykk. Å glemme parentesene rundt en flerdelt betingelse er den vanligste årsaken til en vakt som utløses på feil tidspunkt.
  • AND, sann bare når hver operand er sann.
  • OR, sann når minst én operand er sann.
  • XOR, sann når nøyaktig én operand er sann.
  • IF, den betingede blokken NOT vanligvis ligger i.
  • THEN, ELSE, strukturer grenene i en IF.
  • ONMARKET, LONGONMARKET, SHORTONMARKET, posisjonstilstander som vanligvis negeres med NOT.