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

NOT

NOT in ProBuilder is de logische negatie-operator die een booleaanse voorwaarde omkeert. Behandelt syntaxis, prioriteit en uitgewerkte voorbeelden in de verschillende talen.

Syntaxis

probuilder
NOT (condition)

Hoe het werkt

NOT neemt één booleaanse conditie en geeft het omgekeerde terug. Als de conditie waar is, NOT maakt hem false, en omgekeerd. De haakjes zijn niet altijd verplicht, maar ze houden het bereik van de negatie duidelijk, vooral wanneer de conditie zelf vergelijkingen bevat.

Van de logische operatoren, NOT bindt het sterkst. Dat betekent NOT a AND b wordt gelezen als (NOT a) AND b, niet als NOT (a AND b). Wanneer een hele samengestelde expressie ontkend moet worden, omsluit hem dan: NOT (a AND b). Deze groepering verkeerd doen is een van de meest voorkomende logicafouten.

NOT werkt op dezelfde manier in ProBuilder-indicatoren, ProScreener, ProBacktest en ProOrder.

Voorbeelden

Voorbeeld 1, Een vergelijking ontkennen (Indicator)

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

Dit is het patroon uit de officiële referentie. NOT (a > b) is waar wanneer a is niet groter dan b, dat is wanneer a is kleiner dan of gelijk aan b.

Voorbeeld 2, Een toestand uitsluiten (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]

Het filter houdt instrumenten boven hun lange gemiddelde terwijl NOT overbought verwijdert die met een RSI boven 70.

Voorbeeld 3, Positiebewaking bij een instap (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 is de standaardbeveiliging die voorkomt dat een strategie orders stapelt terwijl er al een positie open staat. Hetzelfde patroon gebruikt NOT LongOnMarket of NOT ShortOnMarket om één zijde te beveiligen.

Veelvoorkomende fouten en valkuilen

  • Prioriteit. NOT bindt sterker dan AND en OR. NOT a AND b betekent (NOT a) AND b. Om de hele voorwaarde te ontkennen, schrijf NOT (a AND b).
  • Een waarde ontkennen in plaats van een voorwaarde. NOT close is zinloos, omdat close is een getal. NOT vereist een boolean, dus negeer een vergelijking zoals NOT (close > open).
  • Dubbele ontkenningen. NOT (NOT cond) is slechts cond. Geneste ontkenningen zijn makkelijk verkeerd te lezen, dus vereenvoudig ze waar mogelijk.
  • Ontbrekende haakjes bij een samengestelde term. Het vergeten van de haakjes rond een voorwaarde met meerdere delen is de gebruikelijke oorzaak van een bewaking die op het verkeerde moment afgaat.
  • AND, alleen waar wanneer elke operand waar is.
  • OR, waar wanneer ten minste één operand waar is.
  • XOR, waar wanneer precies één operand waar is.
  • IF, het conditionele blok NOT meestal in zit.
  • THEN, ELSE, structureer de takken van een IF.
  • ONMARKET, LONGONMARKET, SHORTONMARKET, positiestatussen die vaak worden ontkend met NOT.