Bli medlem idag
Operatorer/probuilder · probacktest · proorder · proscreener

NOT

NOT i ProBuilder är den logiska negationsoperatorn som inverterar ett booleskt villkor. Täcker syntax, prioritet och genomgångna exempel i de olika språken.

Syntax

probuilder
NOT (condition)

Så fungerar det

NOT tar ett enda booleskt villkor och returnerar dess motsats. Om villkoret är sant, NOT gör den falsk, och omvänt. Parenteserna krävs inte alltid, men de håller negationens omfattning tydlig, särskilt när villkoret självt innehåller jämförelser.

Bland de logiska operatorerna, NOT binder starkast. Det betyder NOT a AND b läses som (NOT a) AND b, inte som NOT (a AND b). När ett sammansatt uttryck ska negeras i sin helhet, omslut det: NOT (a AND b). Att få den här grupperingen fel är ett av de vanligaste logikfelen.

NOT fungerar på samma sätt i ProBuilder-indikatorer, ProScreener, ProBacktest och ProOrder.

Exempel

Exempel 1, Negera en jämförelse (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

Det här är mönstret från den officiella referensen. NOT (a > b) är sant när a är inte större än b, det vill säga när a är mindre än eller lika med b.

Exempel 2, Utesluta ett tillstånd (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]

Filtret behåller instrument över sitt långa medelvärde medan NOT overbought tar bort de med ett RSI över 70.

Exempel 3, Positionsspärr på en entry (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 är det vanliga skyddet som hindrar en strategi från att stapla order medan en position redan är öppen. Samma mönster använder NOT LongOnMarket eller NOT ShortOnMarket för att skydda en enda sida.

Vanliga fel och fallgropar

  • Prioritet. NOT binder hårdare än AND och OR. NOT a AND b betyder (NOT a) AND b. För att negera hela villkoret, skriv NOT (a AND b).
  • Att negera ett värde, inte ett villkor. NOT close är meningslöst, eftersom close är ett tal. NOT kräver ett booleskt värde, så negera en jämförelse som NOT (close > open).
  • Dubbla negationer. NOT (NOT cond) är bara cond. Nästlade negationer är lätta att misstolka, så förenkla dem där det går.
  • Saknade parenteser kring ett sammansatt uttryck. Att glömma parenteserna runt ett villkor i flera delar är den vanliga orsaken till en spärr som utlöses vid fel tidpunkt.
  • AND, sant endast när alla operander är sanna.
  • OR, sant när minst en operand är sann.
  • XOR, sant när exakt en operand är sann.
  • IF, det villkorliga blocket NOT vanligtvis ligger i.
  • THEN, ELSE, strukturera grenarna i ett IF.
  • ONMARKET, LONGONMARKET, SHORTONMARKET, positionstillstånd som ofta negeras med NOT.