Jetzt beitreten
Operatoren/probuilder · probacktest · proorder · proscreener

NOT

NOT in ProBuilder ist der logische Negationsoperator, der eine boolesche Bedingung umkehrt. Behandelt Syntax, Vorrang und ausgearbeitete Beispiele in allen Sprachen.

Syntax

probuilder
NOT (condition)

So funktioniert es

NOT nimmt eine einzelne boolesche Bedingung und gibt ihr Gegenteil zurück. Ist die Bedingung wahr, NOT macht es false, und umgekehrt. Die Klammern sind nicht immer erforderlich, aber sie halten den Geltungsbereich der Negation klar, besonders wenn die Bedingung selbst Vergleiche enthält.

Unter den logischen Operatoren, NOT bindet am stärksten. Das bedeutet NOT a AND b wird gelesen als (NOT a) AND b, nicht als NOT (a AND b). Wenn ein zusammengesetzter Ausdruck als Ganzes negiert werden soll, klammern Sie ihn: NOT (a AND b). Eine falsche Gruppierung ist einer der häufigsten Logikfehler.

NOT funktioniert in ProBuilder-Indikatoren, ProScreener, ProBacktest und ProOrder auf dieselbe Weise.

Beispiele

Beispiel 1, Einen Vergleich negieren (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

Dies ist das Muster aus der offiziellen Referenz. NOT (a > b) ist wahr, wann immer a ist nicht größer als b, das heißt, wenn a ist kleiner oder gleich b.

Beispiel 2, Einen Zustand ausschließen (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]

Der Filter behält Instrumente oberhalb ihres langen Durchschnitts, während NOT overbought entfernt diejenigen mit einem RSI über 70.

Beispiel 3, Positionsschutz bei einem Einstieg (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 ist die Standardabsicherung, die eine Strategie davon abhält, Orders zu stapeln, während eine Position bereits offen ist. Dasselbe Muster verwendet NOT LongOnMarket oder NOT ShortOnMarket um eine einzelne Seite abzusichern.

Häufige Fehler und Stolperfallen

  • Vorrang. NOT bindet stärker als AND und OR. NOT a AND b bedeutet (NOT a) AND b. Um die ganze Bedingung zu negieren, schreiben Sie NOT (a AND b).
  • Einen Wert negieren statt einer Bedingung. NOT close ist bedeutungslos, weil close ist eine Zahl. NOT erfordert einen booleschen Wert, negieren Sie also einen Vergleich wie NOT (close > open).
  • Doppelte Negationen. NOT (NOT cond) ist nur cond. Verschachtelte Negationen sind leicht zu missdeuten, vereinfachen Sie sie daher wo möglich.
  • Fehlende Klammern bei einem zusammengesetzten Ausdruck. Das Vergessen der Klammern um eine mehrteilige Bedingung ist die übliche Ursache für einen Schutz, der zum falschen Zeitpunkt auslöst.
  • AND, nur wahr, wenn jeder Operand wahr ist.
  • OR, wahr, wenn mindestens ein Operand wahr ist.
  • XOR, wahr, wenn genau ein Operand wahr ist.
  • IF, der Bedingungsblock NOT üblicherweise liegt.
  • THEN, ELSE, strukturieren die Zweige eines IF.
  • ONMARKET, LONGONMARKET, SHORTONMARKET, Positionszustände, häufig negiert mit NOT.