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
condition1 AND condition2So 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)
// 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 signalDies 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)
// 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)
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
ENDIFDer 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 cwird 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.
ANDarbeitet immer mit booleschen Bedingungen, nicht mit Zahlen, die als Bitmuster behandelt werden. - Vergleichen vor dem Verknüpfen. Jede Seite von
ANDmuss selbst eine Bedingung sein.close AND high > lowist ungültig, weilcloseist für sich genommen ein Wert, kein Boolean. Schreiben Sie einen vollständigen Vergleich wieclose > open AND high > low. - Einen Filter zu stark einengen. Jedes hinzugefügte
ANDBedingung kann die Anzahl der Treffer nur verringern. Ein Screener, der nichts zurückgibt, hat oft eine Bedingung zu viel.
Verwandte Befehle
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 einesIF.CROSSES OVER,CROSSES UNDER, Bedingungen, häufig kombiniert mitAND.