Jetzt beitreten
Operatoren/probuilder · probacktest · proorder · proscreener

AND

AND in ProBuilder ist ein logischer Operator, der Bedingungen verknüpft und nur dann true zurückgibt, wenn jeder Operand true ist. Syntax, Vorrang und Beispiele.

Syntax

probuilder
condition1 AND condition2

So funktioniert es

AND wertet die Bedingungen auf beiden Seiten aus und gibt nur dann true zurück, wenn beide true sind. Das Verketten weiterer Bedingungen mit weiteren AND Operatoren verschärfen den Test weiter, da jede verknüpfte Bedingung zutreffen muss, damit das Ergebnis wahr ist.

Die Operatorrangfolge ist wichtig, wenn AND, OR, und NOT im selben Ausdruck erscheinen. NOT bindet am stärksten, dann AND, dann OR. Also a OR b AND c wird gelesen als a OR (b AND c). Wenn die beabsichtigte Gruppierung nicht offensichtlich ist, setzen Sie die Teile in Klammern. Das macht die Logik explizit und beseitigt jeden Zweifel daran, wie der Ausdruck geparst wird.

AND funktioniert in ProBuilder-Indikatoren, ProScreener, ProBacktest und ProOrder auf die gleiche Weise, weil alle vier boolesche Ausdrücke nach den gleichen Regeln auswerten.

Beispiele

Beispiel 1, Zwei Bedingungen in einem Indikator (Indikator)

probuilder
// RSI crossing above 50 from below on this bar
myRSIvalue = RSI[14](close)
myValueCondition = 50
IF (myRSIvalue > myValueCondition AND myRSIvalue[1] < myValueCondition) THEN
    signal = 1
ELSE
    signal = 0
ENDIF
RETURN signal

Dies ist das Muster aus der offiziellen Referenz. Das Signal wird nur ausgelöst, wenn der aktuelle RSI über 50 liegt und der vorherige RSI darunter lag, sodass beide Teile der AND muss auf demselben Bar wahr sein.

Beispiel 2, Filtern mit mehreren Kriterien (ProScreener)

probuilder
// Uptrend with volume confirmation
trendUp = close > Average[200](close)
volumeUp = Volume > Average[20](Volume)
cond = trendUp AND volumeUp
SCREENER[cond]

Der Screener gibt nur Instrumente zurück, bei denen der Kurs über seinem 200-Perioden-Durchschnitt liegt und das Volumen über seinem 20-Perioden-Durchschnitt. Beide Bedingungen sind erforderlich.

Beispiel 3, Einen Einstieg absichern (ProOrder)

probuilder
DEFPARAM CumulateOrders = false
// Enter long only when flat and the setup holds
IF NOT LongOnMarket AND close CROSSES OVER Average[50](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

Der Einstieg ist nur erlaubt, wenn keine offene Long-Position besteht und der Kurs über den 50-periodigen Durchschnitt kreuzt. Die Kombination einer Positionsabfrage mit einem Signal ist eine der häufigsten Verwendungen von AND.

Häufige Fehler und Stolperfallen

  • Vorrang in Verbindung mit OR. a AND b OR c wird interpretiert als (a AND b) OR c, was oft nicht gemeint ist. Setzen Sie Klammern, um die gewünschte Gruppierung anzugeben.
  • AND ist nicht bitweise. ProBuilder hat keinen separaten bitweisen Operator. AND arbeitet immer mit booleschen Bedingungen, nicht mit Zahlen, die als Bitmuster behandelt werden.
  • Vergleichen vor dem Verknüpfen. Jede Seite von AND muss selbst eine Bedingung sein. close AND high > low ist ungültig, weil close ist für sich genommen ein Wert, kein Boolean. Schreiben Sie einen vollständigen Vergleich wie close > open AND high > low.
  • Einen Filter zu stark einengen. Jedes hinzugefügte AND Bedingung kann die Anzahl der Treffer nur verringern. Ein Screener, der nichts zurückgibt, hat oft eine Bedingung zu viel.
  • OR, wahr, wenn mindestens ein Operand wahr ist.
  • XOR, wahr, wenn genau ein Operand wahr ist.
  • NOT, invertiert eine einzelne Bedingung.
  • IF, der Bedingungsblock, in dem diese Operatoren normalerweise stehen.
  • THEN, ELSE, strukturieren die Zweige eines IF.
  • CROSSES OVER, CROSSES UNDER, Bedingungen, häufig kombiniert mit AND.