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
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)
// 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 resultDette 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)
// 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)
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
ENDIFNOT 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.
NOTbinder sterkere ennANDogOR.NOT a AND bbetyr(NOT a) AND b. For å negere hele betingelsen, skrivNOT (a AND b). - Negering av en verdi, ikke en betingelse.
NOT closeer meningsløst, fordicloseer et tall.NOTkrever en boolsk verdi, så negér en sammenligning somNOT (close > open). - Dobbelte negasjoner.
NOT (NOT cond)er barecond. 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.