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
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)
// 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 resultDit 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)
// 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)
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 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.
NOTbindt sterker danANDenOR.NOT a AND bbetekent(NOT a) AND b. Om de hele voorwaarde te ontkennen, schrijfNOT (a AND b). - Een waarde ontkennen in plaats van een voorwaarde.
NOT closeis zinloos, omdatcloseis een getal.NOTvereist een boolean, dus negeer een vergelijking zoalsNOT (close > open). - Dubbele ontkenningen.
NOT (NOT cond)is slechtscond. 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.
Gerelateerde instructies
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 blokNOTmeestal in zit.THEN,ELSE, structureer de takken van eenIF.ONMARKET,LONGONMARKET,SHORTONMARKET, positiestatussen die vaak worden ontkend metNOT.