Únete hoy
Operadores/probuilder · probacktest · proorder · proscreener

AND

AND en ProBuilder es un operador lógico que combina condiciones y devuelve verdadero solo cuando todos los operandos son verdaderos. Sintaxis, precedencia y ejemplos.

Sintaxis

probuilder
condition1 AND condition2

Cómo funciona

AND evalúa las condiciones de ambos lados y devuelve verdadero solo si las dos son verdaderas. Encadenar más condiciones con nuevos AND operadores restringe aún más la prueba, ya que toda condición enlazada debe cumplirse para que el resultado sea verdadero.

La precedencia de operadores importa cuando AND, OR, y NOT aparecen en la misma expresión. NOT tiene mayor precedencia, luego AND, luego OR. Así que a OR b AND c se lee como a OR (b AND c). Cuando la agrupación pretendida no es obvia, envuelve las partes en paréntesis. Hace la lógica explícita y elimina cualquier duda sobre cómo se interpreta la expresión.

AND funciona igual en los indicadores ProBuilder, ProScreener, ProBacktest y ProOrder, porque los cuatro evalúan expresiones booleanas con las mismas reglas.

Ejemplos

Ejemplo 1, Dos condiciones en un indicador (Indicador)

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

Este es el patrón de la referencia oficial. La señal se dispara solo cuando el RSI actual está por encima de 50 y el RSI anterior estaba por debajo, de modo que ambas partes del AND debe ser cierto en el mismo bar.

Ejemplo 2, Filtrado con varios criterios (ProScreener)

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

El screener devuelve solo los instrumentos donde el precio se sitúa por encima de su media de 200 periodos y el volumen está por encima de su media de 20 periodos. Ambas condiciones son obligatorias.

Ejemplo 3, Proteger una entrada (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

La entrada solo se permite cuando no hay una posición long abierta y el precio cruza por encima de la media de 50 periodos. Combinar una protección de posición con una señal es uno de los usos más habituales de AND.

Errores y trampas habituales

  • Precedencia con OR. a AND b OR c se interpreta como (a AND b) OR c, lo que a menudo no es lo que se pretendía. Añade paréntesis para indicar la agrupación que quieres.
  • AND no es a nivel de bits. ProBuilder no tiene un operador bit a bit aparte. AND siempre opera sobre condiciones booleanas, no sobre números tratados como patrones de bits.
  • Comparar antes de combinar. Cada lado de AND debe ser a su vez una condición. close AND high > low no es válido porque close por sí solo es un valor, no un booleano. Escribe una comparación completa como close > open AND high > low.
  • Endurecer demasiado un filtro. Cada añadido AND condición solo puede reducir el número de coincidencias. Un screener que no devuelve nada suele tener una condición de más.
  • OR, verdadero cuando al menos un operando es verdadero.
  • XOR, verdadero cuando exactamente un operando es verdadero.
  • NOT, invierte una sola condición.
  • IF, el bloque condicional en el que suelen aparecer estos operadores.
  • THEN, ELSE, estructura las ramas de un IF.
  • CROSSES OVER, CROSSES UNDER, condiciones que se combinan con frecuencia con AND.